@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
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.QueryContractHelper = void 0;
|
|
7
|
+
exports.collectFieldNameHashes = collectFieldNameHashes;
|
|
8
|
+
exports.batchFetchFieldNames = batchFetchFieldNames;
|
|
9
|
+
exports.parseDomain = parseDomain;
|
|
10
|
+
exports.parseAllDomains = parseAllDomains;
|
|
11
|
+
exports.calculateLevel = calculateLevel;
|
|
12
|
+
exports.getParentDomainName = getParentDomainName;
|
|
13
|
+
const ethers_1 = require("ethers");
|
|
14
|
+
const TerminusDIDQueryABI_1 = __importDefault(require("../abi/TerminusDIDQueryABI"));
|
|
15
|
+
const tag_type_parser_1 = require("../utils/tag-type-parser");
|
|
16
|
+
const error_parser_1 = require("../utils/error-parser");
|
|
17
|
+
const crypto_utils_1 = require("../utils/crypto-utils");
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Query Contract Helper
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Helper class for interacting with TerminusDIDQuery contract
|
|
23
|
+
*/
|
|
24
|
+
class QueryContractHelper {
|
|
25
|
+
constructor(queryContractAddress, provider) {
|
|
26
|
+
this.contract = new ethers_1.ethers.Contract(queryContractAddress, TerminusDIDQueryABI_1.default, provider);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get total supply of domains
|
|
30
|
+
*/
|
|
31
|
+
async getTotalSupply() {
|
|
32
|
+
try {
|
|
33
|
+
const supply = await this.contract.totalSupply();
|
|
34
|
+
return Number(supply);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
38
|
+
console.error('[core] getTotalSupply failed:', parsedError.message);
|
|
39
|
+
throw new Error(parsedError.message);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get token ID by index
|
|
44
|
+
*/
|
|
45
|
+
async getTokenByIndex(index) {
|
|
46
|
+
try {
|
|
47
|
+
return await this.contract.tokenByIndex(index);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
51
|
+
console.error('[core] getTokenByIndex failed:', parsedError.message);
|
|
52
|
+
throw new Error(parsedError.message);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get single domain data by token ID or domain name
|
|
57
|
+
* Automatically detects if input is tokenId (starts with 0x or is bigint) or domain name
|
|
58
|
+
*/
|
|
59
|
+
async getDomain(nameOrTokenId) {
|
|
60
|
+
try {
|
|
61
|
+
let data;
|
|
62
|
+
// Check if it's a tokenId (hex string or bigint)
|
|
63
|
+
if (typeof nameOrTokenId === 'bigint' ||
|
|
64
|
+
(typeof nameOrTokenId === 'string' &&
|
|
65
|
+
nameOrTokenId.startsWith('0x'))) {
|
|
66
|
+
data = await this.contract.getDomain(nameOrTokenId);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// It's a domain name
|
|
70
|
+
data = await this.contract.getDomainByName(nameOrTokenId);
|
|
71
|
+
}
|
|
72
|
+
return this._convertDomainData(data);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
76
|
+
console.error('[core] getDomain failed:', parsedError.message);
|
|
77
|
+
throw new Error(parsedError.message);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get multiple domains data by token IDs
|
|
82
|
+
*/
|
|
83
|
+
async getDomains(tokenIds) {
|
|
84
|
+
try {
|
|
85
|
+
const data = await this.contract.getDomains(tokenIds);
|
|
86
|
+
return data.map((d) => this._convertDomainData(d));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
90
|
+
console.error('[core] getDomains failed:', parsedError.message);
|
|
91
|
+
throw new Error(parsedError.message);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get all domains with pagination
|
|
96
|
+
*/
|
|
97
|
+
async getAllDomains(offset, limit) {
|
|
98
|
+
try {
|
|
99
|
+
const data = await this.contract.getAllDomains(offset, limit);
|
|
100
|
+
return data.map((d) => this._convertDomainData(d));
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
104
|
+
console.error('[core] getAllDomains failed:', parsedError.message);
|
|
105
|
+
throw new Error(parsedError.message);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get domains by specific indices (single RPC call)
|
|
110
|
+
*/
|
|
111
|
+
async getDomainsByIndices(indices) {
|
|
112
|
+
try {
|
|
113
|
+
const data = await this.contract.getDomainsByIndices(indices);
|
|
114
|
+
return data.map((d) => this._convertDomainData(d));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
const parsedError = (0, error_parser_1.parseContractError)(error);
|
|
118
|
+
console.error('[core] getDomainsByIndices failed:', parsedError.message);
|
|
119
|
+
throw new Error(parsedError.message);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Convert contract response to RawDomainData
|
|
124
|
+
*/
|
|
125
|
+
_convertDomainData(data) {
|
|
126
|
+
return {
|
|
127
|
+
tokenId: data.tokenId,
|
|
128
|
+
domain: data.domain,
|
|
129
|
+
did: data.did,
|
|
130
|
+
notes: data.notes,
|
|
131
|
+
allowSubdomain: data.allowSubdomain,
|
|
132
|
+
owner: data.owner,
|
|
133
|
+
tags: data.tags.map((tag) => ({
|
|
134
|
+
from: tag.from,
|
|
135
|
+
name: tag.name,
|
|
136
|
+
// ethers v6 returns bytes fields as Uint8Array; normalize to hex string
|
|
137
|
+
abiType: ethers_1.ethers.hexlify(tag.abiType ?? '0x'),
|
|
138
|
+
value: ethers_1.ethers.hexlify(tag.value ?? '0x'),
|
|
139
|
+
fieldNamesHash: tag.fieldNamesHash
|
|
140
|
+
}))
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.QueryContractHelper = QueryContractHelper;
|
|
145
|
+
// ============================================================================
|
|
146
|
+
// Field Names Fetching
|
|
147
|
+
// ============================================================================
|
|
148
|
+
/**
|
|
149
|
+
* Collect all unique field name hashes from raw domains
|
|
150
|
+
*/
|
|
151
|
+
function collectFieldNameHashes(rawDomains) {
|
|
152
|
+
const hashSet = new Set();
|
|
153
|
+
for (const domain of rawDomains) {
|
|
154
|
+
for (const tag of domain.tags) {
|
|
155
|
+
for (const hash of tag.fieldNamesHash) {
|
|
156
|
+
if (hash &&
|
|
157
|
+
hash !==
|
|
158
|
+
'0x0000000000000000000000000000000000000000000000000000000000000000') {
|
|
159
|
+
hashSet.add(hash);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return Array.from(hashSet);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Batch fetch field names from blockchain events
|
|
168
|
+
* Groups queries by block number to minimize RPC calls
|
|
169
|
+
*/
|
|
170
|
+
async function batchFetchFieldNames(contract, hashes) {
|
|
171
|
+
const fieldNamesMap = new Map();
|
|
172
|
+
if (hashes.length === 0) {
|
|
173
|
+
return fieldNamesMap;
|
|
174
|
+
}
|
|
175
|
+
// Step 1: Batch get block numbers for all hashes
|
|
176
|
+
const hashToBlock = new Map();
|
|
177
|
+
for (const hash of hashes) {
|
|
178
|
+
try {
|
|
179
|
+
const blockNum = await contract.getFieldNamesEventBlock(hash);
|
|
180
|
+
hashToBlock.set(hash, Number(blockNum));
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
console.error(`[core] failed to get block number for field name hash ${hash}:`, error instanceof Error ? error.message : String(error));
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Step 2: Group hashes by block number
|
|
188
|
+
const blockToHashes = new Map();
|
|
189
|
+
for (const [hash, blockNum] of hashToBlock.entries()) {
|
|
190
|
+
if (!blockToHashes.has(blockNum)) {
|
|
191
|
+
blockToHashes.set(blockNum, []);
|
|
192
|
+
}
|
|
193
|
+
blockToHashes.get(blockNum).push(hash);
|
|
194
|
+
}
|
|
195
|
+
// Step 3: Batch query events by block
|
|
196
|
+
for (const [blockNum, hashesInBlock] of blockToHashes.entries()) {
|
|
197
|
+
try {
|
|
198
|
+
const events = await contract.queryFilter('OffchainStringArray', blockNum, blockNum);
|
|
199
|
+
for (const event of events) {
|
|
200
|
+
const eventHash = event.args.hash;
|
|
201
|
+
if (hashesInBlock.includes(eventHash)) {
|
|
202
|
+
fieldNamesMap.set(eventHash, event.args.value);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
console.error(`[core] failed to query events at block ${blockNum} for ${hashesInBlock.length} hashes:`, error instanceof Error ? error.message : String(error));
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return fieldNamesMap;
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Domain Parsing
|
|
215
|
+
// ============================================================================
|
|
216
|
+
/**
|
|
217
|
+
* Parse a single raw domain into flat domain data
|
|
218
|
+
*/
|
|
219
|
+
function parseDomain(rawDomain, fieldNamesMap) {
|
|
220
|
+
const abiCoder = new ethers_1.AbiCoder();
|
|
221
|
+
const domain = {
|
|
222
|
+
id: ethers_1.ethers.toBeHex(rawDomain.tokenId, 32),
|
|
223
|
+
name: rawDomain.domain,
|
|
224
|
+
did: rawDomain.did,
|
|
225
|
+
note: rawDomain.notes,
|
|
226
|
+
allowSubdomain: rawDomain.allowSubdomain,
|
|
227
|
+
owner: ethers_1.ethers.getAddress(rawDomain.owner),
|
|
228
|
+
level: calculateLevel(rawDomain.domain),
|
|
229
|
+
tags: []
|
|
230
|
+
};
|
|
231
|
+
// Parse tags
|
|
232
|
+
for (const rawTag of rawDomain.tags) {
|
|
233
|
+
try {
|
|
234
|
+
const tag = tag_type_parser_1.TagTypeParser.parseTag(rawTag, fieldNamesMap, abiCoder);
|
|
235
|
+
domain.tags.push(tag);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
console.error(`[core] failed to parse tag ${rawTag.name}:`, error);
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
applyLatestDID(domain);
|
|
243
|
+
return domain;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Parse all raw domains into flat domain data
|
|
247
|
+
* Also calculates parentId for each domain
|
|
248
|
+
*/
|
|
249
|
+
function parseAllDomains(rawDomains, fieldNamesMap) {
|
|
250
|
+
const abiCoder = new ethers_1.AbiCoder();
|
|
251
|
+
// Step 1: Create all domain objects
|
|
252
|
+
const domainMap = new Map();
|
|
253
|
+
for (const rawDomain of rawDomains) {
|
|
254
|
+
const domain = {
|
|
255
|
+
id: ethers_1.ethers.toBeHex(rawDomain.tokenId, 32),
|
|
256
|
+
name: rawDomain.domain,
|
|
257
|
+
did: rawDomain.did,
|
|
258
|
+
note: rawDomain.notes,
|
|
259
|
+
allowSubdomain: rawDomain.allowSubdomain,
|
|
260
|
+
owner: ethers_1.ethers.getAddress(rawDomain.owner),
|
|
261
|
+
level: calculateLevel(rawDomain.domain),
|
|
262
|
+
tags: []
|
|
263
|
+
};
|
|
264
|
+
// Parse tags
|
|
265
|
+
for (const rawTag of rawDomain.tags) {
|
|
266
|
+
try {
|
|
267
|
+
const tag = tag_type_parser_1.TagTypeParser.parseTag(rawTag, fieldNamesMap, abiCoder);
|
|
268
|
+
domain.tags.push(tag);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error(`[core] failed to parse tag ${rawTag.name}:`, error);
|
|
272
|
+
throw error;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
applyLatestDID(domain);
|
|
276
|
+
domainMap.set(domain.name, domain);
|
|
277
|
+
}
|
|
278
|
+
// Step 2: Calculate parentId
|
|
279
|
+
const flatDomains = [];
|
|
280
|
+
for (const domain of domainMap.values()) {
|
|
281
|
+
if (domain.level > 1) {
|
|
282
|
+
const parentName = getParentDomainName(domain.name);
|
|
283
|
+
const parent = domainMap.get(parentName);
|
|
284
|
+
if (parent) {
|
|
285
|
+
domain.parentId = parent.id;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
flatDomains.push(domain);
|
|
289
|
+
}
|
|
290
|
+
return flatDomains;
|
|
291
|
+
}
|
|
292
|
+
// ============================================================================
|
|
293
|
+
// Utility Functions
|
|
294
|
+
// ============================================================================
|
|
295
|
+
/**
|
|
296
|
+
* If a domain has a latestDID tag with a non-empty valueFormatted, override did with it
|
|
297
|
+
*/
|
|
298
|
+
function applyLatestDID(domain) {
|
|
299
|
+
const latestDIDTag = domain.tags.find((t) => t.name === 'latestDID');
|
|
300
|
+
if (latestDIDTag?.valueFormatted) {
|
|
301
|
+
domain.did = (0, crypto_utils_1.getFullyQualifiedVerificationMethodID)(latestDIDTag.valueFormatted);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Calculate domain level (number of dots + 1)
|
|
306
|
+
*/
|
|
307
|
+
function calculateLevel(domainName) {
|
|
308
|
+
return domainName.split('.').length;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get parent domain name
|
|
312
|
+
*/
|
|
313
|
+
function getParentDomainName(domainName) {
|
|
314
|
+
const parts = domainName.split('.');
|
|
315
|
+
return parts.slice(1).join('.');
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/domain/core.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/index.d.ts
CHANGED
|
@@ -1,59 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
note: string;
|
|
17
|
-
allowSubdomain: boolean;
|
|
18
|
-
owner: string;
|
|
19
|
-
subdomains: DomainData[];
|
|
20
|
-
tags: Tag[];
|
|
21
|
-
}
|
|
22
|
-
interface OfficialExtendedInformation {
|
|
23
|
-
ip: string;
|
|
24
|
-
rsaKey: string;
|
|
25
|
-
authenticateds: any[];
|
|
26
|
-
latestDID: string;
|
|
27
|
-
}
|
|
28
|
-
class Domain implements DomainData {
|
|
29
|
-
id: string;
|
|
30
|
-
name: string;
|
|
31
|
-
did: string;
|
|
32
|
-
note: string;
|
|
33
|
-
allowSubdomain: boolean;
|
|
34
|
-
owner: string;
|
|
35
|
-
subdomains: DomainData[];
|
|
36
|
-
tags: Tag[];
|
|
37
|
-
constructor(id: string, name: string, did: string, note: string, allowSubdomain: boolean, owner: string, subdomains: Domain[], tags: Tag[]);
|
|
38
|
-
}
|
|
39
|
-
const syncById: (tokenId: string, contract: ethers.Contract) => Promise<Domain>;
|
|
40
|
-
const syncByName: (name: string, contract: ethers.Contract) => Promise<Domain | undefined>;
|
|
41
|
-
const syncByIndex: (index: number, contract: ethers.Contract) => Promise<Domain>;
|
|
42
|
-
const buildTree: (allDomains: Domain[]) => Domain[];
|
|
43
|
-
const findSubdomain: (domain: Domain, allDomains: Domain[]) => Domain[];
|
|
44
|
-
const findASubtree: (name: string, allDomains: Domain[]) => Domain | undefined;
|
|
45
|
-
const findSubtreesByOwner: (owner: string, allDomains: Domain[]) => Domain[];
|
|
46
|
-
const findSubtreesByDid: (did: string, allDomains: Domain[]) => Domain[];
|
|
47
|
-
const fetchAllTagType: (domain: Domain, contract: ethers.Contract) => Promise<Tag[]>;
|
|
48
|
-
const fetchTagStructure: (tag: Tag, contract: ethers.Contract) => Promise<import("../tag/tag").Tag>;
|
|
49
|
-
const fetchTagValue: (tag: Tag, contract: ethers.Contract) => Promise<any>;
|
|
50
|
-
const fetchAllTagValue: (domain: Domain, contract: ethers.Contract) => Promise<Tag[]>;
|
|
51
|
-
const defineTag: (domain: Domain | undefined, tagName: string, value: DIDTag.TagParserBase, contract: any, providerHolder: DIDTag.ABITypeProviderHolder) => Promise<void>;
|
|
52
|
-
const getAllSubdoamin: (domain: Domain) => Domain[];
|
|
53
|
-
const fetchOfficialExtendedInformation: (domain: Domain, contract: ethers.Contract) => Promise<OfficialExtendedInformation>;
|
|
54
|
-
const updateIp: (domain: Domain, ipStr: string, contract: ethers.Contract) => Promise<string>;
|
|
55
|
-
const updateRSAPublicKey: (domain: Domain, rsaPublicKey: string, contract: ethers.Contract) => Promise<string>;
|
|
56
|
-
const setValue: (tag: Tag, data: any, contract: ethers.Contract) => Promise<string>;
|
|
57
|
-
const setTagger: (tag: Tag, tagger: string, contract: ethers.Contract) => Promise<string>;
|
|
1
|
+
/**
|
|
2
|
+
* Domain fetching functions
|
|
3
|
+
*
|
|
4
|
+
* This module provides three main functions for fetching domain data:
|
|
5
|
+
* 1. fetchDomain - Fetch a single domain by name or tokenId
|
|
6
|
+
* 2. fetchDomains - Fetch multiple domains with pagination
|
|
7
|
+
* 3. fetchAllFlat - Fetch all domains with flat structure
|
|
8
|
+
*/
|
|
9
|
+
import { FlatDomainData, FetchAllOptions } from './types';
|
|
10
|
+
import type { DIDConsole } from '../index';
|
|
11
|
+
/**
|
|
12
|
+
* Options for fetchDomain
|
|
13
|
+
*/
|
|
14
|
+
export interface FetchDomainOptions {
|
|
15
|
+
queryContractAddress?: string;
|
|
58
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Options for fetchDomains (paginated query)
|
|
19
|
+
*/
|
|
20
|
+
export interface FetchDomainsOptions {
|
|
21
|
+
queryContractAddress?: string;
|
|
22
|
+
offset: number;
|
|
23
|
+
limit: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fetch a single domain by name or tokenId
|
|
27
|
+
*
|
|
28
|
+
* @param console - DIDConsole instance
|
|
29
|
+
* @param nameOrTokenId - Domain name (e.g., "alice.olares.com") or tokenId (hex string or bigint)
|
|
30
|
+
* @param options - Fetch options
|
|
31
|
+
* @returns Domain data or null if not found
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* // Fetch by domain name
|
|
35
|
+
* const domain = await fetchDomain(console, "alice.olares.com", { queryContractAddress });
|
|
36
|
+
*
|
|
37
|
+
* // Fetch by tokenId
|
|
38
|
+
* const domain = await fetchDomain(console, "0x123...", { queryContractAddress });
|
|
39
|
+
*/
|
|
40
|
+
export declare function fetchDomain(console: DIDConsole, nameOrTokenId: string | bigint, options?: FetchDomainOptions): Promise<FlatDomainData | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch multiple domains with pagination
|
|
43
|
+
* Allows you to fetch a specific range of domains with offset and limit
|
|
44
|
+
*
|
|
45
|
+
* @param console - DIDConsole instance
|
|
46
|
+
* @param options - Fetch options including offset and limit
|
|
47
|
+
* @returns Array of domains in the specified range
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Fetch first 10 domains
|
|
51
|
+
* const domains = await fetchDomains(console, {
|
|
52
|
+
* queryContractAddress: "0x...",
|
|
53
|
+
* offset: 0,
|
|
54
|
+
* limit: 10
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* // Fetch next 10 domains
|
|
58
|
+
* const nextDomains = await fetchDomains(console, {
|
|
59
|
+
* queryContractAddress: "0x...",
|
|
60
|
+
* offset: 10,
|
|
61
|
+
* limit: 10
|
|
62
|
+
* });
|
|
63
|
+
*/
|
|
64
|
+
export declare function fetchDomains(console: DIDConsole, options: FetchDomainsOptions): Promise<FlatDomainData[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Options for fetchDomainsByIndices
|
|
67
|
+
*/
|
|
68
|
+
export interface FetchDomainsByIndicesOptions {
|
|
69
|
+
queryContractAddress?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fetch multiple domains by their indices
|
|
73
|
+
* Useful for fetching specific domains when you know their positions
|
|
74
|
+
*
|
|
75
|
+
* @param console - DIDConsole instance
|
|
76
|
+
* @param indices - Array of domain indices (e.g., [5, 6, 9, 10])
|
|
77
|
+
* @param options - Fetch options
|
|
78
|
+
* @returns Array of domains corresponding to the specified indices
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* // Fetch domains at specific indices
|
|
82
|
+
* const domains = await fetchDomainsByIndices(console, [5, 6, 9, 10], {
|
|
83
|
+
* queryContractAddress: "0x..."
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* // Result will contain domains at positions 5, 6, 9, and 10
|
|
87
|
+
* // indices[0] -> domains[0], indices[1] -> domains[1], etc.
|
|
88
|
+
*/
|
|
89
|
+
export declare function fetchDomainsByIndices(console: DIDConsole, indices: number[], options?: FetchDomainsByIndicesOptions): Promise<FlatDomainData[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Fetch all domains with flat structure using query contract
|
|
92
|
+
* Much more efficient than the old fetchAll method
|
|
93
|
+
*
|
|
94
|
+
* @param console - DIDConsole instance
|
|
95
|
+
* @param options - Fetch options
|
|
96
|
+
* @returns Array of all domains in flat structure
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* const domains = await fetchAllFlat(console, {
|
|
100
|
+
* queryContractAddress: "0x...",
|
|
101
|
+
* batchSize: 100,
|
|
102
|
+
* onProgress: (current, total) => console.log(`${current}/${total}`)
|
|
103
|
+
* });
|
|
104
|
+
*/
|
|
105
|
+
export declare function fetchAllFlat(console: DIDConsole, options?: FetchAllOptions): Promise<FlatDomainData[]>;
|
|
59
106
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAChC,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,MAAM,GAAG,MAAM,EAC9B,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA+BhC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAwC3B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,4BAAiC,GACxC,OAAO,CAAC,cAAc,EAAE,CAAC,CAkD3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC,CAqC3B"}
|