@midnight-ntwrk/midnight-did 0.5.0-rc1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-to-domain.js","sourceRoot":"","sources":["../src/ledger-to-domain.ts"],"names":[],"mappings":"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","sourcesContent":["import { DIDContract } from \"@midnight-ntwrk/midnight-did-contract\";\nimport {\n createService,\n createVerificationMethod,\n CurveType,\n DIDDocumentMetadata,\n encodeBase64Url,\n KeyType,\n normalizeServiceEndpoint,\n PublicKeyJwk,\n PublicKeyJwkSchema,\n Service,\n ServiceEndpointSchema,\n VerificationMethod,\n VerificationMethodRelationType,\n VerificationMethodType,\n} from \"@midnight-ntwrk/midnight-did-domain\";\n\nimport {\n createMidnightDIDString,\n MidnightNetwork,\n parseContractAddress,\n} from \"./midnight.js\";\nimport {\n createMidnightDIDDocument,\n MidnightDIDDocument,\n} from \"./midnight-did-document.js\";\n\nconst bytesToHex = (bytes: Iterable<number>): string => {\n let hex = \"\";\n for (const byte of bytes) {\n hex += Number(byte).toString(16).padStart(2, \"0\");\n }\n return hex;\n};\n\nconst LedgerCurveType = DIDContract.CurveType;\nconst LedgerKeyType = DIDContract.KeyType;\nconst LedgerVerificationMethodType = DIDContract.VerificationMethodType;\nconst LedgerVerificationMethodRelation = DIDContract.VerificationMethodRelation;\n\ntype LedgerKeyTypeValue = (typeof LedgerKeyType)[keyof typeof LedgerKeyType];\ntype LedgerCurveTypeValue =\n (typeof LedgerCurveType)[keyof typeof LedgerCurveType];\ntype LedgerVerificationMethodTypeValue =\n (typeof LedgerVerificationMethodType)[keyof typeof LedgerVerificationMethodType];\ntype LedgerVerificationMethodRelationValue =\n (typeof LedgerVerificationMethodRelation)[keyof typeof LedgerVerificationMethodRelation];\ntype Ledger = DIDContract.Ledger;\ntype LedgerPublicKeyJwk = DIDContract.PublicKeyJwk;\ntype LedgerSchnorrJubjubVerificationMethod =\n DIDContract.SchnorrJubjubVerificationMethod;\ntype LedgerService = DIDContract.Service;\n\nconst bigintTo32Le = (value: bigint): Uint8Array => {\n if (value < 0n) {\n throw new Error(\"Jubjub public key coordinate must be non-negative\");\n }\n const bytes = new Uint8Array(32);\n let remaining = value;\n for (let i = 0; i < bytes.length; i += 1) {\n bytes[i] = Number(remaining & 0xffn);\n remaining >>= 8n;\n }\n if (remaining !== 0n) {\n throw new Error(\"Jubjub public key coordinate does not fit in 32 bytes\");\n }\n return bytes;\n};\n\nexport class LedgerToDomain {\n private static readonly KeyTypeMap: Record<LedgerKeyTypeValue, KeyType> = {\n [LedgerKeyType.EC]: KeyType.EC,\n [LedgerKeyType.RSA]: KeyType.RSA,\n [LedgerKeyType.oct]: KeyType.oct,\n [LedgerKeyType.OKP]: KeyType.OKP,\n };\n\n private static readonly CurveTypeMap: Record<\n LedgerCurveTypeValue,\n CurveType\n > = {\n [LedgerCurveType.Ed25519]: CurveType.Ed25519,\n [LedgerCurveType.X25519]: CurveType.X25519,\n [LedgerCurveType.Jubjub]: CurveType.Jubjub,\n [LedgerCurveType.P256]: CurveType.P256,\n [LedgerCurveType.Secp256k1]: CurveType.Secp256k1,\n [LedgerCurveType.BLS12381G1]: CurveType.BLS12381G1,\n [LedgerCurveType.BLS12381G2]: CurveType.BLS12381G2,\n };\n\n private static readonly VerificationMethodTypeMap: Record<\n LedgerVerificationMethodTypeValue,\n VerificationMethodType\n > = {\n [LedgerVerificationMethodType.Undefined]: VerificationMethodType.Undefined,\n [LedgerVerificationMethodType.JsonWebKey]:\n VerificationMethodType.JsonWebKey,\n };\n\n private static readonly VerificationMethodRelationMap: Record<\n LedgerVerificationMethodRelationValue,\n VerificationMethodRelationType\n > = {\n [LedgerVerificationMethodRelation.Undefined]:\n VerificationMethodRelationType.Undefined,\n [LedgerVerificationMethodRelation.Authentication]:\n VerificationMethodRelationType.Authentication,\n [LedgerVerificationMethodRelation.AssertionMethod]:\n VerificationMethodRelationType.AssertionMethod,\n [LedgerVerificationMethodRelation.KeyAgreement]:\n VerificationMethodRelationType.KeyAgreement,\n [LedgerVerificationMethodRelation.CapabilityInvocation]:\n VerificationMethodRelationType.CapabilityInvocation,\n [LedgerVerificationMethodRelation.CapabilityDelegation]:\n VerificationMethodRelationType.CapabilityDelegation,\n };\n\n static publicKeyJwk(publicKeyJwk: LedgerPublicKeyJwk): PublicKeyJwk {\n const kty = this.KeyTypeMap[publicKeyJwk.kty];\n const crv = this.CurveTypeMap[publicKeyJwk.crv];\n const x = this.ledgerOpaqueString(publicKeyJwk.x, \"publicKeyJwk.x\");\n const y = this.ledgerOpaqueString(publicKeyJwk.y, \"publicKeyJwk.y\");\n\n if (\n kty === KeyType.OKP &&\n (crv === CurveType.Ed25519 ||\n crv === CurveType.X25519 ||\n crv === CurveType.BLS12381G1 ||\n crv === CurveType.BLS12381G2)\n ) {\n if (y !== \"\") {\n throw new Error(\"OKP ledger publicKeyJwk.y must be empty\");\n }\n return PublicKeyJwkSchema.parse({ kty, crv, x });\n }\n\n return PublicKeyJwkSchema.parse({ kty, crv, x, y });\n }\n\n static schnorrJubjubPublicKeyJwk(\n verificationMethod: LedgerSchnorrJubjubVerificationMethod,\n ): PublicKeyJwk {\n return PublicKeyJwkSchema.parse({\n kty: KeyType.EC,\n crv: CurveType.Jubjub,\n x: encodeBase64Url(bigintTo32Le(verificationMethod.publicKey.x)),\n y: encodeBase64Url(bigintTo32Le(verificationMethod.publicKey.y)),\n });\n }\n\n private static ledgerOpaqueString(value: unknown, label: string): string {\n if (typeof value === \"string\") return value;\n if (value instanceof Uint8Array) return new TextDecoder().decode(value);\n if (ArrayBuffer.isView(value)) {\n const view = value as ArrayBufferView;\n return new TextDecoder().decode(\n new Uint8Array(view.buffer, view.byteOffset, view.byteLength),\n );\n }\n const shape =\n value === null\n ? \"null\"\n : typeof value === \"object\"\n ? (value.constructor?.name ?? \"object\")\n : typeof value;\n throw new Error(`${label} has an unsupported runtime shape: ${shape}`);\n }\n\n static service(service: LedgerService): Service {\n const rawId = service.id.trim();\n const needsFragmentPrefix =\n rawId.startsWith(\"//\") ||\n (!rawId.startsWith(\"did:\") &&\n !rawId.startsWith(\"#\") &&\n !rawId.startsWith(\"/\") &&\n !rawId.startsWith(\".\") &&\n !rawId.startsWith(\"?\"));\n const serviceId = needsFragmentPrefix ? `#${rawId}` : rawId;\n\n const serviceEndpoint = this.parseServiceEndpoint(service.serviceEndpoint);\n const serviceType = this.parseServiceType(\n (service as { typ?: string; type?: string }).typ ??\n (service as { typ?: string; type?: string }).type ??\n \"\",\n );\n return {\n id: serviceId,\n type: serviceType,\n serviceEndpoint,\n } as Service;\n }\n\n private static parseServiceType(raw: string): Service[\"type\"] {\n const value = raw.trim();\n if (value.length === 0) {\n throw new Error(\"Invalid service type: empty value\");\n }\n if (value.startsWith(\"[\")) {\n try {\n const parsed = JSON.parse(value);\n if (\n Array.isArray(parsed) &&\n parsed.length > 0 &&\n parsed.every(\n (entry) => typeof entry === \"string\" && entry.trim().length > 0,\n ) &&\n new Set(parsed.map((entry) => entry.trim())).size === parsed.length\n ) {\n return parsed.map((entry) => entry.trim());\n }\n } catch {\n throw new Error(\"Invalid service type: malformed JSON array\");\n }\n throw new Error(\n \"Invalid service type: expected non-empty unique strings\",\n );\n }\n return value;\n }\n\n private static parseServiceEndpoint(\n endpoint: unknown,\n ): Service[\"serviceEndpoint\"] {\n const normalize = (\n value: Service[\"serviceEndpoint\"],\n ): Service[\"serviceEndpoint\"] => normalizeServiceEndpoint(value);\n\n if (Array.isArray(endpoint)) {\n const filtered = endpoint\n .map((value) => (typeof value === \"string\" ? value.trim() : \"\"))\n .filter((value) => value !== \"\");\n if (filtered.length === 0) {\n throw new Error(\"Invalid serviceEndpoint: empty legacy endpoint array\");\n }\n if (filtered.length === 1) return normalize(filtered[0]);\n return normalize(filtered as Service[\"serviceEndpoint\"]);\n }\n\n if (typeof endpoint === \"string\") {\n const raw = endpoint.trim();\n if (raw === \"\") {\n throw new Error(\"Invalid serviceEndpoint: empty value\");\n }\n try {\n const parsed = JSON.parse(raw);\n return normalize(\n ServiceEndpointSchema.parse(parsed) as Service[\"serviceEndpoint\"],\n );\n } catch {\n const direct = ServiceEndpointSchema.safeParse(raw);\n if (direct.success) {\n return normalize(direct.data as Service[\"serviceEndpoint\"]);\n }\n throw new Error(\"Invalid serviceEndpoint: malformed JSON payload\");\n }\n }\n\n const parsed = ServiceEndpointSchema.safeParse(endpoint);\n if (parsed.success) {\n return normalize(parsed.data as Service[\"serviceEndpoint\"]);\n }\n throw new Error(\"Invalid serviceEndpoint: unsupported endpoint shape\");\n }\n\n static verificationMethodId(id: string): string {\n const rawId = id.trim();\n if (rawId.startsWith(\"did:\")) {\n if (rawId.includes(\"#\")) return rawId;\n return `${rawId}#${rawId.slice(rawId.lastIndexOf(\":\") + 1)}`;\n }\n const needsFragmentPrefix =\n !rawId.startsWith(\"#\") &&\n !rawId.startsWith(\"/\") &&\n !rawId.startsWith(\".\") &&\n !rawId.startsWith(\"?\");\n return needsFragmentPrefix ? `#${rawId}` : rawId;\n }\n\n static absoluteDidUrlReference(did: string, id: string): string {\n const normalized = this.verificationMethodId(id);\n if (normalized.startsWith(\"did:\")) return normalized;\n return `${did}${normalized}`;\n }\n\n static toJSON(ledger: Ledger): object {\n const created = this.timestampToIsoString(ledger.created);\n const updated = this.timestampToIsoString(ledger.updated);\n const opaqueVerificationMethods = Array.from(\n ledger.verificationMethods,\n ([id, method]) => ({\n id: this.verificationMethodId(id),\n type: this.VerificationMethodTypeMap[method.typ],\n publicKeyJwk: this.publicKeyJwk(method.publicKeyJwk),\n }),\n );\n const schnorrJubjubVerificationMethods = Array.from(\n ledger.schnorrJubjubVerificationMethods,\n ([id, method]) => ({\n id: this.verificationMethodId(id),\n type: VerificationMethodType.JsonWebKey,\n publicKeyJwk: this.schnorrJubjubPublicKeyJwk(method),\n }),\n );\n\n return {\n id: bytesToHex(ledger.id.bytes),\n version: Number(ledger.version.toString()),\n active: ledger.active,\n operationCount: Number(ledger.operationCount.toString()),\n created,\n updated,\n deactivated: ledger.deactivated,\n alsoKnownAs: Array.from(ledger.alsoKnownAs),\n verificationMethods: [\n ...opaqueVerificationMethods,\n ...schnorrJubjubVerificationMethods,\n ],\n authenticationRelation: Array.from(\n ledger.authenticationRelation,\n (value) => this.verificationMethodId(value),\n ),\n assertionMethodRelation: Array.from(\n ledger.assertionMethodRelation,\n (value) => this.verificationMethodId(value),\n ),\n keyAgreementRelation: Array.from(ledger.keyAgreementRelation, (value) =>\n this.verificationMethodId(value),\n ),\n capabilityInvocationRelation: Array.from(\n ledger.capabilityInvocationRelation,\n (value) => this.verificationMethodId(value),\n ),\n capabilityDelegationRelation: Array.from(\n ledger.capabilityDelegationRelation,\n (value) => this.verificationMethodId(value),\n ),\n services: Array.from(ledger.services, ([, service]) =>\n this.service(service),\n ),\n };\n }\n\n static ledgerStateToDIDDocument(\n ledger: Ledger,\n network: MidnightNetwork,\n contractAddress: ReturnType<typeof parseContractAddress>,\n ): MidnightDIDDocument {\n const did = createMidnightDIDString(contractAddress, network);\n\n const verificationMethod: VerificationMethod[] = [];\n const verificationMethodIds = new Set<string>();\n const registerVerificationMethodId = (id: string): void => {\n const normalizedId = this.verificationMethodId(id);\n if (verificationMethodIds.has(normalizedId)) {\n throw new Error(\n `Duplicate verification method id '${this.absoluteDidUrlReference(did, id)}'`,\n );\n }\n verificationMethodIds.add(normalizedId);\n };\n\n for (const [id, method] of ledger.verificationMethods) {\n const verificationMethodType =\n LedgerToDomain.VerificationMethodTypeMap[method.typ];\n if (verificationMethodType !== VerificationMethodType.JsonWebKey) {\n throw new Error(\n `Unsupported verification method type for id '${id}': ${verificationMethodType}`,\n );\n }\n registerVerificationMethodId(id);\n verificationMethod.push(\n createVerificationMethod({\n id: this.absoluteDidUrlReference(did, id),\n type: verificationMethodType,\n controller: did,\n publicKeyJwk: this.publicKeyJwk(method.publicKeyJwk),\n }),\n );\n }\n\n for (const [id, method] of ledger.schnorrJubjubVerificationMethods) {\n registerVerificationMethodId(id);\n verificationMethod.push(\n createVerificationMethod({\n id: this.absoluteDidUrlReference(did, id),\n type: VerificationMethodType.JsonWebKey,\n controller: did,\n publicKeyJwk: this.schnorrJubjubPublicKeyJwk(method),\n }),\n );\n }\n\n const assertRelationTargetsExist = (\n relationName: string,\n relation: Iterable<string> & { isEmpty(): boolean },\n ) => {\n if (relation.isEmpty()) return;\n for (const methodId of relation) {\n if (!verificationMethodIds.has(this.verificationMethodId(methodId))) {\n throw new Error(\n `${relationName} references missing verification method '${this.absoluteDidUrlReference(did, methodId)}'`,\n );\n }\n }\n };\n\n assertRelationTargetsExist(\"authentication\", ledger.authenticationRelation);\n assertRelationTargetsExist(\n \"assertionMethod\",\n ledger.assertionMethodRelation,\n );\n assertRelationTargetsExist(\"keyAgreement\", ledger.keyAgreementRelation);\n assertRelationTargetsExist(\n \"capabilityInvocation\",\n ledger.capabilityInvocationRelation,\n );\n assertRelationTargetsExist(\n \"capabilityDelegation\",\n ledger.capabilityDelegationRelation,\n );\n\n const mapRelation = (\n relation: Iterable<string> & { isEmpty(): boolean },\n ): string[] | undefined =>\n relation.isEmpty()\n ? undefined\n : Array.from(relation, (value) => this.verificationMethodId(value));\n\n const assertionMethod = mapRelation(ledger.assertionMethodRelation);\n const authentication = mapRelation(ledger.authenticationRelation);\n const capabilityDelegation = mapRelation(\n ledger.capabilityDelegationRelation,\n );\n const capabilityInvocation = mapRelation(\n ledger.capabilityInvocationRelation,\n );\n const keyAgreement = mapRelation(ledger.keyAgreementRelation);\n const service = ledger.services.isEmpty()\n ? undefined\n : Array.from(ledger.services, ([, s]) => {\n const parsed = this.service(s);\n return createService({\n id: this.absoluteDidUrlReference(did, s.id),\n type: parsed.type,\n serviceEndpoint: parsed.serviceEndpoint,\n });\n });\n const alsoKnownAs = ledger.alsoKnownAs.isEmpty()\n ? undefined\n : Array.from(ledger.alsoKnownAs);\n\n return createMidnightDIDDocument({\n id: did,\n verificationMethod,\n authentication,\n assertionMethod,\n keyAgreement,\n capabilityInvocation,\n capabilityDelegation,\n service,\n alsoKnownAs,\n });\n }\n\n static ledgerStateToMetadata(ledger: Ledger): DIDDocumentMetadata {\n const created = this.timestampToIsoString(ledger.created);\n const updated = this.timestampToIsoString(ledger.updated);\n const deactivatedAt = ledger.deactivated\n ? this.timestampToIsoString(ledger.updated)\n : undefined;\n\n const isDeactivated = ledger.deactivated || !ledger.active;\n const metadata: DIDDocumentMetadata = {\n created,\n updated,\n deactivated: isDeactivated ? true : undefined,\n versionId: ledger.version.toString(),\n };\n\n if (isDeactivated && deactivatedAt !== undefined) {\n metadata.updated = deactivatedAt;\n }\n\n return metadata;\n }\n\n private static timestampToIsoString(timestamp: bigint): string | undefined {\n if (timestamp === 0n) return undefined;\n const maxSafe = BigInt(Number.MAX_SAFE_INTEGER);\n if (timestamp > maxSafe || timestamp < 0n) return undefined;\n const milliseconds = Number(timestamp);\n if (Number.isNaN(milliseconds)) return undefined;\n const iso = new Date(milliseconds).toISOString();\n return iso.replace(/\\.\\d{3}Z$/, \"Z\");\n }\n}\n"]}
@@ -0,0 +1,98 @@
1
+ import { CurveType, DIDKeyID, KeyType, Service, URIString, VerificationMethod, VerificationMethodType } from "@midnight-ntwrk/midnight-did-domain";
2
+ import { z } from "zod/v4-mini";
3
+ import { type MidnightDIDString } from "./midnight.js";
4
+ /** Midnight DID Document Schema with method-specific constraints */
5
+ export declare const MidnightDIDDocumentSchema: z.ZodMiniObject<{
6
+ "@context": z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>;
7
+ id: z.core.$ZodBranded<z.ZodMiniString<string>, "DID", "out">;
8
+ alsoKnownAs: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniArray<z.ZodMiniString<string>>>>;
9
+ controller: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DID", "out">, z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniString<string>, "DID", "out">>]>>>;
10
+ verificationMethod: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniArray<z.ZodMiniObject<{
11
+ id: z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">;
12
+ type: z.ZodMiniEnum<typeof VerificationMethodType>;
13
+ controller: z.core.$ZodBranded<z.ZodMiniString<string>, "DID", "out">;
14
+ publicKeyJwk: z.ZodMiniObject<{
15
+ kty: z.ZodMiniEnum<typeof KeyType>;
16
+ crv: z.ZodMiniEnum<typeof CurveType>;
17
+ x: z.ZodMiniString<string>;
18
+ y: z.ZodMiniOptional<z.ZodMiniString<string>>;
19
+ }, z.core.$loose>;
20
+ }, z.core.$strip>>>>;
21
+ authentication: z.ZodMiniOptional<z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">>>;
22
+ assertionMethod: z.ZodMiniOptional<z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">>>;
23
+ keyAgreement: z.ZodMiniOptional<z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">>>;
24
+ capabilityInvocation: z.ZodMiniOptional<z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">>>;
25
+ capabilityDelegation: z.ZodMiniOptional<z.ZodMiniArray<z.core.$ZodBranded<z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>, "DIDKeyID", "out">>>;
26
+ service: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniArray<z.ZodMiniObject<{
27
+ id: z.ZodMiniUnion<readonly [z.core.$ZodBranded<z.ZodMiniString<string>, "DIDURL", "out">, z.core.$ZodBranded<z.ZodMiniString<string>, "RelativeURL", "out">]>;
28
+ type: z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>;
29
+ serviceEndpoint: z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>, z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>]>>]>;
30
+ }, z.core.$strip>>>>;
31
+ }, z.core.$loose>;
32
+ /**
33
+ * Midnight DID Document type
34
+ *
35
+ * Extends the generic DIDDocument with Midnight-specific constraints
36
+ */
37
+ export type MidnightDIDDocument = {
38
+ "@context": [string, string, ...string[]];
39
+ id: MidnightDIDString;
40
+ alsoKnownAs?: URIString[] | null;
41
+ controller?: MidnightDIDString | MidnightDIDString[] | null;
42
+ verificationMethod?: VerificationMethod[] | null;
43
+ authentication?: DIDKeyID[];
44
+ assertionMethod?: DIDKeyID[];
45
+ keyAgreement?: DIDKeyID[];
46
+ capabilityInvocation?: DIDKeyID[];
47
+ capabilityDelegation?: DIDKeyID[];
48
+ service?: Service[] | null;
49
+ };
50
+ /**
51
+ * Create a Midnight DID Document
52
+ *
53
+ * This function creates a DID Document that conforms to the
54
+ * Midnight DID Method Specification.
55
+ *
56
+ * @param params - Document parameters
57
+ * @returns A validated Midnight DID Document
58
+ * @throws {Error} If the document doesn't meet Midnight DID requirements
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const doc = createMidnightDIDDocument({
63
+ * id: "did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6",
64
+ * verificationMethod: [{
65
+ * id: "#key-1",
66
+ * type: "JsonWebKey",
67
+ * controller: "did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6",
68
+ * publicKeyJwk: {
69
+ * kty: "OKP",
70
+ * crv: "Ed25519",
71
+ * x: "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ"
72
+ * }
73
+ * }],
74
+ * authentication: ["#key-1"]
75
+ * });
76
+ * ```
77
+ */
78
+ export declare function createMidnightDIDDocument(params: {
79
+ id: MidnightDIDString;
80
+ additionalContexts?: string[];
81
+ alsoKnownAs?: URIString[];
82
+ verificationMethod?: VerificationMethod[];
83
+ authentication?: string[];
84
+ assertionMethod?: string[];
85
+ keyAgreement?: string[];
86
+ capabilityInvocation?: string[];
87
+ capabilityDelegation?: string[];
88
+ service?: Service[];
89
+ }): MidnightDIDDocument;
90
+ /**
91
+ * Parse and validate a Midnight DID Document
92
+ *
93
+ * @param input - The input to parse
94
+ * @returns A validated Midnight DID Document
95
+ * @throws {Error} If the input doesn't meet Midnight DID requirements
96
+ */
97
+ export declare const parseMidnightDIDDocument: (input: unknown) => MidnightDIDDocument;
98
+ //# sourceMappingURL=midnight-did-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight-did-document.d.ts","sourceRoot":"","sources":["../src/midnight-did-document.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAsE1E,oEAAoE;AACpE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CrC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,EAAE,EAAE,iBAAiB,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAC5D,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,EAAE,EAAE,iBAAiB,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB,GAAG,mBAAmB,CAqDtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,mBAkCF,CAAC"}
@@ -0,0 +1,197 @@
1
+ import { CurveType, DIDDocumentSchema, KeyType, VerificationMethodType, } from "@midnight-ntwrk/midnight-did-domain";
2
+ import { z } from "zod/v4-mini";
3
+ import { MidnightDIDSchema } from "./midnight.js";
4
+ /**
5
+ * Midnight DID Document
6
+ *
7
+ * This is a specialized version of DIDDocument that enforces
8
+ * the constraints specified in the Midnight DID Method Specification.
9
+ *
10
+ * Key differences from generic W3C DID Core:
11
+ * - @context MUST be an array with at least 2 specific URIs
12
+ * - id MUST be a valid Midnight DID (did:midnight:<network>:<identifier>)
13
+ * - controller MUST equal the DID subject (single-controller model)
14
+ * - verificationMethod type MUST be JsonWebKey only
15
+ * - Only OKP (Ed25519/X25519/BLS12381G1/BLS12381G2) and EC (Jubjub/P-256/secp256k1) key types are supported
16
+ * - Embedded verification methods are NOT supported (referenced only)
17
+ */
18
+ const REQUIRED_CONTEXTS = [
19
+ "https://www.w3.org/ns/did/v1",
20
+ "https://w3c.github.io/vc-jws-2020/contexts/v1",
21
+ ];
22
+ /** Midnight-specific verification method validation */
23
+ const MidnightVerificationMethodSchema = z
24
+ .looseObject({
25
+ id: z.string(),
26
+ type: z.string(),
27
+ controller: z.string(),
28
+ publicKeyJwk: z.looseObject({
29
+ kty: z.string(),
30
+ crv: z.string(),
31
+ x: z.string(),
32
+ y: z.optional(z.string()),
33
+ }),
34
+ })
35
+ .check(z.refine((vm) => vm.type === VerificationMethodType.JsonWebKey, "Midnight DID only supports JsonWebKey verification method type"), z.refine((vm) => {
36
+ const kty = vm.publicKeyJwk.kty;
37
+ return kty === KeyType.OKP || kty === KeyType.EC;
38
+ }, "Midnight DID only supports OKP (Ed25519/X25519/BLS12381G1/BLS12381G2) or EC (Jubjub/P-256/secp256k1) key types"), z.refine((vm) => {
39
+ const { kty, crv } = vm.publicKeyJwk;
40
+ if (kty === KeyType.OKP) {
41
+ return (crv === CurveType.Ed25519 ||
42
+ crv === CurveType.X25519 ||
43
+ crv === CurveType.BLS12381G1 ||
44
+ crv === CurveType.BLS12381G2);
45
+ }
46
+ if (kty === KeyType.EC) {
47
+ return (crv === CurveType.Jubjub ||
48
+ crv === CurveType.P256 ||
49
+ crv === CurveType.Secp256k1);
50
+ }
51
+ return false;
52
+ }, "OKP keys must use Ed25519, X25519, BLS12381G1, or BLS12381G2 curve; EC keys must use Jubjub, P-256, or secp256k1 curve"), z.refine((vm) => {
53
+ // Verification methods must be referenced (contain # or be relative)
54
+ const id = vm.id;
55
+ return id.includes("#") || id.startsWith("/") || id.startsWith(".");
56
+ }, "Midnight DID does not support embedded verification methods - use referenced methods with fragments"));
57
+ /** Midnight DID Document Schema with method-specific constraints */
58
+ export const MidnightDIDDocumentSchema = DIDDocumentSchema.check(z.refine((doc) => Array.isArray(doc["@context"]), "@context must be an array for Midnight DID Documents"), z.refine((doc) => Array.isArray(doc["@context"]) && doc["@context"].length >= 2, "@context must contain at least 2 entries for Midnight DID Documents"), z.refine((doc) => Array.isArray(doc["@context"]) &&
59
+ doc["@context"][0] === REQUIRED_CONTEXTS[0], `First @context entry must be '${REQUIRED_CONTEXTS[0]}'`), z.refine((doc) => Array.isArray(doc["@context"]) &&
60
+ doc["@context"][1] === REQUIRED_CONTEXTS[1], `Second @context entry must be '${REQUIRED_CONTEXTS[1]}'`), z.refine((doc) => MidnightDIDSchema.safeParse(doc.id).success, "id must be a valid Midnight DID (did:midnight:<network>:<identifier>)"), z.refine((doc) => {
61
+ // Controller must equal subject (single-controller model)
62
+ if (!doc.controller)
63
+ return true; // Optional, but if present must match
64
+ if (typeof doc.controller === "string") {
65
+ return doc.controller === doc.id;
66
+ }
67
+ // If array, must have exactly one entry equal to id
68
+ return (Array.isArray(doc.controller) &&
69
+ doc.controller.length === 1 &&
70
+ doc.controller[0] === doc.id);
71
+ }, "controller must equal DID subject for Midnight DID (single-controller model)"), z.refine((doc) => {
72
+ // All verification methods must be JsonWebKey and use supported key types
73
+ if (!doc.verificationMethod)
74
+ return true;
75
+ return doc.verificationMethod.every((vm) => MidnightVerificationMethodSchema.safeParse(vm).success);
76
+ }, "All verification methods must meet Midnight DID requirements (JsonWebKey type, OKP/EC keys, referenced only)"));
77
+ /**
78
+ * Create a Midnight DID Document
79
+ *
80
+ * This function creates a DID Document that conforms to the
81
+ * Midnight DID Method Specification.
82
+ *
83
+ * @param params - Document parameters
84
+ * @returns A validated Midnight DID Document
85
+ * @throws {Error} If the document doesn't meet Midnight DID requirements
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const doc = createMidnightDIDDocument({
90
+ * id: "did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6",
91
+ * verificationMethod: [{
92
+ * id: "#key-1",
93
+ * type: "JsonWebKey",
94
+ * controller: "did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6",
95
+ * publicKeyJwk: {
96
+ * kty: "OKP",
97
+ * crv: "Ed25519",
98
+ * x: "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ"
99
+ * }
100
+ * }],
101
+ * authentication: ["#key-1"]
102
+ * });
103
+ * ```
104
+ */
105
+ export function createMidnightDIDDocument(params) {
106
+ const doc = {
107
+ "@context": [
108
+ REQUIRED_CONTEXTS[0],
109
+ REQUIRED_CONTEXTS[1],
110
+ ...(params.additionalContexts ?? []),
111
+ ],
112
+ id: params.id,
113
+ alsoKnownAs: params.alsoKnownAs ?? null,
114
+ controller: params.id, // Always equals subject for Midnight DID
115
+ verificationMethod: params.verificationMethod ?? null,
116
+ ...(params.authentication === undefined
117
+ ? {}
118
+ : { authentication: params.authentication }),
119
+ ...(params.assertionMethod === undefined
120
+ ? {}
121
+ : { assertionMethod: params.assertionMethod }),
122
+ ...(params.keyAgreement === undefined
123
+ ? {}
124
+ : { keyAgreement: params.keyAgreement }),
125
+ ...(params.capabilityInvocation === undefined
126
+ ? {}
127
+ : { capabilityInvocation: params.capabilityInvocation }),
128
+ ...(params.capabilityDelegation === undefined
129
+ ? {}
130
+ : { capabilityDelegation: params.capabilityDelegation }),
131
+ service: params.service ?? null,
132
+ };
133
+ const parsed = MidnightDIDDocumentSchema.parse(doc);
134
+ return {
135
+ "@context": parsed["@context"],
136
+ id: params.id,
137
+ alsoKnownAs: parsed.alsoKnownAs ?? null,
138
+ controller: params.id,
139
+ verificationMethod: parsed.verificationMethod ?? null,
140
+ ...(parsed.authentication === undefined
141
+ ? {}
142
+ : { authentication: parsed.authentication }),
143
+ ...(parsed.assertionMethod === undefined
144
+ ? {}
145
+ : { assertionMethod: parsed.assertionMethod }),
146
+ ...(parsed.keyAgreement === undefined
147
+ ? {}
148
+ : { keyAgreement: parsed.keyAgreement }),
149
+ ...(parsed.capabilityInvocation === undefined
150
+ ? {}
151
+ : { capabilityInvocation: parsed.capabilityInvocation }),
152
+ ...(parsed.capabilityDelegation === undefined
153
+ ? {}
154
+ : { capabilityDelegation: parsed.capabilityDelegation }),
155
+ service: parsed.service ?? null,
156
+ };
157
+ }
158
+ /**
159
+ * Parse and validate a Midnight DID Document
160
+ *
161
+ * @param input - The input to parse
162
+ * @returns A validated Midnight DID Document
163
+ * @throws {Error} If the input doesn't meet Midnight DID requirements
164
+ */
165
+ export const parseMidnightDIDDocument = (input) => {
166
+ const parsed = MidnightDIDDocumentSchema.parse(input);
167
+ const id = MidnightDIDSchema.parse(parsed.id);
168
+ const controller = parsed.controller == null
169
+ ? parsed.controller
170
+ : Array.isArray(parsed.controller)
171
+ ? parsed.controller.map((value) => MidnightDIDSchema.parse(value))
172
+ : MidnightDIDSchema.parse(parsed.controller);
173
+ return {
174
+ "@context": parsed["@context"],
175
+ id,
176
+ alsoKnownAs: parsed.alsoKnownAs ?? null,
177
+ controller,
178
+ verificationMethod: parsed.verificationMethod ?? null,
179
+ ...(parsed.authentication === undefined
180
+ ? {}
181
+ : { authentication: parsed.authentication }),
182
+ ...(parsed.assertionMethod === undefined
183
+ ? {}
184
+ : { assertionMethod: parsed.assertionMethod }),
185
+ ...(parsed.keyAgreement === undefined
186
+ ? {}
187
+ : { keyAgreement: parsed.keyAgreement }),
188
+ ...(parsed.capabilityInvocation === undefined
189
+ ? {}
190
+ : { capabilityInvocation: parsed.capabilityInvocation }),
191
+ ...(parsed.capabilityDelegation === undefined
192
+ ? {}
193
+ : { capabilityDelegation: parsed.capabilityDelegation }),
194
+ service: parsed.service ?? null,
195
+ };
196
+ };
197
+ //# sourceMappingURL=midnight-did-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight-did-document.js","sourceRoot":"","sources":["../src/midnight-did-document.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CurveType,\n DIDDocument,\n DIDDocumentSchema,\n DIDKeyID,\n KeyType,\n Service,\n URIString,\n VerificationMethod,\n VerificationMethodType,\n} from \"@midnight-ntwrk/midnight-did-domain\";\nimport { z } from \"zod/v4-mini\";\n\nimport { MidnightDIDSchema, type MidnightDIDString } from \"./midnight.js\";\n\n/**\n * Midnight DID Document\n *\n * This is a specialized version of DIDDocument that enforces\n * the constraints specified in the Midnight DID Method Specification.\n *\n * Key differences from generic W3C DID Core:\n * - @context MUST be an array with at least 2 specific URIs\n * - id MUST be a valid Midnight DID (did:midnight:<network>:<identifier>)\n * - controller MUST equal the DID subject (single-controller model)\n * - verificationMethod type MUST be JsonWebKey only\n * - Only OKP (Ed25519/X25519/BLS12381G1/BLS12381G2) and EC (Jubjub/P-256/secp256k1) key types are supported\n * - Embedded verification methods are NOT supported (referenced only)\n */\n\nconst REQUIRED_CONTEXTS = [\n \"https://www.w3.org/ns/did/v1\",\n \"https://w3c.github.io/vc-jws-2020/contexts/v1\",\n] as const;\n\n/** Midnight-specific verification method validation */\nconst MidnightVerificationMethodSchema = z\n .looseObject({\n id: z.string(),\n type: z.string(),\n controller: z.string(),\n publicKeyJwk: z.looseObject({\n kty: z.string(),\n crv: z.string(),\n x: z.string(),\n y: z.optional(z.string()),\n }),\n })\n .check(\n z.refine(\n (vm) => vm.type === VerificationMethodType.JsonWebKey,\n \"Midnight DID only supports JsonWebKey verification method type\",\n ),\n z.refine((vm) => {\n const kty = vm.publicKeyJwk.kty;\n return kty === KeyType.OKP || kty === KeyType.EC;\n }, \"Midnight DID only supports OKP (Ed25519/X25519/BLS12381G1/BLS12381G2) or EC (Jubjub/P-256/secp256k1) key types\"),\n z.refine((vm) => {\n const { kty, crv } = vm.publicKeyJwk;\n if (kty === KeyType.OKP) {\n return (\n crv === CurveType.Ed25519 ||\n crv === CurveType.X25519 ||\n crv === CurveType.BLS12381G1 ||\n crv === CurveType.BLS12381G2\n );\n }\n if (kty === KeyType.EC) {\n return (\n crv === CurveType.Jubjub ||\n crv === CurveType.P256 ||\n crv === CurveType.Secp256k1\n );\n }\n return false;\n }, \"OKP keys must use Ed25519, X25519, BLS12381G1, or BLS12381G2 curve; EC keys must use Jubjub, P-256, or secp256k1 curve\"),\n z.refine((vm) => {\n // Verification methods must be referenced (contain # or be relative)\n const id = vm.id;\n return id.includes(\"#\") || id.startsWith(\"/\") || id.startsWith(\".\");\n }, \"Midnight DID does not support embedded verification methods - use referenced methods with fragments\"),\n );\n\n/** Midnight DID Document Schema with method-specific constraints */\nexport const MidnightDIDDocumentSchema = DIDDocumentSchema.check(\n z.refine(\n (doc) => Array.isArray(doc[\"@context\"]),\n \"@context must be an array for Midnight DID Documents\",\n ),\n z.refine(\n (doc) => Array.isArray(doc[\"@context\"]) && doc[\"@context\"].length >= 2,\n \"@context must contain at least 2 entries for Midnight DID Documents\",\n ),\n z.refine(\n (doc) =>\n Array.isArray(doc[\"@context\"]) &&\n doc[\"@context\"][0] === REQUIRED_CONTEXTS[0],\n `First @context entry must be '${REQUIRED_CONTEXTS[0]}'`,\n ),\n z.refine(\n (doc) =>\n Array.isArray(doc[\"@context\"]) &&\n doc[\"@context\"][1] === REQUIRED_CONTEXTS[1],\n `Second @context entry must be '${REQUIRED_CONTEXTS[1]}'`,\n ),\n z.refine(\n (doc) => MidnightDIDSchema.safeParse(doc.id).success,\n \"id must be a valid Midnight DID (did:midnight:<network>:<identifier>)\",\n ),\n z.refine((doc) => {\n // Controller must equal subject (single-controller model)\n if (!doc.controller) return true; // Optional, but if present must match\n if (typeof doc.controller === \"string\") {\n return doc.controller === doc.id;\n }\n // If array, must have exactly one entry equal to id\n return (\n Array.isArray(doc.controller) &&\n doc.controller.length === 1 &&\n doc.controller[0] === doc.id\n );\n }, \"controller must equal DID subject for Midnight DID (single-controller model)\"),\n z.refine((doc) => {\n // All verification methods must be JsonWebKey and use supported key types\n if (!doc.verificationMethod) return true;\n return doc.verificationMethod.every(\n (vm) => MidnightVerificationMethodSchema.safeParse(vm).success,\n );\n }, \"All verification methods must meet Midnight DID requirements (JsonWebKey type, OKP/EC keys, referenced only)\"),\n);\n\n/**\n * Midnight DID Document type\n *\n * Extends the generic DIDDocument with Midnight-specific constraints\n */\nexport type MidnightDIDDocument = {\n \"@context\": [string, string, ...string[]]; // At least 2 entries required\n id: MidnightDIDString;\n alsoKnownAs?: URIString[] | null;\n controller?: MidnightDIDString | MidnightDIDString[] | null; // Must equal id if present\n verificationMethod?: VerificationMethod[] | null;\n authentication?: DIDKeyID[];\n assertionMethod?: DIDKeyID[];\n keyAgreement?: DIDKeyID[];\n capabilityInvocation?: DIDKeyID[];\n capabilityDelegation?: DIDKeyID[];\n service?: Service[] | null;\n};\n\n/**\n * Create a Midnight DID Document\n *\n * This function creates a DID Document that conforms to the\n * Midnight DID Method Specification.\n *\n * @param params - Document parameters\n * @returns A validated Midnight DID Document\n * @throws {Error} If the document doesn't meet Midnight DID requirements\n *\n * @example\n * ```typescript\n * const doc = createMidnightDIDDocument({\n * id: \"did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6\",\n * verificationMethod: [{\n * id: \"#key-1\",\n * type: \"JsonWebKey\",\n * controller: \"did:midnight:testnet:c569622e7f33d2d020ba1cae242e6077268941327846d62d8cbf0cc923ae41f6\",\n * publicKeyJwk: {\n * kty: \"OKP\",\n * crv: \"Ed25519\",\n * x: \"VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ\"\n * }\n * }],\n * authentication: [\"#key-1\"]\n * });\n * ```\n */\nexport function createMidnightDIDDocument(params: {\n id: MidnightDIDString;\n additionalContexts?: string[];\n alsoKnownAs?: URIString[];\n verificationMethod?: VerificationMethod[];\n authentication?: string[];\n assertionMethod?: string[];\n keyAgreement?: string[];\n capabilityInvocation?: string[];\n capabilityDelegation?: string[];\n service?: Service[];\n}): MidnightDIDDocument {\n const doc = {\n \"@context\": [\n REQUIRED_CONTEXTS[0],\n REQUIRED_CONTEXTS[1],\n ...(params.additionalContexts ?? []),\n ],\n id: params.id,\n alsoKnownAs: params.alsoKnownAs ?? null,\n controller: params.id, // Always equals subject for Midnight DID\n verificationMethod: params.verificationMethod ?? null,\n ...(params.authentication === undefined\n ? {}\n : { authentication: params.authentication }),\n ...(params.assertionMethod === undefined\n ? {}\n : { assertionMethod: params.assertionMethod }),\n ...(params.keyAgreement === undefined\n ? {}\n : { keyAgreement: params.keyAgreement }),\n ...(params.capabilityInvocation === undefined\n ? {}\n : { capabilityInvocation: params.capabilityInvocation }),\n ...(params.capabilityDelegation === undefined\n ? {}\n : { capabilityDelegation: params.capabilityDelegation }),\n service: params.service ?? null,\n };\n\n const parsed = MidnightDIDDocumentSchema.parse(doc) as DIDDocument;\n return {\n \"@context\": parsed[\"@context\"] as [string, string, ...string[]],\n id: params.id,\n alsoKnownAs: parsed.alsoKnownAs ?? null,\n controller: params.id,\n verificationMethod: parsed.verificationMethod ?? null,\n ...(parsed.authentication === undefined\n ? {}\n : { authentication: parsed.authentication }),\n ...(parsed.assertionMethod === undefined\n ? {}\n : { assertionMethod: parsed.assertionMethod }),\n ...(parsed.keyAgreement === undefined\n ? {}\n : { keyAgreement: parsed.keyAgreement }),\n ...(parsed.capabilityInvocation === undefined\n ? {}\n : { capabilityInvocation: parsed.capabilityInvocation }),\n ...(parsed.capabilityDelegation === undefined\n ? {}\n : { capabilityDelegation: parsed.capabilityDelegation }),\n service: parsed.service ?? null,\n } as MidnightDIDDocument;\n}\n\n/**\n * Parse and validate a Midnight DID Document\n *\n * @param input - The input to parse\n * @returns A validated Midnight DID Document\n * @throws {Error} If the input doesn't meet Midnight DID requirements\n */\nexport const parseMidnightDIDDocument = (\n input: unknown,\n): MidnightDIDDocument => {\n const parsed = MidnightDIDDocumentSchema.parse(input) as DIDDocument;\n const id = MidnightDIDSchema.parse(parsed.id) as MidnightDIDString;\n const controller =\n parsed.controller == null\n ? parsed.controller\n : Array.isArray(parsed.controller)\n ? parsed.controller.map(\n (value) => MidnightDIDSchema.parse(value) as MidnightDIDString,\n )\n : (MidnightDIDSchema.parse(parsed.controller) as MidnightDIDString);\n return {\n \"@context\": parsed[\"@context\"] as [string, string, ...string[]],\n id,\n alsoKnownAs: parsed.alsoKnownAs ?? null,\n controller,\n verificationMethod: parsed.verificationMethod ?? null,\n ...(parsed.authentication === undefined\n ? {}\n : { authentication: parsed.authentication }),\n ...(parsed.assertionMethod === undefined\n ? {}\n : { assertionMethod: parsed.assertionMethod }),\n ...(parsed.keyAgreement === undefined\n ? {}\n : { keyAgreement: parsed.keyAgreement }),\n ...(parsed.capabilityInvocation === undefined\n ? {}\n : { capabilityInvocation: parsed.capabilityInvocation }),\n ...(parsed.capabilityDelegation === undefined\n ? {}\n : { capabilityDelegation: parsed.capabilityDelegation }),\n service: parsed.service ?? null,\n } as MidnightDIDDocument;\n};\n"]}
@@ -0,0 +1,30 @@
1
+ import { DIDContract } from "@midnight-ntwrk/midnight-did-contract";
2
+ import { type DIDDocumentMetadata, type DIDResolutionErrorCode } from "@midnight-ntwrk/midnight-did-domain";
3
+ import { MidnightNetwork } from "./midnight.js";
4
+ import { type MidnightDIDDocument } from "./midnight-did-document.js";
5
+ export type MidnightLedgerState = DIDContract.Ledger;
6
+ export type MidnightLedgerReader = (contractAddress: string) => Promise<MidnightLedgerState | null>;
7
+ export type MidnightDIDResolverOptions = {
8
+ ledgerReader: MidnightLedgerReader;
9
+ expectedNetwork?: MidnightNetwork;
10
+ };
11
+ export type MidnightResolutionResult = {
12
+ didDocument: MidnightDIDDocument;
13
+ didDocumentMetadata: DIDDocumentMetadata;
14
+ };
15
+ export type MidnightDIDResolutionResult = {
16
+ didDocument: MidnightDIDDocument | null;
17
+ didDocumentMetadata: DIDDocumentMetadata;
18
+ didResolutionMetadata: {
19
+ error?: DIDResolutionErrorCode;
20
+ };
21
+ };
22
+ export declare class MidnightDIDResolver {
23
+ private readonly ledgerReader;
24
+ private readonly expectedNetwork;
25
+ constructor(options: MidnightDIDResolverOptions);
26
+ resolve(did: string): Promise<MidnightDIDDocument>;
27
+ resolveResult(did: string): Promise<MidnightResolutionResult | null>;
28
+ resolveDIDResolutionResult(did: string): Promise<MidnightDIDResolutionResult>;
29
+ }
30
+ //# sourceMappingURL=midnight-did-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight-did-resolver.d.ts","sourceRoot":"","sources":["../src/midnight-did-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAG5B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG,CACjC,eAAe,EAAE,MAAM,KACpB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,oBAAoB,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,EAAE;QACrB,KAAK,CAAC,EAAE,sBAAsB,CAAC;KAChC,CAAC;CACH,CAAC;AAgCF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;gBAE7C,OAAO,EAAE,0BAA0B;IAKzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQlD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IA8BpE,0BAA0B,CAC9B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,2BAA2B,CAAC;CAWxC"}
@@ -0,0 +1,65 @@
1
+ import { parseMidnightDID, parseMidnightDIDString, } from "@midnight-ntwrk/midnight-did-domain";
2
+ import { LedgerToDomain } from "./ledger-to-domain.js";
3
+ import { MidnightNetwork } from "./midnight.js";
4
+ const resolutionEnvelope = (result, error) => ({
5
+ didDocument: result?.didDocument ?? null,
6
+ didDocumentMetadata: result?.didDocumentMetadata ?? {},
7
+ didResolutionMetadata: error === undefined ? {} : { error },
8
+ });
9
+ const errorMessage = (error) => error instanceof Error ? error.message : String(error);
10
+ const resolutionErrorCode = (error) => {
11
+ const message = errorMessage(error);
12
+ if (message.includes("Invalid DID") ||
13
+ message.includes("Invalid method-specific identifier") ||
14
+ message.includes("id must be a valid Midnight DID")) {
15
+ return "invalidDid";
16
+ }
17
+ if (message.includes("Offchain Midnight DIDs") ||
18
+ message.includes("Network mismatch")) {
19
+ return "methodNotSupported";
20
+ }
21
+ return "internalError";
22
+ };
23
+ export class MidnightDIDResolver {
24
+ ledgerReader;
25
+ expectedNetwork;
26
+ constructor(options) {
27
+ this.ledgerReader = options.ledgerReader;
28
+ this.expectedNetwork = options.expectedNetwork ?? null;
29
+ }
30
+ async resolve(did) {
31
+ const result = await this.resolveResult(did);
32
+ if (result === null) {
33
+ throw new Error(`DID not found: ${did}`);
34
+ }
35
+ return result.didDocument;
36
+ }
37
+ async resolveResult(did) {
38
+ const parsed = parseMidnightDIDString(did);
39
+ const { network, id } = parseMidnightDID(parsed);
40
+ if (network === MidnightNetwork.Offchain) {
41
+ throw new Error("Offchain Midnight DIDs must be resolved from their long-form encoded state, not through the ledger resolver");
42
+ }
43
+ if (this.expectedNetwork !== null && network !== this.expectedNetwork) {
44
+ throw new Error(`Network mismatch: DID network is ${network}, expected ${this.expectedNetwork}`);
45
+ }
46
+ const contractAddress = id;
47
+ const ledgerState = await this.ledgerReader(contractAddress);
48
+ if (ledgerState === null)
49
+ return null;
50
+ return {
51
+ didDocument: LedgerToDomain.ledgerStateToDIDDocument(ledgerState, network, contractAddress),
52
+ didDocumentMetadata: LedgerToDomain.ledgerStateToMetadata(ledgerState),
53
+ };
54
+ }
55
+ async resolveDIDResolutionResult(did) {
56
+ try {
57
+ const result = await this.resolveResult(did);
58
+ return resolutionEnvelope(result, result === null ? "notFound" : undefined);
59
+ }
60
+ catch (error) {
61
+ return resolutionEnvelope(null, resolutionErrorCode(error));
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=midnight-did-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight-did-resolver.js","sourceRoot":"","sources":["../src/midnight-did-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { DIDContract } from \"@midnight-ntwrk/midnight-did-contract\";\nimport {\n type ContractAddress,\n type DIDDocumentMetadata,\n type DIDResolutionErrorCode,\n parseMidnightDID,\n parseMidnightDIDString,\n} from \"@midnight-ntwrk/midnight-did-domain\";\n\nimport { LedgerToDomain } from \"./ledger-to-domain.js\";\nimport { MidnightNetwork } from \"./midnight.js\";\nimport { type MidnightDIDDocument } from \"./midnight-did-document.js\";\n\nexport type MidnightLedgerState = DIDContract.Ledger;\n\nexport type MidnightLedgerReader = (\n contractAddress: string,\n) => Promise<MidnightLedgerState | null>;\n\nexport type MidnightDIDResolverOptions = {\n ledgerReader: MidnightLedgerReader;\n expectedNetwork?: MidnightNetwork;\n};\n\nexport type MidnightResolutionResult = {\n didDocument: MidnightDIDDocument;\n didDocumentMetadata: DIDDocumentMetadata;\n};\n\nexport type MidnightDIDResolutionResult = {\n didDocument: MidnightDIDDocument | null;\n didDocumentMetadata: DIDDocumentMetadata;\n didResolutionMetadata: {\n error?: DIDResolutionErrorCode;\n };\n};\n\nconst resolutionEnvelope = (\n result: MidnightResolutionResult | null,\n error?: DIDResolutionErrorCode,\n): MidnightDIDResolutionResult => ({\n didDocument: result?.didDocument ?? null,\n didDocumentMetadata: result?.didDocumentMetadata ?? {},\n didResolutionMetadata: error === undefined ? {} : { error },\n});\n\nconst errorMessage = (error: unknown) =>\n error instanceof Error ? error.message : String(error);\n\nconst resolutionErrorCode = (error: unknown): DIDResolutionErrorCode => {\n const message = errorMessage(error);\n if (\n message.includes(\"Invalid DID\") ||\n message.includes(\"Invalid method-specific identifier\") ||\n message.includes(\"id must be a valid Midnight DID\")\n ) {\n return \"invalidDid\";\n }\n if (\n message.includes(\"Offchain Midnight DIDs\") ||\n message.includes(\"Network mismatch\")\n ) {\n return \"methodNotSupported\";\n }\n return \"internalError\";\n};\n\nexport class MidnightDIDResolver {\n private readonly ledgerReader: MidnightLedgerReader;\n private readonly expectedNetwork: MidnightNetwork | null;\n\n constructor(options: MidnightDIDResolverOptions) {\n this.ledgerReader = options.ledgerReader;\n this.expectedNetwork = options.expectedNetwork ?? null;\n }\n\n async resolve(did: string): Promise<MidnightDIDDocument> {\n const result = await this.resolveResult(did);\n if (result === null) {\n throw new Error(`DID not found: ${did}`);\n }\n return result.didDocument;\n }\n\n async resolveResult(did: string): Promise<MidnightResolutionResult | null> {\n const parsed = parseMidnightDIDString(did);\n const { network, id } = parseMidnightDID(parsed);\n\n if (network === MidnightNetwork.Offchain) {\n throw new Error(\n \"Offchain Midnight DIDs must be resolved from their long-form encoded state, not through the ledger resolver\",\n );\n }\n\n if (this.expectedNetwork !== null && network !== this.expectedNetwork) {\n throw new Error(\n `Network mismatch: DID network is ${network}, expected ${this.expectedNetwork}`,\n );\n }\n\n const contractAddress = id as ContractAddress;\n const ledgerState = await this.ledgerReader(contractAddress);\n if (ledgerState === null) return null;\n\n return {\n didDocument: LedgerToDomain.ledgerStateToDIDDocument(\n ledgerState,\n network,\n contractAddress,\n ),\n didDocumentMetadata: LedgerToDomain.ledgerStateToMetadata(ledgerState),\n };\n }\n\n async resolveDIDResolutionResult(\n did: string,\n ): Promise<MidnightDIDResolutionResult> {\n try {\n const result = await this.resolveResult(did);\n return resolutionEnvelope(\n result,\n result === null ? \"notFound\" : undefined,\n );\n } catch (error) {\n return resolutionEnvelope(null, resolutionErrorCode(error));\n }\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { ContractAddress, createMidnightDIDString, MidnightDIDSchema, MidnightDIDString, MidnightNetwork, parseContractAddress, parseMidnightDID, parseMidnightDIDString, } from "@midnight-ntwrk/midnight-did-domain/midnight";
2
+ //# sourceMappingURL=midnight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight.d.ts","sourceRoot":"","sources":["../src/midnight.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,8CAA8C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createMidnightDIDString, MidnightDIDSchema, MidnightNetwork, parseContractAddress, parseMidnightDID, parseMidnightDIDString, } from "@midnight-ntwrk/midnight-did-domain/midnight";
2
+ //# sourceMappingURL=midnight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midnight.js","sourceRoot":"","sources":["../src/midnight.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,uBAAuB,EACvB,iBAAiB,EAEjB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,8CAA8C,CAAC","sourcesContent":["export {\n ContractAddress,\n createMidnightDIDString,\n MidnightDIDSchema,\n MidnightDIDString,\n MidnightNetwork,\n parseContractAddress,\n parseMidnightDID,\n parseMidnightDIDString,\n} from \"@midnight-ntwrk/midnight-did-domain/midnight\";\n"]}
@@ -0,0 +1,12 @@
1
+ import { createOffchainMidnightDidDocumentMetadata, type OffchainMidnightDIDState, type ParsedLongFormOffchainMidnightDID } from "@midnight-ntwrk/midnight-did-domain";
2
+ import { type MidnightDIDDocument } from "./midnight-did-document.js";
3
+ export type ResolvedLongFormOffchainMidnightDID = {
4
+ readonly did: string;
5
+ readonly parsed: ParsedLongFormOffchainMidnightDID;
6
+ readonly state: OffchainMidnightDIDState;
7
+ readonly didDocument: MidnightDIDDocument;
8
+ readonly didDocumentMetadata: ReturnType<typeof createOffchainMidnightDidDocumentMetadata>;
9
+ };
10
+ export declare const resolveLongFormOffchainMidnightDID: (input: string) => ResolvedLongFormOffchainMidnightDID;
11
+ export declare const assertOffchainMidnightDID: (did: string) => string;
12
+ //# sourceMappingURL=offchain-midnight-did.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offchain-midnight-did.d.ts","sourceRoot":"","sources":["../src/offchain-midnight-did.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EAGzC,KAAK,wBAAwB,EAE7B,KAAK,iCAAiC,EAIvC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,iCAAiC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CACtC,OAAO,yCAAyC,CACjD,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,OAAO,MAAM,KACZ,mCAaF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,KAAK,MAAM,KAAG,MAMvD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { createOffchainMidnightDidDocumentMetadata, decodeOffchainMidnightDIDState, MidnightNetwork, offchainStateToDidDocument, parseLongFormOffchainMidnightDIDString, parseMidnightDID, parseMidnightDIDString, } from "@midnight-ntwrk/midnight-did-domain";
2
+ import { parseMidnightDIDDocument, } from "./midnight-did-document.js";
3
+ export const resolveLongFormOffchainMidnightDID = (input) => {
4
+ const parsed = parseLongFormOffchainMidnightDIDString(input);
5
+ const state = decodeOffchainMidnightDIDState(parsed.encodedState);
6
+ const didDocument = parseMidnightDIDDocument(offchainStateToDidDocument(parsed.did, state));
7
+ return {
8
+ did: parsed.did,
9
+ parsed,
10
+ state,
11
+ didDocument,
12
+ didDocumentMetadata: createOffchainMidnightDidDocumentMetadata(state),
13
+ };
14
+ };
15
+ export const assertOffchainMidnightDID = (did) => {
16
+ const parsed = parseMidnightDID(parseMidnightDIDString(did));
17
+ if (parsed.network !== MidnightNetwork.Offchain) {
18
+ throw new Error("Expected an offchain Midnight DID");
19
+ }
20
+ return did;
21
+ };
22
+ //# sourceMappingURL=offchain-midnight-did.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offchain-midnight-did.js","sourceRoot":"","sources":["../src/offchain-midnight-did.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,8BAA8B,EAC9B,eAAe,EAEf,0BAA0B,EAE1B,sCAAsC,EACtC,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAEL,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAYpC,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,KAAa,EACwB,EAAE;IACvC,MAAM,MAAM,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,8BAA8B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,wBAAwB,CAC1C,0BAA0B,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAC9C,CAAC;IACF,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM;QACN,KAAK;QACL,WAAW;QACX,mBAAmB,EAAE,yCAAyC,CAAC,KAAK,CAAC;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC","sourcesContent":["import {\n createOffchainMidnightDidDocumentMetadata,\n decodeOffchainMidnightDIDState,\n MidnightNetwork,\n type OffchainMidnightDIDState,\n offchainStateToDidDocument,\n type ParsedLongFormOffchainMidnightDID,\n parseLongFormOffchainMidnightDIDString,\n parseMidnightDID,\n parseMidnightDIDString,\n} from \"@midnight-ntwrk/midnight-did-domain\";\n\nimport {\n type MidnightDIDDocument,\n parseMidnightDIDDocument,\n} from \"./midnight-did-document.js\";\n\nexport type ResolvedLongFormOffchainMidnightDID = {\n readonly did: string;\n readonly parsed: ParsedLongFormOffchainMidnightDID;\n readonly state: OffchainMidnightDIDState;\n readonly didDocument: MidnightDIDDocument;\n readonly didDocumentMetadata: ReturnType<\n typeof createOffchainMidnightDidDocumentMetadata\n >;\n};\n\nexport const resolveLongFormOffchainMidnightDID = (\n input: string,\n): ResolvedLongFormOffchainMidnightDID => {\n const parsed = parseLongFormOffchainMidnightDIDString(input);\n const state = decodeOffchainMidnightDIDState(parsed.encodedState);\n const didDocument = parseMidnightDIDDocument(\n offchainStateToDidDocument(parsed.did, state),\n );\n return {\n did: parsed.did,\n parsed,\n state,\n didDocument,\n didDocumentMetadata: createOffchainMidnightDidDocumentMetadata(state),\n };\n};\n\nexport const assertOffchainMidnightDID = (did: string): string => {\n const parsed = parseMidnightDID(parseMidnightDIDString(did));\n if (parsed.network !== MidnightNetwork.Offchain) {\n throw new Error(\"Expected an offchain Midnight DID\");\n }\n return did;\n};\n"]}