@xyo-network/domain-payload-plugin 2.75.15 → 2.75.17
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/docs.json +87 -87
- package/package.json +13 -13
- package/dist/browser/Payload.cjs +0 -19
- package/dist/browser/Payload.cjs.map +0 -1
- package/dist/browser/Payload.js +0 -1
- package/dist/browser/Payload.js.map +0 -1
- package/dist/browser/Plugin.cjs +0 -142
- package/dist/browser/Plugin.cjs.map +0 -1
- package/dist/browser/Plugin.js +0 -121
- package/dist/browser/Plugin.js.map +0 -1
- package/dist/browser/Schema.cjs +0 -27
- package/dist/browser/Schema.cjs.map +0 -1
- package/dist/browser/Schema.js +0 -6
- package/dist/browser/Schema.js.map +0 -1
- package/dist/browser/Template.cjs +0 -55
- package/dist/browser/Template.cjs.map +0 -1
- package/dist/browser/Template.js +0 -32
- package/dist/browser/Template.js.map +0 -1
- package/dist/browser/Wrapper.cjs +0 -103
- package/dist/browser/Wrapper.cjs.map +0 -1
- package/dist/browser/Wrapper.js +0 -82
- package/dist/browser/Wrapper.js.map +0 -1
- package/dist/browser/schemadef.cjs +0 -122
- package/dist/browser/schemadef.cjs.map +0 -1
- package/dist/browser/schemadef.js +0 -130
- package/dist/browser/schemadef.js.map +0 -1
- package/dist/node/Payload.js +0 -19
- package/dist/node/Payload.js.map +0 -1
- package/dist/node/Payload.mjs +0 -1
- package/dist/node/Payload.mjs.map +0 -1
- package/dist/node/Plugin.js +0 -149
- package/dist/node/Plugin.js.map +0 -1
- package/dist/node/Plugin.mjs +0 -124
- package/dist/node/Plugin.mjs.map +0 -1
- package/dist/node/Schema.js +0 -31
- package/dist/node/Schema.js.map +0 -1
- package/dist/node/Schema.mjs +0 -6
- package/dist/node/Schema.mjs.map +0 -1
- package/dist/node/Template.js +0 -59
- package/dist/node/Template.js.map +0 -1
- package/dist/node/Template.mjs +0 -32
- package/dist/node/Template.mjs.map +0 -1
- package/dist/node/Wrapper.js +0 -110
- package/dist/node/Wrapper.js.map +0 -1
- package/dist/node/Wrapper.mjs +0 -85
- package/dist/node/Wrapper.mjs.map +0 -1
- package/dist/node/schemadef.js +0 -130
- package/dist/node/schemadef.js.map +0 -1
- package/dist/node/schemadef.mjs +0 -130
- package/dist/node/schemadef.mjs.map +0 -1
package/dist/node/Plugin.mjs
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
// src/Plugin.ts
|
|
2
|
-
import { createPayloadPlugin } from "@xyo-network/payload-plugin";
|
|
3
|
-
|
|
4
|
-
// src/Schema.ts
|
|
5
|
-
var DomainSchema = "network.xyo.domain";
|
|
6
|
-
|
|
7
|
-
// src/Template.ts
|
|
8
|
-
var domainConfigTemplate = () => ({
|
|
9
|
-
aliases: {
|
|
10
|
-
"com.example.id": {
|
|
11
|
-
huri: ""
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
networks: [
|
|
15
|
-
{
|
|
16
|
-
name: "",
|
|
17
|
-
nodes: [
|
|
18
|
-
{
|
|
19
|
-
name: "",
|
|
20
|
-
schema: "network.xyo.network.node",
|
|
21
|
-
slug: "",
|
|
22
|
-
type: "archivist",
|
|
23
|
-
uri: ""
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
schema: "network.xyo.network",
|
|
27
|
-
slug: ""
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
schema: DomainSchema
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// src/Wrapper.ts
|
|
34
|
-
import { reverse } from "@xylabs/lodash";
|
|
35
|
-
import { axios } from "@xyo-network/axios";
|
|
36
|
-
import { isBrowser, PayloadHasher } from "@xyo-network/core";
|
|
37
|
-
import { DnsRecordType, domainResolve } from "@xyo-network/dns";
|
|
38
|
-
import { Huri } from "@xyo-network/huri";
|
|
39
|
-
import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
40
|
-
var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
41
|
-
aliases;
|
|
42
|
-
static async discover(reverseDomainName, proxy) {
|
|
43
|
-
const parts = reverseDomainName.split(".");
|
|
44
|
-
for (let i = 2; i <= parts.length; i++) {
|
|
45
|
-
const domainToCheck = reverse(parts.filter((_, index) => index < i)).join(".");
|
|
46
|
-
return await this.discoverDNSEntry(domainToCheck) ?? await this.discoverRootFile(domainToCheck, proxy);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
static async discoverDNSEntry(domain) {
|
|
50
|
-
var _a, _b, _c;
|
|
51
|
-
try {
|
|
52
|
-
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;
|
|
53
|
-
if (hash) {
|
|
54
|
-
const huri = new Huri(hash);
|
|
55
|
-
const payload = await huri.fetch();
|
|
56
|
-
if (payload) {
|
|
57
|
-
return new _DomainPayloadWrapper(payload);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
} catch (ex) {
|
|
61
|
-
console.log(`DomainConfig dns reading error entry not found [${domain}]`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
static async discoverRootFile(domain, proxy) {
|
|
65
|
-
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
66
|
-
}
|
|
67
|
-
static async discoverRootFileDirect(domain) {
|
|
68
|
-
try {
|
|
69
|
-
const config = (await axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
70
|
-
return new _DomainPayloadWrapper(config);
|
|
71
|
-
} catch (ex) {
|
|
72
|
-
console.log(`DomainConfig root file not found [${domain}]`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
static async discoverRootFileWithProxy(domain, proxy = "https://api.archivist.xyo.network/domain") {
|
|
76
|
-
try {
|
|
77
|
-
const requestUrl = `${proxy}/${domain.split(".").reverse().join(".")}`;
|
|
78
|
-
const config = (await axios.get(requestUrl)).data.data;
|
|
79
|
-
return new _DomainPayloadWrapper(config);
|
|
80
|
-
} catch (ex) {
|
|
81
|
-
const error = ex;
|
|
82
|
-
console.log(`DomainConfig root file not found using proxy [${domain}] [${error.code}]`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
async fetch(networkSlug) {
|
|
86
|
-
await this.fetchAliases(networkSlug);
|
|
87
|
-
}
|
|
88
|
-
async fetchAliases(networkSlug) {
|
|
89
|
-
this.aliases = null;
|
|
90
|
-
const archivistUri = await this.findArchivistUri(networkSlug);
|
|
91
|
-
if (this.payload().aliases) {
|
|
92
|
-
const fetchedAliases = await Promise.all(
|
|
93
|
-
Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
|
|
94
|
-
return this.fetchAlias(alias, { archivistUri });
|
|
95
|
-
})
|
|
96
|
-
);
|
|
97
|
-
this.aliases = fetchedAliases.filter((alias) => alias);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async fetchAlias(alias, huriOptions) {
|
|
101
|
-
const huri = new Huri(alias.huri, huriOptions);
|
|
102
|
-
const payload = await huri.fetch();
|
|
103
|
-
return payload ? { alias, huri, payload } : null;
|
|
104
|
-
}
|
|
105
|
-
async findArchivistUri(hash) {
|
|
106
|
-
var _a, _b, _c;
|
|
107
|
-
return (_c = (_b = (_a = await this.getNetwork(hash)) == null ? void 0 : _a.nodes) == null ? void 0 : _b.find((payload) => payload.type === "archivist" ? payload : void 0)) == null ? void 0 : _c.uri;
|
|
108
|
-
}
|
|
109
|
-
async getNetwork(hash) {
|
|
110
|
-
var _a;
|
|
111
|
-
return hash ? await PayloadHasher.find(this.payload().networks, hash) : (_a = this.payload().networks) == null ? void 0 : _a[0];
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
// src/Plugin.ts
|
|
116
|
-
var DomainPayloadPlugin = () => createPayloadPlugin({
|
|
117
|
-
schema: DomainSchema,
|
|
118
|
-
template: domainConfigTemplate,
|
|
119
|
-
wrap: (payload) => DomainPayloadWrapper.wrap(payload)
|
|
120
|
-
});
|
|
121
|
-
export {
|
|
122
|
-
DomainPayloadPlugin
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=Plugin.mjs.map
|
package/dist/node/Plugin.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 { reverse } from '@xylabs/lodash'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { axios, AxiosError } from '@xyo-network/axios'\nimport { isBrowser, PayloadHasher } from '@xyo-network/core'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\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 (ex) {\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 (ex) {\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((alias) => alias) 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 return hash ? await PayloadHasher.find(this.payload().networks, hash) : this.payload().networks?.[0]\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/node/Schema.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Schema.ts
|
|
21
|
-
var Schema_exports = {};
|
|
22
|
-
__export(Schema_exports, {
|
|
23
|
-
DomainSchema: () => DomainSchema
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Schema_exports);
|
|
26
|
-
var DomainSchema = "network.xyo.domain";
|
|
27
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
-
0 && (module.exports = {
|
|
29
|
-
DomainSchema
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=Schema.js.map
|
package/dist/node/Schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Schema.ts"],"sourcesContent":["export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,eAA6B;","names":[]}
|
package/dist/node/Schema.mjs
DELETED
package/dist/node/Schema.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Schema.ts"],"sourcesContent":["export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n"],"mappings":";AACO,IAAM,eAA6B;","names":[]}
|
package/dist/node/Template.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Template.ts
|
|
21
|
-
var Template_exports = {};
|
|
22
|
-
__export(Template_exports, {
|
|
23
|
-
domainConfigTemplate: () => domainConfigTemplate
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Template_exports);
|
|
26
|
-
|
|
27
|
-
// src/Schema.ts
|
|
28
|
-
var DomainSchema = "network.xyo.domain";
|
|
29
|
-
|
|
30
|
-
// src/Template.ts
|
|
31
|
-
var domainConfigTemplate = () => ({
|
|
32
|
-
aliases: {
|
|
33
|
-
"com.example.id": {
|
|
34
|
-
huri: ""
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
networks: [
|
|
38
|
-
{
|
|
39
|
-
name: "",
|
|
40
|
-
nodes: [
|
|
41
|
-
{
|
|
42
|
-
name: "",
|
|
43
|
-
schema: "network.xyo.network.node",
|
|
44
|
-
slug: "",
|
|
45
|
-
type: "archivist",
|
|
46
|
-
uri: ""
|
|
47
|
-
}
|
|
48
|
-
],
|
|
49
|
-
schema: "network.xyo.network",
|
|
50
|
-
slug: ""
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
schema: DomainSchema
|
|
54
|
-
});
|
|
55
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
-
0 && (module.exports = {
|
|
57
|
-
domainConfigTemplate
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=Template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Template.ts","../../src/Schema.ts"],"sourcesContent":["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","export type DomainSchema = 'network.xyo.domain'\nexport const DomainSchema: DomainSchema = 'network.xyo.domain'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCO,IAAM,eAA6B;;;ADEnC,IAAM,uBAAuB,OAAsB;AAAA,EACxD,SAAS;AAAA,IACP,kBAAkB;AAAA,MAChB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,QAAQ;AACV;","names":[]}
|
package/dist/node/Template.mjs
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// src/Schema.ts
|
|
2
|
-
var DomainSchema = "network.xyo.domain";
|
|
3
|
-
|
|
4
|
-
// src/Template.ts
|
|
5
|
-
var domainConfigTemplate = () => ({
|
|
6
|
-
aliases: {
|
|
7
|
-
"com.example.id": {
|
|
8
|
-
huri: ""
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
networks: [
|
|
12
|
-
{
|
|
13
|
-
name: "",
|
|
14
|
-
nodes: [
|
|
15
|
-
{
|
|
16
|
-
name: "",
|
|
17
|
-
schema: "network.xyo.network.node",
|
|
18
|
-
slug: "",
|
|
19
|
-
type: "archivist",
|
|
20
|
-
uri: ""
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
schema: "network.xyo.network",
|
|
24
|
-
slug: ""
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
schema: DomainSchema
|
|
28
|
-
});
|
|
29
|
-
export {
|
|
30
|
-
domainConfigTemplate
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=Template.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Schema.ts","../../src/Template.ts"],"sourcesContent":["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"],"mappings":";AACO,IAAM,eAA6B;;;ACEnC,IAAM,uBAAuB,OAAsB;AAAA,EACxD,SAAS;AAAA,IACP,kBAAkB;AAAA,MAChB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,QAAQ;AACV;","names":[]}
|
package/dist/node/Wrapper.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Wrapper.ts
|
|
21
|
-
var Wrapper_exports = {};
|
|
22
|
-
__export(Wrapper_exports, {
|
|
23
|
-
DomainPayloadWrapper: () => DomainPayloadWrapper
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Wrapper_exports);
|
|
26
|
-
var import_lodash = require("@xylabs/lodash");
|
|
27
|
-
var import_axios = require("@xyo-network/axios");
|
|
28
|
-
var import_core = require("@xyo-network/core");
|
|
29
|
-
var import_dns = require("@xyo-network/dns");
|
|
30
|
-
var import_huri = require("@xyo-network/huri");
|
|
31
|
-
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
32
|
-
var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
|
|
33
|
-
aliases;
|
|
34
|
-
static async discover(reverseDomainName, proxy) {
|
|
35
|
-
const parts = reverseDomainName.split(".");
|
|
36
|
-
for (let i = 2; i <= parts.length; i++) {
|
|
37
|
-
const domainToCheck = (0, import_lodash.reverse)(parts.filter((_, index) => index < i)).join(".");
|
|
38
|
-
return await this.discoverDNSEntry(domainToCheck) ?? await this.discoverRootFile(domainToCheck, proxy);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
static async discoverDNSEntry(domain) {
|
|
42
|
-
var _a, _b, _c;
|
|
43
|
-
try {
|
|
44
|
-
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;
|
|
45
|
-
if (hash) {
|
|
46
|
-
const huri = new import_huri.Huri(hash);
|
|
47
|
-
const payload = await huri.fetch();
|
|
48
|
-
if (payload) {
|
|
49
|
-
return new _DomainPayloadWrapper(payload);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
} catch (ex) {
|
|
53
|
-
console.log(`DomainConfig dns reading error entry not found [${domain}]`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
static async discoverRootFile(domain, proxy) {
|
|
57
|
-
return (0, import_core.isBrowser)() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
58
|
-
}
|
|
59
|
-
static async discoverRootFileDirect(domain) {
|
|
60
|
-
try {
|
|
61
|
-
const config = (await import_axios.axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
62
|
-
return new _DomainPayloadWrapper(config);
|
|
63
|
-
} catch (ex) {
|
|
64
|
-
console.log(`DomainConfig root file not found [${domain}]`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
static async discoverRootFileWithProxy(domain, proxy = "https://api.archivist.xyo.network/domain") {
|
|
68
|
-
try {
|
|
69
|
-
const requestUrl = `${proxy}/${domain.split(".").reverse().join(".")}`;
|
|
70
|
-
const config = (await import_axios.axios.get(requestUrl)).data.data;
|
|
71
|
-
return new _DomainPayloadWrapper(config);
|
|
72
|
-
} catch (ex) {
|
|
73
|
-
const error = ex;
|
|
74
|
-
console.log(`DomainConfig root file not found using proxy [${domain}] [${error.code}]`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
async fetch(networkSlug) {
|
|
78
|
-
await this.fetchAliases(networkSlug);
|
|
79
|
-
}
|
|
80
|
-
async fetchAliases(networkSlug) {
|
|
81
|
-
this.aliases = null;
|
|
82
|
-
const archivistUri = await this.findArchivistUri(networkSlug);
|
|
83
|
-
if (this.payload().aliases) {
|
|
84
|
-
const fetchedAliases = await Promise.all(
|
|
85
|
-
Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
|
|
86
|
-
return this.fetchAlias(alias, { archivistUri });
|
|
87
|
-
})
|
|
88
|
-
);
|
|
89
|
-
this.aliases = fetchedAliases.filter((alias) => alias);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
async fetchAlias(alias, huriOptions) {
|
|
93
|
-
const huri = new import_huri.Huri(alias.huri, huriOptions);
|
|
94
|
-
const payload = await huri.fetch();
|
|
95
|
-
return payload ? { alias, huri, payload } : null;
|
|
96
|
-
}
|
|
97
|
-
async findArchivistUri(hash) {
|
|
98
|
-
var _a, _b, _c;
|
|
99
|
-
return (_c = (_b = (_a = await this.getNetwork(hash)) == null ? void 0 : _a.nodes) == null ? void 0 : _b.find((payload) => payload.type === "archivist" ? payload : void 0)) == null ? void 0 : _c.uri;
|
|
100
|
-
}
|
|
101
|
-
async getNetwork(hash) {
|
|
102
|
-
var _a;
|
|
103
|
-
return hash ? await import_core.PayloadHasher.find(this.payload().networks, hash) : (_a = this.payload().networks) == null ? void 0 : _a[0];
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
107
|
-
0 && (module.exports = {
|
|
108
|
-
DomainPayloadWrapper
|
|
109
|
-
});
|
|
110
|
-
//# sourceMappingURL=Wrapper.js.map
|
package/dist/node/Wrapper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Wrapper.ts"],"sourcesContent":["import { reverse } from '@xylabs/lodash'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { axios, AxiosError } from '@xyo-network/axios'\nimport { isBrowser, PayloadHasher } from '@xyo-network/core'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\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 (ex) {\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 (ex) {\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((alias) => alias) 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 return hash ? await PayloadHasher.find(this.payload().networks, hash) : this.payload().networks?.[0]\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/node/Wrapper.mjs
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// src/Wrapper.ts
|
|
2
|
-
import { reverse } from "@xylabs/lodash";
|
|
3
|
-
import { axios } from "@xyo-network/axios";
|
|
4
|
-
import { isBrowser, PayloadHasher } from "@xyo-network/core";
|
|
5
|
-
import { DnsRecordType, domainResolve } from "@xyo-network/dns";
|
|
6
|
-
import { Huri } from "@xyo-network/huri";
|
|
7
|
-
import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
8
|
-
var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
|
|
9
|
-
aliases;
|
|
10
|
-
static async discover(reverseDomainName, proxy) {
|
|
11
|
-
const parts = reverseDomainName.split(".");
|
|
12
|
-
for (let i = 2; i <= parts.length; i++) {
|
|
13
|
-
const domainToCheck = reverse(parts.filter((_, index) => index < i)).join(".");
|
|
14
|
-
return await this.discoverDNSEntry(domainToCheck) ?? await this.discoverRootFile(domainToCheck, proxy);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
static async discoverDNSEntry(domain) {
|
|
18
|
-
var _a, _b, _c;
|
|
19
|
-
try {
|
|
20
|
-
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;
|
|
21
|
-
if (hash) {
|
|
22
|
-
const huri = new Huri(hash);
|
|
23
|
-
const payload = await huri.fetch();
|
|
24
|
-
if (payload) {
|
|
25
|
-
return new _DomainPayloadWrapper(payload);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
} catch (ex) {
|
|
29
|
-
console.log(`DomainConfig dns reading error entry not found [${domain}]`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
static async discoverRootFile(domain, proxy) {
|
|
33
|
-
return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
|
|
34
|
-
}
|
|
35
|
-
static async discoverRootFileDirect(domain) {
|
|
36
|
-
try {
|
|
37
|
-
const config = (await axios.get(`https://${domain}/xyo-config.json`)).data;
|
|
38
|
-
return new _DomainPayloadWrapper(config);
|
|
39
|
-
} catch (ex) {
|
|
40
|
-
console.log(`DomainConfig root file not found [${domain}]`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
static async discoverRootFileWithProxy(domain, proxy = "https://api.archivist.xyo.network/domain") {
|
|
44
|
-
try {
|
|
45
|
-
const requestUrl = `${proxy}/${domain.split(".").reverse().join(".")}`;
|
|
46
|
-
const config = (await axios.get(requestUrl)).data.data;
|
|
47
|
-
return new _DomainPayloadWrapper(config);
|
|
48
|
-
} catch (ex) {
|
|
49
|
-
const error = ex;
|
|
50
|
-
console.log(`DomainConfig root file not found using proxy [${domain}] [${error.code}]`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async fetch(networkSlug) {
|
|
54
|
-
await this.fetchAliases(networkSlug);
|
|
55
|
-
}
|
|
56
|
-
async fetchAliases(networkSlug) {
|
|
57
|
-
this.aliases = null;
|
|
58
|
-
const archivistUri = await this.findArchivistUri(networkSlug);
|
|
59
|
-
if (this.payload().aliases) {
|
|
60
|
-
const fetchedAliases = await Promise.all(
|
|
61
|
-
Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
|
|
62
|
-
return this.fetchAlias(alias, { archivistUri });
|
|
63
|
-
})
|
|
64
|
-
);
|
|
65
|
-
this.aliases = fetchedAliases.filter((alias) => alias);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async fetchAlias(alias, huriOptions) {
|
|
69
|
-
const huri = new Huri(alias.huri, huriOptions);
|
|
70
|
-
const payload = await huri.fetch();
|
|
71
|
-
return payload ? { alias, huri, payload } : null;
|
|
72
|
-
}
|
|
73
|
-
async findArchivistUri(hash) {
|
|
74
|
-
var _a, _b, _c;
|
|
75
|
-
return (_c = (_b = (_a = await this.getNetwork(hash)) == null ? void 0 : _a.nodes) == null ? void 0 : _b.find((payload) => payload.type === "archivist" ? payload : void 0)) == null ? void 0 : _c.uri;
|
|
76
|
-
}
|
|
77
|
-
async getNetwork(hash) {
|
|
78
|
-
var _a;
|
|
79
|
-
return hash ? await PayloadHasher.find(this.payload().networks, hash) : (_a = this.payload().networks) == null ? void 0 : _a[0];
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
export {
|
|
83
|
-
DomainPayloadWrapper
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=Wrapper.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Wrapper.ts"],"sourcesContent":["import { reverse } from '@xylabs/lodash'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { axios, AxiosError } from '@xyo-network/axios'\nimport { isBrowser, PayloadHasher } from '@xyo-network/core'\nimport { DnsRecordType, domainResolve } from '@xyo-network/dns'\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 (ex) {\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 (ex) {\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((alias) => alias) 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 return hash ? await PayloadHasher.find(this.payload().networks, hash) : this.payload().networks?.[0]\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/node/schemadef.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
// src/schemadef.json
|
|
2
|
-
var $schema = "http://json-schema.org/draft-07/schema#";
|
|
3
|
-
var additionalProperties = false;
|
|
4
|
-
var definitions = {
|
|
5
|
-
alias: {
|
|
6
|
-
additionalProperties: false,
|
|
7
|
-
properties: {
|
|
8
|
-
huri: {
|
|
9
|
-
type: "string"
|
|
10
|
-
},
|
|
11
|
-
name: {
|
|
12
|
-
type: "string"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
required: [
|
|
16
|
-
"name",
|
|
17
|
-
"huri"
|
|
18
|
-
],
|
|
19
|
-
type: "object"
|
|
20
|
-
},
|
|
21
|
-
network: {
|
|
22
|
-
additionalProperties: false,
|
|
23
|
-
properties: {
|
|
24
|
-
name: {
|
|
25
|
-
type: "string"
|
|
26
|
-
},
|
|
27
|
-
nodes: {
|
|
28
|
-
items: {
|
|
29
|
-
$ref: "#/definitions/node"
|
|
30
|
-
},
|
|
31
|
-
type: "array"
|
|
32
|
-
},
|
|
33
|
-
slug: {
|
|
34
|
-
type: "string"
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
required: [
|
|
38
|
-
"slug"
|
|
39
|
-
],
|
|
40
|
-
type: "object"
|
|
41
|
-
},
|
|
42
|
-
node: {
|
|
43
|
-
additionalProperties: false,
|
|
44
|
-
properties: {
|
|
45
|
-
name: {
|
|
46
|
-
type: "string"
|
|
47
|
-
},
|
|
48
|
-
slug: {
|
|
49
|
-
type: "string"
|
|
50
|
-
},
|
|
51
|
-
type: {
|
|
52
|
-
$ref: "#/definitions/node_type"
|
|
53
|
-
},
|
|
54
|
-
uri: {
|
|
55
|
-
type: "string"
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
required: [
|
|
59
|
-
"slug",
|
|
60
|
-
"type"
|
|
61
|
-
],
|
|
62
|
-
type: "object"
|
|
63
|
-
},
|
|
64
|
-
node_type: {
|
|
65
|
-
enum: [
|
|
66
|
-
"sentinel",
|
|
67
|
-
"bridge",
|
|
68
|
-
"archivist",
|
|
69
|
-
"diviner"
|
|
70
|
-
],
|
|
71
|
-
type: "string"
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
var properties = {
|
|
75
|
-
additional: {
|
|
76
|
-
description: "List of HURIs to additional configs for this domain",
|
|
77
|
-
items: {
|
|
78
|
-
type: "string"
|
|
79
|
-
},
|
|
80
|
-
nullable: false,
|
|
81
|
-
type: "array"
|
|
82
|
-
},
|
|
83
|
-
aliases: {
|
|
84
|
-
description: "List of HURIs to that are officially defined by this domain",
|
|
85
|
-
items: {
|
|
86
|
-
type: "string"
|
|
87
|
-
},
|
|
88
|
-
nullable: false,
|
|
89
|
-
type: "array"
|
|
90
|
-
},
|
|
91
|
-
domain: {
|
|
92
|
-
description: "The name of the domain that this config applies to",
|
|
93
|
-
nullable: false,
|
|
94
|
-
type: "string"
|
|
95
|
-
},
|
|
96
|
-
networks: {
|
|
97
|
-
description: "List of networks that this domain participates in",
|
|
98
|
-
items: {
|
|
99
|
-
$ref: "#/definitions/network"
|
|
100
|
-
},
|
|
101
|
-
nullable: false,
|
|
102
|
-
type: "array"
|
|
103
|
-
},
|
|
104
|
-
schema: {
|
|
105
|
-
description: "The schema name (must be network.xyo.domain)",
|
|
106
|
-
nullable: false,
|
|
107
|
-
pattern: "/^network.xyo.domain$/",
|
|
108
|
-
type: "string"
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
var required = [
|
|
112
|
-
"domain",
|
|
113
|
-
"schema"
|
|
114
|
-
];
|
|
115
|
-
var schemadef_default = {
|
|
116
|
-
$schema,
|
|
117
|
-
additionalProperties,
|
|
118
|
-
definitions,
|
|
119
|
-
properties,
|
|
120
|
-
required
|
|
121
|
-
};
|
|
122
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
123
|
-
0 && (module.exports = {
|
|
124
|
-
$schema,
|
|
125
|
-
additionalProperties,
|
|
126
|
-
definitions,
|
|
127
|
-
properties,
|
|
128
|
-
required
|
|
129
|
-
});
|
|
130
|
-
//# sourceMappingURL=schemadef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemadef.json"],"sourcesContent":["{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"additionalProperties\": false,\n \"definitions\": {\n \"alias\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"huri\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"huri\"\n ],\n \"type\": \"object\"\n },\n \"network\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"nodes\": {\n \"items\": {\n \"$ref\": \"#/definitions/node\"\n },\n \"type\": \"array\"\n },\n \"slug\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"slug\"\n ],\n \"type\": \"object\"\n },\n \"node\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"$ref\": \"#/definitions/node_type\"\n },\n \"uri\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"slug\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"node_type\": {\n \"enum\": [\n \"sentinel\",\n \"bridge\",\n \"archivist\",\n \"diviner\"\n ],\n \"type\": \"string\"\n }\n },\n \"properties\": {\n \"additional\": {\n \"description\": \"List of HURIs to additional configs for this domain\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": false,\n \"type\": \"array\"\n },\n \"aliases\": {\n \"description\": \"List of HURIs to that are officially defined by this domain\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": false,\n \"type\": \"array\"\n },\n \"domain\": {\n \"description\": \"The name of the domain that this config applies to\",\n \"nullable\": false,\n \"type\": \"string\"\n },\n \"networks\": {\n \"description\": \"List of networks that this domain participates in\",\n \"items\": {\n \"$ref\": \"#/definitions/network\"\n },\n \"nullable\": false,\n \"type\": \"array\"\n },\n \"schema\": {\n \"description\": \"The schema name (must be network.xyo.domain)\",\n \"nullable\": false,\n \"pattern\": \"/^network.xyo.domain$/\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"domain\",\n \"schema\"\n ]\n}"],"mappings":";AACE,cAAW;AACX,2BAAwB;AACxB,kBAAe;AAAA,EACb,OAAS;AAAA,IACP,sBAAwB;AAAA,IACxB,YAAc;AAAA,MACZ,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,MACA,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAQ;AAAA,EACV;AAAA,EACA,SAAW;AAAA,IACT,sBAAwB;AAAA,IACxB,YAAc;AAAA,MACZ,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,MACA,OAAS;AAAA,QACP,OAAS;AAAA,UACP,MAAQ;AAAA,QACV;AAAA,QACA,MAAQ;AAAA,MACV;AAAA,MACA,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV;AAAA,IACF;AAAA,IACA,MAAQ;AAAA,EACV;AAAA,EACA,MAAQ;AAAA,IACN,sBAAwB;AAAA,IACxB,YAAc;AAAA,MACZ,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,MACA,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,MACA,MAAQ;AAAA,QACN,MAAQ;AAAA,MACV;AAAA,MACA,KAAO;AAAA,QACL,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,UAAY;AAAA,MACV;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAQ;AAAA,EACV;AAAA,EACA,WAAa;AAAA,IACX,MAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAQ;AAAA,EACV;AACF;AACA,iBAAc;AAAA,EACZ,YAAc;AAAA,IACZ,aAAe;AAAA,IACf,OAAS;AAAA,MACP,MAAQ;AAAA,IACV;AAAA,IACA,UAAY;AAAA,IACZ,MAAQ;AAAA,EACV;AAAA,EACA,SAAW;AAAA,IACT,aAAe;AAAA,IACf,OAAS;AAAA,MACP,MAAQ;AAAA,IACV;AAAA,IACA,UAAY;AAAA,IACZ,MAAQ;AAAA,EACV;AAAA,EACA,QAAU;AAAA,IACR,aAAe;AAAA,IACf,UAAY;AAAA,IACZ,MAAQ;AAAA,EACV;AAAA,EACA,UAAY;AAAA,IACV,aAAe;AAAA,IACf,OAAS;AAAA,MACP,MAAQ;AAAA,IACV;AAAA,IACA,UAAY;AAAA,IACZ,MAAQ;AAAA,EACV;AAAA,EACA,QAAU;AAAA,IACR,aAAe;AAAA,IACf,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,MAAQ;AAAA,EACV;AACF;AACA,eAAY;AAAA,EACV;AAAA,EACA;AACF;AAjHF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAsEA;AAAA,EAqCA;AAIF;","names":[]}
|