@beclab/olaresid 0.1.12 → 0.2.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 (182) hide show
  1. package/CLI-TREE.md +107 -0
  2. package/CLI.md +122 -1329
  3. package/README.md +30 -12
  4. package/SDK-TREE.md +151 -0
  5. package/TAG.md +95 -41
  6. package/config.json +6 -4
  7. package/dist/abi/TerminusDIDQueryABI.d.ts +397 -0
  8. package/dist/abi/TerminusDIDQueryABI.d.ts.map +1 -0
  9. package/dist/abi/TerminusDIDQueryABI.js +519 -0
  10. package/dist/abi/TerminusDIDQueryABI.js.map +1 -0
  11. package/dist/business/index.d.ts +1 -1
  12. package/dist/business/index.d.ts.map +1 -1
  13. package/dist/business/index.js +11 -24
  14. package/dist/business/index.js.map +1 -1
  15. package/dist/business/tag-context.d.ts +1 -0
  16. package/dist/business/tag-context.d.ts.map +1 -1
  17. package/dist/business/tag-context.js +13 -7
  18. package/dist/business/tag-context.js.map +1 -1
  19. package/dist/cli.js +238 -107
  20. package/dist/cli.js.map +1 -1
  21. package/dist/config/index.d.ts +16 -4
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js +28 -14
  24. package/dist/config/index.js.map +1 -1
  25. package/dist/domain/core.d.ts +65 -0
  26. package/dist/domain/core.d.ts.map +1 -0
  27. package/dist/domain/core.js +317 -0
  28. package/dist/domain/core.js.map +1 -0
  29. package/dist/domain/index.d.ts +104 -57
  30. package/dist/domain/index.d.ts.map +1 -1
  31. package/dist/domain/index.js +188 -428
  32. package/dist/domain/index.js.map +1 -1
  33. package/dist/domain/types.d.ts +56 -0
  34. package/dist/domain/types.d.ts.map +1 -0
  35. package/dist/domain/types.js +3 -0
  36. package/dist/domain/types.js.map +1 -0
  37. package/dist/index.d.ts +81 -24
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +153 -143
  40. package/dist/index.js.map +1 -1
  41. package/dist/utils/crypto-utils.d.ts +124 -0
  42. package/dist/utils/crypto-utils.d.ts.map +1 -1
  43. package/dist/utils/crypto-utils.js +156 -8
  44. package/dist/utils/crypto-utils.js.map +1 -1
  45. package/dist/utils/error-parser.d.ts.map +1 -1
  46. package/dist/utils/error-parser.js +2 -1
  47. package/dist/utils/error-parser.js.map +1 -1
  48. package/dist/utils/event-parser.d.ts +161 -0
  49. package/dist/utils/event-parser.d.ts.map +1 -0
  50. package/dist/utils/event-parser.js +140 -0
  51. package/dist/utils/event-parser.js.map +1 -0
  52. package/dist/utils/tag-type-builder.d.ts +43 -0
  53. package/dist/utils/tag-type-builder.d.ts.map +1 -1
  54. package/dist/utils/tag-type-builder.js +122 -0
  55. package/dist/utils/tag-type-builder.js.map +1 -1
  56. package/dist/utils/tag-type-parser.d.ts +70 -0
  57. package/dist/utils/tag-type-parser.d.ts.map +1 -0
  58. package/dist/utils/tag-type-parser.js +190 -0
  59. package/dist/utils/tag-type-parser.js.map +1 -0
  60. package/examples/create-with-rpc-demo.ts +142 -0
  61. package/examples/fetch-all-flat-demo.ts +159 -0
  62. package/examples/fetch-by-indices-demo.ts +235 -0
  63. package/examples/fetch-domain-demo.ts +137 -0
  64. package/examples/fetch-domains-demo.ts +221 -0
  65. package/examples/frontend-demo/index.html +2 -2
  66. package/examples/frontend-demo/package-lock.json +4 -1
  67. package/examples/index.ts +3 -5
  68. package/jest.config.js +25 -0
  69. package/package.json +6 -2
  70. package/src/abi/TerminusDIDQueryABI.ts +516 -0
  71. package/src/business/index.ts +10 -33
  72. package/src/business/tag-context.ts +35 -7
  73. package/src/cli.ts +344 -121
  74. package/src/config/index.ts +34 -19
  75. package/src/domain/core.ts +382 -0
  76. package/src/domain/index.ts +271 -641
  77. package/src/domain/types.ts +59 -0
  78. package/src/index.ts +222 -207
  79. package/src/utils/crypto-utils.ts +239 -2
  80. package/src/utils/error-parser.ts +2 -1
  81. package/src/utils/event-parser.ts +353 -0
  82. package/src/utils/tag-type-builder.ts +138 -0
  83. package/src/utils/tag-type-parser.ts +246 -0
  84. package/tests/unit/crypto-utils.test.ts +338 -0
  85. package/tests/unit/ed25519-jwk.test.ts +201 -0
  86. package/tests/unit/event-parser.test.ts +690 -0
  87. package/tests/unit/generate-mnemonic.test.ts +268 -0
  88. package/tests/unit/olares-id-format.test.ts +321 -0
  89. package/tests/unit/tag-type-parser.test.ts +802 -0
  90. package/tests/unit/tag-types.test.ts +821 -0
  91. package/tsconfig.json +3 -2
  92. package/dist/abi/ABITypeABI.d.ts +0 -88
  93. package/dist/abi/ABITypeABI.d.ts.map +0 -1
  94. package/dist/abi/ABITypeABI.js +0 -382
  95. package/dist/abi/ABITypeABI.js.map +0 -1
  96. package/dist/abi/RegistryABI.d.ts +0 -77
  97. package/dist/abi/RegistryABI.d.ts.map +0 -1
  98. package/dist/abi/RegistryABI.js +0 -462
  99. package/dist/abi/RegistryABI.js.map +0 -1
  100. package/dist/tag/address.d.ts +0 -11
  101. package/dist/tag/address.d.ts.map +0 -1
  102. package/dist/tag/address.js +0 -44
  103. package/dist/tag/address.js.map +0 -1
  104. package/dist/tag/array.d.ts +0 -14
  105. package/dist/tag/array.d.ts.map +0 -1
  106. package/dist/tag/array.js +0 -72
  107. package/dist/tag/array.js.map +0 -1
  108. package/dist/tag/bool.d.ts +0 -11
  109. package/dist/tag/bool.d.ts.map +0 -1
  110. package/dist/tag/bool.js +0 -43
  111. package/dist/tag/bool.js.map +0 -1
  112. package/dist/tag/bytes.d.ts +0 -11
  113. package/dist/tag/bytes.d.ts.map +0 -1
  114. package/dist/tag/bytes.js +0 -37
  115. package/dist/tag/bytes.js.map +0 -1
  116. package/dist/tag/flarray.d.ts +0 -15
  117. package/dist/tag/flarray.d.ts.map +0 -1
  118. package/dist/tag/flarray.js +0 -81
  119. package/dist/tag/flarray.js.map +0 -1
  120. package/dist/tag/flbytes.d.ts +0 -11
  121. package/dist/tag/flbytes.d.ts.map +0 -1
  122. package/dist/tag/flbytes.js +0 -47
  123. package/dist/tag/flbytes.js.map +0 -1
  124. package/dist/tag/index.d.ts +0 -32
  125. package/dist/tag/index.d.ts.map +0 -1
  126. package/dist/tag/index.js +0 -121
  127. package/dist/tag/index.js.map +0 -1
  128. package/dist/tag/int.d.ts +0 -12
  129. package/dist/tag/int.d.ts.map +0 -1
  130. package/dist/tag/int.js +0 -49
  131. package/dist/tag/int.js.map +0 -1
  132. package/dist/tag/string.d.ts +0 -11
  133. package/dist/tag/string.d.ts.map +0 -1
  134. package/dist/tag/string.js +0 -37
  135. package/dist/tag/string.js.map +0 -1
  136. package/dist/tag/tag.d.ts +0 -67
  137. package/dist/tag/tag.d.ts.map +0 -1
  138. package/dist/tag/tag.js +0 -157
  139. package/dist/tag/tag.js.map +0 -1
  140. package/dist/tag/tuple.d.ts +0 -17
  141. package/dist/tag/tuple.d.ts.map +0 -1
  142. package/dist/tag/tuple.js +0 -162
  143. package/dist/tag/tuple.js.map +0 -1
  144. package/dist/tag/uint.d.ts +0 -12
  145. package/dist/tag/uint.d.ts.map +0 -1
  146. package/dist/tag/uint.js +0 -49
  147. package/dist/tag/uint.js.map +0 -1
  148. package/dist/test/did.d.ts +0 -2
  149. package/dist/test/did.d.ts.map +0 -1
  150. package/dist/test/did.js +0 -177
  151. package/dist/test/did.js.map +0 -1
  152. package/dist/utils/tag-abi-codec.d.ts +0 -69
  153. package/dist/utils/tag-abi-codec.d.ts.map +0 -1
  154. package/dist/utils/tag-abi-codec.js +0 -144
  155. package/dist/utils/tag-abi-codec.js.map +0 -1
  156. package/examples/crypto-utilities.ts +0 -140
  157. package/examples/ed25519-jwk.ts +0 -73
  158. package/examples/generate-mnemonic.ts +0 -149
  159. package/examples/legacy.ts +0 -33
  160. package/examples/olares-id-format.ts +0 -197
  161. package/examples/tag-builder.ts +0 -235
  162. package/examples/tag-nested-tuple.ts +0 -190
  163. package/examples/tag-simple.ts +0 -149
  164. package/examples/tag-tagger.ts +0 -217
  165. package/examples/test-nested-tuple-conversion.ts +0 -143
  166. package/examples/test-type-bytes-parser.ts +0 -70
  167. package/src/abi/ABITypeABI.ts +0 -379
  168. package/src/abi/RegistryABI.ts +0 -459
  169. package/src/tag/address.ts +0 -48
  170. package/src/tag/array.ts +0 -80
  171. package/src/tag/bool.ts +0 -43
  172. package/src/tag/bytes.ts +0 -38
  173. package/src/tag/flarray.ts +0 -99
  174. package/src/tag/flbytes.ts +0 -48
  175. package/src/tag/index.ts +0 -170
  176. package/src/tag/int.ts +0 -51
  177. package/src/tag/string.ts +0 -38
  178. package/src/tag/tag.ts +0 -229
  179. package/src/tag/tuple.ts +0 -193
  180. package/src/tag/uint.ts +0 -51
  181. package/src/test/did.ts +0 -346
  182. package/src/utils/tag-abi-codec.ts +0 -158
@@ -1,158 +0,0 @@
1
- import { AbiCoder } from 'ethers';
2
-
3
- /**
4
- * Tag ABI Codec
5
- * Unified encoding/decoding utility for Tag values
6
- *
7
- * Key Principle: ALL values use abi.encode()
8
- * - Simple values: abi.encode("value")
9
- * - Arrays: abi.encode(["a", "b", "c"])
10
- * - Tuples: abi.encode(struct)
11
- * - Elements for push: abi.encode(singleElement)
12
- */
13
- export class TagAbiCodec {
14
- private static abiCoder = new AbiCoder();
15
-
16
- /**
17
- * Parse tuple field types from ABI type string
18
- * @param abiType e.g., "tuple(string,uint8,tuple(bool,address))"
19
- * @returns Array of field types: ["string", "uint8", "tuple(bool,address)"]
20
- */
21
- private static parseTupleFields(abiType: string): string[] {
22
- if (!abiType.startsWith('tuple(')) {
23
- return [];
24
- }
25
-
26
- const innerTypes = abiType.slice(6, -1); // Remove "tuple(" and ")"
27
- const fields: string[] = [];
28
- let depth = 0;
29
- let currentField = '';
30
-
31
- for (let i = 0; i < innerTypes.length; i++) {
32
- const char = innerTypes[i];
33
-
34
- if (char === '(') {
35
- depth++;
36
- currentField += char;
37
- } else if (char === ')') {
38
- depth--;
39
- currentField += char;
40
- } else if (char === ',' && depth === 0) {
41
- fields.push(currentField.trim());
42
- currentField = '';
43
- } else {
44
- currentField += char;
45
- }
46
- }
47
-
48
- if (currentField) {
49
- fields.push(currentField.trim());
50
- }
51
-
52
- return fields;
53
- }
54
-
55
- /**
56
- * Convert object to array based on ABI type structure
57
- * Supports nested tuples recursively
58
- *
59
- * @param abiType ABI type string
60
- * @param value Value (can be object or array)
61
- * @returns Array value
62
- */
63
- private static convertObjectToArray(abiType: string, value: any): any {
64
- // If already an array or not an object, return as-is
65
- if (
66
- Array.isArray(value) ||
67
- typeof value !== 'object' ||
68
- value === null
69
- ) {
70
- return value;
71
- }
72
-
73
- // If not a tuple type, return as-is
74
- if (!abiType.startsWith('tuple(')) {
75
- return value;
76
- }
77
-
78
- // Parse tuple field types
79
- const fieldTypes = this.parseTupleFields(abiType);
80
- const fieldNames = Object.keys(value);
81
-
82
- if (fieldNames.length !== fieldTypes.length) {
83
- throw new Error(
84
- `Tuple field count mismatch: expected ${
85
- fieldTypes.length
86
- } fields, got ${fieldNames.length} (${fieldNames.join(', ')})`
87
- );
88
- }
89
-
90
- // Convert object to array, recursively handling nested tuples
91
- const result: any[] = [];
92
- for (let i = 0; i < fieldNames.length; i++) {
93
- const fieldName = fieldNames[i];
94
- const fieldType = fieldTypes[i];
95
- const fieldValue = value[fieldName];
96
-
97
- // Recursively convert nested tuples
98
- if (fieldType.startsWith('tuple(')) {
99
- result.push(this.convertObjectToArray(fieldType, fieldValue));
100
- } else {
101
- result.push(fieldValue);
102
- }
103
- }
104
-
105
- return result;
106
- }
107
-
108
- /**
109
- * Encode a value with given ABI type
110
- *
111
- * @param abiType ABI type string (e.g., "string", "uint256", "tuple(string,uint8)")
112
- * @param value Value to encode (objects are automatically converted to arrays)
113
- * @returns Encoded bytes (with 0x prefix)
114
- *
115
- * @example
116
- * // Simple value
117
- * TagAbiCodec.encode("string", "hello");
118
- *
119
- * // Array value
120
- * TagAbiCodec.encode("string[]", ["a", "b", "c"]);
121
- *
122
- * // Tuple with object input
123
- * TagAbiCodec.encode("tuple(string,uint8)", {name: "Alice", age: 30});
124
- *
125
- * // Nested tuple with object input
126
- * TagAbiCodec.encode(
127
- * "tuple(string,tuple(uint8,bool))",
128
- * {name: "Alice", profile: {age: 30, verified: true}}
129
- * );
130
- *
131
- * // Tuple with array input (still supported)
132
- * TagAbiCodec.encode("tuple(string,uint8)", ["Alice", 30]);
133
- */
134
- static encode(abiType: string, value: any): string {
135
- // Convert object to array if needed (handles nested tuples recursively)
136
- const convertedValue = this.convertObjectToArray(abiType, value);
137
-
138
- // Use ethers AbiCoder to encode
139
- return this.abiCoder.encode([abiType], [convertedValue]);
140
- }
141
-
142
- /**
143
- * Decode bytes with given ABI type
144
- *
145
- * @param abiType ABI type string
146
- * @param encodedData Encoded bytes (with or without 0x prefix)
147
- * @returns Decoded value
148
- *
149
- * @example
150
- * TagAbiCodec.decode("string", encodedBytes); // → "hello"
151
- * TagAbiCodec.decode("uint256", encodedBytes); // → 123n (BigInt)
152
- * TagAbiCodec.decode("tuple(string,uint8)", encodedBytes); // → ["Alice", 30n]
153
- */
154
- static decode(abiType: string, encodedData: string): any {
155
- const decoded = this.abiCoder.decode([abiType], encodedData);
156
- return decoded[0];
157
- }
158
- }