@xyo-network/domain-payload-plugin 3.18.3 → 3.18.5
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/dist/neutral/index.mjs +16 -7
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/types/Payload.d.ts +3 -2
- package/dist/types/Payload.d.ts.map +1 -1
- package/dist/types/Wrapper.d.ts +2 -2
- package/dist/types/Wrapper.d.ts.map +1 -1
- package/package.json +15 -14
- package/src/Payload.ts +4 -2
- package/src/Wrapper.ts +10 -7
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
import {
|
|
1
|
+
// src/Payload.ts
|
|
2
|
+
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
3
3
|
|
|
4
4
|
// src/Schema.ts
|
|
5
5
|
var DomainSchema = "network.xyo.domain";
|
|
6
6
|
|
|
7
|
+
// src/Payload.ts
|
|
8
|
+
var isDomainPayload = isPayloadOfSchemaType(DomainSchema);
|
|
9
|
+
|
|
10
|
+
// src/Plugin.ts
|
|
11
|
+
import { createPayloadPlugin } from "@xyo-network/payload-plugin";
|
|
12
|
+
|
|
7
13
|
// src/Template.ts
|
|
8
14
|
var domainConfigTemplate = () => ({
|
|
9
15
|
aliases: { "com.example.id": { huri: "" } },
|
|
@@ -29,7 +35,9 @@ var domainConfigTemplate = () => ({
|
|
|
29
35
|
// src/Wrapper.ts
|
|
30
36
|
import { axios } from "@xylabs/axios";
|
|
31
37
|
import { Base } from "@xylabs/base";
|
|
38
|
+
import { isHash } from "@xylabs/hex";
|
|
32
39
|
import { isBrowser } from "@xylabs/platform";
|
|
40
|
+
import { isString } from "@xylabs/typeof";
|
|
33
41
|
import { DnsRecordType, domainResolve } from "@xyo-network/dns";
|
|
34
42
|
import { Huri } from "@xyo-network/huri";
|
|
35
43
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
@@ -49,10 +57,10 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
49
57
|
static async discoverDNSEntry(domain) {
|
|
50
58
|
try {
|
|
51
59
|
const hash = (await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT))?.Answer?.[0]?.data;
|
|
52
|
-
if (hash) {
|
|
60
|
+
if (isHash(hash)) {
|
|
53
61
|
const huri = new Huri(hash);
|
|
54
62
|
const payload = await huri.fetch();
|
|
55
|
-
if (payload) {
|
|
63
|
+
if (isDomainPayload(payload)) {
|
|
56
64
|
return new _DomainPayloadWrapper(payload);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
@@ -61,7 +69,7 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
61
69
|
}
|
|
62
70
|
}
|
|
63
71
|
static async discoverRootFile(domain, proxy) {
|
|
64
|
-
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
72
|
+
return isBrowser() || isString(proxy) ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
65
73
|
}
|
|
66
74
|
static async discoverRootFileDirect(domain) {
|
|
67
75
|
try {
|
|
@@ -109,7 +117,7 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
109
117
|
return (await this.getNetwork(hash))?.nodes?.find((payload) => payload.type === "archivist" ? payload : void 0)?.uri;
|
|
110
118
|
}
|
|
111
119
|
async getNetwork(hash) {
|
|
112
|
-
return hash ? await PayloadBuilder.findByDataHash(this.payload.networks, hash) : this.payload.networks?.[0];
|
|
120
|
+
return isHash(hash) ? await PayloadBuilder.findByDataHash(this.payload.networks, hash) : this.payload.networks?.[0];
|
|
113
121
|
}
|
|
114
122
|
};
|
|
115
123
|
|
|
@@ -124,6 +132,7 @@ export {
|
|
|
124
132
|
DomainPayloadWrapper,
|
|
125
133
|
DomainSchema,
|
|
126
134
|
DomainPayloadPlugin as default,
|
|
127
|
-
domainConfigTemplate
|
|
135
|
+
domainConfigTemplate,
|
|
136
|
+
isDomainPayload
|
|
128
137
|
};
|
|
129
138
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/
|
|
1
|
+
{"version":3,"sources":["../../src/Payload.ts","../../src/Schema.ts","../../src/Plugin.ts","../../src/Template.ts","../../src/Wrapper.ts"],"sourcesContent":["import type { NetworkPayload } from '@xyo-network/network'\nimport { isPayloadOfSchemaType, type Payload } from '@xyo-network/payload-model'\n\nimport { DomainSchema } from './Schema.ts'\n\nexport interface Alias {\n /** @field huri to the aliased payload */\n huri: string\n /** @field canonical name (ex. network.xyo.example) */\n name?: string\n}\n\nexport type DomainPayload = Payload<{\n /** @field Additional config files [huri] [out] */\n additional?: string[]\n /** @field Values associated with this domain [out] */\n aliases?: Record<string, Alias>\n /** @field Known networks [out] */\n networks?: NetworkPayload[]\n}, DomainSchema>\n\nexport const isDomainPayload = isPayloadOfSchemaType<DomainPayload>(DomainSchema)\n","export const DomainSchema = 'network.xyo.domain' as const\nexport type DomainSchema = typeof DomainSchema\n","import type { Payload } from '@xyo-network/payload-model'\nimport { createPayloadPlugin } from '@xyo-network/payload-plugin'\n\nimport type { DomainPayload } from './Payload.ts'\nimport { DomainSchema } from './Schema.ts'\nimport { domainConfigTemplate } from './Template.ts'\nimport { DomainPayloadWrapper } from './Wrapper.ts'\n\nexport const DomainPayloadPlugin = () =>\n createPayloadPlugin<DomainPayload>({\n schema: DomainSchema,\n template: domainConfigTemplate,\n wrap: (payload: Payload) => DomainPayloadWrapper.wrap(payload as DomainPayload),\n })\n","import type { DomainPayload } from './Payload.ts'\nimport { DomainSchema } from './Schema.ts'\n\nexport const domainConfigTemplate = (): DomainPayload => ({\n aliases: { 'com.example.id': { huri: '' } },\n networks: [\n {\n name: '',\n nodes: [\n {\n name: '',\n schema: 'network.xyo.network.node',\n slug: '',\n type: 'archivist',\n uri: '',\n },\n ],\n schema: 'network.xyo.network',\n slug: '',\n },\n ],\n schema: DomainSchema,\n})\n","import { axios } from '@xylabs/axios'\nimport { Base } from '@xylabs/base'\nimport { type Hash, isHash } from '@xylabs/hex'\nimport { isBrowser } from '@xylabs/platform'\nimport { isString } from '@xylabs/typeof'\nimport type { ApiEnvelope } from '@xyo-network/api-models'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\nimport type { FetchedPayload, HuriOptions } from '@xyo-network/huri'\nimport { Huri } from '@xyo-network/huri'\nimport type { NetworkPayload } from '@xyo-network/network'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport type { AxiosError } from 'axios'\n\nimport {\n type Alias, type DomainPayload, isDomainPayload,\n} from './Payload.ts'\n\nexport interface FetchedAlias extends FetchedPayload {\n alias: Alias\n}\n\nexport class DomainPayloadWrapper<T extends DomainPayload = DomainPayload> extends PayloadWrapper<T> {\n aliases?: FetchedAlias[] | null\n\n static async discover(reverseDomainName: string, proxy?: string) {\n const parts = reverseDomainName.split('.')\n for (let i = 2; i <= parts.length; i++) {\n const domainToCheck = parts.filter((_, index) => index < i).reverse().join('.')\n const result = (await this.discoverDNSEntry(domainToCheck)) ?? (await this.discoverRootFile(domainToCheck, proxy))\n if (result) {\n return result\n }\n }\n }\n\n static async discoverDNSEntry(domain: string) {\n try {\n const hash = (await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT))?.Answer?.[0]?.data\n if (isHash(hash)) {\n const huri = new Huri(hash)\n const payload = (await huri.fetch())\n if (isDomainPayload(payload)) {\n return new DomainPayloadWrapper(payload)\n }\n }\n } catch {\n Base.defaultLogger?.log(`DomainConfig dns reading error entry not found [${domain}]`)\n }\n }\n\n static async discoverRootFile(domain: string, proxy?: string) {\n return isBrowser() || isString(proxy) ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain)\n }\n\n static async discoverRootFileDirect(domain: string) {\n try {\n const config = (await axios.get<DomainPayload>(`https://${domain}/xyo-config.json`)).data\n return new DomainPayloadWrapper(config)\n } catch {\n console.log(`DomainConfig root file not found [${domain}]`)\n }\n }\n\n static async discoverRootFileWithProxy(domain: string, proxy = 'https://api.archivist.xyo.network/domain') {\n try {\n const requestUrl = `${proxy}/${domain.split('.').reverse().join('.')}`\n const config = (await axios.get<ApiEnvelope<DomainPayload>>(requestUrl)).data.data\n return new DomainPayloadWrapper(config)\n } catch (ex) {\n const error = ex as AxiosError\n console.log(`DomainConfig root file not found using proxy [${domain}] [${error.code}]`)\n }\n }\n\n async fetch(networkSlug?: Hash) {\n await this.fetchAliases(networkSlug)\n }\n\n async fetchAliases(networkSlug?: Hash) {\n // set it to null to signify fetch ran\n this.aliases = null\n\n const archivistUri = await this.findArchivistUri(networkSlug)\n if (this.payload.aliases) {\n const fetchedAliases = await Promise.all(\n Object.entries(this.payload.aliases ?? {}).map(([, alias]) => {\n return this.fetchAlias(alias, { archivistUri })\n }),\n )\n // cast to FetchedPayload[] after we filter out any null/undefined entries\n this.aliases = fetchedAliases.filter(Boolean) as FetchedAlias[]\n }\n }\n\n private async fetchAlias(alias: Alias, huriOptions?: HuriOptions): Promise<FetchedAlias | null> {\n const huri = new Huri(alias.huri, huriOptions)\n const payload = await huri.fetch()\n return payload\n ? {\n alias, huri, payload: payload,\n }\n : null\n }\n\n private async findArchivistUri(hash?: Hash): Promise<string | undefined> {\n return (await this.getNetwork(hash))?.nodes?.find(payload => (payload.type === 'archivist' ? payload : undefined))?.uri\n }\n\n private async getNetwork(hash?: Hash): Promise<NetworkPayload | undefined> {\n return isHash(hash) ? await PayloadBuilder.findByDataHash(this.payload.networks, hash) : this.payload.networks?.[0]\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/types/Payload.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NetworkPayload } from '@xyo-network/network';
|
|
2
|
-
import type
|
|
3
|
-
import
|
|
2
|
+
import { type Payload } from '@xyo-network/payload-model';
|
|
3
|
+
import { DomainSchema } from './Schema.ts';
|
|
4
4
|
export interface Alias {
|
|
5
5
|
/** @field huri to the aliased payload */
|
|
6
6
|
huri: string;
|
|
@@ -15,4 +15,5 @@ export type DomainPayload = Payload<{
|
|
|
15
15
|
/** @field Known networks [out] */
|
|
16
16
|
networks?: NetworkPayload[];
|
|
17
17
|
}, DomainSchema>;
|
|
18
|
+
export declare const isDomainPayload: (x?: unknown | null) => x is DomainPayload;
|
|
18
19
|
//# sourceMappingURL=Payload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,KAAK;IACpB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;IAClC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAC5B,EAAE,YAAY,CAAC,CAAA;AAEhB,eAAO,MAAM,eAAe,4CAAqD,CAAA"}
|
package/dist/types/Wrapper.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Hash } from '@xylabs/hex';
|
|
2
2
|
import type { FetchedPayload } from '@xyo-network/huri';
|
|
3
3
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
4
|
-
import type
|
|
4
|
+
import { type Alias, type DomainPayload } from './Payload.ts';
|
|
5
5
|
export interface FetchedAlias extends FetchedPayload {
|
|
6
6
|
alias: Alias;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAU,MAAM,aAAa,CAAA;AAK/C,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAA;AAIpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EACL,KAAK,KAAK,EAAE,KAAK,aAAa,EAC/B,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;WAWlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI;IAIxB,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;YAgBvB,UAAU;YAUV,gBAAgB;YAIhB,UAAU;CAGzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/domain-payload-plugin",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.5",
|
|
4
4
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -29,23 +29,24 @@
|
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/types/index.d.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@xylabs/axios": "^4.11.
|
|
33
|
-
"@xylabs/base": "^4.11.
|
|
34
|
-
"@xylabs/hex": "^4.11.
|
|
35
|
-
"@xylabs/platform": "^4.11.
|
|
36
|
-
"@
|
|
37
|
-
"@xyo-network/
|
|
38
|
-
"@xyo-network/
|
|
39
|
-
"@xyo-network/
|
|
40
|
-
"@xyo-network/payload-
|
|
41
|
-
"@xyo-network/payload-
|
|
42
|
-
"@xyo-network/payload-
|
|
32
|
+
"@xylabs/axios": "^4.11.16",
|
|
33
|
+
"@xylabs/base": "^4.11.16",
|
|
34
|
+
"@xylabs/hex": "^4.11.16",
|
|
35
|
+
"@xylabs/platform": "^4.11.16",
|
|
36
|
+
"@xylabs/typeof": "^4.11.16",
|
|
37
|
+
"@xyo-network/dns": "^3.18.5",
|
|
38
|
+
"@xyo-network/huri": "^3.18.5",
|
|
39
|
+
"@xyo-network/network": "^3.18.5",
|
|
40
|
+
"@xyo-network/payload-builder": "^3.18.5",
|
|
41
|
+
"@xyo-network/payload-model": "^3.18.5",
|
|
42
|
+
"@xyo-network/payload-plugin": "^3.18.5",
|
|
43
|
+
"@xyo-network/payload-wrapper": "^3.18.5"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@xylabs/ts-scripts-yarn3": "^6.5.8",
|
|
46
47
|
"@xylabs/tsconfig": "^6.5.8",
|
|
47
|
-
"@xylabs/vitest-extended": "^4.11.
|
|
48
|
-
"@xyo-network/api-models": "^3.18.
|
|
48
|
+
"@xylabs/vitest-extended": "^4.11.16",
|
|
49
|
+
"@xyo-network/api-models": "^3.18.5",
|
|
49
50
|
"axios": "^1.9.0",
|
|
50
51
|
"typescript": "^5.8.3",
|
|
51
52
|
"vitest": "^3.2.2"
|
package/src/Payload.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NetworkPayload } from '@xyo-network/network'
|
|
2
|
-
import type
|
|
2
|
+
import { isPayloadOfSchemaType, type Payload } from '@xyo-network/payload-model'
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import { DomainSchema } from './Schema.ts'
|
|
5
5
|
|
|
6
6
|
export interface Alias {
|
|
7
7
|
/** @field huri to the aliased payload */
|
|
@@ -18,3 +18,5 @@ export type DomainPayload = Payload<{
|
|
|
18
18
|
/** @field Known networks [out] */
|
|
19
19
|
networks?: NetworkPayload[]
|
|
20
20
|
}, DomainSchema>
|
|
21
|
+
|
|
22
|
+
export const isDomainPayload = isPayloadOfSchemaType<DomainPayload>(DomainSchema)
|
package/src/Wrapper.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { axios } from '@xylabs/axios'
|
|
2
2
|
import { Base } from '@xylabs/base'
|
|
3
|
-
import type
|
|
3
|
+
import { type Hash, isHash } from '@xylabs/hex'
|
|
4
4
|
import { isBrowser } from '@xylabs/platform'
|
|
5
|
+
import { isString } from '@xylabs/typeof'
|
|
5
6
|
import type { ApiEnvelope } from '@xyo-network/api-models'
|
|
6
7
|
import { DnsRecordType, domainResolve } from '@xyo-network/dns'
|
|
7
8
|
import type { FetchedPayload, HuriOptions } from '@xyo-network/huri'
|
|
@@ -11,7 +12,9 @@ import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
|
11
12
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
12
13
|
import type { AxiosError } from 'axios'
|
|
13
14
|
|
|
14
|
-
import
|
|
15
|
+
import {
|
|
16
|
+
type Alias, type DomainPayload, isDomainPayload,
|
|
17
|
+
} from './Payload.ts'
|
|
15
18
|
|
|
16
19
|
export interface FetchedAlias extends FetchedPayload {
|
|
17
20
|
alias: Alias
|
|
@@ -34,10 +37,10 @@ export class DomainPayloadWrapper<T extends DomainPayload = DomainPayload> exten
|
|
|
34
37
|
static async discoverDNSEntry(domain: string) {
|
|
35
38
|
try {
|
|
36
39
|
const hash = (await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT))?.Answer?.[0]?.data
|
|
37
|
-
if (hash) {
|
|
40
|
+
if (isHash(hash)) {
|
|
38
41
|
const huri = new Huri(hash)
|
|
39
|
-
const payload = (await huri.fetch())
|
|
40
|
-
if (payload) {
|
|
42
|
+
const payload = (await huri.fetch())
|
|
43
|
+
if (isDomainPayload(payload)) {
|
|
41
44
|
return new DomainPayloadWrapper(payload)
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -47,7 +50,7 @@ export class DomainPayloadWrapper<T extends DomainPayload = DomainPayload> exten
|
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
static async discoverRootFile(domain: string, proxy?: string) {
|
|
50
|
-
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain)
|
|
53
|
+
return isBrowser() || isString(proxy) ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain)
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
static async discoverRootFileDirect(domain: string) {
|
|
@@ -105,6 +108,6 @@ export class DomainPayloadWrapper<T extends DomainPayload = DomainPayload> exten
|
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
private async getNetwork(hash?: Hash): Promise<NetworkPayload | undefined> {
|
|
108
|
-
return hash ? await PayloadBuilder.findByDataHash(this.payload.networks, hash) : this.payload.networks?.[0]
|
|
111
|
+
return isHash(hash) ? await PayloadBuilder.findByDataHash(this.payload.networks, hash) : this.payload.networks?.[0]
|
|
109
112
|
}
|
|
110
113
|
}
|