@xyo-network/diviner-address-space-memory 2.56.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.
@@ -0,0 +1,38 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
+ import { AddressSchema } from '@xyo-network/address-payload-plugin';
4
+ import { ArchivistGetQuerySchema, ArchivistWrapper } from '@xyo-network/archivist';
5
+ import { BoundWitnessSchema } from '@xyo-network/boundwitness-model';
6
+ import { AddressSpaceSchema } from '@xyo-network/diviner-address-space-model';
7
+ import { PayloadBuilder } from '@xyo-network/payload-builder';
8
+ export const MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`;
9
+ /**
10
+ * This Diviner returns the list of all addresses encountered for the reachable archivists
11
+ */
12
+ export class MemoryAddressSpaceDiviner extends AbstractDiviner {
13
+ static configSchema = MemoryAddressSpaceDivinerConfigSchema;
14
+ async divine(payloads) {
15
+ assertEx(!payloads?.length, 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent');
16
+ const archivists = await this.archivists();
17
+ assertEx(archivists.length > 0, 'Did not find any archivists');
18
+ const bwLists = (await Promise.all(archivists.map(async (archivist) => {
19
+ const all = await archivist.all?.();
20
+ return all?.filter((payload) => payload.schema === BoundWitnessSchema) ?? [];
21
+ }))).flat();
22
+ const addresses = new Set(bwLists
23
+ .map((bw) => bw.addresses)
24
+ .flat()
25
+ .map((address) => address.toLowerCase()));
26
+ return [...addresses].map((address) => new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build());
27
+ }
28
+ async archivists() {
29
+ if (this.config.archivists) {
30
+ return await this.resolve({ address: this.config.archivists });
31
+ }
32
+ else {
33
+ //get all reachable archivists
34
+ return (await this.resolve({ query: [[ArchivistGetQuerySchema]] })).map((archivist) => ArchivistWrapper.wrap(archivist, this.account));
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=MemoryAddressSpaceDiviner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryAddressSpaceDiviner.js","sourceRoot":"","sources":["../../src/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAmB,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACnG,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,CAAC,MAAM,qCAAqC,GAA0C,GAAG,kBAAkB,gBAAgB,CAAA;AAYjI;;GAEG;AACH,MAAM,OAAO,yBACX,SAAQ,eAAwB;IAGhC,MAAM,CAAU,YAAY,GAAG,qCAAqC,CAAA;IAEpE,KAAK,CAAC,MAAM,CAAC,QAAoB;QAC/B,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,qEAAqE,CAAC,CAAA;QAClG,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC1C,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,CACd,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,CAAA;YACnC,OAAQ,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,kBAAkB,CAAoB,IAAI,EAAE,CAAA;QAClG,CAAC,CAAC,CACH,CACF,CAAC,IAAI,EAAE,CAAA;QACR,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,OAAO;aACJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;aACzB,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAA;QACD,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACnH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC1B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;SAChF;aAAM;YACL,8BAA8B;YAC9B,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACrG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/C,CAAA;SACF;IACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './MemoryAddressSpaceDiviner';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
+ import { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract';
3
+ import { AddressSpaceSchema } from '@xyo-network/diviner-address-space-model';
4
+ import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
+ import { AnyConfigSchema } from '@xyo-network/module-model';
6
+ import { Payload } from '@xyo-network/payload-model';
7
+ export type MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`;
8
+ export declare const MemoryAddressSpaceDivinerConfigSchema: MemoryAddressSpaceDivinerConfigSchema;
9
+ export type MemoryAddressSpaceDivinerConfig = DivinerConfig<{
10
+ address?: string;
11
+ archivists?: string[];
12
+ schema: MemoryAddressSpaceDivinerConfigSchema;
13
+ }>;
14
+ export type MemoryAddressSpaceDivinerParams<TConfig extends AnyConfigSchema<MemoryAddressSpaceDivinerConfig> = AnyConfigSchema<MemoryAddressSpaceDivinerConfig>> = DivinerParams<TConfig>;
15
+ /**
16
+ * This Diviner returns the list of all addresses encountered for the reachable archivists
17
+ */
18
+ export declare class MemoryAddressSpaceDiviner<TParams extends MemoryAddressSpaceDivinerParams> extends AbstractDiviner<TParams> implements AddressSpaceDiviner {
19
+ static configSchema: "network.xyo.diviner.address.space.memory.config";
20
+ divine(payloads?: Payload[]): Promise<Payload[]>;
21
+ private archivists;
22
+ }
23
+ //# sourceMappingURL=MemoryAddressSpaceDiviner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAI/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,qCAAqC,GAAG,GAAG,kBAAkB,gBAAgB,CAAA;AACzF,eAAO,MAAM,qCAAqC,EAAE,qCAA6E,CAAA;AAEjI,MAAM,MAAM,+BAA+B,GAAG,aAAa,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,qCAAqC,CAAA;CAC9C,CAAC,CAAA;AAEF,MAAM,MAAM,+BAA+B,CACzC,OAAO,SAAS,eAAe,CAAC,+BAA+B,CAAC,GAAG,eAAe,CAAC,+BAA+B,CAAC,IACjH,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1B;;GAEG;AACH,qBAAa,yBAAyB,CAAC,OAAO,SAAS,+BAA+B,CACpF,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,mBAAmB;IAE9B,OAAgB,YAAY,oDAAwC;IAE9D,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAqBxC,UAAU;CAUzB"}
@@ -0,0 +1,2 @@
1
+ export * from './MemoryAddressSpaceDiviner';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@xyo-network/diviner-address-space-memory",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xylabs/assert": "^2.7.6",
14
+ "@xyo-network/abstract-diviner": "^2.56.0",
15
+ "@xyo-network/address-payload-plugin": "^2.56.0",
16
+ "@xyo-network/archivist": "^2.56.0",
17
+ "@xyo-network/boundwitness-model": "^2.56.0",
18
+ "@xyo-network/diviner-address-space-abstract": "^2.56.0",
19
+ "@xyo-network/diviner-address-space-model": "^2.56.0",
20
+ "@xyo-network/diviner-model": "^2.56.0",
21
+ "@xyo-network/module-model": "^2.56.0",
22
+ "@xyo-network/payload-builder": "^2.56.0",
23
+ "@xyo-network/payload-model": "^2.56.0"
24
+ },
25
+ "devDependencies": {
26
+ "@xylabs/ts-scripts-yarn3": "^2.16.5",
27
+ "@xylabs/tsconfig": "^2.16.5",
28
+ "typescript": "^4.9.5"
29
+ },
30
+ "description": "Primary SDK for using XYO Protocol 2.0",
31
+ "browser": "dist/esm/index.js",
32
+ "docs": "dist/docs.json",
33
+ "exports": {
34
+ ".": {
35
+ "node": {
36
+ "import": "./dist/esm/index.js",
37
+ "require": "./dist/cjs/index.js"
38
+ },
39
+ "browser": {
40
+ "import": "./dist/esm/index.js",
41
+ "require": "./dist/cjs/index.js"
42
+ },
43
+ "default": "./dist/esm/index.js"
44
+ },
45
+ "./dist/docs.json": {
46
+ "default": "./dist/docs.json"
47
+ },
48
+ "./package.json": "./package.json"
49
+ },
50
+ "main": "dist/cjs/index.js",
51
+ "module": "dist/esm/index.js",
52
+ "homepage": "https://xyo.network",
53
+ "license": "LGPL-3.0",
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
60
+ },
61
+ "sideEffects": false,
62
+ "types": "dist/types/index.d.ts",
63
+ "version": "2.56.0"
64
+ }
@@ -0,0 +1,66 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { AbstractDiviner } from '@xyo-network/abstract-diviner'
3
+ import { AddressSchema } from '@xyo-network/address-payload-plugin'
4
+ import { ArchivistGetQuerySchema, ArchivistModule, ArchivistWrapper } from '@xyo-network/archivist'
5
+ import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'
6
+ import { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract'
7
+ import { AddressSpaceSchema } from '@xyo-network/diviner-address-space-model'
8
+ import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'
9
+ import { AnyConfigSchema } from '@xyo-network/module-model'
10
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
11
+ import { Payload } from '@xyo-network/payload-model'
12
+
13
+ export type MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`
14
+ export const MemoryAddressSpaceDivinerConfigSchema: MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`
15
+
16
+ export type MemoryAddressSpaceDivinerConfig = DivinerConfig<{
17
+ address?: string
18
+ archivists?: string[]
19
+ schema: MemoryAddressSpaceDivinerConfigSchema
20
+ }>
21
+
22
+ export type MemoryAddressSpaceDivinerParams<
23
+ TConfig extends AnyConfigSchema<MemoryAddressSpaceDivinerConfig> = AnyConfigSchema<MemoryAddressSpaceDivinerConfig>,
24
+ > = DivinerParams<TConfig>
25
+
26
+ /**
27
+ * This Diviner returns the list of all addresses encountered for the reachable archivists
28
+ */
29
+ export class MemoryAddressSpaceDiviner<TParams extends MemoryAddressSpaceDivinerParams>
30
+ extends AbstractDiviner<TParams>
31
+ implements AddressSpaceDiviner
32
+ {
33
+ static override configSchema = MemoryAddressSpaceDivinerConfigSchema
34
+
35
+ async divine(payloads?: Payload[]): Promise<Payload[]> {
36
+ assertEx(!payloads?.length, 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent')
37
+ const archivists = await this.archivists()
38
+ assertEx(archivists.length > 0, 'Did not find any archivists')
39
+ const bwLists = (
40
+ await Promise.all(
41
+ archivists.map(async (archivist) => {
42
+ const all = await archivist.all?.()
43
+ return (all?.filter((payload) => payload.schema === BoundWitnessSchema) as BoundWitness[]) ?? []
44
+ }),
45
+ )
46
+ ).flat()
47
+ const addresses = new Set<string>(
48
+ bwLists
49
+ .map((bw) => bw.addresses)
50
+ .flat()
51
+ .map((address) => address.toLowerCase()),
52
+ )
53
+ return [...addresses].map((address) => new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build())
54
+ }
55
+
56
+ private async archivists(): Promise<ArchivistModule[]> {
57
+ if (this.config.archivists) {
58
+ return await this.resolve<ArchivistModule>({ address: this.config.archivists })
59
+ } else {
60
+ //get all reachable archivists
61
+ return (await this.resolve<ArchivistModule>({ query: [[ArchivistGetQuerySchema]] })).map((archivist) =>
62
+ ArchivistWrapper.wrap(archivist, this.account),
63
+ )
64
+ }
65
+ }
66
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './MemoryAddressSpaceDiviner'