@beclab/olaresid 0.1.13 → 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 (181) hide show
  1. package/CLI-TREE.md +107 -0
  2. package/CLI.md +122 -1340
  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.map +1 -1
  12. package/dist/business/index.js +9 -23
  13. package/dist/business/index.js.map +1 -1
  14. package/dist/business/tag-context.d.ts +1 -0
  15. package/dist/business/tag-context.d.ts.map +1 -1
  16. package/dist/business/tag-context.js +13 -7
  17. package/dist/business/tag-context.js.map +1 -1
  18. package/dist/cli.js +177 -76
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config/index.d.ts +16 -4
  21. package/dist/config/index.d.ts.map +1 -1
  22. package/dist/config/index.js +28 -14
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/domain/core.d.ts +65 -0
  25. package/dist/domain/core.d.ts.map +1 -0
  26. package/dist/domain/core.js +317 -0
  27. package/dist/domain/core.js.map +1 -0
  28. package/dist/domain/index.d.ts +104 -57
  29. package/dist/domain/index.d.ts.map +1 -1
  30. package/dist/domain/index.js +188 -428
  31. package/dist/domain/index.js.map +1 -1
  32. package/dist/domain/types.d.ts +56 -0
  33. package/dist/domain/types.d.ts.map +1 -0
  34. package/dist/domain/types.js +3 -0
  35. package/dist/domain/types.js.map +1 -0
  36. package/dist/index.d.ts +80 -23
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +152 -143
  39. package/dist/index.js.map +1 -1
  40. package/dist/utils/crypto-utils.d.ts +110 -0
  41. package/dist/utils/crypto-utils.d.ts.map +1 -1
  42. package/dist/utils/crypto-utils.js +127 -8
  43. package/dist/utils/crypto-utils.js.map +1 -1
  44. package/dist/utils/error-parser.d.ts.map +1 -1
  45. package/dist/utils/error-parser.js +2 -1
  46. package/dist/utils/error-parser.js.map +1 -1
  47. package/dist/utils/event-parser.d.ts +161 -0
  48. package/dist/utils/event-parser.d.ts.map +1 -0
  49. package/dist/utils/event-parser.js +140 -0
  50. package/dist/utils/event-parser.js.map +1 -0
  51. package/dist/utils/tag-type-builder.d.ts +43 -0
  52. package/dist/utils/tag-type-builder.d.ts.map +1 -1
  53. package/dist/utils/tag-type-builder.js +122 -0
  54. package/dist/utils/tag-type-builder.js.map +1 -1
  55. package/dist/utils/tag-type-parser.d.ts +70 -0
  56. package/dist/utils/tag-type-parser.d.ts.map +1 -0
  57. package/dist/utils/tag-type-parser.js +190 -0
  58. package/dist/utils/tag-type-parser.js.map +1 -0
  59. package/examples/create-with-rpc-demo.ts +142 -0
  60. package/examples/fetch-all-flat-demo.ts +159 -0
  61. package/examples/fetch-by-indices-demo.ts +235 -0
  62. package/examples/fetch-domain-demo.ts +137 -0
  63. package/examples/fetch-domains-demo.ts +221 -0
  64. package/examples/frontend-demo/index.html +2 -2
  65. package/examples/frontend-demo/package-lock.json +4 -1
  66. package/examples/index.ts +3 -5
  67. package/jest.config.js +25 -0
  68. package/package.json +6 -2
  69. package/src/abi/TerminusDIDQueryABI.ts +516 -0
  70. package/src/business/index.ts +9 -33
  71. package/src/business/tag-context.ts +35 -7
  72. package/src/cli.ts +253 -90
  73. package/src/config/index.ts +34 -19
  74. package/src/domain/core.ts +382 -0
  75. package/src/domain/index.ts +271 -641
  76. package/src/domain/types.ts +59 -0
  77. package/src/index.ts +221 -207
  78. package/src/utils/crypto-utils.ts +205 -2
  79. package/src/utils/error-parser.ts +2 -1
  80. package/src/utils/event-parser.ts +353 -0
  81. package/src/utils/tag-type-builder.ts +138 -0
  82. package/src/utils/tag-type-parser.ts +246 -0
  83. package/tests/unit/crypto-utils.test.ts +338 -0
  84. package/tests/unit/ed25519-jwk.test.ts +201 -0
  85. package/tests/unit/event-parser.test.ts +690 -0
  86. package/tests/unit/generate-mnemonic.test.ts +268 -0
  87. package/tests/unit/olares-id-format.test.ts +321 -0
  88. package/tests/unit/tag-type-parser.test.ts +802 -0
  89. package/tests/unit/tag-types.test.ts +821 -0
  90. package/tsconfig.json +3 -2
  91. package/dist/abi/ABITypeABI.d.ts +0 -88
  92. package/dist/abi/ABITypeABI.d.ts.map +0 -1
  93. package/dist/abi/ABITypeABI.js +0 -382
  94. package/dist/abi/ABITypeABI.js.map +0 -1
  95. package/dist/abi/RegistryABI.d.ts +0 -77
  96. package/dist/abi/RegistryABI.d.ts.map +0 -1
  97. package/dist/abi/RegistryABI.js +0 -462
  98. package/dist/abi/RegistryABI.js.map +0 -1
  99. package/dist/tag/address.d.ts +0 -11
  100. package/dist/tag/address.d.ts.map +0 -1
  101. package/dist/tag/address.js +0 -44
  102. package/dist/tag/address.js.map +0 -1
  103. package/dist/tag/array.d.ts +0 -14
  104. package/dist/tag/array.d.ts.map +0 -1
  105. package/dist/tag/array.js +0 -72
  106. package/dist/tag/array.js.map +0 -1
  107. package/dist/tag/bool.d.ts +0 -11
  108. package/dist/tag/bool.d.ts.map +0 -1
  109. package/dist/tag/bool.js +0 -43
  110. package/dist/tag/bool.js.map +0 -1
  111. package/dist/tag/bytes.d.ts +0 -11
  112. package/dist/tag/bytes.d.ts.map +0 -1
  113. package/dist/tag/bytes.js +0 -37
  114. package/dist/tag/bytes.js.map +0 -1
  115. package/dist/tag/flarray.d.ts +0 -15
  116. package/dist/tag/flarray.d.ts.map +0 -1
  117. package/dist/tag/flarray.js +0 -81
  118. package/dist/tag/flarray.js.map +0 -1
  119. package/dist/tag/flbytes.d.ts +0 -11
  120. package/dist/tag/flbytes.d.ts.map +0 -1
  121. package/dist/tag/flbytes.js +0 -47
  122. package/dist/tag/flbytes.js.map +0 -1
  123. package/dist/tag/index.d.ts +0 -32
  124. package/dist/tag/index.d.ts.map +0 -1
  125. package/dist/tag/index.js +0 -121
  126. package/dist/tag/index.js.map +0 -1
  127. package/dist/tag/int.d.ts +0 -12
  128. package/dist/tag/int.d.ts.map +0 -1
  129. package/dist/tag/int.js +0 -49
  130. package/dist/tag/int.js.map +0 -1
  131. package/dist/tag/string.d.ts +0 -11
  132. package/dist/tag/string.d.ts.map +0 -1
  133. package/dist/tag/string.js +0 -37
  134. package/dist/tag/string.js.map +0 -1
  135. package/dist/tag/tag.d.ts +0 -67
  136. package/dist/tag/tag.d.ts.map +0 -1
  137. package/dist/tag/tag.js +0 -157
  138. package/dist/tag/tag.js.map +0 -1
  139. package/dist/tag/tuple.d.ts +0 -17
  140. package/dist/tag/tuple.d.ts.map +0 -1
  141. package/dist/tag/tuple.js +0 -162
  142. package/dist/tag/tuple.js.map +0 -1
  143. package/dist/tag/uint.d.ts +0 -12
  144. package/dist/tag/uint.d.ts.map +0 -1
  145. package/dist/tag/uint.js +0 -49
  146. package/dist/tag/uint.js.map +0 -1
  147. package/dist/test/did.d.ts +0 -2
  148. package/dist/test/did.d.ts.map +0 -1
  149. package/dist/test/did.js +0 -177
  150. package/dist/test/did.js.map +0 -1
  151. package/dist/utils/tag-abi-codec.d.ts +0 -69
  152. package/dist/utils/tag-abi-codec.d.ts.map +0 -1
  153. package/dist/utils/tag-abi-codec.js +0 -144
  154. package/dist/utils/tag-abi-codec.js.map +0 -1
  155. package/examples/crypto-utilities.ts +0 -140
  156. package/examples/ed25519-jwk.ts +0 -73
  157. package/examples/generate-mnemonic.ts +0 -149
  158. package/examples/legacy.ts +0 -33
  159. package/examples/olares-id-format.ts +0 -197
  160. package/examples/tag-builder.ts +0 -235
  161. package/examples/tag-nested-tuple.ts +0 -190
  162. package/examples/tag-simple.ts +0 -149
  163. package/examples/tag-tagger.ts +0 -217
  164. package/examples/test-nested-tuple-conversion.ts +0 -143
  165. package/examples/test-type-bytes-parser.ts +0 -70
  166. package/src/abi/ABITypeABI.ts +0 -379
  167. package/src/abi/RegistryABI.ts +0 -459
  168. package/src/tag/address.ts +0 -48
  169. package/src/tag/array.ts +0 -80
  170. package/src/tag/bool.ts +0 -43
  171. package/src/tag/bytes.ts +0 -38
  172. package/src/tag/flarray.ts +0 -99
  173. package/src/tag/flbytes.ts +0 -48
  174. package/src/tag/index.ts +0 -170
  175. package/src/tag/int.ts +0 -51
  176. package/src/tag/string.ts +0 -38
  177. package/src/tag/tag.ts +0 -229
  178. package/src/tag/tuple.ts +0 -193
  179. package/src/tag/uint.ts +0 -51
  180. package/src/test/did.ts +0 -346
  181. 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
- }