@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.
- package/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/MemoryAddressSpaceDiviner.js +48 -0
- package/dist/cjs/MemoryAddressSpaceDiviner.js.map +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +12009 -0
- package/dist/esm/MemoryAddressSpaceDiviner.js +38 -0
- package/dist/esm/MemoryAddressSpaceDiviner.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/MemoryAddressSpaceDiviner.d.ts +23 -0
- package/dist/types/MemoryAddressSpaceDiviner.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +64 -0
- package/src/MemoryAddressSpaceDiviner.ts +66 -0
- package/src/index.ts +1 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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'
|