@midnames/sdk 0.1.7 → 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.
- package/README.md +26 -94
- package/dist/core.d.ts +22 -5
- package/dist/core.js +191 -4
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -7
- package/dist/provider.d.ts +2 -3
- package/dist/provider.js +14 -19
- package/dist/react/DomainProfileWidget/index.d.ts +2 -0
- package/dist/react/DomainProfileWidget/index.js +1 -0
- package/dist/react/DomainProfileWidget.js +3 -3
- package/dist/react/HolographicCard/index.d.ts +3 -0
- package/dist/react/HolographicCard/index.js +2 -0
- package/dist/react/HolographicCard.d.ts +1 -1
- package/dist/react/HolographicCard.js +3 -3
- package/dist/utils/address.d.ts +1 -0
- package/dist/utils/address.js +3 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -0
- package/package.json +47 -50
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/info.d.ts +0 -5
- package/dist/info.js +0 -5
- package/dist/modules/core.d.ts +0 -8
- package/dist/modules/core.js +0 -80
- package/dist/modules/index.d.ts +0 -3
- package/dist/modules/index.js +0 -6
- package/dist/modules/info.d.ts +0 -20
- package/dist/modules/info.js +0 -152
- package/dist/utils.d.ts +0 -2
- package/dist/utils.js +0 -3
- package/exports.json +0 -7717
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midnames/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "SDK for Midnames - Midnight Name Service",
|
|
5
5
|
"keywords": ["midnight", "nameservice", "dns", "blockchain", "midnames", "widget", "domain", "resolver"],
|
|
6
6
|
"type": "module",
|
|
@@ -14,23 +14,11 @@
|
|
|
14
14
|
"require": "./dist/index.js",
|
|
15
15
|
"default": "./dist/index.js"
|
|
16
16
|
},
|
|
17
|
-
"./
|
|
18
|
-
"types": "./dist/
|
|
19
|
-
"import": "./dist/
|
|
20
|
-
"require": "./dist/
|
|
21
|
-
"default": "./dist/
|
|
22
|
-
},
|
|
23
|
-
"./info": {
|
|
24
|
-
"types": "./dist/info.d.ts",
|
|
25
|
-
"import": "./dist/info.js",
|
|
26
|
-
"require": "./dist/info.js",
|
|
27
|
-
"default": "./dist/info.js"
|
|
28
|
-
},
|
|
29
|
-
"./utils": {
|
|
30
|
-
"types": "./dist/utils.d.ts",
|
|
31
|
-
"import": "./dist/utils.js",
|
|
32
|
-
"require": "./dist/utils.js",
|
|
33
|
-
"default": "./dist/utils.js"
|
|
17
|
+
"./provider": {
|
|
18
|
+
"types": "./dist/provider.d.ts",
|
|
19
|
+
"import": "./dist/provider.js",
|
|
20
|
+
"require": "./dist/provider.js",
|
|
21
|
+
"default": "./dist/provider.js"
|
|
34
22
|
},
|
|
35
23
|
"./types": {
|
|
36
24
|
"types": "./dist/types.d.ts",
|
|
@@ -38,47 +26,53 @@
|
|
|
38
26
|
"require": "./dist/types.js",
|
|
39
27
|
"default": "./dist/types.js"
|
|
40
28
|
},
|
|
41
|
-
"./
|
|
42
|
-
"types": "./dist/
|
|
43
|
-
"import": "./dist/
|
|
44
|
-
"require": "./dist/
|
|
45
|
-
"default": "./dist/
|
|
29
|
+
"./utils": {
|
|
30
|
+
"types": "./dist/utils/index.d.ts",
|
|
31
|
+
"import": "./dist/utils/index.js",
|
|
32
|
+
"require": "./dist/utils/index.js",
|
|
33
|
+
"default": "./dist/utils/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./utils/domain": {
|
|
36
|
+
"types": "./dist/utils/domain.d.ts",
|
|
37
|
+
"import": "./dist/utils/domain.js",
|
|
38
|
+
"require": "./dist/utils/domain.js",
|
|
39
|
+
"default": "./dist/utils/domain.js"
|
|
40
|
+
},
|
|
41
|
+
"./utils/address": {
|
|
42
|
+
"types": "./dist/utils/address.d.ts",
|
|
43
|
+
"import": "./dist/utils/address.js",
|
|
44
|
+
"require": "./dist/utils/address.js",
|
|
45
|
+
"default": "./dist/utils/address.js"
|
|
46
|
+
},
|
|
47
|
+
"./react/DomainProfileWidget": {
|
|
48
|
+
"types": "./dist/react/DomainProfileWidget/index.d.ts",
|
|
49
|
+
"import": "./dist/react/DomainProfileWidget/index.js",
|
|
50
|
+
"require": "./dist/react/DomainProfileWidget/index.js",
|
|
51
|
+
"default": "./dist/react/DomainProfileWidget/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./react/HolographicCard": {
|
|
54
|
+
"types": "./dist/react/HolographicCard/index.d.ts",
|
|
55
|
+
"import": "./dist/react/HolographicCard/index.js",
|
|
56
|
+
"require": "./dist/react/HolographicCard/index.js",
|
|
57
|
+
"default": "./dist/react/HolographicCard/index.js"
|
|
46
58
|
},
|
|
47
59
|
"./styles.css": "./dist/styles.css",
|
|
48
60
|
"./holographic-card.css": "./dist/holographic-card.css"
|
|
49
61
|
},
|
|
50
62
|
"scripts": {
|
|
51
|
-
"build": "npx tsc -b && rm -rf dist && tsc -p tsconfig.json && cp src/styles.css dist/styles.css && cp src/holographic-card.css dist/holographic-card.css && cp -r managed dist/",
|
|
63
|
+
"build": "npx tsc -b && rm -rf dist && tsc -p tsconfig.json && cp src/styles.css dist/styles.css && cp src/holographic-card.css dist/holographic-card.css && cp -r managed dist/ && sed -i 's|../managed/|./managed/|g' dist/core.js",
|
|
52
64
|
"prepublish": "npm run --prefix .. copy-contract-keys-sdk && npm run build"
|
|
53
65
|
},
|
|
54
|
-
"dependencies": {
|
|
55
|
-
"@midnight-ntwrk/midnight-js-network-id": "^2.0.2",
|
|
56
|
-
"@midnight-ntwrk/midnight-js-indexer-public-data-provider": "^2.0.2"
|
|
57
|
-
},
|
|
58
66
|
"peerDependencies": {
|
|
59
|
-
"@midnight-ntwrk/midnight-js-types": "^2.0.2",
|
|
60
|
-
"@midnight-ntwrk/wallet-sdk-address-format": "^2.0.0",
|
|
61
|
-
"@midnight-ntwrk/ledger": "4.0.0",
|
|
62
|
-
"@midnight-ntwrk/zswap": "4.0.0"
|
|
63
|
-
},
|
|
64
|
-
"peerDependenciesMeta": {
|
|
65
|
-
"@midnight-ntwrk/midnight-js-types": {
|
|
66
|
-
"optional": false
|
|
67
|
-
},
|
|
68
|
-
"@midnight-ntwrk/wallet-sdk-address-format": {
|
|
69
|
-
"optional": true
|
|
70
|
-
},
|
|
71
|
-
"@midnight-ntwrk/ledger": {
|
|
72
|
-
"optional": true
|
|
73
|
-
},
|
|
74
|
-
"@midnight-ntwrk/zswap": {
|
|
75
|
-
"optional": true
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
"optionalDependencies": {
|
|
79
67
|
"react": ">=18",
|
|
80
68
|
"react-dom": ">=18",
|
|
81
|
-
"lucide-react": ">=0.400.0"
|
|
69
|
+
"lucide-react": ">=0.400.0",
|
|
70
|
+
"@midnight-ntwrk/midnight-js-types": "^2.0.2",
|
|
71
|
+
"@midnight-ntwrk/midnight-js-network-id": "^2.0.2",
|
|
72
|
+
"@midnight-ntwrk/midnight-js-contracts": "^2.0.2",
|
|
73
|
+
"@midnight-ntwrk/compact-runtime": "^0.8.1",
|
|
74
|
+
"@midnight-ntwrk/ledger": "^4.0.0",
|
|
75
|
+
"@midnight-ntwrk/wallet-sdk-address-format": "^2.0.0"
|
|
82
76
|
},
|
|
83
77
|
"repository": {
|
|
84
78
|
"type": "git",
|
|
@@ -90,5 +84,8 @@
|
|
|
90
84
|
"url": "https://github.com/midnames/sdk/issues"
|
|
91
85
|
},
|
|
92
86
|
"license": "MIT",
|
|
93
|
-
"author": "Midnames"
|
|
87
|
+
"author": "Midnames",
|
|
88
|
+
"dependencies": {
|
|
89
|
+
"@midnight-ntwrk/midnight-js-indexer-public-data-provider": "^2.0.2"
|
|
90
|
+
}
|
|
94
91
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/core.ts","./src/index.ts","./src/
|
|
1
|
+
{"root":["./src/core.ts","./src/index.ts","./src/provider.ts","./src/types.ts","./src/react/DomainProfileWidget.tsx","./src/react/HolographicCard.tsx","./src/react/index.ts","./src/react/DomainProfileWidget/index.ts","./src/react/HolographicCard/index.ts","./src/utils/address.ts","./src/utils/domain.ts","./src/utils/index.ts"],"version":"5.9.2"}
|
package/dist/info.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { getDomainInfo, getDomainInfoByResolving, getDomainFields, getNamespacedDomainFields, getDomainSettings, getDomainProfile, } from './modules/info.js';
|
|
2
|
-
export { setDefaultProvider, getDefaultProvider, setupDefaultProvider } from './provider.js';
|
|
3
|
-
export type { DomainInfo, DomainSettings, DomainProfileData, Result } from './types.js';
|
|
4
|
-
export { success, failure, isSuccess, isError, unwrap, unwrapOr } from './types.js';
|
|
5
|
-
export { MidNamesError, NetworkError, ContractNotFoundError, DomainNotFoundError, InvalidDomainError, ProviderError } from './types.js';
|
package/dist/info.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// Info module - domain info and profile functions
|
|
2
|
-
export { getDomainInfo, getDomainInfoByResolving, getDomainFields, getNamespacedDomainFields, getDomainSettings, getDomainProfile, } from './modules/info.js';
|
|
3
|
-
export { setDefaultProvider, getDefaultProvider, setupDefaultProvider } from './provider.js';
|
|
4
|
-
export { success, failure, isSuccess, isError, unwrap, unwrapOr } from './types.js';
|
|
5
|
-
export { MidNamesError, NetworkError, ContractNotFoundError, DomainNotFoundError, InvalidDomainError, ProviderError } from './types.js';
|
package/dist/modules/core.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PublicDataProvider } from '@midnight-ntwrk/midnight-js-types';
|
|
2
|
-
import type { Result } from '../types.js';
|
|
3
|
-
export declare const TESTNET_TLD_ADDRESS = "0200c46ddd9a7fe134e7126132bf48d573e3e70a06fc2b82edb2c9f31584536efa01";
|
|
4
|
-
export declare function getDefaultTldAddress(): string;
|
|
5
|
-
export declare function resolveDomain(domain: string, options?: {
|
|
6
|
-
provider?: PublicDataProvider;
|
|
7
|
-
tldAddress?: string;
|
|
8
|
-
}): Promise<Result<string>>;
|
package/dist/modules/core.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { getNetworkId, getZswapNetworkId, NetworkId } from '@midnight-ntwrk/midnight-js-network-id';
|
|
2
|
-
import { ShieldedCoinPublicKey } from '@midnight-ntwrk/wallet-sdk-address-format';
|
|
3
|
-
import { ledger } from '../../managed/index.js';
|
|
4
|
-
import { formatContractAddress } from '../utils/address.js';
|
|
5
|
-
import { normalizeDomain } from '../utils/domain.js';
|
|
6
|
-
import { success, failure, NetworkError, ContractNotFoundError, DomainNotFoundError, InvalidDomainError, ProviderError } from '../types.js';
|
|
7
|
-
import { getProviderOrThrow } from '../provider.js';
|
|
8
|
-
const TLD = 'night';
|
|
9
|
-
export const TESTNET_TLD_ADDRESS = '0200c46ddd9a7fe134e7126132bf48d573e3e70a06fc2b82edb2c9f31584536efa01';
|
|
10
|
-
export function getDefaultTldAddress() {
|
|
11
|
-
const currentNetwork = getNetworkId();
|
|
12
|
-
switch (currentNetwork) {
|
|
13
|
-
case NetworkId.TestNet:
|
|
14
|
-
return TESTNET_TLD_ADDRESS;
|
|
15
|
-
default:
|
|
16
|
-
throw new Error('Provide an address to use the resolver on a Standalone Network.');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function getTargetFromLedger(contractLedger) {
|
|
20
|
-
const target = contractLedger.DOMAIN_TARGET;
|
|
21
|
-
if (target.is_left) {
|
|
22
|
-
const coinPublicKey = new ShieldedCoinPublicKey(Buffer.from(target.left.bytes));
|
|
23
|
-
return ShieldedCoinPublicKey.codec.encode(getZswapNetworkId(), coinPublicKey).asString();
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
return formatContractAddress(target.right.bytes);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async function queryContractStateSafely(publicDataProvider, contractAddress) {
|
|
30
|
-
try {
|
|
31
|
-
const contractState = await publicDataProvider.queryContractState(contractAddress);
|
|
32
|
-
if (contractState == null) {
|
|
33
|
-
return failure(new ContractNotFoundError(contractAddress));
|
|
34
|
-
}
|
|
35
|
-
return success(contractState);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
return failure(new ProviderError(`Failed to query contract state: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export async function resolveDomain(domain, options = {}) {
|
|
42
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
43
|
-
const tldContractAddress = options.tldAddress || getDefaultTldAddress();
|
|
44
|
-
const fullDomain = normalizeDomain(domain);
|
|
45
|
-
try {
|
|
46
|
-
const domainParts = fullDomain.split('.');
|
|
47
|
-
if (domainParts[domainParts.length - 1] !== TLD) {
|
|
48
|
-
return failure(new InvalidDomainError(fullDomain, `Domain must end with .${TLD}`));
|
|
49
|
-
}
|
|
50
|
-
const parsedDomain = domainParts.slice(0, -1).reverse();
|
|
51
|
-
let currentResolver = tldContractAddress;
|
|
52
|
-
if (parsedDomain.length === 0) {
|
|
53
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, currentResolver);
|
|
54
|
-
if (!contractStateResult.success)
|
|
55
|
-
return failure(contractStateResult.error);
|
|
56
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
57
|
-
return success(getTargetFromLedger(contractLedger));
|
|
58
|
-
}
|
|
59
|
-
for (const part of parsedDomain) {
|
|
60
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, currentResolver);
|
|
61
|
-
if (!contractStateResult.success)
|
|
62
|
-
return failure(contractStateResult.error);
|
|
63
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
64
|
-
if (!contractLedger.domains.member(part)) {
|
|
65
|
-
return failure(new DomainNotFoundError(`${part} in ${fullDomain}`));
|
|
66
|
-
}
|
|
67
|
-
const domainData = contractLedger.domains.lookup(part);
|
|
68
|
-
const resolverBytes = domainData.resolver.bytes;
|
|
69
|
-
currentResolver = formatContractAddress(resolverBytes);
|
|
70
|
-
}
|
|
71
|
-
const finalContractStateResult = await queryContractStateSafely(publicDataProvider, currentResolver);
|
|
72
|
-
if (!finalContractStateResult.success)
|
|
73
|
-
return failure(finalContractStateResult.error);
|
|
74
|
-
const finalLedger = ledger(finalContractStateResult.data.data);
|
|
75
|
-
return success(getTargetFromLedger(finalLedger));
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
return failure(new NetworkError(`Failed to resolve domain: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
79
|
-
}
|
|
80
|
-
}
|
package/dist/modules/index.d.ts
DELETED
package/dist/modules/index.js
DELETED
package/dist/modules/info.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { PublicDataProvider } from '@midnight-ntwrk/midnight-js-types';
|
|
2
|
-
import type { DomainInfo, DomainSettings, DomainProfileData, Result } from '../types.js';
|
|
3
|
-
export declare function getDomainInfo(contractAddress: string, domainName: string, options?: {
|
|
4
|
-
provider?: PublicDataProvider;
|
|
5
|
-
}): Promise<Result<DomainInfo>>;
|
|
6
|
-
export declare function getDomainInfoByResolving(fullDomain: string, options?: {
|
|
7
|
-
provider?: PublicDataProvider;
|
|
8
|
-
}): Promise<Result<DomainInfo>>;
|
|
9
|
-
export declare function getDomainFields(contractAddress: string, options?: {
|
|
10
|
-
provider?: PublicDataProvider;
|
|
11
|
-
}): Promise<Result<Array<[string, string]>>>;
|
|
12
|
-
export declare function getNamespacedDomainFields(_parentContractAddress: string, fullDomainName: string, options?: {
|
|
13
|
-
provider?: PublicDataProvider;
|
|
14
|
-
}): Promise<Result<Array<[string, string]>>>;
|
|
15
|
-
export declare function getDomainSettings(contractAddress: string, options?: {
|
|
16
|
-
provider?: PublicDataProvider;
|
|
17
|
-
}): Promise<Result<DomainSettings>>;
|
|
18
|
-
export declare function getDomainProfile(fullDomain: string, options?: {
|
|
19
|
-
provider?: PublicDataProvider;
|
|
20
|
-
}): Promise<Result<DomainProfileData>>;
|
package/dist/modules/info.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { getZswapNetworkId } from '@midnight-ntwrk/midnight-js-network-id';
|
|
2
|
-
import { ShieldedCoinPublicKey } from '@midnight-ntwrk/wallet-sdk-address-format';
|
|
3
|
-
import { ledger } from '../../managed/index.js';
|
|
4
|
-
import { formatContractAddress } from '../utils/address.js';
|
|
5
|
-
import { normalizeDomain, parseFullDomain } from '../utils/domain.js';
|
|
6
|
-
import { success, failure, NetworkError, ContractNotFoundError, DomainNotFoundError, InvalidDomainError, ProviderError } from '../types.js';
|
|
7
|
-
import { getProviderOrThrow } from '../provider.js';
|
|
8
|
-
import { resolveDomain, getDefaultTldAddress } from './core.js';
|
|
9
|
-
async function queryContractStateSafely(publicDataProvider, contractAddress) {
|
|
10
|
-
try {
|
|
11
|
-
const contractState = await publicDataProvider.queryContractState(contractAddress);
|
|
12
|
-
if (contractState == null) {
|
|
13
|
-
return failure(new ContractNotFoundError(contractAddress));
|
|
14
|
-
}
|
|
15
|
-
return success(contractState);
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return failure(new ProviderError(`Failed to query contract state: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
async function getResolverAddress(publicDataProvider, fullDomain) {
|
|
22
|
-
try {
|
|
23
|
-
const tldAddress = getDefaultTldAddress();
|
|
24
|
-
const domainParts = fullDomain.split('.');
|
|
25
|
-
const traversalParts = domainParts.slice(0, -1).reverse();
|
|
26
|
-
if (traversalParts.length === 0)
|
|
27
|
-
return success(tldAddress);
|
|
28
|
-
let currentResolver = tldAddress;
|
|
29
|
-
for (const part of traversalParts) {
|
|
30
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, currentResolver);
|
|
31
|
-
if (!contractStateResult.success) {
|
|
32
|
-
return failure(contractStateResult.error);
|
|
33
|
-
}
|
|
34
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
35
|
-
if (!contractLedger.domains.member(part)) {
|
|
36
|
-
return failure(new DomainNotFoundError(`${part} in ${currentResolver}`));
|
|
37
|
-
}
|
|
38
|
-
const domainData = contractLedger.domains.lookup(part);
|
|
39
|
-
const resolverBytes = domainData.resolver.bytes;
|
|
40
|
-
currentResolver = formatContractAddress(resolverBytes);
|
|
41
|
-
}
|
|
42
|
-
return success(currentResolver);
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
return failure(new NetworkError(`Failed to get resolver address: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export async function getDomainInfo(contractAddress, domainName, options = {}) {
|
|
49
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
50
|
-
try {
|
|
51
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, contractAddress);
|
|
52
|
-
if (!contractStateResult.success)
|
|
53
|
-
return failure(contractStateResult.error);
|
|
54
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
55
|
-
if (!contractLedger.domains.member(domainName)) {
|
|
56
|
-
return failure(new DomainNotFoundError(domainName));
|
|
57
|
-
}
|
|
58
|
-
const domainData = contractLedger.domains.lookup(domainName);
|
|
59
|
-
const ownerCoinPublicKey = new ShieldedCoinPublicKey(Buffer.from(domainData.owner.bytes));
|
|
60
|
-
const ownerAddress = ShieldedCoinPublicKey.codec.encode(getZswapNetworkId(), ownerCoinPublicKey).asString();
|
|
61
|
-
return success({ owner: ownerAddress, resolver: formatContractAddress(domainData.resolver.bytes) });
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
return failure(new NetworkError(`Failed to get domain info: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
export async function getDomainInfoByResolving(fullDomain, options = {}) {
|
|
68
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
69
|
-
try {
|
|
70
|
-
const normalizedDomain = normalizeDomain(fullDomain);
|
|
71
|
-
const parsed = parseFullDomain(normalizedDomain);
|
|
72
|
-
if (!parsed.isValid) {
|
|
73
|
-
return failure(new InvalidDomainError(fullDomain, 'Invalid domain format'));
|
|
74
|
-
}
|
|
75
|
-
const parentContractAddressResult = await getResolverAddress(publicDataProvider, parsed.parentDomainPath);
|
|
76
|
-
if (!parentContractAddressResult.success)
|
|
77
|
-
return failure(parentContractAddressResult.error);
|
|
78
|
-
const infoResult = await getDomainInfo(parentContractAddressResult.data, parsed.domainName, { provider: publicDataProvider });
|
|
79
|
-
if (!infoResult.success)
|
|
80
|
-
return failure(infoResult.error);
|
|
81
|
-
return success({ ...infoResult.data, contractAddress: parentContractAddressResult.data });
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
return failure(new NetworkError(`Failed to get domain info by resolving: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export async function getDomainFields(contractAddress, options = {}) {
|
|
88
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
89
|
-
try {
|
|
90
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, contractAddress);
|
|
91
|
-
if (!contractStateResult.success)
|
|
92
|
-
return failure(contractStateResult.error);
|
|
93
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
94
|
-
const fields = [];
|
|
95
|
-
for (const [key, value] of contractLedger.fields)
|
|
96
|
-
fields.push([key, value]);
|
|
97
|
-
return success(fields);
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
return failure(new NetworkError(`Failed to get domain fields: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export async function getNamespacedDomainFields(_parentContractAddress, fullDomainName, options = {}) {
|
|
104
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
105
|
-
try {
|
|
106
|
-
const domainContractAddressResult = await getResolverAddress(publicDataProvider, fullDomainName);
|
|
107
|
-
if (!domainContractAddressResult.success)
|
|
108
|
-
return failure(domainContractAddressResult.error);
|
|
109
|
-
return await getDomainFields(domainContractAddressResult.data, { provider: publicDataProvider });
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
return failure(new NetworkError(`Failed to get namespaced domain fields: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export async function getDomainSettings(contractAddress, options = {}) {
|
|
116
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
117
|
-
try {
|
|
118
|
-
const contractStateResult = await queryContractStateSafely(publicDataProvider, contractAddress);
|
|
119
|
-
if (!contractStateResult.success)
|
|
120
|
-
return failure(contractStateResult.error);
|
|
121
|
-
const contractLedger = ledger(contractStateResult.data.data);
|
|
122
|
-
return success({ coinColor: contractLedger.COIN_COLOR, domainCost: contractLedger.DOMAIN_COST });
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
return failure(new NetworkError(`Failed to get domain settings: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export async function getDomainProfile(fullDomain, options = {}) {
|
|
129
|
-
const publicDataProvider = getProviderOrThrow(options.provider);
|
|
130
|
-
try {
|
|
131
|
-
const normalized = normalizeDomain(fullDomain);
|
|
132
|
-
const [resolvedTargetResult, infoResult] = await Promise.all([
|
|
133
|
-
resolveDomain(normalized, { provider: publicDataProvider }),
|
|
134
|
-
getDomainInfoByResolving(normalized, { provider: publicDataProvider })
|
|
135
|
-
]);
|
|
136
|
-
const resolvedTarget = resolvedTargetResult.success ? resolvedTargetResult.data : null;
|
|
137
|
-
const info = infoResult.success ? infoResult.data : null;
|
|
138
|
-
if (info && info.contractAddress) {
|
|
139
|
-
const [fieldsResult, settingsResult] = await Promise.all([
|
|
140
|
-
getNamespacedDomainFields(info.contractAddress, normalized, { provider: publicDataProvider }),
|
|
141
|
-
getDomainSettings(info.resolver, { provider: publicDataProvider })
|
|
142
|
-
]);
|
|
143
|
-
const fields = fieldsResult.success ? fieldsResult.data : [];
|
|
144
|
-
const settings = settingsResult.success ? settingsResult.data : null;
|
|
145
|
-
return success({ fullDomain: normalized, resolvedTarget, info, fields, settings });
|
|
146
|
-
}
|
|
147
|
-
return success({ fullDomain: normalized, resolvedTarget, info, fields: [], settings: null });
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
return failure(new NetworkError(`Failed to get domain profile: ${error instanceof Error ? error.message : String(error)}`, error));
|
|
151
|
-
}
|
|
152
|
-
}
|
package/dist/utils.d.ts
DELETED
package/dist/utils.js
DELETED