@tozd/identifier 0.8.0 → 0.8.1

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/dist/index.d.ts CHANGED
@@ -8,5 +8,6 @@ export declare class Identifier {
8
8
  static fromString(data: string): Identifier;
9
9
  static new(): Identifier;
10
10
  static valid(id: string): boolean;
11
+ static from(...values: string[]): Promise<Identifier>;
11
12
  }
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,KAAK,EAAE,UAAU;IAQtB,QAAQ,IAAI,MAAM;IAUlB,MAAM,IAAI,MAAM;WAKT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;WAKlC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;WAMtC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;WAoBpC,GAAG,IAAI,UAAU;WAQjB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAWzC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,KAAK,EAAE,UAAU;IAQtB,QAAQ,IAAI,MAAM;IAUlB,MAAM,IAAI,MAAM;WAKT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;WAKlC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;WAMtC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;WAoBpC,GAAG,IAAI,UAAU;WAQjB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;WAmBpB,IAAI,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAyBnE"}
package/dist/index.js CHANGED
@@ -72,5 +72,36 @@ export class Identifier {
72
72
  return false;
73
73
  }
74
74
  }
75
+ // from generates a deterministic identifier from one or more string values using iterative SHA-256 hashing.
76
+ //
77
+ // Each value is normalized using Unicode NFC normalization before hashing. The function computes
78
+ // hash = SHA256(normalize(values[0])), then hash = SHA256(hash + normalize(values[1])), and so on.
79
+ // The final identifier is derived from the first 128 bits of the resulting hash.
80
+ //
81
+ // Different values or different orderings produce different identifiers.
82
+ static async from(...values) {
83
+ const encoder = new TextEncoder();
84
+ let hash;
85
+ for (const value of values) {
86
+ // Normalize the string using NFC.
87
+ const normalized = value.normalize("NFC");
88
+ const normalizedBytes = encoder.encode(normalized);
89
+ if (hash === undefined) {
90
+ // First iteration: hash just the normalized value.
91
+ const hashBuffer = await crypto.subtle.digest("SHA-256", normalizedBytes);
92
+ hash = new Uint8Array(hashBuffer);
93
+ }
94
+ else {
95
+ // Subsequent iterations: hash = SHA256(hash + normalized).
96
+ const combined = new Uint8Array(hash.length + normalizedBytes.length);
97
+ combined.set(hash);
98
+ combined.set(normalizedBytes, hash.length);
99
+ const hashBuffer = await crypto.subtle.digest("SHA-256", combined);
100
+ hash = new Uint8Array(hashBuffer);
101
+ }
102
+ }
103
+ // Take first 128 bits (16 bytes) of the final hash.
104
+ return new Identifier(hash.slice(0, 16));
105
+ }
75
106
  }
76
107
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tozd/identifier",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "type": "module",
5
5
  "description": "Readable global identifiers.",
6
6
  "license": "Apache-2.0",
@@ -26,7 +26,8 @@
26
26
  "test": "vitest",
27
27
  "coverage": "vitest --coverage",
28
28
  "test-ci": "vitest run --reporter junit --reporter default --outputFile tests.xml --coverage",
29
- "upgrade": "ncu -u"
29
+ "upgrade": "ncu -u",
30
+ "prepare": "npm run build"
30
31
  },
31
32
  "dependencies": {
32
33
  "bs58": "^6.0.0",