@atproto/common-web 0.4.13 → 0.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/did-doc.d.ts +53 -8
- package/dist/did-doc.d.ts.map +1 -1
- package/dist/did-doc.js +12 -0
- package/dist/did-doc.js.map +1 -1
- package/package.json +4 -4
- package/src/did-doc.ts +12 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atproto/common-web
|
|
2
2
|
|
|
3
|
+
## 0.4.15
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`369bb02`](https://github.com/bluesky-social/atproto/commit/369bb02b9f80f0e15e5242e54f09bd4e01117f3a)]:
|
|
8
|
+
- @atproto/lex-data@0.0.10
|
|
9
|
+
- @atproto/lex-json@0.0.10
|
|
10
|
+
|
|
11
|
+
## 0.4.14
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#4580](https://github.com/bluesky-social/atproto/pull/4580) [`d54d707`](https://github.com/bluesky-social/atproto/commit/d54d7077eb32041e1f61c312efa1dd0d768c774e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Deprecate the `didDocument` schema in favor of `@atproto/did`
|
|
16
|
+
|
|
17
|
+
- [#4580](https://github.com/bluesky-social/atproto/pull/4580) [`d54d707`](https://github.com/bluesky-social/atproto/commit/d54d7077eb32041e1f61c312efa1dd0d768c774e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Allow (and validate) `publicKeyJwk` properties in DID document verification methods
|
|
18
|
+
|
|
19
|
+
- [#4580](https://github.com/bluesky-social/atproto/pull/4580) [`d54d707`](https://github.com/bluesky-social/atproto/commit/d54d7077eb32041e1f61c312efa1dd0d768c774e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Validate DID document's `@context` and `authentication` properties.
|
|
20
|
+
|
|
3
21
|
## 0.4.13
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/did-doc.d.ts
CHANGED
|
@@ -18,64 +18,109 @@ export declare const getServiceEndpoint: (doc: DidDocument, opts: {
|
|
|
18
18
|
id: string;
|
|
19
19
|
type?: string;
|
|
20
20
|
}) => string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Use `DidDocument` from `@atproto/did` instead as it applies
|
|
23
|
+
* stricter (and more spec-compliant) validation.
|
|
24
|
+
*/
|
|
21
25
|
export declare const didDocument: z.ZodObject<{
|
|
26
|
+
'@context': z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"https://www.w3.org/ns/did/v1">, z.ZodArray<z.ZodString, "many">]>>;
|
|
22
27
|
id: z.ZodString;
|
|
23
28
|
alsoKnownAs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
29
|
verificationMethod: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
25
30
|
id: z.ZodString;
|
|
26
31
|
type: z.ZodString;
|
|
27
32
|
controller: z.ZodString;
|
|
33
|
+
publicKeyJwk: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
28
34
|
publicKeyMultibase: z.ZodOptional<z.ZodString>;
|
|
29
35
|
}, "strip", z.ZodTypeAny, {
|
|
30
|
-
id: string;
|
|
31
36
|
type: string;
|
|
37
|
+
id: string;
|
|
32
38
|
controller: string;
|
|
39
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
33
40
|
publicKeyMultibase?: string | undefined;
|
|
34
41
|
}, {
|
|
35
|
-
id: string;
|
|
36
42
|
type: string;
|
|
43
|
+
id: string;
|
|
37
44
|
controller: string;
|
|
45
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
38
46
|
publicKeyMultibase?: string | undefined;
|
|
39
47
|
}>, "many">>;
|
|
48
|
+
authentication: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
49
|
+
id: z.ZodString;
|
|
50
|
+
type: z.ZodString;
|
|
51
|
+
controller: z.ZodString;
|
|
52
|
+
publicKeyJwk: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
53
|
+
publicKeyMultibase: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
type: string;
|
|
56
|
+
id: string;
|
|
57
|
+
controller: string;
|
|
58
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
59
|
+
publicKeyMultibase?: string | undefined;
|
|
60
|
+
}, {
|
|
61
|
+
type: string;
|
|
62
|
+
id: string;
|
|
63
|
+
controller: string;
|
|
64
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
65
|
+
publicKeyMultibase?: string | undefined;
|
|
66
|
+
}>]>, "many">>;
|
|
40
67
|
service: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
41
68
|
id: z.ZodString;
|
|
42
69
|
type: z.ZodString;
|
|
43
70
|
serviceEndpoint: z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
|
|
44
71
|
}, "strip", z.ZodTypeAny, {
|
|
45
|
-
id: string;
|
|
46
72
|
type: string;
|
|
73
|
+
id: string;
|
|
47
74
|
serviceEndpoint: string | Record<string, unknown>;
|
|
48
75
|
}, {
|
|
49
|
-
id: string;
|
|
50
76
|
type: string;
|
|
77
|
+
id: string;
|
|
51
78
|
serviceEndpoint: string | Record<string, unknown>;
|
|
52
79
|
}>, "many">>;
|
|
53
80
|
}, "strip", z.ZodTypeAny, {
|
|
54
81
|
id: string;
|
|
82
|
+
'@context'?: string[] | "https://www.w3.org/ns/did/v1" | undefined;
|
|
55
83
|
alsoKnownAs?: string[] | undefined;
|
|
56
84
|
verificationMethod?: {
|
|
57
|
-
id: string;
|
|
58
85
|
type: string;
|
|
86
|
+
id: string;
|
|
59
87
|
controller: string;
|
|
88
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
60
89
|
publicKeyMultibase?: string | undefined;
|
|
61
90
|
}[] | undefined;
|
|
62
|
-
|
|
91
|
+
authentication?: (string | {
|
|
92
|
+
type: string;
|
|
63
93
|
id: string;
|
|
94
|
+
controller: string;
|
|
95
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
96
|
+
publicKeyMultibase?: string | undefined;
|
|
97
|
+
})[] | undefined;
|
|
98
|
+
service?: {
|
|
64
99
|
type: string;
|
|
100
|
+
id: string;
|
|
65
101
|
serviceEndpoint: string | Record<string, unknown>;
|
|
66
102
|
}[] | undefined;
|
|
67
103
|
}, {
|
|
68
104
|
id: string;
|
|
105
|
+
'@context'?: string[] | "https://www.w3.org/ns/did/v1" | undefined;
|
|
69
106
|
alsoKnownAs?: string[] | undefined;
|
|
70
107
|
verificationMethod?: {
|
|
71
|
-
id: string;
|
|
72
108
|
type: string;
|
|
109
|
+
id: string;
|
|
73
110
|
controller: string;
|
|
111
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
74
112
|
publicKeyMultibase?: string | undefined;
|
|
75
113
|
}[] | undefined;
|
|
76
|
-
|
|
114
|
+
authentication?: (string | {
|
|
115
|
+
type: string;
|
|
77
116
|
id: string;
|
|
117
|
+
controller: string;
|
|
118
|
+
publicKeyJwk?: Record<string, unknown> | undefined;
|
|
119
|
+
publicKeyMultibase?: string | undefined;
|
|
120
|
+
})[] | undefined;
|
|
121
|
+
service?: {
|
|
78
122
|
type: string;
|
|
123
|
+
id: string;
|
|
79
124
|
serviceEndpoint: string | Record<string, unknown>;
|
|
80
125
|
}[] | undefined;
|
|
81
126
|
}>;
|
package/dist/did-doc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-doc.d.ts","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,WAEnD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,WAAW,KAAG,MAMzC,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAYrD,CAAA;AAGD,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAEjD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,KAAK,WAAW,EAChB,OAAO,MAAM,KACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAgBjD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAI5D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK1D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK9D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK5D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,KAAK,WAAW,EAChB,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,uBAkBpC,CAAA;
|
|
1
|
+
{"version":3,"file":"did-doc.d.ts","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,WAEnD,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,WAAW,KAAG,MAMzC,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAYrD,CAAA;AAGD,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAEjD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,KAAK,WAAW,EAChB,OAAO,MAAM,KACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAgBjD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAI5D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK1D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK9D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAK5D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,KAAK,WAAW,EAChB,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,uBAkBpC,CAAA;AA6ED;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
|
package/dist/did-doc.js
CHANGED
|
@@ -141,6 +141,7 @@ const verificationMethod = zod_1.z.object({
|
|
|
141
141
|
id: zod_1.z.string(),
|
|
142
142
|
type: zod_1.z.string(),
|
|
143
143
|
controller: zod_1.z.string(),
|
|
144
|
+
publicKeyJwk: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
144
145
|
publicKeyMultibase: zod_1.z.string().optional(),
|
|
145
146
|
});
|
|
146
147
|
const service = zod_1.z.object({
|
|
@@ -148,10 +149,21 @@ const service = zod_1.z.object({
|
|
|
148
149
|
type: zod_1.z.string(),
|
|
149
150
|
serviceEndpoint: zod_1.z.union([zod_1.z.string(), zod_1.z.record(zod_1.z.unknown())]),
|
|
150
151
|
});
|
|
152
|
+
/**
|
|
153
|
+
* @deprecated Use `DidDocument` from `@atproto/did` instead as it applies
|
|
154
|
+
* stricter (and more spec-compliant) validation.
|
|
155
|
+
*/
|
|
151
156
|
exports.didDocument = zod_1.z.object({
|
|
157
|
+
'@context': zod_1.z
|
|
158
|
+
.union([
|
|
159
|
+
zod_1.z.literal('https://www.w3.org/ns/did/v1'),
|
|
160
|
+
zod_1.z.array(zod_1.z.string().url()),
|
|
161
|
+
])
|
|
162
|
+
.optional(),
|
|
152
163
|
id: zod_1.z.string(),
|
|
153
164
|
alsoKnownAs: zod_1.z.array(zod_1.z.string()).optional(),
|
|
154
165
|
verificationMethod: zod_1.z.array(verificationMethod).optional(),
|
|
166
|
+
authentication: zod_1.z.array(zod_1.z.union([zod_1.z.string(), verificationMethod])).optional(),
|
|
155
167
|
service: zod_1.z.array(service).optional(),
|
|
156
168
|
});
|
|
157
169
|
//# sourceMappingURL=did-doc.js.map
|
package/dist/did-doc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-doc.js","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\n\n// Parsing atproto data\n// --------\n\nexport const isValidDidDoc = (doc: unknown): doc is DidDocument => {\n return didDocument.safeParse(doc).success\n}\n\nexport const getDid = (doc: DidDocument): string => {\n const id = doc.id\n if (typeof id !== 'string') {\n throw new Error('No `id` on document')\n }\n return id\n}\n\nexport const getHandle = (doc: DidDocument): string | undefined => {\n const aka = doc.alsoKnownAs\n if (aka) {\n for (let i = 0; i < aka.length; i++) {\n const alias = aka[i]\n if (alias.startsWith('at://')) {\n // strip off \"at://\" prefix\n return alias.slice(5)\n }\n }\n }\n return undefined\n}\n\n// @NOTE we parse to type/publicKeyMultibase to avoid the dependency on @atproto/crypto\nexport const getSigningKey = (\n doc: DidDocument,\n): { type: string; publicKeyMultibase: string } | undefined => {\n return getVerificationMaterial(doc, 'atproto')\n}\n\nexport const getVerificationMaterial = (\n doc: DidDocument,\n keyId: string,\n): { type: string; publicKeyMultibase: string } | undefined => {\n // /!\\ Hot path\n\n const key = findItemById(doc, 'verificationMethod', `#${keyId}`)\n if (!key) {\n return undefined\n }\n\n if (!key.publicKeyMultibase) {\n return undefined\n }\n\n return {\n type: key.type,\n publicKeyMultibase: key.publicKeyMultibase,\n }\n}\n\nexport const getSigningDidKey = (doc: DidDocument): string | undefined => {\n const parsed = getSigningKey(doc)\n if (!parsed) return\n return `did:key:${parsed.publicKeyMultibase}`\n}\n\nexport const getPdsEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#atproto_pds',\n type: 'AtprotoPersonalDataServer',\n })\n}\n\nexport const getFeedGenEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_fg',\n type: 'BskyFeedGenerator',\n })\n}\n\nexport const getNotifEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_notif',\n type: 'BskyNotificationService',\n })\n}\n\nexport const getServiceEndpoint = (\n doc: DidDocument,\n opts: { id: string; type?: string },\n) => {\n // /!\\ Hot path\n\n const service = findItemById(doc, 'service', opts.id)\n if (!service) {\n return undefined\n }\n\n if (opts.type && service.type !== opts.type) {\n return undefined\n }\n\n if (typeof service.serviceEndpoint !== 'string') {\n return undefined\n }\n\n return validateUrl(service.serviceEndpoint)\n}\n\nfunction findItemById<\n D extends DidDocument,\n T extends 'verificationMethod' | 'service',\n>(doc: D, type: T, id: string): NonNullable<D[T]>[number] | undefined\nfunction findItemById(\n doc: DidDocument,\n type: 'verificationMethod' | 'service',\n id: string,\n) {\n // /!\\ Hot path\n\n const items = doc[type]\n if (items) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const itemId = item.id\n\n if (\n itemId[0] === '#'\n ? itemId === id\n : // Optimized version of: itemId === `${doc.id}${id}`\n itemId.length === doc.id.length + id.length &&\n itemId[doc.id.length] === '#' &&\n itemId.endsWith(id) &&\n itemId.startsWith(doc.id) // <== We could probably skip this check\n ) {\n return item\n }\n }\n }\n return undefined\n}\n\n// Check protocol and hostname to prevent potential SSRF\nconst validateUrl = (urlStr: string): string | undefined => {\n if (!urlStr.startsWith('http://') && !urlStr.startsWith('https://')) {\n return undefined\n }\n\n if (!canParseUrl(urlStr)) {\n return undefined\n }\n\n return urlStr\n}\n\nconst canParseUrl =\n URL.canParse ??\n // URL.canParse is not available in Node.js < 18.17.0\n ((urlStr: string): boolean => {\n try {\n new URL(urlStr)\n return true\n } catch {\n return false\n }\n })\n\n// Types\n// --------\n\nconst verificationMethod = z.object({\n id: z.string(),\n type: z.string(),\n controller: z.string(),\n publicKeyMultibase: z.string().optional(),\n})\n\nconst service = z.object({\n id: z.string(),\n type: z.string(),\n serviceEndpoint: z.union([z.string(), z.record(z.unknown())]),\n})\n\nexport const didDocument = z.object({\n id: z.string(),\n alsoKnownAs: z.array(z.string()).optional(),\n verificationMethod: z.array(verificationMethod).optional(),\n service: z.array(service).optional(),\n})\n\nexport type DidDocument = z.infer<typeof didDocument>\n"]}
|
|
1
|
+
{"version":3,"file":"did-doc.js","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\n\n// Parsing atproto data\n// --------\n\nexport const isValidDidDoc = (doc: unknown): doc is DidDocument => {\n return didDocument.safeParse(doc).success\n}\n\nexport const getDid = (doc: DidDocument): string => {\n const id = doc.id\n if (typeof id !== 'string') {\n throw new Error('No `id` on document')\n }\n return id\n}\n\nexport const getHandle = (doc: DidDocument): string | undefined => {\n const aka = doc.alsoKnownAs\n if (aka) {\n for (let i = 0; i < aka.length; i++) {\n const alias = aka[i]\n if (alias.startsWith('at://')) {\n // strip off \"at://\" prefix\n return alias.slice(5)\n }\n }\n }\n return undefined\n}\n\n// @NOTE we parse to type/publicKeyMultibase to avoid the dependency on @atproto/crypto\nexport const getSigningKey = (\n doc: DidDocument,\n): { type: string; publicKeyMultibase: string } | undefined => {\n return getVerificationMaterial(doc, 'atproto')\n}\n\nexport const getVerificationMaterial = (\n doc: DidDocument,\n keyId: string,\n): { type: string; publicKeyMultibase: string } | undefined => {\n // /!\\ Hot path\n\n const key = findItemById(doc, 'verificationMethod', `#${keyId}`)\n if (!key) {\n return undefined\n }\n\n if (!key.publicKeyMultibase) {\n return undefined\n }\n\n return {\n type: key.type,\n publicKeyMultibase: key.publicKeyMultibase,\n }\n}\n\nexport const getSigningDidKey = (doc: DidDocument): string | undefined => {\n const parsed = getSigningKey(doc)\n if (!parsed) return\n return `did:key:${parsed.publicKeyMultibase}`\n}\n\nexport const getPdsEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#atproto_pds',\n type: 'AtprotoPersonalDataServer',\n })\n}\n\nexport const getFeedGenEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_fg',\n type: 'BskyFeedGenerator',\n })\n}\n\nexport const getNotifEndpoint = (doc: DidDocument): string | undefined => {\n return getServiceEndpoint(doc, {\n id: '#bsky_notif',\n type: 'BskyNotificationService',\n })\n}\n\nexport const getServiceEndpoint = (\n doc: DidDocument,\n opts: { id: string; type?: string },\n) => {\n // /!\\ Hot path\n\n const service = findItemById(doc, 'service', opts.id)\n if (!service) {\n return undefined\n }\n\n if (opts.type && service.type !== opts.type) {\n return undefined\n }\n\n if (typeof service.serviceEndpoint !== 'string') {\n return undefined\n }\n\n return validateUrl(service.serviceEndpoint)\n}\n\nfunction findItemById<\n D extends DidDocument,\n T extends 'verificationMethod' | 'service',\n>(doc: D, type: T, id: string): NonNullable<D[T]>[number] | undefined\nfunction findItemById(\n doc: DidDocument,\n type: 'verificationMethod' | 'service',\n id: string,\n) {\n // /!\\ Hot path\n\n const items = doc[type]\n if (items) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const itemId = item.id\n\n if (\n itemId[0] === '#'\n ? itemId === id\n : // Optimized version of: itemId === `${doc.id}${id}`\n itemId.length === doc.id.length + id.length &&\n itemId[doc.id.length] === '#' &&\n itemId.endsWith(id) &&\n itemId.startsWith(doc.id) // <== We could probably skip this check\n ) {\n return item\n }\n }\n }\n return undefined\n}\n\n// Check protocol and hostname to prevent potential SSRF\nconst validateUrl = (urlStr: string): string | undefined => {\n if (!urlStr.startsWith('http://') && !urlStr.startsWith('https://')) {\n return undefined\n }\n\n if (!canParseUrl(urlStr)) {\n return undefined\n }\n\n return urlStr\n}\n\nconst canParseUrl =\n URL.canParse ??\n // URL.canParse is not available in Node.js < 18.17.0\n ((urlStr: string): boolean => {\n try {\n new URL(urlStr)\n return true\n } catch {\n return false\n }\n })\n\n// Types\n// --------\n\nconst verificationMethod = z.object({\n id: z.string(),\n type: z.string(),\n controller: z.string(),\n publicKeyJwk: z.record(z.string(), z.unknown()).optional(),\n publicKeyMultibase: z.string().optional(),\n})\n\nconst service = z.object({\n id: z.string(),\n type: z.string(),\n serviceEndpoint: z.union([z.string(), z.record(z.unknown())]),\n})\n\n/**\n * @deprecated Use `DidDocument` from `@atproto/did` instead as it applies\n * stricter (and more spec-compliant) validation.\n */\nexport const didDocument = z.object({\n '@context': z\n .union([\n z.literal('https://www.w3.org/ns/did/v1'),\n z.array(z.string().url()),\n ])\n .optional(),\n id: z.string(),\n alsoKnownAs: z.array(z.string()).optional(),\n verificationMethod: z.array(verificationMethod).optional(),\n authentication: z.array(z.union([z.string(), verificationMethod])).optional(),\n service: z.array(service).optional(),\n})\n\nexport type DidDocument = z.infer<typeof didDocument>\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/common-web",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.15",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Shared web-platform-friendly code for atproto libraries",
|
|
6
6
|
"keywords": [
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"types": "dist/index.d.ts",
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"zod": "^3.23.8",
|
|
19
|
-
"@atproto/lex-data": "0.0.
|
|
20
|
-
"@atproto/lex-json": "0.0.
|
|
21
|
-
"@atproto/syntax": "0.4.3"
|
|
19
|
+
"@atproto/lex-data": "^0.0.10",
|
|
20
|
+
"@atproto/lex-json": "^0.0.10",
|
|
21
|
+
"@atproto/syntax": "^0.4.3"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"jest": "^28.1.2",
|
package/src/did-doc.ts
CHANGED
|
@@ -171,6 +171,7 @@ const verificationMethod = z.object({
|
|
|
171
171
|
id: z.string(),
|
|
172
172
|
type: z.string(),
|
|
173
173
|
controller: z.string(),
|
|
174
|
+
publicKeyJwk: z.record(z.string(), z.unknown()).optional(),
|
|
174
175
|
publicKeyMultibase: z.string().optional(),
|
|
175
176
|
})
|
|
176
177
|
|
|
@@ -180,10 +181,21 @@ const service = z.object({
|
|
|
180
181
|
serviceEndpoint: z.union([z.string(), z.record(z.unknown())]),
|
|
181
182
|
})
|
|
182
183
|
|
|
184
|
+
/**
|
|
185
|
+
* @deprecated Use `DidDocument` from `@atproto/did` instead as it applies
|
|
186
|
+
* stricter (and more spec-compliant) validation.
|
|
187
|
+
*/
|
|
183
188
|
export const didDocument = z.object({
|
|
189
|
+
'@context': z
|
|
190
|
+
.union([
|
|
191
|
+
z.literal('https://www.w3.org/ns/did/v1'),
|
|
192
|
+
z.array(z.string().url()),
|
|
193
|
+
])
|
|
194
|
+
.optional(),
|
|
184
195
|
id: z.string(),
|
|
185
196
|
alsoKnownAs: z.array(z.string()).optional(),
|
|
186
197
|
verificationMethod: z.array(verificationMethod).optional(),
|
|
198
|
+
authentication: z.array(z.union([z.string(), verificationMethod])).optional(),
|
|
187
199
|
service: z.array(service).optional(),
|
|
188
200
|
})
|
|
189
201
|
|