@xyo-network/diviner-address-space-memory 4.3.0 → 5.0.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/dist/neutral/MemoryAddressSpaceDiviner.d.ts.map +1 -1
- package/dist/neutral/index.mjs +2 -2
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +21 -17
- package/src/MemoryAddressSpaceDiviner.ts +2 -2
- package/src/spec/MemoryAddressSpaceDiviner.spec.ts +62 -0
- package/xy.config.ts +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEjE;;GAEG;AACH,qBAAa,yBAAyB,CAAC,OAAO,SAAS,yBAAyB,GAAG,yBAAyB,CAAE,SAAQ,mBAAmB,CACvI,OAAO,EACP,OAAO,EACP,cAAc,CACf;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA4D;IAC5G,gBAAyB,mBAAmB,EAAE,MAAM,CAAkC;cAE7D,aAAa,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"MemoryAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEjE;;GAEG;AACH,qBAAa,yBAAyB,CAAC,OAAO,SAAS,yBAAyB,GAAG,yBAAyB,CAAE,SAAQ,mBAAmB,CACvI,OAAO,EACP,OAAO,EACP,cAAc,CACf;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA4D;IAC5G,gBAAyB,mBAAmB,EAAE,MAAM,CAAkC;cAE7D,aAAa,CAAC,QAAQ,GAAE,OAAO,EAAO;CAWhE"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -9,8 +9,8 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
|
9
9
|
var MemoryAddressSpaceDiviner = class extends AddressSpaceDiviner {
|
|
10
10
|
static configSchemas = [...super.configSchemas, AddressSpaceDivinerConfigSchema];
|
|
11
11
|
static defaultConfigSchema = AddressSpaceDivinerConfigSchema;
|
|
12
|
-
async divineHandler(payloads) {
|
|
13
|
-
assertEx(
|
|
12
|
+
async divineHandler(payloads = []) {
|
|
13
|
+
assertEx(payloads.length === 0, () => "MemoryAddressSpaceDiviner.divine does not allow payloads to be sent");
|
|
14
14
|
const archivistMod = assertEx(await this.archivistInstance(), () => "Unable to resolve archivist");
|
|
15
15
|
const archivist = ArchivistWrapper.wrap(archivistMod, this.account);
|
|
16
16
|
const all = await archivist.all?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/MemoryAddressSpaceDiviner.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { isBoundWitnessWithStorageMeta } from '@xyo-network/boundwitness-model'\nimport { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract'\nimport type { AddressSpaceDivinerParams } from '@xyo-network/diviner-address-space-model'\nimport { AddressSpaceDivinerConfigSchema } from '@xyo-network/diviner-address-space-model'\nimport type { AddressPayload } from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\n/**\n * This Diviner returns the list of all addresses encountered for the reachable archivists\n */\nexport class MemoryAddressSpaceDiviner<TParams extends AddressSpaceDivinerParams = AddressSpaceDivinerParams> extends AddressSpaceDiviner<\n TParams,\n Payload,\n AddressPayload\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressSpaceDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = AddressSpaceDivinerConfigSchema\n\n protected override async divineHandler(payloads
|
|
1
|
+
{"version":3,"sources":["../../src/MemoryAddressSpaceDiviner.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { isBoundWitnessWithStorageMeta } from '@xyo-network/boundwitness-model'\nimport { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract'\nimport type { AddressSpaceDivinerParams } from '@xyo-network/diviner-address-space-model'\nimport { AddressSpaceDivinerConfigSchema } from '@xyo-network/diviner-address-space-model'\nimport type { AddressPayload } from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\n/**\n * This Diviner returns the list of all addresses encountered for the reachable archivists\n */\nexport class MemoryAddressSpaceDiviner<TParams extends AddressSpaceDivinerParams = AddressSpaceDivinerParams> extends AddressSpaceDiviner<\n TParams,\n Payload,\n AddressPayload\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressSpaceDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = AddressSpaceDivinerConfigSchema\n\n protected override async divineHandler(payloads: Payload[] = []) {\n assertEx(payloads.length === 0, () => 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent')\n const archivistMod = assertEx(await this.archivistInstance(), () => 'Unable to resolve archivist')\n const archivist = ArchivistWrapper.wrap(archivistMod, this.account)\n const all = await archivist.all?.()\n const bwLists = all?.filter(isBoundWitnessWithStorageMeta) ?? []\n const addresses = new Set<Address>(bwLists.flatMap(bw => bw.addresses).map(address => address.toLowerCase() as Address))\n return await Promise.all(\n [...addresses].map(address => new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()),\n )\n }\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAEzB,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAC9C,SAAS,2BAA2B;AAEpC,SAAS,uCAAuC;AAEhD,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAMxB,IAAM,4BAAN,cAA+G,oBAIpH;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,+BAA+B;AAAA,EAC3G,OAAyB,sBAA8B;AAAA,EAEvD,MAAyB,cAAc,WAAsB,CAAC,GAAG;AAC/D,aAAS,SAAS,WAAW,GAAG,MAAM,qEAAqE;AAC3G,UAAM,eAAe,SAAS,MAAM,KAAK,kBAAkB,GAAG,MAAM,6BAA6B;AACjG,UAAM,YAAY,iBAAiB,KAAK,cAAc,KAAK,OAAO;AAClE,UAAM,MAAM,MAAM,UAAU,MAAM;AAClC,UAAM,UAAU,KAAK,OAAO,6BAA6B,KAAK,CAAC;AAC/D,UAAM,YAAY,IAAI,IAAa,QAAQ,QAAQ,QAAM,GAAG,SAAS,EAAE,IAAI,aAAW,QAAQ,YAAY,CAAY,CAAC;AACvH,WAAO,MAAM,QAAQ;AAAA,MACnB,CAAC,GAAG,SAAS,EAAE,IAAI,aAAW,IAAI,eAA+B,EAAE,QAAQ,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;AAAA,IACzH;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/diviner-address-space-memory",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -28,25 +28,29 @@
|
|
|
28
28
|
},
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"src"
|
|
34
|
+
],
|
|
31
35
|
"dependencies": {
|
|
32
|
-
"@xylabs/assert": "^
|
|
33
|
-
"@xyo-network/archivist-wrapper": "^
|
|
34
|
-
"@xyo-network/boundwitness-model": "^
|
|
35
|
-
"@xyo-network/diviner-address-space-abstract": "^
|
|
36
|
-
"@xyo-network/diviner-address-space-model": "^
|
|
37
|
-
"@xyo-network/module-model": "^
|
|
38
|
-
"@xyo-network/payload-builder": "^
|
|
39
|
-
"@xyo-network/payload-model": "^
|
|
36
|
+
"@xylabs/assert": "^5.0.0",
|
|
37
|
+
"@xyo-network/archivist-wrapper": "^5.0.0",
|
|
38
|
+
"@xyo-network/boundwitness-model": "^5.0.0",
|
|
39
|
+
"@xyo-network/diviner-address-space-abstract": "^5.0.0",
|
|
40
|
+
"@xyo-network/diviner-address-space-model": "^5.0.0",
|
|
41
|
+
"@xyo-network/module-model": "^5.0.0",
|
|
42
|
+
"@xyo-network/payload-builder": "^5.0.0",
|
|
43
|
+
"@xyo-network/payload-model": "^5.0.0"
|
|
40
44
|
},
|
|
41
45
|
"devDependencies": {
|
|
42
|
-
"@xylabs/hex": "^
|
|
43
|
-
"@xylabs/ts-scripts-yarn3": "^7.0.
|
|
44
|
-
"@xylabs/tsconfig": "^7.0.
|
|
45
|
-
"@xylabs/vitest-extended": "^
|
|
46
|
-
"@xyo-network/account": "^
|
|
47
|
-
"@xyo-network/archivist-memory": "^
|
|
48
|
-
"@xyo-network/node-memory": "^
|
|
49
|
-
"@xyo-network/payload-wrapper": "^
|
|
46
|
+
"@xylabs/hex": "^5.0.0",
|
|
47
|
+
"@xylabs/ts-scripts-yarn3": "^7.0.2",
|
|
48
|
+
"@xylabs/tsconfig": "^7.0.2",
|
|
49
|
+
"@xylabs/vitest-extended": "^5.0.0",
|
|
50
|
+
"@xyo-network/account": "^5.0.0",
|
|
51
|
+
"@xyo-network/archivist-memory": "^5.0.0",
|
|
52
|
+
"@xyo-network/node-memory": "^5.0.0",
|
|
53
|
+
"@xyo-network/payload-wrapper": "^5.0.0",
|
|
50
54
|
"typescript": "^5.8.3",
|
|
51
55
|
"vitest": "^3.2.4"
|
|
52
56
|
},
|
|
@@ -21,8 +21,8 @@ export class MemoryAddressSpaceDiviner<TParams extends AddressSpaceDivinerParams
|
|
|
21
21
|
static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressSpaceDivinerConfigSchema]
|
|
22
22
|
static override readonly defaultConfigSchema: Schema = AddressSpaceDivinerConfigSchema
|
|
23
23
|
|
|
24
|
-
protected override async divineHandler(payloads
|
|
25
|
-
assertEx(
|
|
24
|
+
protected override async divineHandler(payloads: Payload[] = []) {
|
|
25
|
+
assertEx(payloads.length === 0, () => 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent')
|
|
26
26
|
const archivistMod = assertEx(await this.archivistInstance(), () => 'Unable to resolve archivist')
|
|
27
27
|
const archivist = ArchivistWrapper.wrap(archivistMod, this.account)
|
|
28
28
|
const all = await archivist.all?.()
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import '@xylabs/vitest-extended'
|
|
2
|
+
|
|
3
|
+
import { Account } from '@xyo-network/account'
|
|
4
|
+
import { MemoryArchivist } from '@xyo-network/archivist-memory'
|
|
5
|
+
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
6
|
+
import { AddressSpaceDivinerConfigSchema } from '@xyo-network/diviner-address-space-model'
|
|
7
|
+
import { AddressSchema } from '@xyo-network/module-model'
|
|
8
|
+
import { MemoryNode } from '@xyo-network/node-memory'
|
|
9
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
10
|
+
import {
|
|
11
|
+
describe, expect, it,
|
|
12
|
+
} from 'vitest'
|
|
13
|
+
|
|
14
|
+
import { MemoryAddressSpaceDiviner } from '../MemoryAddressSpaceDiviner.ts'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @group module
|
|
18
|
+
* @group diviner
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
describe('MemoryAddressSpaceDiviner', () => {
|
|
22
|
+
describe('divine (listed archivists)', () => {
|
|
23
|
+
it('returns divined result', async () => {
|
|
24
|
+
const node = await MemoryNode.create({ account: 'random' })
|
|
25
|
+
const archivistAccount = await Account.random()
|
|
26
|
+
const divinerAccount = await Account.random()
|
|
27
|
+
const wrapperAccount = await Account.random()
|
|
28
|
+
const archivist = ArchivistWrapper.wrap(
|
|
29
|
+
await MemoryArchivist.create({ account: archivistAccount, config: { schema: MemoryArchivist.defaultConfigSchema, storeQueries: true } }),
|
|
30
|
+
wrapperAccount,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
const payload1 = PayloadWrapper.wrap({ index: 1, schema: 'network.xyo.test' })
|
|
34
|
+
const payload2 = PayloadWrapper.wrap({ index: 2, schema: 'network.xyo.test' })
|
|
35
|
+
const payload3 = PayloadWrapper.wrap({ index: 3, schema: 'network.xyo.test' })
|
|
36
|
+
|
|
37
|
+
await archivist.insert([payload1.payload])
|
|
38
|
+
await archivist.insert([payload2.payload])
|
|
39
|
+
await archivist.insert([payload3.payload])
|
|
40
|
+
|
|
41
|
+
const all = await archivist.all()
|
|
42
|
+
|
|
43
|
+
expect(all).toBeArrayOfSize(6)
|
|
44
|
+
|
|
45
|
+
await node.register(archivist)
|
|
46
|
+
await node.attach(archivist.address)
|
|
47
|
+
const diviner = await MemoryAddressSpaceDiviner.create({
|
|
48
|
+
account: divinerAccount,
|
|
49
|
+
config: { archivist: archivist.address, schema: AddressSpaceDivinerConfigSchema },
|
|
50
|
+
})
|
|
51
|
+
await node.register(diviner)
|
|
52
|
+
await node.attach(diviner.address)
|
|
53
|
+
const results = await diviner.divine()
|
|
54
|
+
expect(results.length).toBe(1)
|
|
55
|
+
for (const payload of results) {
|
|
56
|
+
expect(payload.schema).toBe(AddressSchema)
|
|
57
|
+
}
|
|
58
|
+
const addresses = results.map(payload => payload.address)
|
|
59
|
+
expect(addresses).toContain(wrapperAccount.address)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
})
|