@xyo-network/domain-payload-plugin 2.23.3 → 2.24.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.
Files changed (78) hide show
  1. package/dist/cjs/Payload.d.ts +21 -0
  2. package/dist/cjs/Payload.d.ts.map +1 -0
  3. package/dist/cjs/Payload.js +3 -0
  4. package/dist/cjs/Payload.js.map +1 -0
  5. package/dist/cjs/Plugin.d.ts +5 -0
  6. package/dist/cjs/Plugin.d.ts.map +1 -0
  7. package/dist/cjs/Plugin.js +20 -0
  8. package/dist/cjs/Plugin.js.map +1 -0
  9. package/dist/cjs/Schema.d.ts +3 -0
  10. package/dist/cjs/Schema.d.ts.map +1 -0
  11. package/dist/cjs/Schema.js +5 -0
  12. package/dist/cjs/Schema.js.map +1 -0
  13. package/dist/cjs/Template.d.ts +3 -0
  14. package/dist/cjs/Template.d.ts.map +1 -0
  15. package/dist/cjs/Template.js +29 -0
  16. package/dist/cjs/Template.js.map +1 -0
  17. package/dist/cjs/Witness.d.ts +11 -0
  18. package/dist/cjs/Witness.d.ts.map +1 -0
  19. package/dist/cjs/Witness.js +24 -0
  20. package/dist/cjs/Witness.js.map +1 -0
  21. package/dist/cjs/Wrapper.d.ts +21 -0
  22. package/dist/cjs/Wrapper.d.ts.map +1 -0
  23. package/dist/cjs/Wrapper.js +105 -0
  24. package/dist/cjs/Wrapper.js.map +1 -0
  25. package/dist/cjs/Wrapper.spec..d.ts +2 -0
  26. package/dist/cjs/Wrapper.spec..d.ts.map +1 -0
  27. package/dist/cjs/Wrapper.spec..js +39 -0
  28. package/dist/cjs/Wrapper.spec..js.map +1 -0
  29. package/dist/cjs/index.d.ts +8 -4
  30. package/dist/cjs/index.d.ts.map +1 -1
  31. package/dist/cjs/index.js +10 -9
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/docs.json +2874 -8
  34. package/dist/esm/Payload.d.ts +21 -0
  35. package/dist/esm/Payload.d.ts.map +1 -0
  36. package/dist/esm/Payload.js +2 -0
  37. package/dist/esm/Payload.js.map +1 -0
  38. package/dist/esm/Plugin.d.ts +5 -0
  39. package/dist/esm/Plugin.d.ts.map +1 -0
  40. package/dist/esm/Plugin.js +16 -0
  41. package/dist/esm/Plugin.js.map +1 -0
  42. package/dist/esm/Schema.d.ts +3 -0
  43. package/dist/esm/Schema.d.ts.map +1 -0
  44. package/dist/esm/Schema.js +2 -0
  45. package/dist/esm/Schema.js.map +1 -0
  46. package/dist/esm/Template.d.ts +3 -0
  47. package/dist/esm/Template.d.ts.map +1 -0
  48. package/dist/esm/Template.js +25 -0
  49. package/dist/esm/Template.js.map +1 -0
  50. package/dist/esm/Witness.d.ts +11 -0
  51. package/dist/esm/Witness.d.ts.map +1 -0
  52. package/dist/esm/Witness.js +19 -0
  53. package/dist/esm/Witness.js.map +1 -0
  54. package/dist/esm/Wrapper.d.ts +21 -0
  55. package/dist/esm/Wrapper.d.ts.map +1 -0
  56. package/dist/esm/Wrapper.js +80 -0
  57. package/dist/esm/Wrapper.js.map +1 -0
  58. package/dist/esm/Wrapper.spec..d.ts +2 -0
  59. package/dist/esm/Wrapper.spec..d.ts.map +1 -0
  60. package/dist/esm/Wrapper.spec..js +33 -0
  61. package/dist/esm/Wrapper.spec..js.map +1 -0
  62. package/dist/esm/index.d.ts +8 -4
  63. package/dist/esm/index.d.ts.map +1 -1
  64. package/dist/esm/index.js +8 -9
  65. package/dist/esm/index.js.map +1 -1
  66. package/package.json +12 -4
  67. package/src/Payload.ts +24 -0
  68. package/src/Plugin.spec.ts +11 -0
  69. package/src/Plugin.ts +20 -0
  70. package/src/Schema.ts +2 -0
  71. package/src/Template.ts +26 -0
  72. package/src/Witness.spec.ts +14 -0
  73. package/src/Witness.ts +24 -0
  74. package/src/Wrapper.spec..ts +33 -0
  75. package/src/Wrapper.ts +100 -0
  76. package/src/index.ts +9 -10
  77. package/src/schema.json +115 -0
  78. package/src/index.spec.ts +0 -10
@@ -0,0 +1,21 @@
1
+ import { XyoNetworkPayload } from '@xyo-network/network';
2
+ import { XyoPayload } from '@xyo-network/payload';
3
+ import { XyoDomainPayloadSchema } from './Schema';
4
+ export interface XyoAlias {
5
+ /** @field cononical name (ex. network.xyo.example) */
6
+ name?: string;
7
+ /** @field huri to the aliased payload */
8
+ huri: string;
9
+ }
10
+ export interface XyoDomainPayload extends XyoPayload {
11
+ schema: XyoDomainPayloadSchema;
12
+ /** @field Values associated with this domain [out] */
13
+ aliases?: Record<string, XyoAlias>;
14
+ /** @field Additional config files [huri] [out] */
15
+ additional?: string[];
16
+ /** @field Known networks [out] */
17
+ networks?: XyoNetworkPayload[];
18
+ }
19
+ /** @deprecated use XyoDomainPayload instead */
20
+ export declare type XyoDomainConfig = XyoDomainPayload;
21
+ //# sourceMappingURL=Payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,WAAW,QAAQ;IACvB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,MAAM,EAAE,sBAAsB,CAAA;IAC9B,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAC/B;AAED,+CAA+C;AAC/C,oBAAY,eAAe,GAAG,gBAAgB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Payload.js","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { XyoPayloadPluginFunc } from '@xyo-network/payload-plugin';
2
+ import { XyoDomainPayload } from './Payload';
3
+ import { XyoDomainPayloadSchema } from './Schema';
4
+ export declare const XyoDomainPayloadPlugin: XyoPayloadPluginFunc<XyoDomainPayloadSchema, XyoDomainPayload>;
5
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAE1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAIjD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CAAC,sBAAsB,EAAE,gBAAgB,CAU9F,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { createXyoPayloadPlugin } from '@xyo-network/payload-plugin';
3
+ import { XyoDomainPayloadSchema } from './Schema';
4
+ import { XyoDomainWitness } from './Witness';
5
+ import { XyoDomainPayloadWrapper } from './Wrapper';
6
+ export const XyoDomainPayloadPlugin = () => createXyoPayloadPlugin({
7
+ schema: XyoDomainPayloadSchema,
8
+ witness: () => {
9
+ return new XyoDomainWitness();
10
+ },
11
+ wrap: (payload) => {
12
+ assertEx(payload.schema === XyoDomainPayloadSchema);
13
+ return new XyoDomainPayloadWrapper(payload);
14
+ },
15
+ });
16
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,sBAAsB,EAAwB,MAAM,6BAA6B,CAAA;AAG1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAmE,GAAG,EAAE,CACzG,sBAAsB,CAAC;IACrB,MAAM,EAAE,sBAAsB;IAC9B,OAAO,EAAE,GAAqB,EAAE;QAC9B,OAAO,IAAI,gBAAgB,EAAE,CAAA;IAC/B,CAAC;IACD,IAAI,EAAE,CAAC,OAAmB,EAA2B,EAAE;QACrD,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAA;QACnD,OAAO,IAAI,uBAAuB,CAAC,OAA2B,CAAC,CAAA;IACjE,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare type XyoDomainPayloadSchema = 'network.xyo.domain';
2
+ export declare const XyoDomainPayloadSchema: XyoDomainPayloadSchema;
3
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB,GAAG,oBAAoB,CAAA;AACzD,eAAO,MAAM,sBAAsB,EAAE,sBAA6C,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const XyoDomainPayloadSchema = 'network.xyo.domain';
2
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,sBAAsB,GAA2B,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { XyoDomainPayload } from './Payload';
2
+ export declare const domainConfigTemplate: () => XyoDomainPayload;
3
+ //# sourceMappingURL=Template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../src/Template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,eAAO,MAAM,oBAAoB,QAAO,gBAuBtC,CAAA"}
@@ -0,0 +1,25 @@
1
+ export const domainConfigTemplate = () => ({
2
+ aliases: {
3
+ 'com.example.id': {
4
+ huri: '',
5
+ },
6
+ },
7
+ networks: [
8
+ {
9
+ name: '',
10
+ nodes: [
11
+ {
12
+ name: '',
13
+ schema: 'network.xyo.node',
14
+ slug: '',
15
+ type: 'archivist',
16
+ uri: '',
17
+ },
18
+ ],
19
+ schema: 'network.xyo.network',
20
+ slug: '',
21
+ },
22
+ ],
23
+ schema: 'network.xyo.domain',
24
+ });
25
+ //# sourceMappingURL=Template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Template.js","sourceRoot":"","sources":["../../src/Template.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAqB,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE;QACP,gBAAgB,EAAE;YAChB,IAAI,EAAE,EAAE;SACT;KACF;IACD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE,EAAE;iBACR;aACF;YACD,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,EAAE;SACT;KACF;IACD,MAAM,EAAE,oBAAoB;CAC7B,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { XyoSimpleWitness } from '@xyo-network/witness';
2
+ import { XyoDomainPayload } from './Payload';
3
+ export declare class XyoDomainWitness extends XyoSimpleWitness<XyoDomainPayload> {
4
+ static dmarc: string;
5
+ constructor();
6
+ static generateDmarc(domain: string): string;
7
+ }
8
+ /** @deprecated use XyoDomainWitness instead */
9
+ export declare class XyoDomainConfigWitness extends XyoDomainWitness {
10
+ }
11
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAK5C,qBAAa,gBAAiB,SAAQ,gBAAgB,CAAC,gBAAgB,CAAC;IACtE,OAAc,KAAK,SAAS;;WASd,aAAa,CAAC,MAAM,EAAE,MAAM;CAG3C;AAED,+CAA+C;AAC/C,qBAAa,sBAAuB,SAAQ,gBAAgB;CAAG"}
@@ -0,0 +1,19 @@
1
+ import { XyoSimpleWitness } from '@xyo-network/witness';
2
+ import { domainConfigTemplate } from './Template';
3
+ const template = domainConfigTemplate();
4
+ export class XyoDomainWitness extends XyoSimpleWitness {
5
+ static dmarc = '_xyo';
6
+ constructor() {
7
+ super({
8
+ schema: template.schema,
9
+ template,
10
+ });
11
+ }
12
+ static generateDmarc(domain) {
13
+ return `${XyoDomainWitness.dmarc}.${domain}`;
14
+ }
15
+ }
16
+ /** @deprecated use XyoDomainWitness instead */
17
+ export class XyoDomainConfigWitness extends XyoDomainWitness {
18
+ }
19
+ //# sourceMappingURL=Witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAA;AAEvC,MAAM,OAAO,gBAAiB,SAAQ,gBAAkC;IAC/D,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA;IAE5B;QACE,KAAK,CAAC;YACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,MAAc;QACxC,OAAO,GAAG,gBAAgB,CAAC,KAAK,IAAI,MAAM,EAAE,CAAA;IAC9C,CAAC;;AAGH,+CAA+C;AAC/C,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;CAAG"}
@@ -0,0 +1,21 @@
1
+ import { XyoFetchedPayload, XyoPayloadWrapper } from '@xyo-network/payload';
2
+ import { XyoAlias, XyoDomainPayload } from './Payload';
3
+ export interface XyoFetchedAlias extends XyoFetchedPayload {
4
+ alias: XyoAlias;
5
+ }
6
+ export declare class XyoDomainPayloadWrapper<T extends XyoDomainPayload = XyoDomainPayload> extends XyoPayloadWrapper<T> {
7
+ aliases?: XyoFetchedAlias[] | null;
8
+ private getNetwork;
9
+ private findArchivistUri;
10
+ private fetchAlias;
11
+ fetchAliases(networkSlug?: string): Promise<void>;
12
+ fetch(networkSlug?: string): Promise<void>;
13
+ static discoverRootFileWithProxy(domain: string, proxy?: string): Promise<XyoDomainPayloadWrapper<XyoDomainPayload> | undefined>;
14
+ static discoverRootFileDirect(domain: string): Promise<XyoDomainPayloadWrapper<XyoDomainPayload> | undefined>;
15
+ static discoverRootFile(domain: string, proxy?: string): Promise<XyoDomainPayloadWrapper<XyoDomainPayload> | undefined>;
16
+ static discoverDNSEntry(domain: string): Promise<XyoDomainPayloadWrapper<XyoDomainPayload> | undefined>;
17
+ static discover(reverseDomainName: string, proxy?: string): Promise<XyoDomainPayloadWrapper<XyoDomainPayload> | undefined>;
18
+ }
19
+ /** @deprecated use XyoDomainPayloadWrapper instead */
20
+ export declare type XyoDomainConfigWrapper = XyoDomainPayloadWrapper;
21
+ //# sourceMappingURL=Wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAI9F,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEtD,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED,qBAAa,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;IAEzC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;YAIV,UAAU;IAMX,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM;IAgBjC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM;WAInB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAA6C;WAW5F,sBAAsB,CAAC,MAAM,EAAE,MAAM;WASrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;WAI/C,gBAAgB,CAAC,MAAM,EAAE,MAAM;WAe/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAOvE;AAED,sDAAsD;AACtD,oBAAY,sBAAsB,GAAG,uBAAuB,CAAA"}
@@ -0,0 +1,80 @@
1
+ import { DnsRecordType, domainResolve, isBrowser } from '@xyo-network/core';
2
+ import { XyoNetworkPayloadWrapper } from '@xyo-network/network';
3
+ import { Huri, XyoPayloadWrapper } from '@xyo-network/payload';
4
+ import axios from 'axios';
5
+ import reverse from 'lodash/reverse';
6
+ export class XyoDomainPayloadWrapper extends XyoPayloadWrapper {
7
+ aliases;
8
+ getNetwork(hash) {
9
+ return hash ? this.payload.networks?.find((value) => new XyoNetworkPayloadWrapper(value).hash === hash) : this.payload.networks?.[0];
10
+ }
11
+ findArchivistUri(hash) {
12
+ return this.getNetwork(hash)?.nodes?.find((payload) => (payload.type === 'archivist' ? payload : undefined))?.uri;
13
+ }
14
+ async fetchAlias(alias, huriOptions) {
15
+ const huri = new Huri(alias.huri, huriOptions);
16
+ const payload = await huri.fetch();
17
+ return payload ? { alias, huri, payload: payload } : null;
18
+ }
19
+ async fetchAliases(networkSlug) {
20
+ //set it to null to signify fetch ran
21
+ this.aliases = null;
22
+ const archivistUri = this.findArchivistUri(networkSlug);
23
+ if (this.payload.aliases) {
24
+ const fetchedAliases = await Promise.all(Object.entries(this.payload.aliases ?? {}).map(([, alias]) => {
25
+ return this.fetchAlias(alias, { archivistUri });
26
+ }));
27
+ //cast to XyoFetchedPayload[] after we filter out any null/undefined entries
28
+ this.aliases = fetchedAliases.filter((alias) => alias);
29
+ }
30
+ }
31
+ async fetch(networkSlug) {
32
+ await this.fetchAliases(networkSlug);
33
+ }
34
+ static async discoverRootFileWithProxy(domain, proxy = 'https://api.archivist.xyo.network/domain') {
35
+ try {
36
+ const requestUrl = `${proxy}/${domain.split('.').reverse().join('.')}`;
37
+ const config = (await axios.get(requestUrl)).data.data;
38
+ return new XyoDomainPayloadWrapper(config);
39
+ }
40
+ catch (ex) {
41
+ const error = ex;
42
+ console.log(`XyoDomainConfig root file not found using proxy [${domain}] [${error.code}]`);
43
+ }
44
+ }
45
+ static async discoverRootFileDirect(domain) {
46
+ try {
47
+ const config = (await axios.get(`https://${domain}/xyo-config.json`)).data;
48
+ return new XyoDomainPayloadWrapper(config);
49
+ }
50
+ catch (ex) {
51
+ console.log(`XyoDomainConfig root file not found [${domain}]`);
52
+ }
53
+ }
54
+ static async discoverRootFile(domain, proxy) {
55
+ return isBrowser() || proxy ? await this.discoverRootFileWithProxy(domain, proxy) : await this.discoverRootFileDirect(domain);
56
+ }
57
+ static async discoverDNSEntry(domain) {
58
+ try {
59
+ const hash = (await domainResolve(`_xyo.${domain}`, DnsRecordType.TXT))?.Answer?.[0]?.data;
60
+ if (hash) {
61
+ const huri = new Huri(hash);
62
+ const payload = (await huri.fetch());
63
+ if (payload) {
64
+ return new XyoDomainPayloadWrapper(payload);
65
+ }
66
+ }
67
+ }
68
+ catch (ex) {
69
+ console.log(`XyoDomainConfig dns reading error entry not found [${domain}]`);
70
+ }
71
+ }
72
+ static async discover(reverseDomainName, proxy) {
73
+ const parts = reverseDomainName.split('.');
74
+ for (let i = 2; i <= parts.length; i++) {
75
+ const domainToCheck = reverse(parts.filter((_, index) => index < i)).join('.');
76
+ return (await this.discoverDNSEntry(domainToCheck)) ?? (await this.discoverRootFile(domainToCheck, proxy));
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=Wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAqB,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,IAAI,EAAkC,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC9F,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAQpC,MAAM,OAAO,uBAAuE,SAAQ,iBAAoB;IACvG,OAAO,CAA2B;IAEjC,UAAU,CAAC,IAAa;QAC9B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IACtI,CAAC;IAEO,gBAAgB,CAAC,IAAa;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAA;IACnH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,WAAyB;QACjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3D,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,WAAoB;QAC5C,qCAAqC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;YACjD,CAAC,CAAC,CACH,CAAA;YACD,4EAA4E;YAC5E,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAsB,CAAA;SAC5E;IACH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,WAAoB;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IACtC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAc,EAAE,KAAK,GAAG,0CAA0C;QAC9G,IAAI;YACF,MAAM,UAAU,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;YACtE,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAmC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;YACxF,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;SAC3C;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,KAAK,GAAG,EAAgB,CAAA;YAC9B,OAAO,CAAC,GAAG,CAAC,oDAAoD,MAAM,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;SAC3F;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAc;QACvD,IAAI;YACF,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAmB,WAAW,MAAM,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5F,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;SAC3C;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,wCAAwC,MAAM,GAAG,CAAC,CAAA;SAC/D;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,KAAc;QACjE,OAAO,SAAS,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC/H,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACjD,IAAI;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,MAAM,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;YAC1F,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3B,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAqB,CAAA;gBACxD,IAAI,OAAO,EAAE;oBACX,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAA;iBAC5C;aACF;SACF;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,sDAAsD,MAAM,GAAG,CAAC,CAAA;SAC7E;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAyB,EAAE,KAAc;QACpE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9E,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;SAC3G;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Wrapper.spec..d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.spec..d.ts","sourceRoot":"","sources":["../../src/Wrapper.spec..ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { XyoDomainPayloadWrapper } from './Wrapper';
2
+ describe('DomainPayloadWrapper', () => {
3
+ test('Valid-discover', async () => {
4
+ const wrapper = await XyoDomainPayloadWrapper.discover('network.xyo.domain');
5
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain');
6
+ await wrapper?.fetch();
7
+ expect(wrapper?.aliases?.length).toBe(3);
8
+ expect(wrapper?.aliases?.[0].huri).toBeDefined();
9
+ });
10
+ test('Valid-discover-proxy', async () => {
11
+ const wrapper = await XyoDomainPayloadWrapper.discover('network.xyo.domain', `${process.env.API_DOMAIN}/domain`);
12
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain');
13
+ await wrapper?.fetch();
14
+ expect(wrapper?.aliases?.length).toBe(3);
15
+ expect(wrapper?.aliases?.[0].huri).toBeDefined();
16
+ });
17
+ test('Invalid-discover-proxy', async () => {
18
+ const wrapper = await XyoDomainPayloadWrapper.discoverRootFileWithProxy('xyoo.network', `${process.env.API_DOMAIN}/domain`);
19
+ expect(wrapper?.payload.schema).toBeUndefined();
20
+ });
21
+ test('Valid-discover-direct', async () => {
22
+ const wrapper = await XyoDomainPayloadWrapper.discoverRootFileDirect('xyo.network');
23
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain');
24
+ await wrapper?.fetch();
25
+ expect(wrapper?.aliases?.length).toBe(3);
26
+ expect(wrapper?.aliases?.[0].huri).toBeDefined();
27
+ });
28
+ test('InValid', async () => {
29
+ const wrapper = await XyoDomainPayloadWrapper.discover('blahblah.blahblah.blahblah');
30
+ expect(wrapper).toBe(undefined);
31
+ });
32
+ });
33
+ //# sourceMappingURL=Wrapper.spec..js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.spec..js","sourceRoot":"","sources":["../../src/Wrapper.spec..ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;QAC5E,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC1D,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;QACtB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,CAAA;QAChH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC1D,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;QACtB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,yBAAyB,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,CAAA;QAC3H,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;IACjD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAA;QACnF,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC1D,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;QACtB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAA;QACpF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,5 +1,9 @@
1
- import { XyoDomainPayload } from '@xyo-network/domain';
2
- import { XyoPayloadPluginFunc } from '@xyo-network/payload-plugin';
3
- declare const plugin: XyoPayloadPluginFunc<'network.xyo.domain', XyoDomainPayload>;
4
- export default plugin;
1
+ import { XyoDomainPayloadPlugin } from './Plugin';
2
+ export * from './Payload';
3
+ export * from './Schema';
4
+ export * from './Template';
5
+ export * from './Witness';
6
+ export * from './Wrapper';
7
+ export { XyoDomainPayloadPlugin };
8
+ export default XyoDomainPayloadPlugin;
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAA0B,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAE1F,QAAA,MAAM,MAAM,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,gBAAgB,CAMrE,CAAA;AAGJ,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,sBAAsB,EAAE,CAAA;AAGjC,eAAe,sBAAsB,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,11 +1,10 @@
1
- import { XyoDomainWitness } from '@xyo-network/domain';
2
- import { createXyoPayloadPlugin } from '@xyo-network/payload-plugin';
3
- const plugin = () => createXyoPayloadPlugin({
4
- schema: 'network.xyo.domain',
5
- witness: () => {
6
- return new XyoDomainWitness();
7
- },
8
- });
1
+ import { XyoDomainPayloadPlugin } from './Plugin';
2
+ export * from './Payload';
3
+ export * from './Schema';
4
+ export * from './Template';
5
+ export * from './Witness';
6
+ export * from './Wrapper';
7
+ export { XyoDomainPayloadPlugin };
9
8
  // eslint-disable-next-line import/no-default-export
10
- export default plugin;
9
+ export default XyoDomainPayloadPlugin;
11
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAwB,MAAM,6BAA6B,CAAA;AAE1F,MAAM,MAAM,GAAiE,GAAG,EAAE,CAChF,sBAAsB,CAAC;IACrB,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,GAAqB,EAAE;QAC9B,OAAO,IAAI,gBAAgB,EAAE,CAAA;IAC/B,CAAC;CACF,CAAC,CAAA;AAEJ,oDAAoD;AACpD,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,sBAAsB,EAAE,CAAA;AAEjC,oDAAoD;AACpD,eAAe,sBAAsB,CAAA"}
package/package.json CHANGED
@@ -10,11 +10,19 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/domain": "^2.23.3",
14
- "@xyo-network/payload": "^2.23.3",
15
- "@xyo-network/payload-plugin": "^2.23.3"
13
+ "@xylabs/sdk-js": "^2.6.3",
14
+ "@xyo-network/api": "^2.24.0",
15
+ "@xyo-network/core": "^2.24.0",
16
+ "@xyo-network/network": "^2.24.0",
17
+ "@xyo-network/payload": "^2.24.0",
18
+ "@xyo-network/payload-plugin": "^2.24.0",
19
+ "@xyo-network/witness": "^2.24.0",
20
+ "axios": "^0.27.2",
21
+ "lodash": "^4.17.21",
22
+ "tslib": "^2.4.0"
16
23
  },
17
24
  "devDependencies": {
25
+ "@types/lodash": "^4.14.182",
18
26
  "@xylabs/tsconfig": "^2.5.13"
19
27
  },
20
28
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -50,6 +58,6 @@
50
58
  },
51
59
  "sideEffects": false,
52
60
  "types": "dist/esm/index.d.ts",
53
- "version": "2.23.3",
61
+ "version": "2.24.0",
54
62
  "packageManager": "yarn@3.1.1"
55
63
  }
package/src/Payload.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { XyoNetworkPayload } from '@xyo-network/network'
2
+ import { XyoPayload } from '@xyo-network/payload'
3
+
4
+ import { XyoDomainPayloadSchema } from './Schema'
5
+
6
+ export interface XyoAlias {
7
+ /** @field cononical name (ex. network.xyo.example) */
8
+ name?: string
9
+ /** @field huri to the aliased payload */
10
+ huri: string
11
+ }
12
+
13
+ export interface XyoDomainPayload extends XyoPayload {
14
+ schema: XyoDomainPayloadSchema
15
+ /** @field Values associated with this domain [out] */
16
+ aliases?: Record<string, XyoAlias>
17
+ /** @field Additional config files [huri] [out] */
18
+ additional?: string[]
19
+ /** @field Known networks [out] */
20
+ networks?: XyoNetworkPayload[]
21
+ }
22
+
23
+ /** @deprecated use XyoDomainPayload instead */
24
+ export type XyoDomainConfig = XyoDomainPayload
@@ -0,0 +1,11 @@
1
+ import { XyoPayloadPluginResolver } from '@xyo-network/payload-plugin'
2
+
3
+ import { XyoDomainPayloadPlugin } from './Plugin'
4
+ import { XyoDomainPayloadSchema } from './Schema'
5
+
6
+ describe('XyoDomainPayloadPlugin', () => {
7
+ test('Add to Resolver', () => {
8
+ const resolver = new XyoPayloadPluginResolver().register(XyoDomainPayloadPlugin())
9
+ expect(resolver.resolve({ schema: XyoDomainPayloadSchema })).toBeDefined()
10
+ })
11
+ })
package/src/Plugin.ts ADDED
@@ -0,0 +1,20 @@
1
+ import { assertEx } from '@xylabs/sdk-js'
2
+ import { XyoPayload } from '@xyo-network/payload'
3
+ import { createXyoPayloadPlugin, XyoPayloadPluginFunc } from '@xyo-network/payload-plugin'
4
+
5
+ import { XyoDomainPayload } from './Payload'
6
+ import { XyoDomainPayloadSchema } from './Schema'
7
+ import { XyoDomainWitness } from './Witness'
8
+ import { XyoDomainPayloadWrapper } from './Wrapper'
9
+
10
+ export const XyoDomainPayloadPlugin: XyoPayloadPluginFunc<XyoDomainPayloadSchema, XyoDomainPayload> = () =>
11
+ createXyoPayloadPlugin({
12
+ schema: XyoDomainPayloadSchema,
13
+ witness: (): XyoDomainWitness => {
14
+ return new XyoDomainWitness()
15
+ },
16
+ wrap: (payload: XyoPayload): XyoDomainPayloadWrapper => {
17
+ assertEx(payload.schema === XyoDomainPayloadSchema)
18
+ return new XyoDomainPayloadWrapper(payload as XyoDomainPayload)
19
+ },
20
+ })
package/src/Schema.ts ADDED
@@ -0,0 +1,2 @@
1
+ export type XyoDomainPayloadSchema = 'network.xyo.domain'
2
+ export const XyoDomainPayloadSchema: XyoDomainPayloadSchema = 'network.xyo.domain'
@@ -0,0 +1,26 @@
1
+ import { XyoDomainPayload } from './Payload'
2
+
3
+ export const domainConfigTemplate = (): XyoDomainPayload => ({
4
+ aliases: {
5
+ 'com.example.id': {
6
+ huri: '',
7
+ },
8
+ },
9
+ networks: [
10
+ {
11
+ name: '',
12
+ nodes: [
13
+ {
14
+ name: '',
15
+ schema: 'network.xyo.node',
16
+ slug: '',
17
+ type: 'archivist',
18
+ uri: '',
19
+ },
20
+ ],
21
+ schema: 'network.xyo.network',
22
+ slug: '',
23
+ },
24
+ ],
25
+ schema: 'network.xyo.domain',
26
+ })
@@ -0,0 +1,14 @@
1
+ import { XyoDomainWitness } from './Witness'
2
+
3
+ describe('XyoDomainConfigWitness', () => {
4
+ test('valid-instantiation', () => {
5
+ const witness = new XyoDomainWitness()
6
+ expect(witness).toBeTruthy()
7
+ expect(witness?.config?.schema).toBe('network.xyo.domain')
8
+ expect(XyoDomainWitness.dmarc).toBe('_xyo')
9
+ })
10
+
11
+ test('generatesDemarc', () => {
12
+ expect(XyoDomainWitness.generateDmarc('foo')).toBe('_xyo.foo')
13
+ })
14
+ })
package/src/Witness.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { XyoSimpleWitness } from '@xyo-network/witness'
2
+
3
+ import { XyoDomainPayload } from './Payload'
4
+ import { domainConfigTemplate } from './Template'
5
+
6
+ const template = domainConfigTemplate()
7
+
8
+ export class XyoDomainWitness extends XyoSimpleWitness<XyoDomainPayload> {
9
+ public static dmarc = '_xyo'
10
+
11
+ constructor() {
12
+ super({
13
+ schema: template.schema,
14
+ template,
15
+ })
16
+ }
17
+
18
+ public static generateDmarc(domain: string) {
19
+ return `${XyoDomainWitness.dmarc}.${domain}`
20
+ }
21
+ }
22
+
23
+ /** @deprecated use XyoDomainWitness instead */
24
+ export class XyoDomainConfigWitness extends XyoDomainWitness {}
@@ -0,0 +1,33 @@
1
+ import { XyoDomainPayloadWrapper } from './Wrapper'
2
+
3
+ describe('DomainPayloadWrapper', () => {
4
+ test('Valid-discover', async () => {
5
+ const wrapper = await XyoDomainPayloadWrapper.discover('network.xyo.domain')
6
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain')
7
+ await wrapper?.fetch()
8
+ expect(wrapper?.aliases?.length).toBe(3)
9
+ expect(wrapper?.aliases?.[0].huri).toBeDefined()
10
+ })
11
+ test('Valid-discover-proxy', async () => {
12
+ const wrapper = await XyoDomainPayloadWrapper.discover('network.xyo.domain', `${process.env.API_DOMAIN}/domain`)
13
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain')
14
+ await wrapper?.fetch()
15
+ expect(wrapper?.aliases?.length).toBe(3)
16
+ expect(wrapper?.aliases?.[0].huri).toBeDefined()
17
+ })
18
+ test('Invalid-discover-proxy', async () => {
19
+ const wrapper = await XyoDomainPayloadWrapper.discoverRootFileWithProxy('xyoo.network', `${process.env.API_DOMAIN}/domain`)
20
+ expect(wrapper?.payload.schema).toBeUndefined()
21
+ })
22
+ test('Valid-discover-direct', async () => {
23
+ const wrapper = await XyoDomainPayloadWrapper.discoverRootFileDirect('xyo.network')
24
+ expect(wrapper?.payload.schema).toBe('network.xyo.domain')
25
+ await wrapper?.fetch()
26
+ expect(wrapper?.aliases?.length).toBe(3)
27
+ expect(wrapper?.aliases?.[0].huri).toBeDefined()
28
+ })
29
+ test('InValid', async () => {
30
+ const wrapper = await XyoDomainPayloadWrapper.discover('blahblah.blahblah.blahblah')
31
+ expect(wrapper).toBe(undefined)
32
+ })
33
+ })