@xyo-network/domain-payload-plugin 2.88.3 → 2.89.0-rc.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -66,8 +66,8 @@ var import_axios = require("@xylabs/axios");
66
66
  var import_lodash = require("@xylabs/lodash");
67
67
  var import_platform = require("@xylabs/platform");
68
68
  var import_dns = require("@xyo-network/dns");
69
- var import_hash = require("@xyo-network/hash");
70
69
  var import_huri = require("@xyo-network/huri");
70
+ var import_payload_builder = require("@xyo-network/payload-builder");
71
71
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
72
72
  var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
73
73
  static {
@@ -144,7 +144,7 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
144
144
  return (await this.getNetwork(hash))?.nodes?.find((payload) => payload.type === "archivist" ? payload : void 0)?.uri;
145
145
  }
146
146
  async getNetwork(hash) {
147
- return hash ? await import_hash.PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0];
147
+ return hash ? await import_payload_builder.PayloadBuilder.findByDataHash(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0];
148
148
  }
149
149
  };
150
150
 
@@ -152,6 +152,6 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wr
152
152
  var DomainPayloadPlugin = /* @__PURE__ */ __name(() => (0, import_payload_plugin.createPayloadPlugin)({
153
153
  schema: DomainSchema,
154
154
  template: domainConfigTemplate,
155
- wrap: (payload) => DomainPayloadWrapper.wrap(payload)
155
+ wrap: async (payload) => await DomainPayloadWrapper.wrap(payload)
156
156
  }), "DomainPayloadPlugin");
157
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":["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
+ {"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: async (payload: Payload) => await 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 { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\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 PayloadBuilder.findByDataHash(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","PayloadBuilder","findByDataHash","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
@@ -38,8 +38,8 @@ import { axios } from "@xylabs/axios";
38
38
  import { reverse } from "@xylabs/lodash";
39
39
  import { isBrowser } from "@xylabs/platform";
40
40
  import { DnsRecordType, domainResolve } from "@xyo-network/dns";
41
- import { PayloadHasher } from "@xyo-network/hash";
42
41
  import { Huri } from "@xyo-network/huri";
42
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
43
43
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
44
44
  var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
45
45
  static {
@@ -116,7 +116,7 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
116
116
  return (await this.getNetwork(hash))?.nodes?.find((payload) => payload.type === "archivist" ? payload : void 0)?.uri;
117
117
  }
118
118
  async getNetwork(hash) {
119
- return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0];
119
+ return hash ? await PayloadBuilder.findByDataHash(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0];
120
120
  }
121
121
  };
122
122
 
@@ -124,7 +124,7 @@ var DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
124
124
  var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
125
125
  schema: DomainSchema,
126
126
  template: domainConfigTemplate,
127
- wrap: (payload) => DomainPayloadWrapper.wrap(payload)
127
+ wrap: async (payload) => await DomainPayloadWrapper.wrap(payload)
128
128
  }), "DomainPayloadPlugin");
129
129
  export {
130
130
  DomainPayloadPlugin,
@@ -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":["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"]}
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: async (payload: Payload) => await 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 { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\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 PayloadBuilder.findByDataHash(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","Huri","PayloadBuilder","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","PayloadBuilder","findByDataHash","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;WAElB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAQlD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAe/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WAI/C,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;WASrC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;;;;;;;;;;;;;;;;;;;;IAWnG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;IAI1B,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;YAgBzB,UAAU;YAMV,gBAAgB;YAIhB,UAAU;CAIzB"}
@@ -66,8 +66,8 @@ var import_axios = require("@xylabs/axios");
66
66
  var import_lodash = require("@xylabs/lodash");
67
67
  var import_platform = require("@xylabs/platform");
68
68
  var import_dns = require("@xyo-network/dns");
69
- var import_hash = require("@xyo-network/hash");
70
69
  var import_huri = require("@xyo-network/huri");
70
+ var import_payload_builder = require("@xyo-network/payload-builder");
71
71
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
72
72
  var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_wrapper.PayloadWrapper {
73
73
  aliases;
@@ -144,7 +144,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends import_payload_w
144
144
  }
145
145
  async getNetwork(hash) {
146
146
  var _a;
147
- return hash ? await import_hash.PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
147
+ return hash ? await import_payload_builder.PayloadBuilder.findByDataHash(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
148
148
  }
149
149
  };
150
150
  __name(_DomainPayloadWrapper, "DomainPayloadWrapper");
@@ -154,7 +154,7 @@ var DomainPayloadWrapper = _DomainPayloadWrapper;
154
154
  var DomainPayloadPlugin = /* @__PURE__ */ __name(() => (0, import_payload_plugin.createPayloadPlugin)({
155
155
  schema: DomainSchema,
156
156
  template: domainConfigTemplate,
157
- wrap: (payload) => DomainPayloadWrapper.wrap(payload)
157
+ wrap: async (payload) => await DomainPayloadWrapper.wrap(payload)
158
158
  }), "DomainPayloadPlugin");
159
159
  // Annotate the CommonJS export names for ESM import in node:
160
160
  0 && (module.exports = {
@@ -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":["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
+ {"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: async (payload: Payload) => await 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 { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\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 PayloadBuilder.findByDataHash(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","PayloadBuilder","findByDataHash","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
@@ -38,8 +38,8 @@ import { axios } from "@xylabs/axios";
38
38
  import { reverse } from "@xylabs/lodash";
39
39
  import { isBrowser } from "@xylabs/platform";
40
40
  import { DnsRecordType, domainResolve } from "@xyo-network/dns";
41
- import { PayloadHasher } from "@xyo-network/hash";
42
41
  import { Huri } from "@xyo-network/huri";
42
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
43
43
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
44
44
  var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
45
45
  aliases;
@@ -116,7 +116,7 @@ var _DomainPayloadWrapper = class _DomainPayloadWrapper extends PayloadWrapper {
116
116
  }
117
117
  async getNetwork(hash) {
118
118
  var _a;
119
- return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
119
+ return hash ? await PayloadBuilder.findByDataHash(this.jsonPayload().networks, hash) : (_a = this.jsonPayload().networks) == null ? void 0 : _a[0];
120
120
  }
121
121
  };
122
122
  __name(_DomainPayloadWrapper, "DomainPayloadWrapper");
@@ -126,7 +126,7 @@ var DomainPayloadWrapper = _DomainPayloadWrapper;
126
126
  var DomainPayloadPlugin = /* @__PURE__ */ __name(() => createPayloadPlugin({
127
127
  schema: DomainSchema,
128
128
  template: domainConfigTemplate,
129
- wrap: (payload) => DomainPayloadWrapper.wrap(payload)
129
+ wrap: async (payload) => await DomainPayloadWrapper.wrap(payload)
130
130
  }), "DomainPayloadPlugin");
131
131
  export {
132
132
  DomainPayloadPlugin,
@@ -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":["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"]}
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: async (payload: Payload) => await 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 { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'\nimport { NetworkPayload } from '@xyo-network/network'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\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 PayloadBuilder.findByDataHash(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","Huri","PayloadBuilder","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","PayloadBuilder","findByDataHash","jsonPayload","networks","DomainPayloadPlugin","createPayloadPlugin","schema","DomainSchema","template","domainConfigTemplate","wrap","payload","DomainPayloadWrapper"]}
package/package.json CHANGED
@@ -10,17 +10,17 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/axios": "^2.13.29",
14
- "@xylabs/lodash": "^2.13.29",
15
- "@xylabs/platform": "^2.13.29",
16
- "@xyo-network/api-models": "~2.88.3",
17
- "@xyo-network/dns": "~2.88.3",
18
- "@xyo-network/hash": "~2.88.3",
19
- "@xyo-network/huri": "~2.88.3",
20
- "@xyo-network/network": "~2.88.3",
21
- "@xyo-network/payload-model": "~2.88.3",
22
- "@xyo-network/payload-plugin": "~2.88.3",
23
- "@xyo-network/payload-wrapper": "~2.88.3"
13
+ "@xylabs/axios": "^2.14.0",
14
+ "@xylabs/lodash": "^2.14.0",
15
+ "@xylabs/platform": "^2.14.0",
16
+ "@xyo-network/api-models": "~2.89.0-rc.10",
17
+ "@xyo-network/dns": "~2.89.0-rc.10",
18
+ "@xyo-network/huri": "~2.89.0-rc.10",
19
+ "@xyo-network/network": "~2.89.0-rc.10",
20
+ "@xyo-network/payload-builder": "~2.89.0-rc.10",
21
+ "@xyo-network/payload-model": "~2.89.0-rc.10",
22
+ "@xyo-network/payload-plugin": "~2.89.0-rc.10",
23
+ "@xyo-network/payload-wrapper": "~2.89.0-rc.10"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
@@ -66,6 +66,7 @@
66
66
  "url": "https://github.com/XYOracleNetwork/plugins.git"
67
67
  },
68
68
  "sideEffects": false,
69
- "version": "2.88.3",
70
- "type": "module"
69
+ "version": "2.89.0-rc.10",
70
+ "type": "module",
71
+ "stableVersion": "2.88.3"
71
72
  }
package/src/Plugin.ts CHANGED
@@ -10,5 +10,5 @@ export const DomainPayloadPlugin = () =>
10
10
  createPayloadPlugin<DomainPayload>({
11
11
  schema: DomainSchema,
12
12
  template: domainConfigTemplate,
13
- wrap: (payload: Payload) => DomainPayloadWrapper.wrap(payload as DomainPayload),
13
+ wrap: async (payload: Payload) => await DomainPayloadWrapper.wrap(payload as DomainPayload),
14
14
  })
package/src/Wrapper.ts CHANGED
@@ -3,9 +3,9 @@ import { reverse } from '@xylabs/lodash'
3
3
  import { isBrowser } from '@xylabs/platform'
4
4
  import { ApiEnvelope } from '@xyo-network/api-models'
5
5
  import { DnsRecordType, domainResolve } from '@xyo-network/dns'
6
- import { PayloadHasher } from '@xyo-network/hash'
7
6
  import { FetchedPayload, Huri, HuriOptions } from '@xyo-network/huri'
8
7
  import { NetworkPayload } from '@xyo-network/network'
8
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
9
9
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
10
10
 
11
11
  import { Alias, DomainPayload } from './Payload'
@@ -96,6 +96,6 @@ export class DomainPayloadWrapper<T extends DomainPayload = DomainPayload> exten
96
96
 
97
97
  private async getNetwork(hash?: string): Promise<NetworkPayload | undefined> {
98
98
  // eslint-disable-next-line unicorn/no-array-method-this-argument
99
- return hash ? await PayloadHasher.find(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0]
99
+ return hash ? await PayloadBuilder.findByDataHash(this.jsonPayload().networks, hash) : this.jsonPayload().networks?.[0]
100
100
  }
101
101
  }