a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
atproto bluesky typescript npm
101
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(did-plc): allow did:key using other key types for verificationMethods

Mary 1f7e06e0 cf9e31e9

+24 -7
+5
.changeset/ripe-dryers-work.md
··· 1 + --- 2 + '@atcute/did-plc': patch 3 + --- 4 + 5 + allow did:key using other key types for verificationMethods
+4 -5
packages/identity/did-plc/lib/typedefs.ts
··· 2 2 3 3 import * as CID from '@atcute/cid'; 4 4 import { parseDidKey } from '@atcute/crypto'; 5 + import { isKeyDid, isPlcDid } from '@atcute/identity'; 5 6 6 7 import * as t from './types.js'; 7 8 8 9 // #region Strings 9 - const DID_PLC_RE = /^did:plc:([a-z2-7]{24})$/; 10 + export const didPlcString = v.string().assert(isPlcDid, `must be a did:plc`); 10 11 11 - export const didPlcString = v 12 - .string() 13 - .assert((input): input is t.DidPlcString => DID_PLC_RE.test(input), `must be a did:plc`); 12 + export const permissiveDidKeyString = v.string().assert(isKeyDid, `must be a did:key`); 14 13 15 14 export const didKeyString = v.string().chain((input) => { 16 15 try { ··· 92 91 93 92 return v.ok(input); 94 93 }), 95 - verificationMethods: v.record(didKeyString).chain((input) => { 94 + verificationMethods: v.record(permissiveDidKeyString).chain((input) => { 96 95 for (const id in input) { 97 96 if (id.length > 32) { 98 97 return v.err({
+4 -2
packages/identity/did-plc/lib/types.ts
··· 1 - export type DidPlcString = `did:plc:${string}`; 1 + import type { Did } from '@atcute/lexicons/syntax'; 2 2 3 - export type DidKeyString = `did:key:${string}`; 3 + export type DidPlcString = Did<'plc'>; 4 + 5 + export type DidKeyString = Did<'key'>; 4 6 5 7 export interface UnsignedLegacyCreateOperation { 6 8 type: 'create';
+2
packages/identity/did-plc/package.json
··· 35 35 "@atcute/cbor": "workspace:^", 36 36 "@atcute/cid": "workspace:^", 37 37 "@atcute/crypto": "workspace:^", 38 + "@atcute/identity": "workspace:^", 39 + "@atcute/lexicons": "workspace:^", 38 40 "@atcute/multibase": "workspace:^", 39 41 "@atcute/uint8array": "workspace:^", 40 42 "@badrap/valita": "^0.4.5"
+9
pnpm-lock.yaml
··· 249 249 250 250 packages/definitions/leaflet: 251 251 dependencies: 252 + '@atcute/atproto': 253 + specifier: workspace:^ 254 + version: link:../atproto 252 255 '@atcute/lexicons': 253 256 specifier: workspace:^ 254 257 version: link:../../lexicons/lexicons ··· 341 344 '@atcute/crypto': 342 345 specifier: workspace:^ 343 346 version: link:../../utilities/crypto 347 + '@atcute/identity': 348 + specifier: workspace:^ 349 + version: link:../identity 350 + '@atcute/lexicons': 351 + specifier: workspace:^ 352 + version: link:../../lexicons/lexicons 344 353 '@atcute/multibase': 345 354 specifier: workspace:^ 346 355 version: link:../../utilities/multibase