@xyo-network/domain-payload-plugin 2.87.0 → 2.87.2
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/node/{index.mjs → index.cjs} +50 -22
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +21 -49
- package/dist/node/index.js.map +1 -1
- package/package.json +18 -18
- package/dist/node/index.mjs.map +0 -1
|
@@ -1,8 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
2
6
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/index.ts
|
|
22
|
+
var src_exports = {};
|
|
23
|
+
__export(src_exports, {
|
|
24
|
+
DomainPayloadPlugin: () => DomainPayloadPlugin,
|
|
25
|
+
DomainPayloadWrapper: () => DomainPayloadWrapper,
|
|
26
|
+
DomainSchema: () => DomainSchema,
|
|
27
|
+
default: () => DomainPayloadPlugin,
|
|
28
|
+
domainConfigTemplate: () => domainConfigTemplate
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(src_exports);
|
|
3
31
|
|
|
4
32
|
// src/Plugin.ts
|
|
5
|
-
|
|
33
|
+
var import_payload_plugin = require("@xyo-network/payload-plugin");
|
|
6
34
|
|
|
7
35
|
// src/Schema.ts
|
|
8
36
|
var DomainSchema = "network.xyo.domain";
|
|
@@ -34,28 +62,28 @@ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
|
|
|
34
62
|
}), "domainConfigTemplate");
|
|
35
63
|
|
|
36
64
|
// src/Wrapper.ts
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
65
|
+
var import_axios = require("@xylabs/axios");
|
|
66
|
+
var import_lodash = require("@xylabs/lodash");
|
|
67
|
+
var import_platform = require("@xylabs/platform");
|
|
68
|
+
var import_dns = require("@xyo-network/dns");
|
|
69
|
+
var import_hash = require("@xyo-network/hash");
|
|
70
|
+
var import_huri = require("@xyo-network/huri");
|
|
71
|
+
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
72
|
+
var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
|
|
45
73
|
aliases;
|
|
46
74
|
static async discover(reverseDomainName, proxy) {
|
|
47
75
|
const parts = reverseDomainName.split(".");
|
|
48
76
|
for (let i = 2; i <= parts.length; i++) {
|
|
49
|
-
const domainToCheck = reverse(parts.filter((_, index) => index < i)).join(".");
|
|
77
|
+
const domainToCheck = (0, import_lodash.reverse)(parts.filter((_, index) => index < i)).join(".");
|
|
50
78
|
return await this.discoverDNSEntry(domainToCheck) ?? await this.discoverRootFile(domainToCheck, proxy);
|
|
51
79
|
}
|
|
52
80
|
}
|
|
53
81
|
static async discoverDNSEntry(domain) {
|
|
54
82
|
var _a, _b, _c;
|
|
55
83
|
try {
|
|
56
|
-
const hash = (_c = (_b = (_a = await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT)) == null ? void 0 : _a.Answer) == null ? void 0 : _b[0]) == null ? void 0 : _c.data;
|
|
84
|
+
const hash = (_c = (_b = (_a = await (0, import_dns.domainResolve)(`_xyo.${domain}`, import_dns.DnsRecordType.TXT)) == null ? void 0 : _a.Answer) == null ? void 0 : _b[0]) == null ? void 0 : _c.data;
|
|
57
85
|
if (hash) {
|
|
58
|
-
const huri = new Huri(hash);
|
|
86
|
+
const huri = new import_huri.Huri(hash);
|
|
59
87
|
const payload = await huri.fetch();
|
|
60
88
|
if (payload) {
|
|
61
89
|
return new _DomainPayloadWrapper(payload);
|
|
@@ -66,11 +94,11 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
66
94
|
}
|
|
67
95
|
}
|
|
68
96
|
static async discoverRootFile(domain, proxy) {
|
|
69
|
-
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
97
|
+
return (0, import_platform.isBrowser)() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
70
98
|
}
|
|
71
99
|
static async discoverRootFileDirect(domain) {
|
|
72
100
|
try {
|
|
73
|
-
const config = (await axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
101
|
+
const config = (await import_axios.axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
74
102
|
return new _DomainPayloadWrapper(config);
|
|
75
103
|
} catch {
|
|
76
104
|
console.log(`DomainConfig root file not found [${domain}]`);
|
|
@@ -79,7 +107,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
79
107
|
static async discoverRootFileWithProxy(domain, proxy = "https://api.archivist.xyo.network/domain") {
|
|
80
108
|
try {
|
|
81
109
|
const requestUrl = `${proxy}/${domain.split(".").reverse().join(".")}`;
|
|
82
|
-
const config = (await axios.get(requestUrl)).data.data;
|
|
110
|
+
const config = (await import_axios.axios.get(requestUrl)).data.data;
|
|
83
111
|
return new _DomainPayloadWrapper(config);
|
|
84
112
|
} catch (ex) {
|
|
85
113
|
const error = ex;
|
|
@@ -102,7 +130,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
102
130
|
}
|
|
103
131
|
}
|
|
104
132
|
async fetchAlias(alias, huriOptions) {
|
|
105
|
-
const huri = new Huri(alias.huri, huriOptions);
|
|
133
|
+
const huri = new import_huri.Huri(alias.huri, huriOptions);
|
|
106
134
|
const payload = await huri.fetch();
|
|
107
135
|
return payload ? {
|
|
108
136
|
alias,
|
|
@@ -116,23 +144,23 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
|
116
144
|
}
|
|
117
145
|
async getNetwork(hash) {
|
|
118
146
|
var _a;
|
|
119
|
-
return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
|
|
147
|
+
return hash ? await import_hash.PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
|
|
120
148
|
}
|
|
121
149
|
};
|
|
122
150
|
__name(_DomainPayloadWrapper, "DomainPayloadWrapper");
|
|
123
151
|
var DomainPayloadWrapper = _DomainPayloadWrapper;
|
|
124
152
|
|
|
125
153
|
// src/Plugin.ts
|
|
126
|
-
var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
|
|
154
|
+
var DomainPayloadPlugin = /* @__PURE__ */ __name(() => (0, import_payload_plugin.createPayloadPlugin)({
|
|
127
155
|
schema: DomainSchema,
|
|
128
156
|
template: domainConfigTemplate,
|
|
129
157
|
wrap: (payload) => DomainPayloadWrapper.wrap(payload)
|
|
130
158
|
}), "DomainPayloadPlugin");
|
|
131
|
-
export
|
|
159
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
160
|
+
0 && (module.exports = {
|
|
132
161
|
DomainPayloadPlugin,
|
|
133
162
|
DomainPayloadWrapper,
|
|
134
163
|
DomainSchema,
|
|
135
|
-
DomainPayloadPlugin as default,
|
|
136
164
|
domainConfigTemplate
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=index.
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Schema.ts","../../src/Template.ts","../../src/Wrapper.ts"],"sourcesContent":["export * from './Payload'\nexport { DomainPayloadPlugin as default, DomainPayloadPlugin } from './Plugin'\nexport * from './Schema'\nexport * from './Template'\nexport * from './Wrapper'\n","import { Payload } from '@xyo-network/payload-model'\nimport { createPayloadPlugin } from '@xyo-network/payload-plugin'\n\nimport { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\nimport { domainConfigTemplate } from './Template'\nimport { DomainPayloadWrapper } from './Wrapper'\n\nexport const DomainPayloadPlugin = () =>\n createPayloadPlugin<DomainPayload>({\n schema: DomainSchema,\n template: domainConfigTemplate,\n wrap: (payload: Payload) => DomainPayloadWrapper.wrap(payload as DomainPayload),\n })\n","export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n","import { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\n\nexport const domainConfigTemplate = (): DomainPayload => ({\n aliases: {\n 'com.example.id': {\n huri: '',\n },\n },\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, AxiosError } from '@xylabs/axios'\nimport { reverse } from '@xylabs/lodash'\nimport { isBrowser } from '@xylabs/platform'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { Alias, DomainPayload } from './Payload'\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 = reverse(parts.filter((_, index) => index < i)).join('.')\n return (await this.discoverDNSEntry(domainToCheck)) ?? (await this.discoverRootFile(domainToCheck, proxy))\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 (hash) {\n const huri = new Huri(hash)\n const payload = (await huri.fetch()) as DomainPayload\n if (payload) {\n return new DomainPayloadWrapper(payload)\n }\n }\n } catch {\n console.log(`DomainConfig dns reading error entry not found [${domain}]`)\n }\n }\n\n static async discoverRootFile(domain: string, proxy?: string) {\n return isBrowser() || 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?: string) {\n await this.fetchAliases(networkSlug)\n }\n\n async fetchAliases(networkSlug?: string) {\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 ? { alias, huri, payload: payload } : null\n }\n\n private async findArchivistUri(hash?: string): 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?: string): Promise<NetworkPayload | undefined> {\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0]\n }\n}\n"],"mappings":"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","names":["DomainSchema","domainConfigTemplate","aliases","huri","networks","name","nodes","schema","slug","type","uri","DomainSchema","DomainPayloadWrapper","PayloadWrapper","aliases","discover","reverseDomainName","proxy","parts","split","i","length","domainToCheck","reverse","filter","_","index","join","discoverDNSEntry","discoverRootFile","domain","hash","domainResolve","DnsRecordType","TXT","Answer","data","huri","Huri","payload","fetch","console","log","isBrowser","discoverRootFileWithProxy","discoverRootFileDirect","config","axios","get","requestUrl","ex","error","code","networkSlug","fetchAliases","archivistUri","findArchivistUri","fetchedAliases","Promise","all","Object","entries","map","alias","fetchAlias","Boolean","huriOptions","getNetwork","nodes","find","type","undefined","uri","PayloadHasher","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,36 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/index.ts
|
|
22
|
-
var src_exports = {};
|
|
23
|
-
__export(src_exports, {
|
|
24
|
-
DomainPayloadPlugin: () => DomainPayloadPlugin,
|
|
25
|
-
DomainPayloadWrapper: () => DomainPayloadWrapper,
|
|
26
|
-
DomainSchema: () => DomainSchema,
|
|
27
|
-
default: () => DomainPayloadPlugin,
|
|
28
|
-
domainConfigTemplate: () => domainConfigTemplate
|
|
29
|
-
});
|
|
30
|
-
module.exports = __toCommonJS(src_exports);
|
|
31
3
|
|
|
32
4
|
// src/Plugin.ts
|
|
33
|
-
|
|
5
|
+
import { createPayloadPlugin } from "@xyo-network/payload-plugin";
|
|
34
6
|
|
|
35
7
|
// src/Schema.ts
|
|
36
8
|
var DomainSchema = "network.xyo.domain";
|
|
@@ -62,28 +34,28 @@ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
|
|
|
62
34
|
}), "domainConfigTemplate");
|
|
63
35
|
|
|
64
36
|
// src/Wrapper.ts
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _DomainPayloadWrapper = class _DomainPayloadWrapper extends
|
|
37
|
+
import { axios } from "@xylabs/axios";
|
|
38
|
+
import { reverse } from "@xylabs/lodash";
|
|
39
|
+
import { isBrowser } from "@xylabs/platform";
|
|
40
|
+
import { DnsRecordType, domainResolve } from "@xyo-network/dns";
|
|
41
|
+
import { PayloadHasher } from "@xyo-network/hash";
|
|
42
|
+
import { Huri } from "@xyo-network/huri";
|
|
43
|
+
import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
44
|
+
var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
73
45
|
aliases;
|
|
74
46
|
static async discover(reverseDomainName, proxy) {
|
|
75
47
|
const parts = reverseDomainName.split(".");
|
|
76
48
|
for (let i = 2; i <= parts.length; i++) {
|
|
77
|
-
const domainToCheck =
|
|
49
|
+
const domainToCheck = reverse(parts.filter((_, index) => index < i)).join(".");
|
|
78
50
|
return await this.discoverDNSEntry(domainToCheck) ?? await this.discoverRootFile(domainToCheck, proxy);
|
|
79
51
|
}
|
|
80
52
|
}
|
|
81
53
|
static async discoverDNSEntry(domain) {
|
|
82
54
|
var _a, _b, _c;
|
|
83
55
|
try {
|
|
84
|
-
const hash = (_c = (_b = (_a = await
|
|
56
|
+
const hash = (_c = (_b = (_a = await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT)) == null ? void 0 : _a.Answer) == null ? void 0 : _b[0]) == null ? void 0 : _c.data;
|
|
85
57
|
if (hash) {
|
|
86
|
-
const huri = new
|
|
58
|
+
const huri = new Huri(hash);
|
|
87
59
|
const payload = await huri.fetch();
|
|
88
60
|
if (payload) {
|
|
89
61
|
return new _DomainPayloadWrapper(payload);
|
|
@@ -94,11 +66,11 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_w
|
|
|
94
66
|
}
|
|
95
67
|
}
|
|
96
68
|
static async discoverRootFile(domain, proxy) {
|
|
97
|
-
return
|
|
69
|
+
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
98
70
|
}
|
|
99
71
|
static async discoverRootFileDirect(domain) {
|
|
100
72
|
try {
|
|
101
|
-
const config = (await
|
|
73
|
+
const config = (await axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
102
74
|
return new _DomainPayloadWrapper(config);
|
|
103
75
|
} catch {
|
|
104
76
|
console.log(`DomainConfig root file not found [${domain}]`);
|
|
@@ -107,7 +79,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_w
|
|
|
107
79
|
static async discoverRootFileWithProxy(domain, proxy = "https://api.archivist.xyo.network/domain") {
|
|
108
80
|
try {
|
|
109
81
|
const requestUrl = `${proxy}/${domain.split(".").reverse().join(".")}`;
|
|
110
|
-
const config = (await
|
|
82
|
+
const config = (await axios.get(requestUrl)).data.data;
|
|
111
83
|
return new _DomainPayloadWrapper(config);
|
|
112
84
|
} catch (ex) {
|
|
113
85
|
const error = ex;
|
|
@@ -130,7 +102,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_w
|
|
|
130
102
|
}
|
|
131
103
|
}
|
|
132
104
|
async fetchAlias(alias, huriOptions) {
|
|
133
|
-
const huri = new
|
|
105
|
+
const huri = new Huri(alias.huri, huriOptions);
|
|
134
106
|
const payload = await huri.fetch();
|
|
135
107
|
return payload ? {
|
|
136
108
|
alias,
|
|
@@ -144,23 +116,23 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_w
|
|
|
144
116
|
}
|
|
145
117
|
async getNetwork(hash) {
|
|
146
118
|
var _a;
|
|
147
|
-
return hash ? await
|
|
119
|
+
return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
|
|
148
120
|
}
|
|
149
121
|
};
|
|
150
122
|
__name(_DomainPayloadWrapper, "DomainPayloadWrapper");
|
|
151
123
|
var DomainPayloadWrapper = _DomainPayloadWrapper;
|
|
152
124
|
|
|
153
125
|
// src/Plugin.ts
|
|
154
|
-
var DomainPayloadPlugin = /* @__PURE__ */ __name(() =>
|
|
126
|
+
var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
|
|
155
127
|
schema: DomainSchema,
|
|
156
128
|
template: domainConfigTemplate,
|
|
157
129
|
wrap: (payload) => DomainPayloadWrapper.wrap(payload)
|
|
158
130
|
}), "DomainPayloadPlugin");
|
|
159
|
-
|
|
160
|
-
0 && (module.exports = {
|
|
131
|
+
export {
|
|
161
132
|
DomainPayloadPlugin,
|
|
162
133
|
DomainPayloadWrapper,
|
|
163
134
|
DomainSchema,
|
|
135
|
+
DomainPayloadPlugin as default,
|
|
164
136
|
domainConfigTemplate
|
|
165
|
-
}
|
|
137
|
+
};
|
|
166
138
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/
|
|
1
|
+
{"version":3,"sources":["../../src/Plugin.ts","../../src/Schema.ts","../../src/Template.ts","../../src/Wrapper.ts"],"sourcesContent":["import { Payload } from '@xyo-network/payload-model'\nimport { createPayloadPlugin } from '@xyo-network/payload-plugin'\n\nimport { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\nimport { domainConfigTemplate } from './Template'\nimport { DomainPayloadWrapper } from './Wrapper'\n\nexport const DomainPayloadPlugin = () =>\n createPayloadPlugin<DomainPayload>({\n schema: DomainSchema,\n template: domainConfigTemplate,\n wrap: (payload: Payload) => DomainPayloadWrapper.wrap(payload as DomainPayload),\n })\n","export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n","import { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\n\nexport const domainConfigTemplate = (): DomainPayload => ({\n aliases: {\n 'com.example.id': {\n huri: '',\n },\n },\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, AxiosError } from '@xylabs/axios'\nimport { reverse } from '@xylabs/lodash'\nimport { isBrowser } from '@xylabs/platform'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { Alias, DomainPayload } from './Payload'\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 = reverse(parts.filter((_, index) => index < i)).join('.')\n return (await this.discoverDNSEntry(domainToCheck)) ?? (await this.discoverRootFile(domainToCheck, proxy))\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 (hash) {\n const huri = new Huri(hash)\n const payload = (await huri.fetch()) as DomainPayload\n if (payload) {\n return new DomainPayloadWrapper(payload)\n }\n }\n } catch {\n console.log(`DomainConfig dns reading error entry not found [${domain}]`)\n }\n }\n\n static async discoverRootFile(domain: string, proxy?: string) {\n return isBrowser() || 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?: string) {\n await this.fetchAliases(networkSlug)\n }\n\n async fetchAliases(networkSlug?: string) {\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 ? { alias, huri, payload: payload } : null\n }\n\n private async findArchivistUri(hash?: string): 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?: string): Promise<NetworkPayload | undefined> {\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0]\n }\n}\n"],"mappings":"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","names":["createPayloadPlugin","DomainSchema","domainConfigTemplate","aliases","huri","networks","name","nodes","schema","slug","type","uri","DomainSchema","axios","reverse","isBrowser","DnsRecordType","domainResolve","PayloadHasher","Huri","PayloadWrapper","DomainPayloadWrapper","PayloadWrapper","aliases","discover","reverseDomainName","proxy","parts","split","i","length","domainToCheck","reverse","filter","_","index","join","discoverDNSEntry","discoverRootFile","domain","hash","domainResolve","DnsRecordType","TXT","Answer","data","huri","Huri","payload","fetch","console","log","isBrowser","discoverRootFileWithProxy","discoverRootFileDirect","config","axios","get","requestUrl","ex","error","code","networkSlug","fetchAliases","archivistUri","findArchivistUri","fetchedAliases","Promise","all","Object","entries","map","alias","fetchAlias","Boolean","huriOptions","getNetwork","nodes","find","type","undefined","uri","PayloadHasher","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
|
package/package.json
CHANGED
|
@@ -13,22 +13,21 @@
|
|
|
13
13
|
"@xylabs/axios": "^2.13.23",
|
|
14
14
|
"@xylabs/lodash": "^2.13.23",
|
|
15
15
|
"@xylabs/platform": "^2.13.23",
|
|
16
|
-
"@xyo-network/api-models": "~2.87.
|
|
17
|
-
"@xyo-network/dns": "~2.87.
|
|
18
|
-
"@xyo-network/hash": "~2.87.
|
|
19
|
-
"@xyo-network/huri": "~2.87.
|
|
20
|
-
"@xyo-network/network": "~2.87.
|
|
21
|
-
"@xyo-network/payload-model": "~2.87.
|
|
22
|
-
"@xyo-network/payload-plugin": "~2.87.
|
|
23
|
-
"@xyo-network/payload-wrapper": "~2.87.
|
|
16
|
+
"@xyo-network/api-models": "~2.87.2",
|
|
17
|
+
"@xyo-network/dns": "~2.87.2",
|
|
18
|
+
"@xyo-network/hash": "~2.87.2",
|
|
19
|
+
"@xyo-network/huri": "~2.87.2",
|
|
20
|
+
"@xyo-network/network": "~2.87.2",
|
|
21
|
+
"@xyo-network/payload-model": "~2.87.2",
|
|
22
|
+
"@xyo-network/payload-plugin": "~2.87.2",
|
|
23
|
+
"@xyo-network/payload-wrapper": "~2.87.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@xylabs/ts-scripts-yarn3": "^3.2.
|
|
27
|
-
"@xylabs/tsconfig": "^3.2.
|
|
26
|
+
"@xylabs/ts-scripts-yarn3": "^3.2.41",
|
|
27
|
+
"@xylabs/tsconfig": "^3.2.41",
|
|
28
28
|
"typescript": "^5.3.3"
|
|
29
29
|
},
|
|
30
30
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
31
|
-
"docs": "dist/docs.json",
|
|
32
31
|
"exports": {
|
|
33
32
|
".": {
|
|
34
33
|
"browser": {
|
|
@@ -43,19 +42,20 @@
|
|
|
43
42
|
},
|
|
44
43
|
"node": {
|
|
45
44
|
"require": {
|
|
46
|
-
"types": "./dist/node/index.d.
|
|
47
|
-
"default": "./dist/node/index.
|
|
45
|
+
"types": "./dist/node/index.d.cts",
|
|
46
|
+
"default": "./dist/node/index.cjs"
|
|
48
47
|
},
|
|
49
48
|
"import": {
|
|
50
49
|
"types": "./dist/node/index.d.mts",
|
|
51
|
-
"default": "./dist/node/index.
|
|
50
|
+
"default": "./dist/node/index.js"
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
},
|
|
55
54
|
"./package.json": "./package.json"
|
|
56
55
|
},
|
|
57
|
-
"main": "dist/node/index.
|
|
58
|
-
"module": "dist/node/index.
|
|
56
|
+
"main": "dist/node/index.cjs",
|
|
57
|
+
"module": "dist/node/index.js",
|
|
58
|
+
"types": "dist/node/index.d.ts",
|
|
59
59
|
"homepage": "https://xyo.network",
|
|
60
60
|
"license": "LGPL-3.0-only",
|
|
61
61
|
"publishConfig": {
|
|
@@ -66,6 +66,6 @@
|
|
|
66
66
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
67
67
|
},
|
|
68
68
|
"sideEffects": false,
|
|
69
|
-
"
|
|
70
|
-
"
|
|
69
|
+
"version": "2.87.2",
|
|
70
|
+
"type": "module"
|
|
71
71
|
}
|
package/dist/node/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Plugin.ts","../../src/Schema.ts","../../src/Template.ts","../../src/Wrapper.ts"],"sourcesContent":["import { Payload } from '@xyo-network/payload-model'\nimport { createPayloadPlugin } from '@xyo-network/payload-plugin'\n\nimport { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\nimport { domainConfigTemplate } from './Template'\nimport { DomainPayloadWrapper } from './Wrapper'\n\nexport const DomainPayloadPlugin = () =>\n createPayloadPlugin<DomainPayload>({\n schema: DomainSchema,\n template: domainConfigTemplate,\n wrap: (payload: Payload) => DomainPayloadWrapper.wrap(payload as DomainPayload),\n })\n","export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n","import { DomainPayload } from './Payload'\nimport { DomainSchema } from './Schema'\n\nexport const domainConfigTemplate = (): DomainPayload => ({\n aliases: {\n 'com.example.id': {\n huri: '',\n },\n },\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, AxiosError } from '@xylabs/axios'\nimport { reverse } from '@xylabs/lodash'\nimport { isBrowser } from '@xylabs/platform'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { Alias, DomainPayload } from './Payload'\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 = reverse(parts.filter((_, index) => index < i)).join('.')\n return (await this.discoverDNSEntry(domainToCheck)) ?? (await this.discoverRootFile(domainToCheck, proxy))\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 (hash) {\n const huri = new Huri(hash)\n const payload = (await huri.fetch()) as DomainPayload\n if (payload) {\n return new DomainPayloadWrapper(payload)\n }\n }\n } catch {\n console.log(`DomainConfig dns reading error entry not found [${domain}]`)\n }\n }\n\n static async discoverRootFile(domain: string, proxy?: string) {\n return isBrowser() || 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?: string) {\n await this.fetchAliases(networkSlug)\n }\n\n async fetchAliases(networkSlug?: string) {\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 ? { alias, huri, payload: payload } : null\n }\n\n private async findArchivistUri(hash?: string): 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?: string): Promise<NetworkPayload | undefined> {\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0]\n }\n}\n"],"mappings":"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","names":["createPayloadPlugin","DomainSchema","domainConfigTemplate","aliases","huri","networks","name","nodes","schema","slug","type","uri","DomainSchema","axios","reverse","isBrowser","DnsRecordType","domainResolve","PayloadHasher","Huri","PayloadWrapper","DomainPayloadWrapper","PayloadWrapper","aliases","discover","reverseDomainName","proxy","parts","split","i","length","domainToCheck","reverse","filter","_","index","join","discoverDNSEntry","discoverRootFile","domain","hash","domainResolve","DnsRecordType","TXT","Answer","data","huri","Huri","payload","fetch","console","log","isBrowser","discoverRootFileWithProxy","discoverRootFileDirect","config","axios","get","requestUrl","ex","error","code","networkSlug","fetchAliases","archivistUri","findArchivistUri","fetchedAliases","Promise","all","Object","entries","map","alias","fetchAlias","Boolean","huriOptions","getNetwork","nodes","find","type","undefined","uri","PayloadHasher","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
|