@hashgraphonline/standards-sdk 0.1.170 → 0.1.172

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 (159) hide show
  1. package/README.md +2 -2
  2. package/dist/browser/services/registry-broker/client/base-client.d.ts +3 -2
  3. package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
  4. package/dist/browser/services/registry-broker/client/search.d.ts +2 -1
  5. package/dist/browser/services/registry-broker/client/search.d.ts.map +1 -1
  6. package/dist/browser/services/registry-broker/client.d.ts +1 -0
  7. package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
  8. package/dist/browser/services/registry-broker/schemas.d.ts +17723 -58
  9. package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
  10. package/dist/browser/services/registry-broker/types.d.ts +36 -1
  11. package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
  12. package/dist/browser/standards-sdk.browser.js +64 -1
  13. package/dist/browser/standards-sdk.browser.js.map +1 -1
  14. package/dist/cjs/services/registry-broker/client/base-client.d.ts +3 -2
  15. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  16. package/dist/cjs/services/registry-broker/client/search.d.ts +2 -1
  17. package/dist/cjs/services/registry-broker/client/search.d.ts.map +1 -1
  18. package/dist/cjs/services/registry-broker/client.d.ts +1 -0
  19. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  20. package/dist/cjs/services/registry-broker/schemas.d.ts +17814 -149
  21. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  22. package/dist/cjs/services/registry-broker/types.d.ts +36 -1
  23. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  24. package/dist/cjs/standards-sdk.cjs +3 -3
  25. package/dist/cjs/standards-sdk.cjs.map +1 -1
  26. package/dist/es/services/registry-broker/client/base-client.d.ts +3 -2
  27. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  28. package/dist/es/services/registry-broker/client/search.d.ts +2 -1
  29. package/dist/es/services/registry-broker/client/search.d.ts.map +1 -1
  30. package/dist/es/services/registry-broker/client.d.ts +1 -0
  31. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  32. package/dist/es/services/registry-broker/schemas.d.ts +17814 -149
  33. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  34. package/dist/es/services/registry-broker/types.d.ts +36 -1
  35. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  36. package/dist/es/standards-sdk.es.js +20 -9
  37. package/dist/es/standards-sdk.es.js.map +1 -1
  38. package/dist/es/standards-sdk.es104.js +1 -1
  39. package/dist/es/standards-sdk.es106.js +1 -1
  40. package/dist/es/standards-sdk.es108.js +1 -1
  41. package/dist/es/standards-sdk.es11.js +1 -1
  42. package/dist/es/standards-sdk.es110.js +1 -1
  43. package/dist/es/standards-sdk.es116.js +2 -2
  44. package/dist/es/standards-sdk.es12.js +1 -1
  45. package/dist/es/standards-sdk.es121.js +1 -1
  46. package/dist/es/standards-sdk.es127.js +1 -1
  47. package/dist/es/standards-sdk.es128.js +5 -5
  48. package/dist/es/standards-sdk.es138.js +1 -1
  49. package/dist/es/standards-sdk.es139.js +1 -1
  50. package/dist/es/standards-sdk.es140.js +5 -5
  51. package/dist/es/standards-sdk.es142.js +2 -2
  52. package/dist/es/standards-sdk.es143.js +1 -1
  53. package/dist/es/standards-sdk.es145.js +65 -1
  54. package/dist/es/standards-sdk.es145.js.map +1 -1
  55. package/dist/es/standards-sdk.es147.js +250 -78
  56. package/dist/es/standards-sdk.es147.js.map +1 -1
  57. package/dist/es/standards-sdk.es148.js +77 -71
  58. package/dist/es/standards-sdk.es148.js.map +1 -1
  59. package/dist/es/standards-sdk.es149.js +79 -936
  60. package/dist/es/standards-sdk.es149.js.map +1 -1
  61. package/dist/es/standards-sdk.es150.js +934 -53
  62. package/dist/es/standards-sdk.es150.js.map +1 -1
  63. package/dist/es/standards-sdk.es151.js +53 -152
  64. package/dist/es/standards-sdk.es151.js.map +1 -1
  65. package/dist/es/standards-sdk.es152.js +159 -7
  66. package/dist/es/standards-sdk.es152.js.map +1 -1
  67. package/dist/es/standards-sdk.es153.js +7 -86
  68. package/dist/es/standards-sdk.es153.js.map +1 -1
  69. package/dist/es/standards-sdk.es154.js +64 -43
  70. package/dist/es/standards-sdk.es154.js.map +1 -1
  71. package/dist/es/standards-sdk.es155.js +65 -30
  72. package/dist/es/standards-sdk.es155.js.map +1 -1
  73. package/dist/es/standards-sdk.es156.js +30 -34
  74. package/dist/es/standards-sdk.es156.js.map +1 -1
  75. package/dist/es/standards-sdk.es157.js +34 -48
  76. package/dist/es/standards-sdk.es157.js.map +1 -1
  77. package/dist/es/standards-sdk.es158.js +48 -138
  78. package/dist/es/standards-sdk.es158.js.map +1 -1
  79. package/dist/es/standards-sdk.es159.js +133 -37
  80. package/dist/es/standards-sdk.es159.js.map +1 -1
  81. package/dist/es/standards-sdk.es16.js +1 -1
  82. package/dist/es/standards-sdk.es160.js +34 -12474
  83. package/dist/es/standards-sdk.es160.js.map +1 -1
  84. package/dist/es/standards-sdk.es161.js +12479 -53
  85. package/dist/es/standards-sdk.es161.js.map +1 -1
  86. package/dist/es/standards-sdk.es162.js +48 -76
  87. package/dist/es/standards-sdk.es162.js.map +1 -1
  88. package/dist/es/standards-sdk.es163.js +69 -66
  89. package/dist/es/standards-sdk.es163.js.map +1 -1
  90. package/dist/es/standards-sdk.es164.js +61 -180
  91. package/dist/es/standards-sdk.es164.js.map +1 -1
  92. package/dist/es/standards-sdk.es165.js +197 -14
  93. package/dist/es/standards-sdk.es165.js.map +1 -1
  94. package/dist/es/standards-sdk.es166.js +15 -548
  95. package/dist/es/standards-sdk.es166.js.map +1 -1
  96. package/dist/es/standards-sdk.es167.js +66 -165
  97. package/dist/es/standards-sdk.es167.js.map +1 -1
  98. package/dist/es/standards-sdk.es168.js +535 -307
  99. package/dist/es/standards-sdk.es168.js.map +1 -1
  100. package/dist/es/standards-sdk.es169.js +120 -294
  101. package/dist/es/standards-sdk.es169.js.map +1 -1
  102. package/dist/es/standards-sdk.es170.js +191 -322
  103. package/dist/es/standards-sdk.es170.js.map +1 -1
  104. package/dist/es/standards-sdk.es171.js +294 -279
  105. package/dist/es/standards-sdk.es171.js.map +1 -1
  106. package/dist/es/standards-sdk.es172.js +440 -63
  107. package/dist/es/standards-sdk.es172.js.map +1 -1
  108. package/dist/es/standards-sdk.es173.js +323 -65
  109. package/dist/es/standards-sdk.es173.js.map +1 -1
  110. package/dist/es/standards-sdk.es174.js +61 -157
  111. package/dist/es/standards-sdk.es174.js.map +1 -1
  112. package/dist/es/standards-sdk.es175.js +152 -202
  113. package/dist/es/standards-sdk.es175.js.map +1 -1
  114. package/dist/es/standards-sdk.es176.js +219 -223
  115. package/dist/es/standards-sdk.es176.js.map +1 -1
  116. package/dist/es/standards-sdk.es177.js +227 -107
  117. package/dist/es/standards-sdk.es177.js.map +1 -1
  118. package/dist/es/standards-sdk.es178.js +98 -105
  119. package/dist/es/standards-sdk.es178.js.map +1 -1
  120. package/dist/es/standards-sdk.es179.js +105 -140
  121. package/dist/es/standards-sdk.es179.js.map +1 -1
  122. package/dist/es/standards-sdk.es18.js +4 -4
  123. package/dist/es/standards-sdk.es180.js +2 -2
  124. package/dist/es/standards-sdk.es182.js +1 -1
  125. package/dist/es/standards-sdk.es19.js +2 -2
  126. package/dist/es/standards-sdk.es22.js +1 -1
  127. package/dist/es/standards-sdk.es27.js +4 -4
  128. package/dist/es/standards-sdk.es30.js +1 -1
  129. package/dist/es/standards-sdk.es31.js +1 -1
  130. package/dist/es/standards-sdk.es35.js +2 -2
  131. package/dist/es/standards-sdk.es36.js +3 -3
  132. package/dist/es/standards-sdk.es37.js +1 -1
  133. package/dist/es/standards-sdk.es4.js +1 -1
  134. package/dist/es/standards-sdk.es53.js +1 -1
  135. package/dist/es/standards-sdk.es56.js +1 -1
  136. package/dist/es/standards-sdk.es59.js +1 -1
  137. package/dist/es/standards-sdk.es60.js +1 -1
  138. package/dist/es/standards-sdk.es62.js +1 -1
  139. package/dist/es/standards-sdk.es63.js +2 -2
  140. package/dist/es/standards-sdk.es64.js +1 -1
  141. package/dist/es/standards-sdk.es65.js +1 -1
  142. package/dist/es/standards-sdk.es66.js +1 -1
  143. package/dist/es/standards-sdk.es67.js +2 -2
  144. package/dist/es/standards-sdk.es69.js +1 -1
  145. package/dist/es/standards-sdk.es7.js +1 -1
  146. package/dist/es/standards-sdk.es71.js +1 -1
  147. package/dist/es/standards-sdk.es72.js +2 -2
  148. package/dist/es/standards-sdk.es75.js +3 -3
  149. package/dist/es/standards-sdk.es76.js +1 -1
  150. package/dist/es/standards-sdk.es78.js +1 -1
  151. package/dist/es/standards-sdk.es83.js +1 -1
  152. package/dist/es/standards-sdk.es84.js +1 -1
  153. package/dist/es/standards-sdk.es85.js +1 -1
  154. package/dist/es/standards-sdk.es88.js +1 -1
  155. package/dist/es/standards-sdk.es90.js +1 -1
  156. package/dist/es/standards-sdk.es94.js +3 -3
  157. package/dist/es/standards-sdk.es98.js +1 -1
  158. package/dist/es/standards-sdk.es99.js +1 -1
  159. package/package.json +1 -1
@@ -1,87 +1,59 @@
1
- import { isBrowser } from "./standards-sdk.es136.js";
2
- let nodeRequire;
3
- function isModuleNotFound(specifier, error) {
4
- if (!error || typeof error !== "object") {
5
- return false;
6
- }
7
- const code = Reflect.get(error, "code");
8
- const message = Reflect.get(error, "message");
9
- const messageText = typeof message === "string" ? message : "";
10
- if (typeof code === "string" && code.includes("MODULE_NOT_FOUND")) {
11
- return messageText.includes(specifier);
12
- }
13
- if (messageText) {
14
- const lowered = messageText.toLowerCase();
15
- if (lowered.includes("cannot find module") || lowered.includes("module not found") || lowered.includes("cannot find package")) {
16
- return lowered.includes(specifier.toLowerCase());
17
- }
18
- }
19
- return false;
20
- }
21
- async function resolveNodeRequire() {
22
- if (nodeRequire !== void 0) {
23
- return nodeRequire;
24
- }
25
- if (isBrowser) {
26
- nodeRequire = null;
27
- return nodeRequire;
28
- }
29
- try {
30
- const globalObject = typeof global !== "undefined" ? global : globalThis;
31
- const req = globalObject.process?.mainModule?.require ?? globalObject.require;
32
- nodeRequire = typeof req === "function" && typeof req.resolve === "function" ? req : null;
33
- } catch {
34
- nodeRequire = null;
35
- }
36
- return nodeRequire;
37
- }
38
- async function dynamicImport(specifier) {
39
- try {
40
- return await import(specifier);
41
- } catch (error) {
42
- if (isModuleNotFound(specifier, error)) {
43
- return null;
1
+ const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
2
+ const BASE = 58;
3
+ function base58Encode(bytes) {
4
+ if (bytes.length === 0) return "";
5
+ let zeros = 0;
6
+ while (zeros < bytes.length && bytes[zeros] === 0) zeros++;
7
+ if (zeros === bytes.length) return "1".repeat(zeros);
8
+ const digits = [0];
9
+ for (let i = zeros; i < bytes.length; i++) {
10
+ let carry = bytes[i];
11
+ for (let j = 0; j < digits.length; j++) {
12
+ const val = (digits[j] << 8) + carry;
13
+ digits[j] = val % BASE;
14
+ carry = val / BASE | 0;
44
15
  }
45
- throw error;
46
- }
47
- }
48
- async function optionalImport(specifier, options = {}) {
49
- if (isBrowser) {
50
- return dynamicImport(specifier);
51
- }
52
- if (!options.preferImport) {
53
- const requireFn = await resolveNodeRequire();
54
- if (requireFn) {
55
- try {
56
- return requireFn(specifier);
57
- } catch (error) {
58
- if (!isModuleNotFound(specifier, error)) {
59
- throw error;
60
- }
61
- }
16
+ while (carry > 0) {
17
+ digits.push(carry % BASE);
18
+ carry = carry / BASE | 0;
62
19
  }
63
20
  }
64
- return dynamicImport(specifier);
21
+ let result = "";
22
+ for (let i = 0; i < zeros; i++) result += "1";
23
+ for (let i = digits.length - 1; i >= 0; i--) result += ALPHABET[digits[i]];
24
+ return result;
65
25
  }
66
- function optionalImportSync(specifier) {
67
- if (isBrowser) {
68
- return null;
69
- }
70
- try {
71
- const globalObject = typeof global !== "undefined" ? global : globalThis;
72
- const req = globalObject.process?.mainModule?.require ?? globalObject.require;
73
- if (typeof req === "function" && typeof req.resolve === "function") {
74
- return req(specifier);
26
+ function base58Decode(text) {
27
+ if (text.length === 0) return new Uint8Array(0);
28
+ let zeros = 0;
29
+ while (zeros < text.length && text[zeros] === "1") zeros++;
30
+ const b256 = [];
31
+ for (let i = zeros; i < text.length; i++) {
32
+ const ch = text[i];
33
+ const val = ALPHABET.indexOf(ch);
34
+ if (val === -1) throw new Error("Invalid Base58 character");
35
+ let carry = val;
36
+ for (let j = 0; j < b256.length; j++) {
37
+ const x = b256[j] * BASE + carry;
38
+ b256[j] = x & 255;
39
+ carry = x >> 8;
75
40
  }
76
- } catch (error) {
77
- if (!isModuleNotFound(specifier, error)) {
78
- throw error;
41
+ while (carry > 0) {
42
+ b256.push(carry & 255);
43
+ carry >>= 8;
79
44
  }
80
45
  }
81
- return null;
46
+ for (let i = 0; i < zeros; i++) b256.push(0);
47
+ b256.reverse();
48
+ return Uint8Array.from(b256);
49
+ }
50
+ function multibaseB58btcDecode(zText) {
51
+ if (!zText.startsWith("z")) throw new Error("Invalid multibase base58btc");
52
+ return base58Decode(zText.slice(1));
82
53
  }
83
54
  export {
84
- optionalImport,
85
- optionalImportSync
55
+ base58Decode,
56
+ base58Encode,
57
+ multibaseB58btcDecode
86
58
  };
87
59
  //# sourceMappingURL=standards-sdk.es162.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es162.js","sources":["../../src/utils/dynamic-import.ts"],"sourcesContent":["import { isBrowser } from './is-browser';\n\nlet nodeRequire: NodeRequire | null | undefined;\n\nfunction isModuleNotFound(specifier: string, error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n const code = Reflect.get(error, 'code');\n const message = Reflect.get(error, 'message');\n const messageText = typeof message === 'string' ? message : '';\n\n if (typeof code === 'string' && code.includes('MODULE_NOT_FOUND')) {\n return messageText.includes(specifier);\n }\n\n if (messageText) {\n const lowered = messageText.toLowerCase();\n if (\n lowered.includes('cannot find module') ||\n lowered.includes('module not found') ||\n lowered.includes('cannot find package')\n ) {\n return lowered.includes(specifier.toLowerCase());\n }\n }\n\n return false;\n}\n\nasync function resolveNodeRequire(): Promise<NodeRequire | null> {\n if (nodeRequire !== undefined) {\n return nodeRequire;\n }\n\n if (isBrowser) {\n nodeRequire = null;\n return nodeRequire;\n }\n\n try {\n const globalObject =\n typeof global !== 'undefined'\n ? (global as typeof globalThis)\n : globalThis;\n const req =\n globalObject.process?.mainModule?.require ??\n (globalObject as { require?: NodeRequire }).require;\n\n nodeRequire =\n typeof req === 'function' &&\n typeof (req as NodeRequire).resolve === 'function'\n ? (req as NodeRequire)\n : null;\n } catch {\n nodeRequire = null;\n }\n\n return nodeRequire;\n}\n\nasync function dynamicImport<T>(specifier: string): Promise<T | null> {\n try {\n return (await import(specifier)) as T;\n } catch (error) {\n if (isModuleNotFound(specifier, error)) {\n return null;\n }\n throw error as Error;\n }\n}\n\ntype OptionalImportOptions = {\n preferImport?: boolean;\n};\n\nexport async function optionalImport<T>(\n specifier: string,\n options: OptionalImportOptions = {},\n): Promise<T | null> {\n if (isBrowser) {\n return dynamicImport<T>(specifier);\n }\n\n if (!options.preferImport) {\n const requireFn = await resolveNodeRequire();\n if (requireFn) {\n try {\n return requireFn(specifier) as T;\n } catch (error) {\n if (!isModuleNotFound(specifier, error)) {\n throw error as Error;\n }\n }\n }\n }\n\n return dynamicImport<T>(specifier);\n}\n\nexport function optionalImportSync<T>(specifier: string): T | null {\n if (isBrowser) {\n return null;\n }\n\n try {\n const globalObject =\n typeof global !== 'undefined'\n ? (global as typeof globalThis)\n : globalThis;\n const req =\n globalObject.process?.mainModule?.require ??\n (globalObject as { require?: NodeRequire }).require;\n\n if (\n typeof req === 'function' &&\n typeof (req as NodeRequire).resolve === 'function'\n ) {\n return req(specifier) as T;\n }\n } catch (error) {\n if (!isModuleNotFound(specifier, error)) {\n throw error as Error;\n }\n }\n\n return null;\n}\n"],"names":[],"mappings":";AAEA,IAAI;AAEJ,SAAS,iBAAiB,WAAmB,OAAyB;AACpE,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,QAAQ,IAAI,OAAO,MAAM;AACtC,QAAM,UAAU,QAAQ,IAAI,OAAO,SAAS;AAC5C,QAAM,cAAc,OAAO,YAAY,WAAW,UAAU;AAE5D,MAAI,OAAO,SAAS,YAAY,KAAK,SAAS,kBAAkB,GAAG;AACjE,WAAO,YAAY,SAAS,SAAS;AAAA,EACvC;AAEA,MAAI,aAAa;AACf,UAAM,UAAU,YAAY,YAAA;AAC5B,QACE,QAAQ,SAAS,oBAAoB,KACrC,QAAQ,SAAS,kBAAkB,KACnC,QAAQ,SAAS,qBAAqB,GACtC;AACA,aAAO,QAAQ,SAAS,UAAU,YAAA,CAAa;AAAA,IACjD;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,qBAAkD;AAC/D,MAAI,gBAAgB,QAAW;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,WAAW;AACb,kBAAc;AACd,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eACJ,OAAO,WAAW,cACb,SACD;AACN,UAAM,MACJ,aAAa,SAAS,YAAY,WACjC,aAA2C;AAE9C,kBACE,OAAO,QAAQ,cACf,OAAQ,IAAoB,YAAY,aACnC,MACD;AAAA,EACR,QAAQ;AACN,kBAAc;AAAA,EAChB;AAEA,SAAO;AACT;AAEA,eAAe,cAAiB,WAAsC;AACpE,MAAI;AACF,WAAQ,MAAM,OAAO;AAAA,EACvB,SAAS,OAAO;AACd,QAAI,iBAAiB,WAAW,KAAK,GAAG;AACtC,aAAO;AAAA,IACT;AACA,UAAM;AAAA,EACR;AACF;AAMA,eAAsB,eACpB,WACA,UAAiC,IACd;AACnB,MAAI,WAAW;AACb,WAAO,cAAiB,SAAS;AAAA,EACnC;AAEA,MAAI,CAAC,QAAQ,cAAc;AACzB,UAAM,YAAY,MAAM,mBAAA;AACxB,QAAI,WAAW;AACb,UAAI;AACF,eAAO,UAAU,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,YAAI,CAAC,iBAAiB,WAAW,KAAK,GAAG;AACvC,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,cAAiB,SAAS;AACnC;AAEO,SAAS,mBAAsB,WAA6B;AACjE,MAAI,WAAW;AACb,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eACJ,OAAO,WAAW,cACb,SACD;AACN,UAAM,MACJ,aAAa,SAAS,YAAY,WACjC,aAA2C;AAE9C,QACE,OAAO,QAAQ,cACf,OAAQ,IAAoB,YAAY,YACxC;AACA,aAAO,IAAI,SAAS;AAAA,IACtB;AAAA,EACF,SAAS,OAAO;AACd,QAAI,CAAC,iBAAiB,WAAW,KAAK,GAAG;AACvC,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;"}
1
+ {"version":3,"file":"standards-sdk.es162.js","sources":["../../src/hcs-14/base58.ts"],"sourcesContent":["/**\n * Minimal Base58 encoder/decoder (Bitcoin alphabet) with no external dependencies.\n */\n\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nconst BASE = 58;\n\nfunction countLeadingZeros(bytes: Uint8Array): number {\n let zeros = 0;\n for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {\n zeros++;\n }\n return zeros;\n}\n\nexport function base58Encode(bytes: Uint8Array): string {\n if (bytes.length === 0) return '';\n\n let zeros = 0;\n while (zeros < bytes.length && bytes[zeros] === 0) zeros++;\n\n if (zeros === bytes.length) return '1'.repeat(zeros);\n\n const digits: number[] = [0];\n for (let i = zeros; i < bytes.length; i++) {\n let carry = bytes[i];\n for (let j = 0; j < digits.length; j++) {\n const val = (digits[j] << 8) + carry;\n digits[j] = val % BASE;\n carry = (val / BASE) | 0;\n }\n while (carry > 0) {\n digits.push(carry % BASE);\n carry = (carry / BASE) | 0;\n }\n }\n\n let result = '';\n for (let i = 0; i < zeros; i++) result += '1';\n for (let i = digits.length - 1; i >= 0; i--) result += ALPHABET[digits[i]];\n return result;\n}\n\nexport function base58Decode(text: string): Uint8Array {\n if (text.length === 0) return new Uint8Array(0);\n\n let zeros = 0;\n while (zeros < text.length && text[zeros] === '1') zeros++;\n\n const b256: number[] = [];\n for (let i = zeros; i < text.length; i++) {\n const ch = text[i];\n const val = ALPHABET.indexOf(ch);\n if (val === -1) throw new Error('Invalid Base58 character');\n\n let carry = val;\n for (let j = 0; j < b256.length; j++) {\n const x = b256[j] * BASE + carry;\n b256[j] = x & 0xff;\n carry = x >> 8;\n }\n while (carry > 0) {\n b256.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n for (let i = 0; i < zeros; i++) b256.push(0);\n b256.reverse();\n return Uint8Array.from(b256);\n}\n\nexport function multibaseB58btcDecode(zText: string): Uint8Array {\n if (!zText.startsWith('z')) throw new Error('Invalid multibase base58btc');\n return base58Decode(zText.slice(1));\n}\n"],"names":[],"mappings":"AAIA,MAAM,WAAW;AACjB,MAAM,OAAO;AAUN,SAAS,aAAa,OAA2B;AACtD,MAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,MAAI,QAAQ;AACZ,SAAO,QAAQ,MAAM,UAAU,MAAM,KAAK,MAAM,EAAG;AAEnD,MAAI,UAAU,MAAM,OAAQ,QAAO,IAAI,OAAO,KAAK;AAEnD,QAAM,SAAmB,CAAC,CAAC;AAC3B,WAAS,IAAI,OAAO,IAAI,MAAM,QAAQ,KAAK;AACzC,QAAI,QAAQ,MAAM,CAAC;AACnB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,OAAO,OAAO,CAAC,KAAK,KAAK;AAC/B,aAAO,CAAC,IAAI,MAAM;AAClB,cAAS,MAAM,OAAQ;AAAA,IACzB;AACA,WAAO,QAAQ,GAAG;AAChB,aAAO,KAAK,QAAQ,IAAI;AACxB,cAAS,QAAQ,OAAQ;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,OAAO,IAAK,WAAU;AAC1C,WAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,IAAK,WAAU,SAAS,OAAO,CAAC,CAAC;AACzE,SAAO;AACT;AAEO,SAAS,aAAa,MAA0B;AACrD,MAAI,KAAK,WAAW,EAAG,QAAO,IAAI,WAAW,CAAC;AAE9C,MAAI,QAAQ;AACZ,SAAO,QAAQ,KAAK,UAAU,KAAK,KAAK,MAAM,IAAK;AAEnD,QAAM,OAAiB,CAAA;AACvB,WAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,KAAK;AACxC,UAAM,KAAK,KAAK,CAAC;AACjB,UAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,QAAI,QAAQ,GAAI,OAAM,IAAI,MAAM,0BAA0B;AAE1D,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,IAAI,KAAK,CAAC,IAAI,OAAO;AAC3B,WAAK,CAAC,IAAI,IAAI;AACd,cAAQ,KAAK;AAAA,IACf;AACA,WAAO,QAAQ,GAAG;AAChB,WAAK,KAAK,QAAQ,GAAI;AACtB,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,WAAS,IAAI,GAAG,IAAI,OAAO,IAAK,MAAK,KAAK,CAAC;AAC3C,OAAK,QAAA;AACL,SAAO,WAAW,KAAK,IAAI;AAC7B;AAEO,SAAS,sBAAsB,OAA2B;AAC/D,MAAI,CAAC,MAAM,WAAW,GAAG,EAAG,OAAM,IAAI,MAAM,6BAA6B;AACzE,SAAO,aAAa,MAAM,MAAM,CAAC,CAAC;AACpC;"}
@@ -1,84 +1,87 @@
1
- const orderedParamKeys = [
2
- "uid",
3
- "registry",
4
- "proto",
5
- "nativeId",
6
- "domain",
7
- "src"
8
- ];
9
- const fqdnLabelRegex = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;
10
- function uaidTargetFromParsed(parsed) {
11
- return parsed.method === "aid" ? "aid" : "did";
12
- }
13
- function normalizeDomain(value) {
14
- return value.trim().replace(/\.$/, "").toLowerCase();
15
- }
16
- function isFqdn(value) {
17
- const normalized = normalizeDomain(value);
18
- if (!normalized || normalized.length > 253 || !normalized.includes(".")) {
1
+ import { isBrowser } from "./standards-sdk.es136.js";
2
+ let nodeRequire;
3
+ function isModuleNotFound(specifier, error) {
4
+ if (!error || typeof error !== "object") {
19
5
  return false;
20
6
  }
21
- const labels = normalized.split(".");
22
- for (const label of labels) {
23
- if (!label || label.length > 63 || !fqdnLabelRegex.test(label)) {
24
- return false;
7
+ const code = Reflect.get(error, "code");
8
+ const message = Reflect.get(error, "message");
9
+ const messageText = typeof message === "string" ? message : "";
10
+ if (typeof code === "string" && code.includes("MODULE_NOT_FOUND")) {
11
+ return messageText.includes(specifier);
12
+ }
13
+ if (messageText) {
14
+ const lowered = messageText.toLowerCase();
15
+ if (lowered.includes("cannot find module") || lowered.includes("module not found") || lowered.includes("cannot find package")) {
16
+ return lowered.includes(specifier.toLowerCase());
25
17
  }
26
18
  }
27
- return true;
19
+ return false;
28
20
  }
29
- function normalizeTxtValue(value) {
30
- const trimmed = value.trim();
31
- if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
32
- return trimmed.slice(1, -1);
21
+ async function resolveNodeRequire() {
22
+ if (nodeRequire !== void 0) {
23
+ return nodeRequire;
33
24
  }
34
- const markdownLinkMatch = trimmed.match(/^\[(.+)\]\((.+)\)$/);
35
- if (markdownLinkMatch) {
36
- return markdownLinkMatch[2].trim();
25
+ if (isBrowser) {
26
+ nodeRequire = null;
27
+ return nodeRequire;
37
28
  }
38
- return trimmed;
29
+ try {
30
+ const globalObject = typeof global !== "undefined" ? global : globalThis;
31
+ const req = globalObject.process?.mainModule?.require ?? globalObject.require;
32
+ nodeRequire = typeof req === "function" && typeof req.resolve === "function" ? req : null;
33
+ } catch {
34
+ nodeRequire = null;
35
+ }
36
+ return nodeRequire;
39
37
  }
40
- function parseSemicolonFields(input) {
41
- const fields = {};
42
- for (const part of input.split(";")) {
43
- const trimmed = part.trim();
44
- if (!trimmed) {
45
- continue;
46
- }
47
- const equalsIndex = trimmed.indexOf("=");
48
- if (equalsIndex <= 0) {
49
- continue;
50
- }
51
- const key = trimmed.slice(0, equalsIndex).trim();
52
- const value = normalizeTxtValue(trimmed.slice(equalsIndex + 1));
53
- if (!key || !value) {
54
- continue;
38
+ async function dynamicImport(specifier) {
39
+ try {
40
+ return await import(specifier);
41
+ } catch (error) {
42
+ if (isModuleNotFound(specifier, error)) {
43
+ return null;
55
44
  }
56
- fields[key] = value;
45
+ throw error;
57
46
  }
58
- return fields;
59
47
  }
60
- function buildCanonicalUaid(target, id, params) {
61
- const entries = [];
62
- const usedKeys = /* @__PURE__ */ new Set();
63
- for (const key of orderedParamKeys) {
64
- const value = params[key];
65
- if (value) {
66
- entries.push(`${key}=${value}`);
67
- usedKeys.add(key);
48
+ async function optionalImport(specifier, options = {}) {
49
+ if (isBrowser) {
50
+ return dynamicImport(specifier);
51
+ }
52
+ if (!options.preferImport) {
53
+ const requireFn = await resolveNodeRequire();
54
+ if (requireFn) {
55
+ try {
56
+ return requireFn(specifier);
57
+ } catch (error) {
58
+ if (!isModuleNotFound(specifier, error)) {
59
+ throw error;
60
+ }
61
+ }
68
62
  }
69
63
  }
70
- const extraKeys = Object.keys(params).filter((key) => !usedKeys.has(key) && params[key]).sort((a, b) => a.localeCompare(b));
71
- for (const key of extraKeys) {
72
- entries.push(`${key}=${params[key]}`);
64
+ return dynamicImport(specifier);
65
+ }
66
+ function optionalImportSync(specifier) {
67
+ if (isBrowser) {
68
+ return null;
69
+ }
70
+ try {
71
+ const globalObject = typeof global !== "undefined" ? global : globalThis;
72
+ const req = globalObject.process?.mainModule?.require ?? globalObject.require;
73
+ if (typeof req === "function" && typeof req.resolve === "function") {
74
+ return req(specifier);
75
+ }
76
+ } catch (error) {
77
+ if (!isModuleNotFound(specifier, error)) {
78
+ throw error;
79
+ }
73
80
  }
74
- return entries.length > 0 ? `uaid:${target}:${id};${entries.join(";")}` : `uaid:${target}:${id}`;
81
+ return null;
75
82
  }
76
83
  export {
77
- buildCanonicalUaid,
78
- isFqdn,
79
- normalizeDomain,
80
- normalizeTxtValue,
81
- parseSemicolonFields,
82
- uaidTargetFromParsed
84
+ optionalImport,
85
+ optionalImportSync
83
86
  };
84
87
  //# sourceMappingURL=standards-sdk.es163.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es163.js","sources":["../../src/hcs-14/resolvers/profile-utils.ts"],"sourcesContent":["import type { ParsedHcs14Did } from '../types';\n\nconst orderedParamKeys = [\n 'uid',\n 'registry',\n 'proto',\n 'nativeId',\n 'domain',\n 'src',\n] as const;\n\nconst fqdnLabelRegex = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;\n\nexport function uaidTargetFromParsed(parsed: ParsedHcs14Did): 'aid' | 'did' {\n return parsed.method === 'aid' ? 'aid' : 'did';\n}\n\nexport function normalizeDomain(value: string): string {\n return value.trim().replace(/\\.$/, '').toLowerCase();\n}\n\nexport function isFqdn(value: string): boolean {\n const normalized = normalizeDomain(value);\n if (!normalized || normalized.length > 253 || !normalized.includes('.')) {\n return false;\n }\n const labels = normalized.split('.');\n for (const label of labels) {\n if (!label || label.length > 63 || !fqdnLabelRegex.test(label)) {\n return false;\n }\n }\n return true;\n}\n\nexport function normalizeTxtValue(value: string): string {\n const trimmed = value.trim();\n if (trimmed.length >= 2 && trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1);\n }\n const markdownLinkMatch = trimmed.match(/^\\[(.+)\\]\\((.+)\\)$/);\n if (markdownLinkMatch) {\n return markdownLinkMatch[2].trim();\n }\n return trimmed;\n}\n\nexport function parseSemicolonFields(input: string): Record<string, string> {\n const fields: Record<string, string> = {};\n for (const part of input.split(';')) {\n const trimmed = part.trim();\n if (!trimmed) {\n continue;\n }\n const equalsIndex = trimmed.indexOf('=');\n if (equalsIndex <= 0) {\n continue;\n }\n const key = trimmed.slice(0, equalsIndex).trim();\n const value = normalizeTxtValue(trimmed.slice(equalsIndex + 1));\n if (!key || !value) {\n continue;\n }\n fields[key] = value;\n }\n return fields;\n}\n\nexport function buildCanonicalUaid(\n target: 'aid' | 'did',\n id: string,\n params: Record<string, string>,\n): string {\n const entries: string[] = [];\n const usedKeys = new Set<string>();\n\n for (const key of orderedParamKeys) {\n const value = params[key];\n if (value) {\n entries.push(`${key}=${value}`);\n usedKeys.add(key);\n }\n }\n\n const extraKeys = Object.keys(params)\n .filter(key => !usedKeys.has(key) && params[key])\n .sort((a, b) => a.localeCompare(b));\n\n for (const key of extraKeys) {\n entries.push(`${key}=${params[key]}`);\n }\n\n return entries.length > 0\n ? `uaid:${target}:${id};${entries.join(';')}`\n : `uaid:${target}:${id}`;\n}\n\nexport function canonicalizeUaidFromParsed(parsed: ParsedHcs14Did): string {\n return buildCanonicalUaid(\n uaidTargetFromParsed(parsed),\n parsed.id,\n parsed.params,\n );\n}\n"],"names":[],"mappings":"AAEA,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,iBAAiB;AAEhB,SAAS,qBAAqB,QAAuC;AAC1E,SAAO,OAAO,WAAW,QAAQ,QAAQ;AAC3C;AAEO,SAAS,gBAAgB,OAAuB;AACrD,SAAO,MAAM,OAAO,QAAQ,OAAO,EAAE,EAAE,YAAA;AACzC;AAEO,SAAS,OAAO,OAAwB;AAC7C,QAAM,aAAa,gBAAgB,KAAK;AACxC,MAAI,CAAC,cAAc,WAAW,SAAS,OAAO,CAAC,WAAW,SAAS,GAAG,GAAG;AACvE,WAAO;AAAA,EACT;AACA,QAAM,SAAS,WAAW,MAAM,GAAG;AACnC,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,SAAS,MAAM,SAAS,MAAM,CAAC,eAAe,KAAK,KAAK,GAAG;AAC9D,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,QAAM,UAAU,MAAM,KAAA;AACtB,MAAI,QAAQ,UAAU,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,GAAG;AAC3E,WAAO,QAAQ,MAAM,GAAG,EAAE;AAAA,EAC5B;AACA,QAAM,oBAAoB,QAAQ,MAAM,oBAAoB;AAC5D,MAAI,mBAAmB;AACrB,WAAO,kBAAkB,CAAC,EAAE,KAAA;AAAA,EAC9B;AACA,SAAO;AACT;AAEO,SAAS,qBAAqB,OAAuC;AAC1E,QAAM,SAAiC,CAAA;AACvC,aAAW,QAAQ,MAAM,MAAM,GAAG,GAAG;AACnC,UAAM,UAAU,KAAK,KAAA;AACrB,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,cAAc,QAAQ,QAAQ,GAAG;AACvC,QAAI,eAAe,GAAG;AACpB;AAAA,IACF;AACA,UAAM,MAAM,QAAQ,MAAM,GAAG,WAAW,EAAE,KAAA;AAC1C,UAAM,QAAQ,kBAAkB,QAAQ,MAAM,cAAc,CAAC,CAAC;AAC9D,QAAI,CAAC,OAAO,CAAC,OAAO;AAClB;AAAA,IACF;AACA,WAAO,GAAG,IAAI;AAAA,EAChB;AACA,SAAO;AACT;AAEO,SAAS,mBACd,QACA,IACA,QACQ;AACR,QAAM,UAAoB,CAAA;AAC1B,QAAM,+BAAe,IAAA;AAErB,aAAW,OAAO,kBAAkB;AAClC,UAAM,QAAQ,OAAO,GAAG;AACxB,QAAI,OAAO;AACT,cAAQ,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE;AAC9B,eAAS,IAAI,GAAG;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,YAAY,OAAO,KAAK,MAAM,EACjC,OAAO,CAAA,QAAO,CAAC,SAAS,IAAI,GAAG,KAAK,OAAO,GAAG,CAAC,EAC/C,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAEpC,aAAW,OAAO,WAAW;AAC3B,YAAQ,KAAK,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,EAAE;AAAA,EACtC;AAEA,SAAO,QAAQ,SAAS,IACpB,QAAQ,MAAM,IAAI,EAAE,IAAI,QAAQ,KAAK,GAAG,CAAC,KACzC,QAAQ,MAAM,IAAI,EAAE;AAC1B;"}
1
+ {"version":3,"file":"standards-sdk.es163.js","sources":["../../src/utils/dynamic-import.ts"],"sourcesContent":["import { isBrowser } from './is-browser';\n\nlet nodeRequire: NodeRequire | null | undefined;\n\nfunction isModuleNotFound(specifier: string, error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n const code = Reflect.get(error, 'code');\n const message = Reflect.get(error, 'message');\n const messageText = typeof message === 'string' ? message : '';\n\n if (typeof code === 'string' && code.includes('MODULE_NOT_FOUND')) {\n return messageText.includes(specifier);\n }\n\n if (messageText) {\n const lowered = messageText.toLowerCase();\n if (\n lowered.includes('cannot find module') ||\n lowered.includes('module not found') ||\n lowered.includes('cannot find package')\n ) {\n return lowered.includes(specifier.toLowerCase());\n }\n }\n\n return false;\n}\n\nasync function resolveNodeRequire(): Promise<NodeRequire | null> {\n if (nodeRequire !== undefined) {\n return nodeRequire;\n }\n\n if (isBrowser) {\n nodeRequire = null;\n return nodeRequire;\n }\n\n try {\n const globalObject =\n typeof global !== 'undefined'\n ? (global as typeof globalThis)\n : globalThis;\n const req =\n globalObject.process?.mainModule?.require ??\n (globalObject as { require?: NodeRequire }).require;\n\n nodeRequire =\n typeof req === 'function' &&\n typeof (req as NodeRequire).resolve === 'function'\n ? (req as NodeRequire)\n : null;\n } catch {\n nodeRequire = null;\n }\n\n return nodeRequire;\n}\n\nasync function dynamicImport<T>(specifier: string): Promise<T | null> {\n try {\n return (await import(specifier)) as T;\n } catch (error) {\n if (isModuleNotFound(specifier, error)) {\n return null;\n }\n throw error as Error;\n }\n}\n\ntype OptionalImportOptions = {\n preferImport?: boolean;\n};\n\nexport async function optionalImport<T>(\n specifier: string,\n options: OptionalImportOptions = {},\n): Promise<T | null> {\n if (isBrowser) {\n return dynamicImport<T>(specifier);\n }\n\n if (!options.preferImport) {\n const requireFn = await resolveNodeRequire();\n if (requireFn) {\n try {\n return requireFn(specifier) as T;\n } catch (error) {\n if (!isModuleNotFound(specifier, error)) {\n throw error as Error;\n }\n }\n }\n }\n\n return dynamicImport<T>(specifier);\n}\n\nexport function optionalImportSync<T>(specifier: string): T | null {\n if (isBrowser) {\n return null;\n }\n\n try {\n const globalObject =\n typeof global !== 'undefined'\n ? (global as typeof globalThis)\n : globalThis;\n const req =\n globalObject.process?.mainModule?.require ??\n (globalObject as { require?: NodeRequire }).require;\n\n if (\n typeof req === 'function' &&\n typeof (req as NodeRequire).resolve === 'function'\n ) {\n return req(specifier) as T;\n }\n } catch (error) {\n if (!isModuleNotFound(specifier, error)) {\n throw error as Error;\n }\n }\n\n return null;\n}\n"],"names":[],"mappings":";AAEA,IAAI;AAEJ,SAAS,iBAAiB,WAAmB,OAAyB;AACpE,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,QAAQ,IAAI,OAAO,MAAM;AACtC,QAAM,UAAU,QAAQ,IAAI,OAAO,SAAS;AAC5C,QAAM,cAAc,OAAO,YAAY,WAAW,UAAU;AAE5D,MAAI,OAAO,SAAS,YAAY,KAAK,SAAS,kBAAkB,GAAG;AACjE,WAAO,YAAY,SAAS,SAAS;AAAA,EACvC;AAEA,MAAI,aAAa;AACf,UAAM,UAAU,YAAY,YAAA;AAC5B,QACE,QAAQ,SAAS,oBAAoB,KACrC,QAAQ,SAAS,kBAAkB,KACnC,QAAQ,SAAS,qBAAqB,GACtC;AACA,aAAO,QAAQ,SAAS,UAAU,YAAA,CAAa;AAAA,IACjD;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,qBAAkD;AAC/D,MAAI,gBAAgB,QAAW;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,WAAW;AACb,kBAAc;AACd,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eACJ,OAAO,WAAW,cACb,SACD;AACN,UAAM,MACJ,aAAa,SAAS,YAAY,WACjC,aAA2C;AAE9C,kBACE,OAAO,QAAQ,cACf,OAAQ,IAAoB,YAAY,aACnC,MACD;AAAA,EACR,QAAQ;AACN,kBAAc;AAAA,EAChB;AAEA,SAAO;AACT;AAEA,eAAe,cAAiB,WAAsC;AACpE,MAAI;AACF,WAAQ,MAAM,OAAO;AAAA,EACvB,SAAS,OAAO;AACd,QAAI,iBAAiB,WAAW,KAAK,GAAG;AACtC,aAAO;AAAA,IACT;AACA,UAAM;AAAA,EACR;AACF;AAMA,eAAsB,eACpB,WACA,UAAiC,IACd;AACnB,MAAI,WAAW;AACb,WAAO,cAAiB,SAAS;AAAA,EACnC;AAEA,MAAI,CAAC,QAAQ,cAAc;AACzB,UAAM,YAAY,MAAM,mBAAA;AACxB,QAAI,WAAW;AACb,UAAI;AACF,eAAO,UAAU,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,YAAI,CAAC,iBAAiB,WAAW,KAAK,GAAG;AACvC,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,cAAiB,SAAS;AACnC;AAEO,SAAS,mBAAsB,WAA6B;AACjE,MAAI,WAAW;AACb,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eACJ,OAAO,WAAW,cACb,SACD;AACN,UAAM,MACJ,aAAa,SAAS,YAAY,WACjC,aAA2C;AAE9C,QACE,OAAO,QAAQ,cACf,OAAQ,IAAoB,YAAY,YACxC;AACA,aAAO,IAAI,SAAS;AAAA,IACtB;AAAA,EACF,SAAS,OAAO;AACd,QAAI,CAAC,iBAAiB,WAAW,KAAK,GAAG;AACvC,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;"}
@@ -1,203 +1,84 @@
1
- import { parseSemicolonFields } from "./standards-sdk.es163.js";
2
- const ANS_HCS27_REGISTRY = "ans";
3
- function isObjectRecord(value) {
4
- return typeof value === "object" && value !== null;
1
+ const orderedParamKeys = [
2
+ "uid",
3
+ "registry",
4
+ "proto",
5
+ "nativeId",
6
+ "domain",
7
+ "src"
8
+ ];
9
+ const fqdnLabelRegex = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;
10
+ function uaidTargetFromParsed(parsed) {
11
+ return parsed.method === "aid" ? "aid" : "did";
5
12
  }
6
- function asString(value) {
7
- if (typeof value !== "string") {
8
- return null;
9
- }
10
- const trimmed = value.trim();
11
- if (!trimmed) {
12
- return null;
13
- }
14
- return trimmed;
15
- }
16
- function isSemver(value) {
17
- return /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(
18
- value
19
- );
20
- }
21
- function normalizeAnsVersion(value) {
22
- const trimmed = value.trim();
23
- if (!trimmed) {
24
- return null;
25
- }
26
- const withoutPrefix = trimmed.startsWith("v") || trimmed.startsWith("V") ? trimmed.slice(1) : trimmed;
27
- if (!isSemver(withoutPrefix)) {
28
- return null;
29
- }
30
- return withoutPrefix;
13
+ function normalizeDomain(value) {
14
+ return value.trim().replace(/\.$/, "").toLowerCase();
31
15
  }
32
- function parseAnsDnsTxtRecord(rawRecord) {
33
- const fields = parseSemicolonFields(rawRecord);
34
- const version = fields["v"];
35
- const urlValue = fields["url"];
36
- if (!version || !urlValue || version.toLowerCase() !== "ans1") {
37
- return null;
38
- }
39
- let parsedUrl;
40
- try {
41
- parsedUrl = new URL(urlValue);
42
- } catch {
43
- return null;
44
- }
45
- if (parsedUrl.protocol.toLowerCase() !== "https:") {
46
- return null;
16
+ function isFqdn(value) {
17
+ const normalized = normalizeDomain(value);
18
+ if (!normalized || normalized.length > 253 || !normalized.includes(".")) {
19
+ return false;
47
20
  }
48
- const rawAnsVersion = fields["version"];
49
- let normalizedAnsVersion;
50
- if (rawAnsVersion !== void 0) {
51
- const parsedVersion = normalizeAnsVersion(rawAnsVersion);
52
- if (!parsedVersion) {
53
- return null;
21
+ const labels = normalized.split(".");
22
+ for (const label of labels) {
23
+ if (!label || label.length > 63 || !fqdnLabelRegex.test(label)) {
24
+ return false;
54
25
  }
55
- normalizedAnsVersion = parsedVersion;
56
26
  }
57
- return {
58
- version: normalizedAnsVersion,
59
- url: parsedUrl.toString()
60
- };
61
- }
62
- function isValidAnsProfileVersion(value) {
63
- return !!value && normalizeAnsVersion(value) !== null;
27
+ return true;
64
28
  }
65
- function hasProtocolPathSegment(pathname, protocol) {
66
- const normalizedProtocol = protocol.trim().toLowerCase();
67
- if (!normalizedProtocol) {
68
- return false;
29
+ function normalizeTxtValue(value) {
30
+ const trimmed = value.trim();
31
+ if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
32
+ return trimmed.slice(1, -1);
69
33
  }
70
- const pathSegments = pathname.split("/").map((segment) => segment.trim()).filter((segment) => segment.length > 0);
71
- for (const segment of pathSegments) {
72
- if (segment.toLowerCase() === normalizedProtocol) {
73
- return true;
74
- }
34
+ const markdownLinkMatch = trimmed.match(/^\[(.+)\]\((.+)\)$/);
35
+ if (markdownLinkMatch) {
36
+ return markdownLinkMatch[2].trim();
75
37
  }
76
- return false;
38
+ return trimmed;
77
39
  }
78
- function extractEndpointCandidates(endpoints, supportedSchemes) {
79
- const candidates = [];
80
- for (const [key, value] of Object.entries(endpoints)) {
81
- if (!isObjectRecord(value)) {
40
+ function parseSemicolonFields(input) {
41
+ const fields = {};
42
+ for (const part of input.split(";")) {
43
+ const trimmed = part.trim();
44
+ if (!trimmed) {
82
45
  continue;
83
46
  }
84
- const endpoint = asString(value["url"]);
85
- if (!endpoint) {
47
+ const equalsIndex = trimmed.indexOf("=");
48
+ if (equalsIndex <= 0) {
86
49
  continue;
87
50
  }
88
- let parsedUrl;
89
- try {
90
- parsedUrl = new URL(endpoint);
91
- } catch {
51
+ const key = trimmed.slice(0, equalsIndex).trim();
52
+ const value = normalizeTxtValue(trimmed.slice(equalsIndex + 1));
53
+ if (!key || !value) {
92
54
  continue;
93
55
  }
94
- const scheme = parsedUrl.protocol.replace(/:$/, "").toLowerCase();
95
- if (!supportedSchemes.has(scheme)) {
96
- continue;
97
- }
98
- candidates.push({
99
- key,
100
- endpointUrl: parsedUrl.toString(),
101
- parsedUrl
102
- });
103
- }
104
- return candidates;
105
- }
106
- function validateAnsHcs27Hints(input) {
107
- if (!isObjectRecord(input)) {
108
- return void 0;
109
- }
110
- const checkpointTopicId = asString(input["checkpoint_topic_id"]);
111
- const registry = asString(input["registry"]);
112
- const logId = asString(input["log_id"]);
113
- if (!checkpointTopicId || !registry || !logId || registry !== ANS_HCS27_REGISTRY) {
114
- return void 0;
56
+ fields[key] = value;
115
57
  }
116
- const checkpointUri = asString(input["checkpoint_uri"]) ?? void 0;
117
- const viewerUri = asString(input["viewer_uri"]) ?? void 0;
118
- return {
119
- checkpointTopicId,
120
- registry,
121
- logId,
122
- checkpointUri,
123
- viewerUri
124
- };
58
+ return fields;
125
59
  }
126
- function validateHcs28Hints(input) {
127
- if (!isObjectRecord(input)) {
128
- return void 0;
129
- }
130
- const directoryTopicId = asString(input["directory_topic_id"]);
131
- const tId = asString(input["t_id"]);
132
- const agentId = asString(input["agent_id"]);
133
- if (!directoryTopicId || !tId || !agentId) {
134
- return void 0;
135
- }
136
- const proofProfile = asString(input["proof_profile"]) ?? void 0;
137
- return {
138
- directoryTopicId,
139
- tId,
140
- agentId,
141
- proofProfile
142
- };
143
- }
144
- function parseTransparencyHints(input) {
145
- if (!isObjectRecord(input)) {
146
- return void 0;
147
- }
148
- const hcs27 = validateAnsHcs27Hints(input["hcs27"]);
149
- const hcs28 = validateHcs28Hints(input["hcs28"]);
150
- if (!hcs27 && !hcs28) {
151
- return void 0;
152
- }
153
- return {
154
- hcs27,
155
- hcs28
156
- };
157
- }
158
- function parseAnsAgentCard(input) {
159
- if (!isObjectRecord(input)) {
160
- return null;
161
- }
162
- const ansName = asString(input["ansName"]);
163
- const endpoints = input["endpoints"];
164
- if (!ansName || !isObjectRecord(endpoints)) {
165
- return null;
166
- }
167
- return {
168
- ansName,
169
- endpoints,
170
- transparencyHints: parseTransparencyHints(input["transparency"])
171
- };
172
- }
173
- function selectPreferredEndpoint(candidates, protocol) {
174
- if (candidates.length === 0) {
175
- return null;
176
- }
177
- const sortedCandidates = [...candidates].sort(
178
- (a, b) => a.key.localeCompare(b.key)
179
- );
180
- const protocolMatches = sortedCandidates.filter(
181
- (candidate) => hasProtocolPathSegment(candidate.parsedUrl.pathname, protocol)
182
- );
183
- if (protocolMatches.length > 0) {
184
- return protocolMatches[0];
60
+ function buildCanonicalUaid(target, id, params) {
61
+ const entries = [];
62
+ const usedKeys = /* @__PURE__ */ new Set();
63
+ for (const key of orderedParamKeys) {
64
+ const value = params[key];
65
+ if (value) {
66
+ entries.push(`${key}=${value}`);
67
+ usedKeys.add(key);
68
+ }
185
69
  }
186
- return sortedCandidates[0];
187
- }
188
- function toErrorMessage(error) {
189
- if (error instanceof Error && error.message) {
190
- return error.message;
70
+ const extraKeys = Object.keys(params).filter((key) => !usedKeys.has(key) && params[key]).sort((a, b) => a.localeCompare(b));
71
+ for (const key of extraKeys) {
72
+ entries.push(`${key}=${params[key]}`);
191
73
  }
192
- return null;
74
+ return entries.length > 0 ? `uaid:${target}:${id};${entries.join(";")}` : `uaid:${target}:${id}`;
193
75
  }
194
76
  export {
195
- extractEndpointCandidates,
196
- isValidAnsProfileVersion,
197
- normalizeAnsVersion,
198
- parseAnsAgentCard,
199
- parseAnsDnsTxtRecord,
200
- selectPreferredEndpoint,
201
- toErrorMessage
77
+ buildCanonicalUaid,
78
+ isFqdn,
79
+ normalizeDomain,
80
+ normalizeTxtValue,
81
+ parseSemicolonFields,
82
+ uaidTargetFromParsed
202
83
  };
203
84
  //# sourceMappingURL=standards-sdk.es164.js.map