@beclab/olaresid 0.1.13 → 0.2.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/CLI-TREE.md +107 -0
- package/CLI.md +122 -1340
- package/README.md +30 -12
- package/SDK-TREE.md +151 -0
- package/TAG.md +95 -41
- package/config.json +6 -4
- package/dist/abi/TerminusDIDQueryABI.d.ts +397 -0
- package/dist/abi/TerminusDIDQueryABI.d.ts.map +1 -0
- package/dist/abi/TerminusDIDQueryABI.js +519 -0
- package/dist/abi/TerminusDIDQueryABI.js.map +1 -0
- package/dist/business/index.d.ts.map +1 -1
- package/dist/business/index.js +9 -23
- package/dist/business/index.js.map +1 -1
- package/dist/business/tag-context.d.ts +1 -0
- package/dist/business/tag-context.d.ts.map +1 -1
- package/dist/business/tag-context.js +13 -7
- package/dist/business/tag-context.js.map +1 -1
- package/dist/cli.js +177 -76
- package/dist/cli.js.map +1 -1
- package/dist/config/index.d.ts +16 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +28 -14
- package/dist/config/index.js.map +1 -1
- package/dist/domain/core.d.ts +65 -0
- package/dist/domain/core.d.ts.map +1 -0
- package/dist/domain/core.js +317 -0
- package/dist/domain/core.js.map +1 -0
- package/dist/domain/index.d.ts +104 -57
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +188 -428
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/types.d.ts +56 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +3 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +81 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +158 -143
- package/dist/index.js.map +1 -1
- package/dist/utils/crypto-utils.d.ts +110 -0
- package/dist/utils/crypto-utils.d.ts.map +1 -1
- package/dist/utils/crypto-utils.js +127 -8
- package/dist/utils/crypto-utils.js.map +1 -1
- package/dist/utils/error-parser.d.ts.map +1 -1
- package/dist/utils/error-parser.js +2 -1
- package/dist/utils/error-parser.js.map +1 -1
- package/dist/utils/event-parser.d.ts +161 -0
- package/dist/utils/event-parser.d.ts.map +1 -0
- package/dist/utils/event-parser.js +140 -0
- package/dist/utils/event-parser.js.map +1 -0
- package/dist/utils/tag-type-builder.d.ts +43 -0
- package/dist/utils/tag-type-builder.d.ts.map +1 -1
- package/dist/utils/tag-type-builder.js +122 -0
- package/dist/utils/tag-type-builder.js.map +1 -1
- package/dist/utils/tag-type-parser.d.ts +70 -0
- package/dist/utils/tag-type-parser.d.ts.map +1 -0
- package/dist/utils/tag-type-parser.js +190 -0
- package/dist/utils/tag-type-parser.js.map +1 -0
- package/examples/create-with-rpc-demo.ts +142 -0
- package/examples/fetch-all-flat-demo.ts +159 -0
- package/examples/fetch-by-indices-demo.ts +235 -0
- package/examples/fetch-domain-demo.ts +137 -0
- package/examples/fetch-domains-demo.ts +221 -0
- package/examples/frontend-demo/index.html +2 -2
- package/examples/frontend-demo/package-lock.json +4 -1
- package/examples/index.ts +3 -5
- package/jest.config.js +25 -0
- package/package.json +6 -2
- package/src/abi/TerminusDIDQueryABI.ts +516 -0
- package/src/business/index.ts +9 -33
- package/src/business/tag-context.ts +35 -7
- package/src/cli.ts +253 -90
- package/src/config/index.ts +34 -19
- package/src/domain/core.ts +382 -0
- package/src/domain/index.ts +271 -641
- package/src/domain/types.ts +59 -0
- package/src/index.ts +230 -207
- package/src/utils/crypto-utils.ts +205 -2
- package/src/utils/error-parser.ts +2 -1
- package/src/utils/event-parser.ts +353 -0
- package/src/utils/tag-type-builder.ts +138 -0
- package/src/utils/tag-type-parser.ts +246 -0
- package/tests/unit/crypto-utils.test.ts +338 -0
- package/tests/unit/ed25519-jwk.test.ts +201 -0
- package/tests/unit/event-parser.test.ts +690 -0
- package/tests/unit/generate-mnemonic.test.ts +268 -0
- package/tests/unit/olares-id-format.test.ts +321 -0
- package/tests/unit/tag-type-parser.test.ts +802 -0
- package/tests/unit/tag-types.test.ts +821 -0
- package/tests/unit/version.test.ts +14 -0
- package/tsconfig.json +3 -2
- package/dist/abi/ABITypeABI.d.ts +0 -88
- package/dist/abi/ABITypeABI.d.ts.map +0 -1
- package/dist/abi/ABITypeABI.js +0 -382
- package/dist/abi/ABITypeABI.js.map +0 -1
- package/dist/abi/RegistryABI.d.ts +0 -77
- package/dist/abi/RegistryABI.d.ts.map +0 -1
- package/dist/abi/RegistryABI.js +0 -462
- package/dist/abi/RegistryABI.js.map +0 -1
- package/dist/tag/address.d.ts +0 -11
- package/dist/tag/address.d.ts.map +0 -1
- package/dist/tag/address.js +0 -44
- package/dist/tag/address.js.map +0 -1
- package/dist/tag/array.d.ts +0 -14
- package/dist/tag/array.d.ts.map +0 -1
- package/dist/tag/array.js +0 -72
- package/dist/tag/array.js.map +0 -1
- package/dist/tag/bool.d.ts +0 -11
- package/dist/tag/bool.d.ts.map +0 -1
- package/dist/tag/bool.js +0 -43
- package/dist/tag/bool.js.map +0 -1
- package/dist/tag/bytes.d.ts +0 -11
- package/dist/tag/bytes.d.ts.map +0 -1
- package/dist/tag/bytes.js +0 -37
- package/dist/tag/bytes.js.map +0 -1
- package/dist/tag/flarray.d.ts +0 -15
- package/dist/tag/flarray.d.ts.map +0 -1
- package/dist/tag/flarray.js +0 -81
- package/dist/tag/flarray.js.map +0 -1
- package/dist/tag/flbytes.d.ts +0 -11
- package/dist/tag/flbytes.d.ts.map +0 -1
- package/dist/tag/flbytes.js +0 -47
- package/dist/tag/flbytes.js.map +0 -1
- package/dist/tag/index.d.ts +0 -32
- package/dist/tag/index.d.ts.map +0 -1
- package/dist/tag/index.js +0 -121
- package/dist/tag/index.js.map +0 -1
- package/dist/tag/int.d.ts +0 -12
- package/dist/tag/int.d.ts.map +0 -1
- package/dist/tag/int.js +0 -49
- package/dist/tag/int.js.map +0 -1
- package/dist/tag/string.d.ts +0 -11
- package/dist/tag/string.d.ts.map +0 -1
- package/dist/tag/string.js +0 -37
- package/dist/tag/string.js.map +0 -1
- package/dist/tag/tag.d.ts +0 -67
- package/dist/tag/tag.d.ts.map +0 -1
- package/dist/tag/tag.js +0 -157
- package/dist/tag/tag.js.map +0 -1
- package/dist/tag/tuple.d.ts +0 -17
- package/dist/tag/tuple.d.ts.map +0 -1
- package/dist/tag/tuple.js +0 -162
- package/dist/tag/tuple.js.map +0 -1
- package/dist/tag/uint.d.ts +0 -12
- package/dist/tag/uint.d.ts.map +0 -1
- package/dist/tag/uint.js +0 -49
- package/dist/tag/uint.js.map +0 -1
- package/dist/test/did.d.ts +0 -2
- package/dist/test/did.d.ts.map +0 -1
- package/dist/test/did.js +0 -177
- package/dist/test/did.js.map +0 -1
- package/dist/utils/tag-abi-codec.d.ts +0 -69
- package/dist/utils/tag-abi-codec.d.ts.map +0 -1
- package/dist/utils/tag-abi-codec.js +0 -144
- package/dist/utils/tag-abi-codec.js.map +0 -1
- package/examples/crypto-utilities.ts +0 -140
- package/examples/ed25519-jwk.ts +0 -73
- package/examples/generate-mnemonic.ts +0 -149
- package/examples/legacy.ts +0 -33
- package/examples/olares-id-format.ts +0 -197
- package/examples/tag-builder.ts +0 -235
- package/examples/tag-nested-tuple.ts +0 -190
- package/examples/tag-simple.ts +0 -149
- package/examples/tag-tagger.ts +0 -217
- package/examples/test-nested-tuple-conversion.ts +0 -143
- package/examples/test-type-bytes-parser.ts +0 -70
- package/src/abi/ABITypeABI.ts +0 -379
- package/src/abi/RegistryABI.ts +0 -459
- package/src/tag/address.ts +0 -48
- package/src/tag/array.ts +0 -80
- package/src/tag/bool.ts +0 -43
- package/src/tag/bytes.ts +0 -38
- package/src/tag/flarray.ts +0 -99
- package/src/tag/flbytes.ts +0 -48
- package/src/tag/index.ts +0 -170
- package/src/tag/int.ts +0 -51
- package/src/tag/string.ts +0 -38
- package/src/tag/tag.ts +0 -229
- package/src/tag/tuple.ts +0 -193
- package/src/tag/uint.ts +0 -51
- package/src/test/did.ts +0 -346
- 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
|
-
}
|