@did-btcr2/common 2.2.2 → 3.1.0

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.
Files changed (94) hide show
  1. package/dist/cjs/canonicalization.js +68 -56
  2. package/dist/cjs/canonicalization.js.map +1 -1
  3. package/dist/cjs/constants.js +17 -12
  4. package/dist/cjs/constants.js.map +1 -1
  5. package/dist/cjs/errors.js +20 -3
  6. package/dist/cjs/errors.js.map +1 -1
  7. package/dist/cjs/index.js +5 -3
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/json-patch.js +98 -0
  10. package/dist/cjs/json-patch.js.map +1 -0
  11. package/dist/cjs/logger.js +46 -12
  12. package/dist/cjs/logger.js.map +1 -1
  13. package/dist/cjs/types.js.map +1 -1
  14. package/dist/cjs/utils/date.js +123 -0
  15. package/dist/cjs/utils/date.js.map +1 -0
  16. package/dist/cjs/utils/json.js +280 -0
  17. package/dist/cjs/utils/json.js.map +1 -0
  18. package/dist/cjs/utils/set.js +23 -0
  19. package/dist/cjs/utils/set.js.map +1 -0
  20. package/dist/cjs/utils/string.js +55 -0
  21. package/dist/cjs/utils/string.js.map +1 -0
  22. package/dist/esm/canonicalization.js +68 -56
  23. package/dist/esm/canonicalization.js.map +1 -1
  24. package/dist/esm/constants.js +17 -12
  25. package/dist/esm/constants.js.map +1 -1
  26. package/dist/esm/errors.js +20 -3
  27. package/dist/esm/errors.js.map +1 -1
  28. package/dist/esm/index.js +5 -3
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/json-patch.js +98 -0
  31. package/dist/esm/json-patch.js.map +1 -0
  32. package/dist/esm/logger.js +46 -12
  33. package/dist/esm/logger.js.map +1 -1
  34. package/dist/esm/types.js.map +1 -1
  35. package/dist/esm/utils/date.js +123 -0
  36. package/dist/esm/utils/date.js.map +1 -0
  37. package/dist/esm/utils/json.js +280 -0
  38. package/dist/esm/utils/json.js.map +1 -0
  39. package/dist/esm/utils/set.js +23 -0
  40. package/dist/esm/utils/set.js.map +1 -0
  41. package/dist/esm/utils/string.js +55 -0
  42. package/dist/esm/utils/string.js.map +1 -0
  43. package/dist/types/canonicalization.d.ts +40 -31
  44. package/dist/types/canonicalization.d.ts.map +1 -1
  45. package/dist/types/constants.d.ts +6 -9
  46. package/dist/types/constants.d.ts.map +1 -1
  47. package/dist/types/errors.d.ts +14 -3
  48. package/dist/types/errors.d.ts.map +1 -1
  49. package/dist/types/index.d.ts +5 -3
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/interfaces.d.ts +2 -273
  52. package/dist/types/interfaces.d.ts.map +1 -1
  53. package/dist/types/json-patch.d.ts +47 -0
  54. package/dist/types/json-patch.d.ts.map +1 -0
  55. package/dist/types/logger.d.ts +31 -8
  56. package/dist/types/logger.d.ts.map +1 -1
  57. package/dist/types/types.d.ts +12 -4
  58. package/dist/types/types.d.ts.map +1 -1
  59. package/dist/types/utils/date.d.ts +39 -0
  60. package/dist/types/utils/date.d.ts.map +1 -0
  61. package/dist/types/utils/json.d.ts +89 -0
  62. package/dist/types/utils/json.d.ts.map +1 -0
  63. package/dist/types/utils/set.d.ts +14 -0
  64. package/dist/types/utils/set.d.ts.map +1 -0
  65. package/dist/types/utils/string.d.ts +39 -0
  66. package/dist/types/utils/string.d.ts.map +1 -0
  67. package/package.json +3 -4
  68. package/src/canonicalization.ts +81 -64
  69. package/src/constants.ts +19 -13
  70. package/src/errors.ts +25 -3
  71. package/src/index.ts +5 -5
  72. package/src/interfaces.ts +2 -302
  73. package/src/json-patch.ts +103 -0
  74. package/src/logger.ts +59 -27
  75. package/src/types.ts +12 -6
  76. package/src/utils/date.ts +130 -0
  77. package/src/utils/json.ts +315 -0
  78. package/src/utils/set.ts +23 -0
  79. package/src/utils/string.ts +59 -0
  80. package/dist/cjs/exts.js +0 -189
  81. package/dist/cjs/exts.js.map +0 -1
  82. package/dist/cjs/patch.js +0 -163
  83. package/dist/cjs/patch.js.map +0 -1
  84. package/dist/esm/exts.js +0 -189
  85. package/dist/esm/exts.js.map +0 -1
  86. package/dist/esm/patch.js +0 -163
  87. package/dist/esm/patch.js.map +0 -1
  88. package/dist/types/exts.d.ts +0 -90
  89. package/dist/types/exts.d.ts.map +0 -1
  90. package/dist/types/patch.d.ts +0 -63
  91. package/dist/types/patch.d.ts.map +0 -1
  92. package/src/exts.ts +0 -310
  93. package/src/patch.ts +0 -181
  94. package/src/rdf-canonize.d.ts +0 -6
@@ -2,7 +2,6 @@ import { sha256 } from '@noble/hashes/sha2';
2
2
  import { bytesToHex } from '@noble/hashes/utils';
3
3
  import { canonicalize as jcsa } from 'json-canonicalize';
4
4
  import { base58btc } from 'multiformats/bases/base58';
5
- import rdf from 'rdf-canonize';
6
5
  import { CanonicalizationError } from './errors.js';
7
6
  /**
8
7
  * Canonicalization class provides methods for canonicalizing JSON objects
@@ -12,35 +11,46 @@ import { CanonicalizationError } from './errors.js';
12
11
  * @type {Canonicalization}
13
12
  */
14
13
  export class Canonicalization {
15
- _algorithm;
14
+ _defaultAlgorithm;
16
15
  /**
17
16
  * Initializes the Canonicalization class with the specified algorithm.
18
- * @param {CanonicalizationAlgorithm} algorithm The canonicalization algorithm to use ('jcs' or 'rdfc').
17
+ * @param {CanonicalizationAlgorithm} algorithm The canonicalization algorithm to use ('jcs').
19
18
  */
20
- // TODO: Need to move to using RDFC by default
21
19
  constructor(algorithm = 'jcs') {
22
- this._algorithm = algorithm;
20
+ this._defaultAlgorithm = Canonicalization.normalizeAlgorithm(algorithm);
23
21
  }
24
22
  /**
25
- * Sets the canonicalization algorithm.
26
- * @param {'jcs' | 'rdfc'} algorithm Either 'jcs' or 'rdfc'.
23
+ * Gets the canonicalization algorithm.
24
+ * @returns {CanonicalizationAlgorithm} The current canonicalization algorithm.
27
25
  */
28
- set algorithm(algorithm) {
29
- // Normalize the passed algorithm to lowercase
30
- algorithm = algorithm.toLowerCase();
31
- // Validate the algorithm is either 'jcs' or 'rdfc'
32
- if (!['jcs', 'rdfc'].includes(algorithm)) {
26
+ get algorithm() {
27
+ return this._defaultAlgorithm;
28
+ }
29
+ /**
30
+ * Normalizes the canonicalization algorithm.
31
+ * @param {CanonicalizationAlgorithm} algorithm
32
+ * @returns {CanonicalizationAlgorithm} The normalized algorithm.
33
+ * @throws {CanonicalizationError} If the algorithm is not supported.
34
+ */
35
+ static normalizeAlgorithm(algorithm) {
36
+ const normalized = algorithm.toLowerCase();
37
+ if (normalized !== 'jcs') {
33
38
  throw new CanonicalizationError(`Unsupported algorithm: ${algorithm}`, 'ALGORITHM_ERROR');
34
39
  }
35
- // Set the algorithm
36
- this._algorithm = algorithm;
40
+ return normalized;
37
41
  }
38
42
  /**
39
- * Gets the canonicalization algorithm.
40
- * @returns {CanonicalizationAlgorithm} The current canonicalization algorithm.
43
+ * Normalizes the canonicalization encoding.
44
+ * @param {CanonicalizationEncoding} encoding - The encoding to normalize.
45
+ * @returns {CanonicalizationEncoding} The normalized encoding.
46
+ * @throws {CanonicalizationError} If the encoding is not supported.
41
47
  */
42
- get algorithm() {
43
- return this._algorithm;
48
+ static normalizeEncoding(encoding) {
49
+ const normalized = encoding.toLowerCase();
50
+ if (normalized !== 'hex' && normalized !== 'base58') {
51
+ throw new CanonicalizationError(`Unsupported encoding: ${encoding}`, 'ENCODING_ERROR');
52
+ }
53
+ return normalized;
44
54
  }
45
55
  /**
46
56
  * Implements {@link http://dcdpr.github.io/did-btcr2/#json-canonicalization-and-hash | 9.2 JSON Canonicalization and Hash}.
@@ -49,46 +59,48 @@ export class Canonicalization {
49
59
  * Scheme. The function returns the canonicalizedBytes.
50
60
  *
51
61
  * Optionally encodes a sha256 hashed canonicalized JSON object.
52
- * Step 1 Canonicalize (JCS/RDFC) → Step 2 Hash (SHA256) → Step 3 Encode (Hex/Base58).
62
+ * Step 1 Canonicalize (JCS) → Step 2 Hash (SHA256) → Step 3 Encode (Hex/Base58).
53
63
  *
54
- * @param {JSONObject} object The object to process.
55
- * @param {string} encoding The encoding format ('hex' or 'base58').
56
- * @returns {Promise<string>} The final SHA-256 hash bytes as a hex string.
64
+ * @param {Record<any, any>} object The object to process.
65
+ * @param {Object} [options] Options for processing.
66
+ * @param {CanonicalizationEncoding} [options.encoding='hex'] The encoding format ('hex' or 'base58').
67
+ * @param {CanonicalizationAlgorithm} [options.algorithm] The canonicalization algorithm to use.
68
+ * @returns {string} The final SHA-256 hash bytes as a hex string.
57
69
  */
58
- async process(object, encoding = 'hex') {
70
+ process(object, options = {}) {
71
+ const algorithm = Canonicalization.normalizeAlgorithm(options.algorithm ?? this._defaultAlgorithm);
72
+ const encoding = Canonicalization.normalizeEncoding(options.encoding ?? 'hex');
59
73
  // Step 1: Canonicalize
60
- const canonicalized = await this.canonicalize(object);
74
+ const canonicalized = this.canonicalize(object, algorithm);
61
75
  // Step 2: Hash
62
76
  const hashed = this.hash(canonicalized);
63
77
  // Step 3: Encode
64
- const encoded = this.encode(hashed, encoding);
78
+ const encoded = this.encode(hashed, encoding, options.multibase ?? false);
65
79
  // Return the encoded string
66
80
  return encoded;
67
81
  }
68
82
  /**
69
- * Step 1: Uses this.algorithm to determine the method (JCS/RDFC).
70
- * @param {JSONObject} object The object to canonicalize.
71
- * @returns {Promise<string>} The canonicalized object.
83
+ * Step 1: Uses this.algorithm to determine the method (JCS).
84
+ * @param {Record<any, any>} object The object to canonicalize.
85
+ * @param {CanonicalizationAlgorithm} [algorithm] The algorithm to use.
86
+ * @returns {string} The canonicalized object.
72
87
  */
73
- async canonicalize(object) {
74
- return await this[this.algorithm](object);
88
+ canonicalize(object, algorithm = this._defaultAlgorithm) {
89
+ switch (Canonicalization.normalizeAlgorithm(algorithm)) {
90
+ case 'jcs':
91
+ return this.jcs(object);
92
+ default:
93
+ throw new CanonicalizationError(`Unsupported algorithm: ${algorithm}`, 'ALGORITHM_ERROR');
94
+ }
75
95
  }
76
96
  /**
77
97
  * Step 1: Canonicalizes an object using JCS (JSON Canonicalization Scheme).
78
- * @param {JSONObject} object The object to canonicalize.
98
+ * @param {Record<any, any>} object The object to canonicalize.
79
99
  * @returns {string} The canonicalized object.
80
100
  */
81
101
  jcs(object) {
82
102
  return jcsa(object);
83
103
  }
84
- /**
85
- * Step 1: Canonicalizes an object using RDF Canonicalization (RDFC).
86
- * @param {JSONObject} object The object to canonicalize.
87
- * @returns {Promise<string>} The canonicalized object.
88
- */
89
- rdfc(object) {
90
- return rdf.canonize([object], { algorithm: 'RDFC-1.0' });
91
- }
92
104
  /**
93
105
  * Step 2: SHA-256 hashes a canonicalized object.
94
106
  * @param {string} canonicalized The canonicalized object.
@@ -100,19 +112,19 @@ export class Canonicalization {
100
112
  /**
101
113
  * Step 3: Encodes SHA-256 hashed, canonicalized object as a hex or base58 string.
102
114
  * @param {string} canonicalizedhash The canonicalized object to encode.
103
- * @param {string} encoding The encoding format ('hex' or 'base58').
115
+ * @param {CanonicalizationEncoding} encoding The encoding format ('hex' or 'base58').
104
116
  * @throws {CanonicalizationError} If the encoding format is not supported.
105
117
  * @returns {string} The encoded string.
106
118
  */
107
- encode(canonicalizedhash, encoding = 'hex') {
108
- switch (encoding) {
109
- case 'hex':
110
- return this.hex(canonicalizedhash);
111
- case 'base58':
112
- return this.base58(canonicalizedhash);
113
- default:
114
- throw new CanonicalizationError(`Unsupported encoding: ${encoding}`, 'ENCODING_ERROR');
119
+ encode(canonicalizedhash, encoding = 'hex', multibase = false) {
120
+ const normalized = Canonicalization.normalizeEncoding(encoding);
121
+ if (normalized === 'hex')
122
+ return this.hex(canonicalizedhash);
123
+ if (normalized === 'base58') {
124
+ const encoded = this.base58(canonicalizedhash);
125
+ return multibase ? `z${encoded}` : encoded;
115
126
  }
127
+ throw new CanonicalizationError(`Unsupported encoding: ${encoding}`, 'ENCODING_ERROR');
116
128
  }
117
129
  /**
118
130
  * Step 3.1: Encodes HashBytes (Uint8Array) to a hex string.
@@ -128,16 +140,17 @@ export class Canonicalization {
128
140
  * @returns {string} The hash as a hex string.
129
141
  */
130
142
  base58(hashBytes) {
131
- return base58btc.encode(hashBytes);
143
+ const encoded = base58btc.encode(hashBytes);
144
+ return encoded.startsWith('z') ? encoded.slice(1) : encoded;
132
145
  }
133
146
  /**
134
147
  * Canonicalizes an object, hashes it and returns it as hash bytes.
135
148
  * Step 1-2: Canonicalize → Hash.
136
- * @param {JSONObject} object The object to process.
149
+ * @param {Record<any, any>} object The object to process.
137
150
  * @returns {Promise<HashBytes>} The final SHA-256 hash bytes.
138
151
  */
139
- async canonicalhash(object) {
140
- const canonicalized = await this.canonicalize(object);
152
+ canonicalhash(object, algorithm = this._defaultAlgorithm) {
153
+ const canonicalized = this.canonicalize(object, algorithm);
141
154
  return this.hash(canonicalized);
142
155
  }
143
156
  /**
@@ -147,7 +160,7 @@ export class Canonicalization {
147
160
  * @returns {string} The SHA-256 hash as a hex string.
148
161
  */
149
162
  hashhex(canonicalized) {
150
- return this.encode(this.hash(canonicalized));
163
+ return this.encode(this.hash(canonicalized), 'hex');
151
164
  }
152
165
  /**
153
166
  * Computes the SHA-256 hashes of canonicalized object and encodes it as a base58 string.
@@ -155,9 +168,8 @@ export class Canonicalization {
155
168
  * @param {string} canonicalized The canonicalized object to hash.
156
169
  * @returns {string} The SHA-256 hash as a base58 string.
157
170
  */
158
- hashb58(canonicalized) {
159
- return this.encode(this.hash(canonicalized), 'base58');
171
+ hashbase58(canonicalized) {
172
+ return this.encode(this.hash(canonicalized), 'base58', false);
160
173
  }
161
174
  }
162
- export const canonicalization = new Canonicalization();
163
175
  //# sourceMappingURL=canonicalization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalization.js","sourceRoot":"","sources":["../../src/canonicalization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonicalization.js","sourceRoot":"","sources":["../../src/canonicalization.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { sha256 } from '@noble/hashes/sha2';
2
- export const ID_PLACEHOLDER_VALUE = 'did:btcr2:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
2
+ import { bytesToHex } from '@noble/hashes/utils';
3
3
  export const OP_RETURN = 0x6a;
4
4
  export const OP_PUSH32 = 0x20;
5
5
  export const VALID_HRP = ['k', 'x'];
@@ -7,31 +7,36 @@ export const MULTIBASE_URI_PREFIX = 'urn:mb:';
7
7
  export const INITIAL_BLOCK_REWARD = 50;
8
8
  export const HALVING_INTERVAL = 150;
9
9
  export const COINBASE_MATURITY_DELAY = 100;
10
- export const POLAR_BOB_CLIENT_CONFIG = {
10
+ export const DEFAULT_POLAR_CONFIG = {
11
11
  username: 'polaruser',
12
12
  password: 'polarpass',
13
13
  host: 'http://127.0.0.1:18443',
14
14
  allowDefaultWallet: true,
15
15
  version: '28.1.0'
16
16
  };
17
- export const POLAR_ALICE_CLIENT_CONFIG = {
18
- username: 'polaruser',
19
- password: 'polarpass',
20
- host: 'http://127.0.0.1:18444',
21
- allowDefaultWallet: true,
22
- version: '28.1.0'
23
- };
24
17
  export const DEFAULT_REST_CONFIG = { host: 'http://localhost:3000' };
25
- export const DEFAULT_RPC_CONFIG = POLAR_BOB_CLIENT_CONFIG;
18
+ export const DEFAULT_RPC_CONFIG = DEFAULT_POLAR_CONFIG;
26
19
  export const DEFAULT_BLOCK_CONFIRMATIONS = 7;
20
+ /**
21
+ * Load a default RPC config, allowing environment overrides to avoid hard-coding credentials/hosts in bundles.
22
+ * @returns {typeof DEFAULT_POLAR_CONFIG} The RPC config.
23
+ */
24
+ export function getDefaultRpcConfig() {
25
+ return {
26
+ ...DEFAULT_POLAR_CONFIG,
27
+ host: process.env.BTCR2_RPC_HOST ?? DEFAULT_POLAR_CONFIG.host,
28
+ username: process.env.BTCR2_RPC_USER ?? DEFAULT_POLAR_CONFIG.username,
29
+ password: process.env.BTCR2_RPC_PASS ?? DEFAULT_POLAR_CONFIG.password,
30
+ };
31
+ }
27
32
  // Fixed public key header bytes per the Data Integrity BIP340 Cryptosuite spec: [0xe7, 0x01] / [231, 1]
28
33
  export const BIP340_PUBLIC_KEY_MULTIBASE_PREFIX = new Uint8Array([0xe7, 0x01]);
29
34
  // Hash of the BIP-340 Multikey prefix
30
- export const BIP340_PUBLIC_KEY_MULTIBASE_PREFIX_HASH = Buffer.from(sha256(BIP340_PUBLIC_KEY_MULTIBASE_PREFIX)).toString('hex');
35
+ export const BIP340_PUBLIC_KEY_MULTIBASE_PREFIX_HASH = bytesToHex(sha256(BIP340_PUBLIC_KEY_MULTIBASE_PREFIX));
31
36
  // Fixed secret key header bytes per the Data Integrity BIP340 Cryptosuite spec: [0x81, 0x26] / [129, 38]
32
37
  export const BIP340_SECRET_KEY_MULTIBASE_PREFIX = new Uint8Array([0x81, 0x26]);
33
38
  // Hash of the BIP-340 Multikey prefix
34
- export const BIP340_SECRET_KEY_MULTIBASE_PREFIX_HASH = Buffer.from(sha256(BIP340_SECRET_KEY_MULTIBASE_PREFIX)).toString('hex');
39
+ export const BIP340_SECRET_KEY_MULTIBASE_PREFIX_HASH = bytesToHex(sha256(BIP340_SECRET_KEY_MULTIBASE_PREFIX));
35
40
  // curve's field size
36
41
  export const B256 = 2n ** 256n;
37
42
  // curve's field prime
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
@@ -53,12 +53,14 @@ export var MethodErrorCode;
53
53
  MethodErrorCode["LATE_PUBLISHING_ERROR"] = "LATE_PUBLISHING_ERROR";
54
54
  /** The sidecar data in the DID Update Payload was invalid. */
55
55
  MethodErrorCode["INVALID_SIDECAR_DATA"] = "INVALID_SIDECAR_DATA";
56
- /** The proof is missing or has a malformed challenge field. */
57
- MethodErrorCode["INVALID_CHALLENGE_ERROR"] = "INVALID_CHALLENGE_ERROR";
56
+ /** The update data required for resolution is missing. */
57
+ MethodErrorCode["MISSING_UPDATE_DATA"] = "MISSING_UPDATE_DATA";
58
+ /** The update is missing or has a malformed field(s). */
59
+ MethodErrorCode["INVALID_UPDATE"] = "INVALID_UPDATE";
58
60
  /** The proof is missing or has a malformed domain field. */
59
61
  MethodErrorCode["INVALID_DOMAIN_ERROR"] = "INVALID_DOMAIN_ERROR";
60
62
  })(MethodErrorCode || (MethodErrorCode = {}));
61
- export const { INVALID_DID, METHOD_NOT_SUPPORTED, INTERNAL_ERROR, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, INVALID_DID_DOCUMENT_LENGTH, INVALID_DID_URL, INVALID_PREVIOUS_DID_PROOF, INVALID_PUBLIC_KEY, INVALID_PUBLIC_KEY_MULTIBASE, INVALID_PUBLIC_KEY_LENGTH, INVALID_PUBLIC_KEY_TYPE, INVALID_SIGNATURE, NOT_FOUND, REPRESENTATION_NOT_SUPPORTED, UNSUPPORTED_PUBLIC_KEY_TYPE, PROOF_VERIFICATION_ERROR, PROOF_GENERATION_ERROR, PROOF_SERIALIZATION_ERROR, PROOF_PARSING_ERROR, VERIFICATION_METHOD_ERROR, LATE_PUBLISHING_ERROR, INVALID_SIDECAR_DATA, INVALID_CHALLENGE_ERROR, INVALID_DOMAIN_ERROR } = MethodErrorCode;
63
+ export const { INVALID_DID, METHOD_NOT_SUPPORTED, INTERNAL_ERROR, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, INVALID_DID_DOCUMENT_LENGTH, INVALID_DID_URL, INVALID_PREVIOUS_DID_PROOF, INVALID_PUBLIC_KEY, INVALID_PUBLIC_KEY_MULTIBASE, INVALID_PUBLIC_KEY_LENGTH, INVALID_PUBLIC_KEY_TYPE, INVALID_SIGNATURE, NOT_FOUND, REPRESENTATION_NOT_SUPPORTED, UNSUPPORTED_PUBLIC_KEY_TYPE, PROOF_VERIFICATION_ERROR, PROOF_GENERATION_ERROR, PROOF_SERIALIZATION_ERROR, PROOF_PARSING_ERROR, VERIFICATION_METHOD_ERROR, LATE_PUBLISHING_ERROR, INVALID_SIDECAR_DATA, MISSING_UPDATE_DATA, INVALID_UPDATE, INVALID_DOMAIN_ERROR } = MethodErrorCode;
62
64
  export class NotImplementedError extends Error {
63
65
  name = 'NotImplementedError';
64
66
  type = 'NotImplementedError';
@@ -100,6 +102,16 @@ export class MethodError extends DidMethodError {
100
102
  super(message, { type, name: type, data });
101
103
  }
102
104
  }
105
+ export class IdentifierError extends DidMethodError {
106
+ constructor(message, type = 'IdentifierError', data) {
107
+ super(message, { type, name: type, data });
108
+ }
109
+ }
110
+ export class UpdateError extends DidMethodError {
111
+ constructor(message, type = 'UpdateError', data) {
112
+ super(message, { type, name: type, data });
113
+ }
114
+ }
103
115
  export class ResolveError extends DidMethodError {
104
116
  constructor(message, type = 'ResolveError', data) {
105
117
  super(message, { type, name: 'ResolveError', data });
@@ -120,6 +132,11 @@ export class CryptosuiteError extends DidMethodError {
120
132
  super(message, { type, name: type, data });
121
133
  }
122
134
  }
135
+ export class DataIntegrityProofError extends DidMethodError {
136
+ constructor(message, type = 'DataIntegrityProofError', data) {
137
+ super(message, { type, name: type, data });
138
+ }
139
+ }
123
140
  export class KeyPairError extends DidMethodError {
124
141
  constructor(message, type = 'KeyPairError', data) {
125
142
  super(message, { type, name: type, data });
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,10 +1,12 @@
1
- import './exts.js';
2
1
  export * from './canonicalization.js';
3
2
  export * from './constants.js';
4
3
  export * from './errors.js';
5
4
  export * from './interfaces.js';
5
+ export * from './json-patch.js';
6
6
  export * from './logger.js';
7
- export * from './patch.js';
8
7
  export * from './types.js';
9
- export * from './exts.js';
8
+ export * from './utils/date.js';
9
+ export * from './utils/json.js';
10
+ export * from './utils/set.js';
11
+ export * from './utils/string.js';
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,CAAC;AAEnB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import jsonPatch from 'fast-json-patch';
2
+ import { MethodError } from './errors.js';
3
+ const { applyPatch, compare, deepClone } = jsonPatch;
4
+ /**
5
+ * Thin wrapper around fast-json-patch to keep a stable API within this package.
6
+ * @class JSONPatch
7
+ * @type {JSONPatch}
8
+ */
9
+ export class JSONPatch {
10
+ /**
11
+ * Applies a JSON Patch to a source document and returns the patched document.
12
+ * Does not mutate the input document.
13
+ * @param {JSONObject} sourceDocument - The source JSON document to apply the patch to.
14
+ * @param {PatchOperation[]} operations - The JSON Patch operations to apply.
15
+ * @returns {JSONObject} The patched JSON document.
16
+ */
17
+ static apply(sourceDocument, operations, options = {}) {
18
+ const mutate = options.mutate ?? false;
19
+ const cloneFn = options.clone ?? deepClone;
20
+ const docClone = mutate ? sourceDocument : cloneFn(sourceDocument);
21
+ const validationError = this.validateOperations(operations);
22
+ if (validationError) {
23
+ throw new MethodError('Invalid JSON Patch operations', 'JSON_PATCH_APPLY_ERROR', { error: validationError });
24
+ }
25
+ try {
26
+ const result = applyPatch(docClone, operations, true, mutate);
27
+ if (result.newDocument === undefined) {
28
+ throw new MethodError('JSON Patch application failed', 'JSON_PATCH_APPLY_ERROR', { result });
29
+ }
30
+ return result.newDocument;
31
+ }
32
+ catch (error) {
33
+ throw new MethodError('JSON Patch application failed', 'JSON_PATCH_APPLY_ERROR', { error });
34
+ }
35
+ }
36
+ /**
37
+ * Compute a JSON Patch diff from source => target.
38
+ * @param {JSONObject} sourceDocument - The source JSON document.
39
+ * @param {JSONObject} targetDocument - The target JSON document.
40
+ * @param {string} [path] - An optional base path to prefix to each operation.
41
+ * @returns {PatchOperation[]} The computed JSON Patch operations.
42
+ */
43
+ static diff(sourceDocument, targetDocument, path = '') {
44
+ const ops = compare(sourceDocument ?? {}, targetDocument ?? {});
45
+ if (!path)
46
+ return ops;
47
+ const prefix = path.endsWith('/') ? path.slice(0, -1) : path;
48
+ return ops.map(op => ({
49
+ ...op,
50
+ path: this.joinPointer(prefix, op.path)
51
+ }));
52
+ }
53
+ /**
54
+ * Join a base pointer prefix with an operation path ensuring correct escaping.
55
+ * @param {string} prefix - The base pointer prefix.
56
+ * @param {string} opPath - The operation path.
57
+ * @returns {string} The joined pointer.
58
+ */
59
+ static joinPointer(prefix, opPath) {
60
+ if (!prefix)
61
+ return opPath;
62
+ const normalizedPrefix = prefix.startsWith('/') ? prefix : `/${prefix}`;
63
+ return `${this.escapeSegmentPath(normalizedPrefix)}${opPath}`;
64
+ }
65
+ /**
66
+ * Escape a JSON Pointer segment according to RFC 6901.
67
+ * @param {string} pointer - The JSON Pointer to escape.
68
+ * @returns {string} The escaped JSON Pointer.
69
+ */
70
+ static escapeSegmentPath(pointer) {
71
+ return pointer
72
+ .split('/')
73
+ .map((segment, idx) => idx === 0 ? segment : segment.replace(/~/g, '~0').replace(/\//g, '~1'))
74
+ .join('/');
75
+ }
76
+ /**
77
+ * Validate JSON Patch operations.
78
+ * @param {PatchOperation[]} operations - The operations to validate.
79
+ * @returns {Error | null} An Error if validation fails, otherwise null.
80
+ */
81
+ static validateOperations(operations) {
82
+ if (!Array.isArray(operations))
83
+ return new Error('Operations must be an array');
84
+ for (const op of operations) {
85
+ if (!op || typeof op !== 'object')
86
+ return new Error('Operation must be an object');
87
+ if (typeof op.op !== 'string')
88
+ return new Error('Operation.op must be a string');
89
+ if (typeof op.path !== 'string')
90
+ return new Error('Operation.path must be a string');
91
+ if ((op.op === 'move' || op.op === 'copy') && typeof op.from !== 'string') {
92
+ return new Error(`Operation.from must be a string for op=${op.op}`);
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ }
98
+ //# sourceMappingURL=json-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-patch.js","sourceRoot":"","sources":["../../src/json-patch.ts"],"names":[],"mappings":"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"}
@@ -44,16 +44,33 @@ const LEVEL_METHODS = {
44
44
  * - File/line tracing
45
45
  * - Timestamps
46
46
  * - Colorized output
47
+ * @class Logger
48
+ * @type {Logger}
47
49
  */
48
50
  export class Logger {
49
51
  levels;
50
52
  namespace;
51
- constructor(namespace) {
52
- this.levels = LOG_LEVELS[NODE_ENV] || [];
53
- this.namespace = namespace ?? 'did-btcr2-js';
53
+ useColors;
54
+ static shared;
55
+ /**
56
+ * Creates a new Logger instance.
57
+ * @param {string} namespace - Optional namespace for log messages.
58
+ * @param {Object} options - Configuration options.
59
+ * @param {Level[]} options.levels - Log levels to enable.
60
+ * @param {boolean} options.useColors - Whether to use colored output.
61
+ */
62
+ constructor(namespace, options = {}) {
63
+ this.levels = options.levels || LOG_LEVELS[NODE_ENV] || [];
64
+ this.namespace = namespace || 'did-btcr2-js';
65
+ const envForce = process.env.LOG_COLORS;
66
+ this.useColors = options.useColors || (envForce ? envForce !== '0' && envForce.toLowerCase() !== 'false' : Boolean(process.stdout.isTTY));
54
67
  }
55
68
  /**
56
69
  * Logs a message with the specified level.
70
+ * @param {Level} level - The log level.
71
+ * @param {unknown} message - The message to log.
72
+ * @param {...unknown[]} args - Additional arguments to log.
73
+ * @returns {void}
57
74
  */
58
75
  _log(level, message, ...args) {
59
76
  if (!this.levels.includes(level))
@@ -62,9 +79,10 @@ export class Logger {
62
79
  const method = LEVEL_METHODS[level];
63
80
  const timestamp = new Date().toISOString();
64
81
  const namespace = this.namespace ? `[${this.namespace}]` : '';
65
- console[method](`${chalk.gray(timestamp)} ${namespace} ${color(level)}: ${chalk.white(message)}`, ...args);
82
+ const render = this.useColors ? color : (v) => v;
83
+ const renderGray = this.useColors ? chalk.gray : (v) => v;
84
+ console[method](`${renderGray(timestamp)} ${namespace} ${render(level)}: ${message}`, ...args);
66
85
  }
67
- // 🔹 Instance-based logging methods
68
86
  debug(message, ...args) {
69
87
  this._log('debug', message, ...args);
70
88
  return this;
@@ -95,27 +113,43 @@ export class Logger {
95
113
  }
96
114
  /**
97
115
  * Static methods for convenience (auto-instantiate).
116
+ * These use a shared singleton instance.
117
+ * @param {unknown} message - The message to log.
118
+ * @param {...unknown[]} args - Additional arguments to log.
119
+ * @returns {void}
98
120
  */
99
121
  static debug(message, ...args) {
100
- new Logger().debug(message, ...args);
122
+ Logger.instance().debug(message, ...args);
101
123
  }
102
124
  static error(message, ...args) {
103
- new Logger().error(message, ...args);
125
+ Logger.instance().error(message, ...args);
104
126
  }
105
127
  static info(message, ...args) {
106
- new Logger().info(message, ...args);
128
+ Logger.instance().info(message, ...args);
107
129
  }
108
130
  static warn(message, ...args) {
109
- new Logger().warn(message, ...args);
131
+ Logger.instance().warn(message, ...args);
110
132
  }
111
133
  static security(message, ...args) {
112
- new Logger().security(message, ...args);
134
+ Logger.instance().security(message, ...args);
113
135
  }
114
136
  static log(message, ...args) {
115
- new Logger().log(message, ...args);
137
+ Logger.instance().log(message, ...args);
116
138
  }
117
139
  static newline() {
118
- new Logger().newline();
140
+ Logger.instance().newline();
141
+ }
142
+ static instance(levels, useColors) {
143
+ if (!Logger.shared) {
144
+ Logger.shared = new Logger(undefined, { levels, useColors });
145
+ }
146
+ else {
147
+ if (levels)
148
+ Logger.shared.levels = levels;
149
+ if (useColors !== undefined)
150
+ Logger.shared.useColors = useColors;
151
+ }
152
+ return Logger.shared;
119
153
  }
120
154
  }
121
155
  //# sourceMappingURL=logger.js.map