@xyo-network/domain-payload-plugin 2.84.18 → 2.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -35,7 +36,7 @@ var import_payload_plugin = require("@xyo-network/payload-plugin");
35
36
  var DomainSchema = "network.xyo.domain";
36
37
 
37
38
  // src/Template.ts
38
- var domainConfigTemplate = () => ({
39
+ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
39
40
  aliases: {
40
41
  "com.example.id": {
41
42
  huri: ""
@@ -58,7 +59,7 @@ var domainConfigTemplate = () => ({
58
59
  }
59
60
  ],
60
61
  schema: DomainSchema
61
- });
62
+ }), "domainConfigTemplate");
62
63
 
63
64
  // src/Wrapper.ts
64
65
  var import_axios = require("@xylabs/axios");
@@ -69,6 +70,9 @@ var import_hash = require("@xyo-network/hash");
69
70
  var import_huri = require("@xyo-network/huri");
70
71
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
71
72
  var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
73
+ static {
74
+ __name(this, "DomainPayloadWrapper");
75
+ }
72
76
  aliases;
73
77
  static async discover(reverseDomainName, proxy) {
74
78
  const parts = reverseDomainName.split(".");
@@ -119,18 +123,22 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
119
123
  this.aliases = null;
120
124
  const archivistUri = await this.findArchivistUri(networkSlug);
121
125
  if (this.payload().aliases) {
122
- const fetchedAliases = await Promise.all(
123
- Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
124
- return this.fetchAlias(alias, { archivistUri });
125
- })
126
- );
126
+ const fetchedAliases = await Promise.all(Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
127
+ return this.fetchAlias(alias, {
128
+ archivistUri
129
+ });
130
+ }));
127
131
  this.aliases = fetchedAliases.filter(Boolean);
128
132
  }
129
133
  }
130
134
  async fetchAlias(alias, huriOptions) {
131
135
  const huri = new import_huri.Huri(alias.huri, huriOptions);
132
136
  const payload = await huri.fetch();
133
- return payload ? { alias, huri, payload } : null;
137
+ return payload ? {
138
+ alias,
139
+ huri,
140
+ payload
141
+ } : null;
134
142
  }
135
143
  async findArchivistUri(hash) {
136
144
  return (await this.getNetwork(hash))?.nodes?.find((payload) => payload.type === "archivist" ? payload : void 0)?.uri;
@@ -141,9 +149,9 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
141
149
  };
142
150
 
143
151
  // src/Plugin.ts
144
- var DomainPayloadPlugin = () => (0, import_payload_plugin.createPayloadPlugin)({
152
+ var DomainPayloadPlugin = /* @__PURE__ */ __name(() => (0, import_payload_plugin.createPayloadPlugin)({
145
153
  schema: DomainSchema,
146
154
  template: domainConfigTemplate,
147
155
  wrap: (payload) => DomainPayloadWrapper.wrap(payload)
148
- });
156
+ }), "DomainPayloadPlugin");
149
157
  //# sourceMappingURL=index.cjs.map
@@ -1 +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":[]}
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"]}
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/Plugin.ts
2
5
  import { createPayloadPlugin } from "@xyo-network/payload-plugin";
3
6
 
@@ -5,7 +8,7 @@ import { createPayloadPlugin } from "@xyo-network/payload-plugin";
5
8
  var DomainSchema = "network.xyo.domain";
6
9
 
7
10
  // src/Template.ts
8
- var domainConfigTemplate = () => ({
11
+ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
9
12
  aliases: {
10
13
  "com.example.id": {
11
14
  huri: ""
@@ -28,7 +31,7 @@ var domainConfigTemplate = () => ({
28
31
  }
29
32
  ],
30
33
  schema: DomainSchema
31
- });
34
+ }), "domainConfigTemplate");
32
35
 
33
36
  // src/Wrapper.ts
34
37
  import { axios } from "@xylabs/axios";
@@ -39,6 +42,9 @@ import { PayloadHasher } from "@xyo-network/hash";
39
42
  import { Huri } from "@xyo-network/huri";
40
43
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
41
44
  var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
45
+ static {
46
+ __name(this, "DomainPayloadWrapper");
47
+ }
42
48
  aliases;
43
49
  static async discover(reverseDomainName, proxy) {
44
50
  const parts = reverseDomainName.split(".");
@@ -89,18 +95,22 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
89
95
  this.aliases = null;
90
96
  const archivistUri = await this.findArchivistUri(networkSlug);
91
97
  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
- );
98
+ const fetchedAliases = await Promise.all(Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
99
+ return this.fetchAlias(alias, {
100
+ archivistUri
101
+ });
102
+ }));
97
103
  this.aliases = fetchedAliases.filter(Boolean);
98
104
  }
99
105
  }
100
106
  async fetchAlias(alias, huriOptions) {
101
107
  const huri = new Huri(alias.huri, huriOptions);
102
108
  const payload = await huri.fetch();
103
- return payload ? { alias, huri, payload } : null;
109
+ return payload ? {
110
+ alias,
111
+ huri,
112
+ payload
113
+ } : null;
104
114
  }
105
115
  async findArchivistUri(hash) {
106
116
  return (await this.getNetwork(hash))?.nodes?.find((payload) => payload.type === "archivist" ? payload : void 0)?.uri;
@@ -111,11 +121,11 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
111
121
  };
112
122
 
113
123
  // src/Plugin.ts
114
- var DomainPayloadPlugin = () => createPayloadPlugin({
124
+ var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
115
125
  schema: DomainSchema,
116
126
  template: domainConfigTemplate,
117
127
  wrap: (payload) => DomainPayloadWrapper.wrap(payload)
118
- });
128
+ }), "DomainPayloadPlugin");
119
129
  export {
120
130
  DomainPayloadPlugin,
121
131
  DomainPayloadWrapper,
@@ -1 +1 @@
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":[]}
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"]}
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -35,7 +36,7 @@ var import_payload_plugin = require("@xyo-network/payload-plugin");
35
36
  var DomainSchema = "network.xyo.domain";
36
37
 
37
38
  // src/Template.ts
38
- var domainConfigTemplate = () => ({
39
+ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
39
40
  aliases: {
40
41
  "com.example.id": {
41
42
  huri: ""
@@ -58,7 +59,7 @@ var domainConfigTemplate = () => ({
58
59
  }
59
60
  ],
60
61
  schema: DomainSchema
61
- });
62
+ }), "domainConfigTemplate");
62
63
 
63
64
  // src/Wrapper.ts
64
65
  var import_axios = require("@xylabs/axios");
@@ -68,7 +69,7 @@ var import_dns = require("@xyo-network/dns");
68
69
  var import_hash = require("@xyo-network/hash");
69
70
  var import_huri = require("@xyo-network/huri");
70
71
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
71
- var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
72
+ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
72
73
  aliases;
73
74
  static async discover(reverseDomainName, proxy) {
74
75
  const parts = reverseDomainName.split(".");
@@ -120,18 +121,22 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
120
121
  this.aliases = null;
121
122
  const archivistUri = await this.findArchivistUri(networkSlug);
122
123
  if (this.payload().aliases) {
123
- const fetchedAliases = await Promise.all(
124
- Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
125
- return this.fetchAlias(alias, { archivistUri });
126
- })
127
- );
124
+ const fetchedAliases = await Promise.all(Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
125
+ return this.fetchAlias(alias, {
126
+ archivistUri
127
+ });
128
+ }));
128
129
  this.aliases = fetchedAliases.filter(Boolean);
129
130
  }
130
131
  }
131
132
  async fetchAlias(alias, huriOptions) {
132
133
  const huri = new import_huri.Huri(alias.huri, huriOptions);
133
134
  const payload = await huri.fetch();
134
- return payload ? { alias, huri, payload } : null;
135
+ return payload ? {
136
+ alias,
137
+ huri,
138
+ payload
139
+ } : null;
135
140
  }
136
141
  async findArchivistUri(hash) {
137
142
  var _a, _b, _c;
@@ -142,13 +147,15 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
142
147
  return hash ? await import_hash.PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
143
148
  }
144
149
  };
150
+ __name(_DomainPayloadWrapper, "DomainPayloadWrapper");
151
+ var DomainPayloadWrapper = _DomainPayloadWrapper;
145
152
 
146
153
  // src/Plugin.ts
147
- var DomainPayloadPlugin = () => (0, import_payload_plugin.createPayloadPlugin)({
154
+ var DomainPayloadPlugin = /* @__PURE__ */ __name(() => (0, import_payload_plugin.createPayloadPlugin)({
148
155
  schema: DomainSchema,
149
156
  template: domainConfigTemplate,
150
157
  wrap: (payload) => DomainPayloadWrapper.wrap(payload)
151
- });
158
+ }), "DomainPayloadPlugin");
152
159
  // Annotate the CommonJS export names for ESM import in node:
153
160
  0 && (module.exports = {
154
161
  DomainPayloadPlugin,
@@ -1 +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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,4BAAoC;;;ACA7B,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;;;AC1BA,mBAAkC;AAClC,oBAAwB;AACxB,sBAA0B;AAE1B,iBAA6C;AAC7C,kBAA8B;AAC9B,kBAAkD;AAElD,6BAA+B;AAQxB,IAAM,uBAAN,MAAM,8BAAsE,sCAAkB;AAAA,EACnG;AAAA,EAEA,aAAa,SAAS,mBAA2B,OAAgB;AAC/D,UAAM,QAAQ,kBAAkB,MAAM,GAAG;AACzC,aAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,KAAK;AACtC,YAAM,oBAAgB,uBAAQ,MAAM,OAAO,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG;AAC7E,aAAQ,MAAM,KAAK,iBAAiB,aAAa,KAAO,MAAM,KAAK,iBAAiB,eAAe,KAAK;AAAA,IAC1G;AAAA,EACF;AAAA,EAEA,aAAa,iBAAiB,QAAgB;AA3BhD;AA4BI,QAAI;AACF,YAAM,QAAQ,2BAAM,0BAAc,QAAQ,MAAM,IAAI,yBAAc,GAAG,MAAvD,mBAA2D,WAA3D,mBAAoE,OAApE,mBAAwE;AACtF,UAAI,MAAM;AACR,cAAM,OAAO,IAAI,iBAAK,IAAI;AAC1B,cAAM,UAAW,MAAM,KAAK,MAAM;AAClC,YAAI,SAAS;AACX,iBAAO,IAAI,sBAAqB,OAAO;AAAA,QACzC;AAAA,MACF;AAAA,IACF,QAAQ;AACN,cAAQ,IAAI,mDAAmD,MAAM,GAAG;AAAA,IAC1E;AAAA,EACF;AAAA,EAEA,aAAa,iBAAiB,QAAgB,OAAgB;AAC5D,eAAO,2BAAU,KAAK,QAAQ,MAAM,KAAK,0BAA0B,QAAQ,KAAK,IAAI,MAAM,KAAK,uBAAuB,MAAM;AAAA,EAC9H;AAAA,EAEA,aAAa,uBAAuB,QAAgB;AAClD,QAAI;AACF,YAAM,UAAU,MAAM,mBAAM,IAAmB,WAAW,MAAM,kBAAkB,GAAG;AACrF,aAAO,IAAI,sBAAqB,MAAM;AAAA,IACxC,QAAQ;AACN,cAAQ,IAAI,qCAAqC,MAAM,GAAG;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,aAAa,0BAA0B,QAAgB,QAAQ,4CAA4C;AACzG,QAAI;AACF,YAAM,aAAa,GAAG,KAAK,IAAI,OAAO,MAAM,GAAG,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC;AACpE,YAAM,UAAU,MAAM,mBAAM,IAAgC,UAAU,GAAG,KAAK;AAC9E,aAAO,IAAI,sBAAqB,MAAM;AAAA,IACxC,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,iDAAiD,MAAM,MAAM,MAAM,IAAI,GAAG;AAAA,IACxF;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,aAAsB;AAChC,UAAM,KAAK,aAAa,WAAW;AAAA,EACrC;AAAA,EAEA,MAAM,aAAa,aAAsB;AAEvC,SAAK,UAAU;AAEf,UAAM,eAAe,MAAM,KAAK,iBAAiB,WAAW;AAC5D,QAAI,KAAK,QAAQ,EAAE,SAAS;AAC1B,YAAM,iBAAiB,MAAM,QAAQ;AAAA,QACnC,OAAO,QAAQ,KAAK,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM;AAC9D,iBAAO,KAAK,WAAW,OAAO,EAAE,aAAa,CAAC;AAAA,QAChD,CAAC;AAAA,MACH;AAEA,WAAK,UAAU,eAAe,OAAO,OAAO;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAc,WAAW,OAAc,aAAyD;AAC9F,UAAM,OAAO,IAAI,iBAAK,MAAM,MAAM,WAAW;AAC7C,UAAM,UAAU,MAAM,KAAK,MAAM;AACjC,WAAO,UAAU,EAAE,OAAO,MAAM,QAAiB,IAAI;AAAA,EACvD;AAAA,EAEA,MAAc,iBAAiB,MAA4C;AA5F7E;AA6FI,YAAQ,uBAAM,KAAK,WAAW,IAAI,MAA1B,mBAA8B,UAA9B,mBAAqC,KAAK,CAAC,YAAa,QAAQ,SAAS,cAAc,UAAU,YAAjG,mBAA8G;AAAA,EACxH;AAAA,EAEA,MAAc,WAAW,MAAoD;AAhG/E;AAkGI,WAAO,OAAO,MAAM,0BAAc,KAAK,KAAK,YAAY,EAAE,UAAU,IAAI,KAAI,UAAK,YAAY,EAAE,aAAnB,mBAA8B;AAAA,EAC5G;AACF;;;AH5FO,IAAM,sBAAsB,UACjC,2CAAmC;AAAA,EACjC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM,CAAC,YAAqB,qBAAqB,KAAK,OAAwB;AAChF,CAAC;","names":[]}
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":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;ACCA,4BAAoC;;;ACA7B,IAAMA,eAA6B;;;ACEnC,IAAMC,uBAAuB,8BAAsB;EACxDC,SAAS;IACP,kBAAkB;MAChBC,MAAM;IACR;EACF;EACAC,UAAU;IACR;MACEC,MAAM;MACNC,OAAO;QACL;UACED,MAAM;UACNE,QAAQ;UACRC,MAAM;UACNC,MAAM;UACNC,KAAK;QACP;;MAEFH,QAAQ;MACRC,MAAM;IACR;;EAEFD,QAAQI;AACV,IAvBoC;;;ACHpC,mBAAkC;AAClC,oBAAwB;AACxB,sBAA0B;AAE1B,iBAA6C;AAC7C,kBAA8B;AAC9B,kBAAkD;AAElD,6BAA+B;AAQxB,IAAMC,wBAAN,MAAMA,8BAAsEC,sCAAAA;EACjFC;EAEA,aAAaC,SAASC,mBAA2BC,OAAgB;AAC/D,UAAMC,QAAQF,kBAAkBG,MAAM,GAAA;AACtC,aAASC,IAAI,GAAGA,KAAKF,MAAMG,QAAQD,KAAK;AACtC,YAAME,oBAAgBC,uBAAQL,MAAMM,OAAO,CAACC,GAAGC,UAAUA,QAAQN,CAAAA,CAAAA,EAAIO,KAAK,GAAA;AAC1E,aAAQ,MAAM,KAAKC,iBAAiBN,aAAAA,KAAoB,MAAM,KAAKO,iBAAiBP,eAAeL,KAAAA;IACrG;EACF;EAEA,aAAaW,iBAAiBE,QAAgB;AA3BhD;AA4BI,QAAI;AACF,YAAMC,QAAQ,2BAAMC,0BAAc,QAAQF,MAAAA,IAAUG,yBAAcC,GAAG,MAAvD,mBAA2DC,WAA3D,mBAAoE,OAApE,mBAAwEC;AACtF,UAAIL,MAAM;AACR,cAAMM,OAAO,IAAIC,iBAAKP,IAAAA;AACtB,cAAMQ,UAAW,MAAMF,KAAKG,MAAK;AACjC,YAAID,SAAS;AACX,iBAAO,IAAI3B,sBAAqB2B,OAAAA;QAClC;MACF;IACF,QAAQ;AACNE,cAAQC,IAAI,mDAAmDZ,MAAAA,GAAS;IAC1E;EACF;EAEA,aAAaD,iBAAiBC,QAAgBb,OAAgB;AAC5D,eAAO0B,2BAAAA,KAAe1B,QAAQ,MAAM,KAAK2B,0BAA0Bd,QAAQb,KAAAA,IAAS,MAAM,KAAK4B,uBAAuBf,MAAAA;EACxH;EAEA,aAAae,uBAAuBf,QAAgB;AAClD,QAAI;AACF,YAAMgB,UAAU,MAAMC,mBAAMC,IAAmB,WAAWlB,MAAAA,kBAAwB,GAAGM;AACrF,aAAO,IAAIxB,sBAAqBkC,MAAAA;IAClC,QAAQ;AACNL,cAAQC,IAAI,qCAAqCZ,MAAAA,GAAS;IAC5D;EACF;EAEA,aAAac,0BAA0Bd,QAAgBb,QAAQ,4CAA4C;AACzG,QAAI;AACF,YAAMgC,aAAa,GAAGhC,KAAAA,IAASa,OAAOX,MAAM,GAAA,EAAKI,QAAO,EAAGI,KAAK,GAAA,CAAA;AAChE,YAAMmB,UAAU,MAAMC,mBAAMC,IAAgCC,UAAAA,GAAab,KAAKA;AAC9E,aAAO,IAAIxB,sBAAqBkC,MAAAA;IAClC,SAASI,IAAI;AACX,YAAMC,QAAQD;AACdT,cAAQC,IAAI,iDAAiDZ,MAAAA,MAAYqB,MAAMC,IAAI,GAAG;IACxF;EACF;EAEA,MAAMZ,MAAMa,aAAsB;AAChC,UAAM,KAAKC,aAAaD,WAAAA;EAC1B;EAEA,MAAMC,aAAaD,aAAsB;AAEvC,SAAKvC,UAAU;AAEf,UAAMyC,eAAe,MAAM,KAAKC,iBAAiBH,WAAAA;AACjD,QAAI,KAAKd,QAAO,EAAGzB,SAAS;AAC1B,YAAM2C,iBAAiB,MAAMC,QAAQC,IACnCC,OAAOC,QAAQ,KAAKtB,QAAO,EAAGzB,WAAW,CAAC,CAAA,EAAGgD,IAAI,CAAC,CAAA,EAAGC,KAAAA,MAAM;AACzD,eAAO,KAAKC,WAAWD,OAAO;UAAER;QAAa,CAAA;MAC/C,CAAA,CAAA;AAGF,WAAKzC,UAAU2C,eAAejC,OAAOyC,OAAAA;IACvC;EACF;EAEA,MAAcD,WAAWD,OAAcG,aAAyD;AAC9F,UAAM7B,OAAO,IAAIC,iBAAKyB,MAAM1B,MAAM6B,WAAAA;AAClC,UAAM3B,UAAU,MAAMF,KAAKG,MAAK;AAChC,WAAOD,UAAU;MAAEwB;MAAO1B;MAAME;IAAiB,IAAI;EACvD;EAEA,MAAciB,iBAAiBzB,MAA4C;AA5F7E;AA6FI,YAAQ,uBAAM,KAAKoC,WAAWpC,IAAAA,MAAtB,mBAA8BqC,UAA9B,mBAAqCC,KAAK,CAAC9B,YAAaA,QAAQ+B,SAAS,cAAc/B,UAAUgC,YAAjG,mBAA8GC;EACxH;EAEA,MAAcL,WAAWpC,MAAoD;AAhG/E;AAkGI,WAAOA,OAAO,MAAM0C,0BAAcJ,KAAK,KAAKK,YAAW,EAAGC,UAAU5C,IAAAA,KAAQ,UAAK2C,YAAW,EAAGC,aAAnB,mBAA8B;EAC5G;AACF;AApFmF9D;AAA5E,IAAMD,uBAAN;;;AHRA,IAAMgE,sBAAsB,iCACjCC,2CAAmC;EACjCC,QAAQC;EACRC,UAAUC;EACVC,MAAM,CAACC,YAAqBC,qBAAqBF,KAAKC,OAAAA;AACxD,CAAA,GALiC;","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"]}
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/Plugin.ts
2
5
  import { createPayloadPlugin } from "@xyo-network/payload-plugin";
3
6
 
@@ -5,7 +8,7 @@ import { createPayloadPlugin } from "@xyo-network/payload-plugin";
5
8
  var DomainSchema = "network.xyo.domain";
6
9
 
7
10
  // src/Template.ts
8
- var domainConfigTemplate = () => ({
11
+ var domainConfigTemplate = /* @__PURE__ */ __name(() => ({
9
12
  aliases: {
10
13
  "com.example.id": {
11
14
  huri: ""
@@ -28,7 +31,7 @@ var domainConfigTemplate = () => ({
28
31
  }
29
32
  ],
30
33
  schema: DomainSchema
31
- });
34
+ }), "domainConfigTemplate");
32
35
 
33
36
  // src/Wrapper.ts
34
37
  import { axios } from "@xylabs/axios";
@@ -38,7 +41,7 @@ import { DnsRecordType, domainResolve } from "@xyo-network/dns";
38
41
  import { PayloadHasher } from "@xyo-network/hash";
39
42
  import { Huri } from "@xyo-network/huri";
40
43
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
41
- var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
44
+ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
42
45
  aliases;
43
46
  static async discover(reverseDomainName, proxy) {
44
47
  const parts = reverseDomainName.split(".");
@@ -90,18 +93,22 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
90
93
  this.aliases = null;
91
94
  const archivistUri = await this.findArchivistUri(networkSlug);
92
95
  if (this.payload().aliases) {
93
- const fetchedAliases = await Promise.all(
94
- Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
95
- return this.fetchAlias(alias, { archivistUri });
96
- })
97
- );
96
+ const fetchedAliases = await Promise.all(Object.entries(this.payload().aliases ?? {}).map(([, alias]) => {
97
+ return this.fetchAlias(alias, {
98
+ archivistUri
99
+ });
100
+ }));
98
101
  this.aliases = fetchedAliases.filter(Boolean);
99
102
  }
100
103
  }
101
104
  async fetchAlias(alias, huriOptions) {
102
105
  const huri = new Huri(alias.huri, huriOptions);
103
106
  const payload = await huri.fetch();
104
- return payload ? { alias, huri, payload } : null;
107
+ return payload ? {
108
+ alias,
109
+ huri,
110
+ payload
111
+ } : null;
105
112
  }
106
113
  async findArchivistUri(hash) {
107
114
  var _a, _b, _c;
@@ -112,13 +119,15 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
112
119
  return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
113
120
  }
114
121
  };
122
+ __name(_DomainPayloadWrapper, "DomainPayloadWrapper");
123
+ var DomainPayloadWrapper = _DomainPayloadWrapper;
115
124
 
116
125
  // src/Plugin.ts
117
- var DomainPayloadPlugin = () => createPayloadPlugin({
126
+ var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
118
127
  schema: DomainSchema,
119
128
  template: domainConfigTemplate,
120
129
  wrap: (payload) => DomainPayloadWrapper.wrap(payload)
121
- });
130
+ }), "DomainPayloadPlugin");
122
131
  export {
123
132
  DomainPayloadPlugin,
124
133
  DomainPayloadWrapper,
@@ -1 +1 @@
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":[]}
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,14 +13,14 @@
13
13
  "@xylabs/axios": "^2.13.20",
14
14
  "@xylabs/lodash": "^2.13.20",
15
15
  "@xylabs/platform": "^2.13.20",
16
- "@xyo-network/api-models": "~2.84.18",
17
- "@xyo-network/dns": "~2.84.18",
18
- "@xyo-network/hash": "~2.84.18",
19
- "@xyo-network/huri": "~2.84.18",
20
- "@xyo-network/network": "~2.84.18",
21
- "@xyo-network/payload-model": "~2.84.18",
22
- "@xyo-network/payload-plugin": "~2.84.18",
23
- "@xyo-network/payload-wrapper": "~2.84.18"
16
+ "@xyo-network/api-models": "~2.85.0",
17
+ "@xyo-network/dns": "~2.85.0",
18
+ "@xyo-network/hash": "~2.85.0",
19
+ "@xyo-network/huri": "~2.85.0",
20
+ "@xyo-network/network": "~2.85.0",
21
+ "@xyo-network/payload-model": "~2.85.0",
22
+ "@xyo-network/payload-plugin": "~2.85.0",
23
+ "@xyo-network/payload-wrapper": "~2.85.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@xylabs/ts-scripts-yarn3": "^3.2.25",
@@ -67,5 +67,5 @@
67
67
  },
68
68
  "sideEffects": false,
69
69
  "types": "dist/node/index.d.ts",
70
- "version": "2.84.18"
70
+ "version": "2.85.0"
71
71
  }