@xyo-network/diviner-payload-pointer-memory 3.6.9 → 3.6.11
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/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/Diviner.ts
|
|
5
2
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
6
3
|
import { AbstractDiviner } from "@xyo-network/diviner-abstract";
|
|
7
4
|
import { asDivinerInstance } from "@xyo-network/diviner-model";
|
|
8
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
isPointerPayload,
|
|
7
|
+
PayloadPointerDivinerConfigSchema
|
|
8
|
+
} from "@xyo-network/diviner-payload-pointer-model";
|
|
9
9
|
|
|
10
10
|
// src/findPayload.ts
|
|
11
11
|
import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
@@ -17,8 +17,12 @@ import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
|
17
17
|
// src/combineRules.ts
|
|
18
18
|
import { assertEx } from "@xylabs/assert";
|
|
19
19
|
import { exists } from "@xylabs/exists";
|
|
20
|
-
import {
|
|
21
|
-
|
|
20
|
+
import {
|
|
21
|
+
isPayloadAddressRule,
|
|
22
|
+
isPayloadSchemaRule,
|
|
23
|
+
isPayloadSequenceOrderRule
|
|
24
|
+
} from "@xyo-network/diviner-payload-pointer-model";
|
|
25
|
+
var combineRules = (rules) => {
|
|
22
26
|
const addresses = rules.flat().filter(isPayloadAddressRule).map((r) => r.address).filter(exists);
|
|
23
27
|
const schemas = rules.flat().filter(isPayloadSchemaRule).map((r) => r.schema).filter(exists);
|
|
24
28
|
assertEx(schemas.length, () => "At least one schema must be supplied");
|
|
@@ -32,12 +36,17 @@ var combineRules = /* @__PURE__ */ __name((rules) => {
|
|
|
32
36
|
order,
|
|
33
37
|
schemas
|
|
34
38
|
};
|
|
35
|
-
}
|
|
39
|
+
};
|
|
36
40
|
|
|
37
41
|
// src/findPayload.ts
|
|
38
42
|
var limit = 1;
|
|
39
|
-
var createBoundWitnessFilterFromSearchCriteria =
|
|
40
|
-
const {
|
|
43
|
+
var createBoundWitnessFilterFromSearchCriteria = (searchCriteria) => {
|
|
44
|
+
const {
|
|
45
|
+
addresses,
|
|
46
|
+
order = "desc",
|
|
47
|
+
schemas,
|
|
48
|
+
cursor
|
|
49
|
+
} = searchCriteria;
|
|
41
50
|
const query = {
|
|
42
51
|
addresses,
|
|
43
52
|
limit,
|
|
@@ -46,11 +55,9 @@ var createBoundWitnessFilterFromSearchCriteria = /* @__PURE__ */ __name((searchC
|
|
|
46
55
|
schema: BoundWitnessDivinerQuerySchema
|
|
47
56
|
};
|
|
48
57
|
if (cursor) query.cursor = cursor;
|
|
49
|
-
return [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}, "createBoundWitnessFilterFromSearchCriteria");
|
|
53
|
-
var createPayloadFilterFromSearchCriteria = /* @__PURE__ */ __name((searchCriteria) => {
|
|
58
|
+
return [query];
|
|
59
|
+
};
|
|
60
|
+
var createPayloadFilterFromSearchCriteria = (searchCriteria) => {
|
|
54
61
|
const { order = "desc", schemas } = searchCriteria;
|
|
55
62
|
const query = {
|
|
56
63
|
limit,
|
|
@@ -58,11 +65,9 @@ var createPayloadFilterFromSearchCriteria = /* @__PURE__ */ __name((searchCriter
|
|
|
58
65
|
schema: PayloadDivinerQuerySchema,
|
|
59
66
|
schemas
|
|
60
67
|
};
|
|
61
|
-
return [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}, "createPayloadFilterFromSearchCriteria");
|
|
65
|
-
var findPayload = /* @__PURE__ */ __name(async (archivist, boundWitnessDiviner, payloadDiviner, pointer) => {
|
|
68
|
+
return [query];
|
|
69
|
+
};
|
|
70
|
+
var findPayload = async (archivist, boundWitnessDiviner, payloadDiviner, pointer) => {
|
|
66
71
|
const reference = pointer.reference;
|
|
67
72
|
const searchCriteria = combineRules(reference);
|
|
68
73
|
const { addresses } = searchCriteria;
|
|
@@ -77,13 +82,11 @@ var findPayload = /* @__PURE__ */ __name(async (archivist, boundWitnessDiviner,
|
|
|
77
82
|
const { schemas, order = "desc" } = searchCriteria;
|
|
78
83
|
let payloadIndex = order === "asc" ? 0 : bw.payloadHashes.length - 1;
|
|
79
84
|
if (schemas) {
|
|
80
|
-
const schemaInSearchCriteria =
|
|
85
|
+
const schemaInSearchCriteria = (schema) => schemas.includes(schema);
|
|
81
86
|
payloadIndex = order === "asc" ? bw.payloadSchemas.findIndex(schemaInSearchCriteria) : bw.payloadSchemas.findLastIndex(schemaInSearchCriteria);
|
|
82
87
|
}
|
|
83
88
|
const hash = bw.payloadHashes[payloadIndex];
|
|
84
|
-
const result2 = await archivist.get([
|
|
85
|
-
hash
|
|
86
|
-
]);
|
|
89
|
+
const result2 = await archivist.get([hash]);
|
|
87
90
|
return result2?.[0] ? PayloadWrapper.wrap(result2?.[0]).payload : void 0;
|
|
88
91
|
}
|
|
89
92
|
} else {
|
|
@@ -91,17 +94,11 @@ var findPayload = /* @__PURE__ */ __name(async (archivist, boundWitnessDiviner,
|
|
|
91
94
|
const result = await payloadDiviner.divine(filter);
|
|
92
95
|
return result?.[0] ? PayloadWrapper.wrap(result?.[0]).payload : void 0;
|
|
93
96
|
}
|
|
94
|
-
}
|
|
97
|
+
};
|
|
95
98
|
|
|
96
99
|
// src/Diviner.ts
|
|
97
100
|
var PayloadPointerDiviner = class extends AbstractDiviner {
|
|
98
|
-
static
|
|
99
|
-
__name(this, "PayloadPointerDiviner");
|
|
100
|
-
}
|
|
101
|
-
static configSchemas = [
|
|
102
|
-
...super.configSchemas,
|
|
103
|
-
PayloadPointerDivinerConfigSchema
|
|
104
|
-
];
|
|
101
|
+
static configSchemas = [...super.configSchemas, PayloadPointerDivinerConfigSchema];
|
|
105
102
|
static defaultConfigSchema = PayloadPointerDivinerConfigSchema;
|
|
106
103
|
async divineHandler(payloads) {
|
|
107
104
|
const pointer = payloads?.find(isPointerPayload);
|
|
@@ -110,14 +107,12 @@ var PayloadPointerDiviner = class extends AbstractDiviner {
|
|
|
110
107
|
const boundWitnessDiviner = await this.getBoundWitnessDiviner();
|
|
111
108
|
const payloadDiviner = await this.getPayloadDiviner();
|
|
112
109
|
const result = await findPayload(archivist, boundWitnessDiviner, payloadDiviner, pointer);
|
|
113
|
-
return result ? [
|
|
114
|
-
result
|
|
115
|
-
] : [];
|
|
110
|
+
return result ? [result] : [];
|
|
116
111
|
}
|
|
117
112
|
/**
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
113
|
+
* Returns the archivist instance for the given config
|
|
114
|
+
* @returns The archivist instance corresponding to the config
|
|
115
|
+
*/
|
|
121
116
|
async getBoundWitnessDiviner() {
|
|
122
117
|
const name = assertEx2(this.config?.boundWitnessDiviner, () => "Missing archivist in config");
|
|
123
118
|
const mod = assertEx2(await this.resolve(name), () => `Config.boundWitnessDiviner module value of ${name} not resolved`);
|
|
@@ -125,17 +120,17 @@ var PayloadPointerDiviner = class extends AbstractDiviner {
|
|
|
125
120
|
return diviner;
|
|
126
121
|
}
|
|
127
122
|
/**
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
123
|
+
* Returns the archivist instance for the given config
|
|
124
|
+
* @returns The archivist instance corresponding to the config
|
|
125
|
+
*/
|
|
131
126
|
async getConfigArchivist() {
|
|
132
127
|
const name = assertEx2(this.config?.archivist, () => "Missing archivist in config");
|
|
133
128
|
return assertEx2(await this.getArchivist(), () => `Config.archivist module value of ${name} not resolved`);
|
|
134
129
|
}
|
|
135
130
|
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
131
|
+
* Returns the archivist instance for the given config
|
|
132
|
+
* @returns The archivist instance corresponding to the config
|
|
133
|
+
*/
|
|
139
134
|
async getPayloadDiviner() {
|
|
140
135
|
const name = assertEx2(this.config?.payloadDiviner, () => "Missing payloadDiviner in config");
|
|
141
136
|
const mod = assertEx2(await this.resolve(name), () => `Config.payloadDiviner module value of ${name} not resolved`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/findPayload.ts","../../src/combineRules.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport type { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport type {\n PayloadPointerDivinerParams,\n PointerPayload,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport {\n isPointerPayload,\n PayloadPointerDivinerConfigSchema,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { findPayload } from './findPayload.ts'\n\nexport class PayloadPointerDiviner<\n TParams extends PayloadPointerDivinerParams = PayloadPointerDivinerParams,\n TIn extends PointerPayload = PointerPayload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<\n DivinerInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, PayloadPointerDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = PayloadPointerDivinerConfigSchema\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n const pointer = payloads?.find(isPointerPayload)\n if (!pointer) return []\n const archivist = await this.getConfigArchivist()\n const boundWitnessDiviner = await this.getBoundWitnessDiviner()\n const payloadDiviner = await this.getPayloadDiviner()\n const result = (await findPayload(archivist, boundWitnessDiviner, payloadDiviner, pointer)) as TOut | undefined\n return result ? [result] : []\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getBoundWitnessDiviner(): Promise<BoundWitnessDiviner> {\n const name = assertEx(this.config?.boundWitnessDiviner, () => 'Missing archivist in config')\n const mod = assertEx(await this.resolve(name), () => `Config.boundWitnessDiviner module value of ${name} not resolved`)\n const diviner = assertEx(asDivinerInstance(mod), () => `Module ${name} is not an BoundWitnessDiviner`)\n return diviner as BoundWitnessDiviner\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getConfigArchivist(): Promise<ArchivistInstance> {\n const name = assertEx(this.config?.archivist, () => 'Missing archivist in config')\n return assertEx(await this.getArchivist(), () => `Config.archivist module value of ${name} not resolved`)\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getPayloadDiviner(): Promise<PayloadDiviner> {\n const name = assertEx(this.config?.payloadDiviner, () => 'Missing payloadDiviner in config')\n const mod = assertEx(await this.resolve(name), () => `Config.payloadDiviner module value of ${name} not resolved`)\n const diviner = assertEx(asDivinerInstance(mod), () => `Module ${name} is not an PayloadDiviner`)\n return diviner as PayloadDiviner\n }\n}\n","import type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport type { BoundWitnessDivinerQueryPayload } from '@xyo-network/diviner-boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport type { PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport type {\n PayloadRule, PayloadSearchCriteria, PointerPayload,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport { isBoundWitnessPointer } from '@xyo-network/diviner-payload-pointer-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { combineRules } from './combineRules.ts'\n\nconst limit = 1\n\nconst createBoundWitnessFilterFromSearchCriteria = (searchCriteria: PayloadSearchCriteria): BoundWitnessDivinerQueryPayload[] => {\n const {\n addresses, order = 'desc', schemas, cursor,\n } = searchCriteria\n const query: BoundWitnessDivinerQueryPayload = {\n addresses,\n limit,\n order,\n payload_schemas: schemas,\n schema: BoundWitnessDivinerQuerySchema,\n }\n if (cursor) query.cursor = cursor\n return [query]\n}\n\nconst createPayloadFilterFromSearchCriteria = (searchCriteria: PayloadSearchCriteria): Payload[] => {\n const { order = 'desc', schemas } = searchCriteria\n const query: PayloadDivinerQueryPayload = {\n limit, order, schema: PayloadDivinerQuerySchema, schemas,\n }\n return [query]\n}\n\nexport const findPayload = async (\n archivist: ArchivistInstance,\n boundWitnessDiviner: BoundWitnessDiviner,\n payloadDiviner: PayloadDiviner,\n pointer: PointerPayload,\n): Promise<Payload | undefined> => {\n const reference = pointer.reference as PayloadRule[][]\n const searchCriteria = combineRules(reference)\n const { addresses } = searchCriteria\n const findWitnessedPayload = addresses?.length\n const returnBoundWitness = isBoundWitnessPointer(pointer)\n if (returnBoundWitness || findWitnessedPayload) {\n const filter = createBoundWitnessFilterFromSearchCriteria(searchCriteria)\n const result = await boundWitnessDiviner.divine(filter)\n const bw = result?.[0] ? BoundWitnessWrapper.parse(result[0]) : undefined\n if (bw) {\n if (returnBoundWitness) return bw.payload\n const { schemas, order = 'desc' } = searchCriteria\n let payloadIndex = order === 'asc' ? 0 : bw.payloadHashes.length - 1\n if (schemas) {\n const schemaInSearchCriteria = (schema: Schema) => schemas.includes(schema)\n payloadIndex = order === 'asc' ? bw.payloadSchemas.findIndex(schemaInSearchCriteria) : bw.payloadSchemas.findLastIndex(schemaInSearchCriteria)\n }\n const hash = bw.payloadHashes[payloadIndex]\n const result = await archivist.get([hash])\n return result?.[0] ? PayloadWrapper.wrap(result?.[0]).payload : undefined\n }\n } else {\n // Find payload\n const filter = createPayloadFilterFromSearchCriteria(searchCriteria)\n const result = await payloadDiviner.divine(filter)\n return result?.[0] ? PayloadWrapper.wrap(result?.[0]).payload : undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport type { Order } from '@xyo-network/diviner-payload-model'\nimport type {\n PayloadRule,\n PayloadSearchCriteria,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport {\n isPayloadAddressRule,\n isPayloadSchemaRule,\n isPayloadSequenceOrderRule,\n} from '@xyo-network/diviner-payload-pointer-model'\n\n// TODO: Could make it so that composability is such that we:\n// • AND first dimension of array\n// • OR 2nd dimension of array\nexport const combineRules = (rules: PayloadRule[][]): PayloadSearchCriteria => {\n const addresses = rules\n .flat()\n .filter(isPayloadAddressRule)\n .map(r => r.address)\n .filter(exists) as Address[]\n\n const schemas = rules\n .flat()\n .filter(isPayloadSchemaRule)\n .map(r => r.schema)\n .filter(exists)\n assertEx(schemas.length, () => 'At least one schema must be supplied')\n\n const sequenceOrderRule = rules.flat().filter(isPayloadSequenceOrderRule).filter(exists)\n assertEx(sequenceOrderRule.length < 2, () => 'Must not supply more than 1 direction/timestamp rule')\n\n const order: Order = sequenceOrderRule[0]?.order || 'desc'\n const cursor = sequenceOrderRule[0]?.sequence\n\n return {\n addresses,\n cursor,\n order,\n schemas,\n }\n}\n"],"mappings":"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","names":["assertEx","AbstractDiviner","asDivinerInstance","isPointerPayload","PayloadPointerDivinerConfigSchema","BoundWitnessWrapper","BoundWitnessDivinerQuerySchema","PayloadDivinerQuerySchema","isBoundWitnessPointer","PayloadWrapper","assertEx","exists","isPayloadAddressRule","isPayloadSchemaRule","isPayloadSequenceOrderRule","combineRules","rules","addresses","flat","filter","isPayloadAddressRule","map","r","address","exists","schemas","isPayloadSchemaRule","schema","assertEx","length","sequenceOrderRule","isPayloadSequenceOrderRule","order","cursor","sequence","limit","createBoundWitnessFilterFromSearchCriteria","searchCriteria","addresses","order","schemas","cursor","query","payload_schemas","schema","BoundWitnessDivinerQuerySchema","createPayloadFilterFromSearchCriteria","PayloadDivinerQuerySchema","findPayload","archivist","boundWitnessDiviner","payloadDiviner","pointer","reference","combineRules","findWitnessedPayload","length","returnBoundWitness","isBoundWitnessPointer","filter","result","divine","bw","BoundWitnessWrapper","parse","undefined","payload","payloadIndex","payloadHashes","schemaInSearchCriteria","includes","payloadSchemas","findIndex","findLastIndex","hash","get","PayloadWrapper","wrap","PayloadPointerDiviner","AbstractDiviner","configSchemas","PayloadPointerDivinerConfigSchema","defaultConfigSchema","divineHandler","payloads","pointer","find","isPointerPayload","archivist","getConfigArchivist","boundWitnessDiviner","getBoundWitnessDiviner","payloadDiviner","getPayloadDiviner","result","findPayload","name","assertEx","config","mod","resolve","diviner","asDivinerInstance","getArchivist"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/findPayload.ts","../../src/combineRules.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport type { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport type {\n PayloadPointerDivinerParams,\n PointerPayload,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport {\n isPointerPayload,\n PayloadPointerDivinerConfigSchema,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { findPayload } from './findPayload.ts'\n\nexport class PayloadPointerDiviner<\n TParams extends PayloadPointerDivinerParams = PayloadPointerDivinerParams,\n TIn extends PointerPayload = PointerPayload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<\n DivinerInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, PayloadPointerDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = PayloadPointerDivinerConfigSchema\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n const pointer = payloads?.find(isPointerPayload)\n if (!pointer) return []\n const archivist = await this.getConfigArchivist()\n const boundWitnessDiviner = await this.getBoundWitnessDiviner()\n const payloadDiviner = await this.getPayloadDiviner()\n const result = (await findPayload(archivist, boundWitnessDiviner, payloadDiviner, pointer)) as TOut | undefined\n return result ? [result] : []\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getBoundWitnessDiviner(): Promise<BoundWitnessDiviner> {\n const name = assertEx(this.config?.boundWitnessDiviner, () => 'Missing archivist in config')\n const mod = assertEx(await this.resolve(name), () => `Config.boundWitnessDiviner module value of ${name} not resolved`)\n const diviner = assertEx(asDivinerInstance(mod), () => `Module ${name} is not an BoundWitnessDiviner`)\n return diviner as BoundWitnessDiviner\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getConfigArchivist(): Promise<ArchivistInstance> {\n const name = assertEx(this.config?.archivist, () => 'Missing archivist in config')\n return assertEx(await this.getArchivist(), () => `Config.archivist module value of ${name} not resolved`)\n }\n\n /**\n * Returns the archivist instance for the given config\n * @returns The archivist instance corresponding to the config\n */\n private async getPayloadDiviner(): Promise<PayloadDiviner> {\n const name = assertEx(this.config?.payloadDiviner, () => 'Missing payloadDiviner in config')\n const mod = assertEx(await this.resolve(name), () => `Config.payloadDiviner module value of ${name} not resolved`)\n const diviner = assertEx(asDivinerInstance(mod), () => `Module ${name} is not an PayloadDiviner`)\n return diviner as PayloadDiviner\n }\n}\n","import type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport type { BoundWitnessDivinerQueryPayload } from '@xyo-network/diviner-boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport type { PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport type {\n PayloadRule, PayloadSearchCriteria, PointerPayload,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport { isBoundWitnessPointer } from '@xyo-network/diviner-payload-pointer-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { combineRules } from './combineRules.ts'\n\nconst limit = 1\n\nconst createBoundWitnessFilterFromSearchCriteria = (searchCriteria: PayloadSearchCriteria): BoundWitnessDivinerQueryPayload[] => {\n const {\n addresses, order = 'desc', schemas, cursor,\n } = searchCriteria\n const query: BoundWitnessDivinerQueryPayload = {\n addresses,\n limit,\n order,\n payload_schemas: schemas,\n schema: BoundWitnessDivinerQuerySchema,\n }\n if (cursor) query.cursor = cursor\n return [query]\n}\n\nconst createPayloadFilterFromSearchCriteria = (searchCriteria: PayloadSearchCriteria): Payload[] => {\n const { order = 'desc', schemas } = searchCriteria\n const query: PayloadDivinerQueryPayload = {\n limit, order, schema: PayloadDivinerQuerySchema, schemas,\n }\n return [query]\n}\n\nexport const findPayload = async (\n archivist: ArchivistInstance,\n boundWitnessDiviner: BoundWitnessDiviner,\n payloadDiviner: PayloadDiviner,\n pointer: PointerPayload,\n): Promise<Payload | undefined> => {\n const reference = pointer.reference as PayloadRule[][]\n const searchCriteria = combineRules(reference)\n const { addresses } = searchCriteria\n const findWitnessedPayload = addresses?.length\n const returnBoundWitness = isBoundWitnessPointer(pointer)\n if (returnBoundWitness || findWitnessedPayload) {\n const filter = createBoundWitnessFilterFromSearchCriteria(searchCriteria)\n const result = await boundWitnessDiviner.divine(filter)\n const bw = result?.[0] ? BoundWitnessWrapper.parse(result[0]) : undefined\n if (bw) {\n if (returnBoundWitness) return bw.payload\n const { schemas, order = 'desc' } = searchCriteria\n let payloadIndex = order === 'asc' ? 0 : bw.payloadHashes.length - 1\n if (schemas) {\n const schemaInSearchCriteria = (schema: Schema) => schemas.includes(schema)\n payloadIndex = order === 'asc' ? bw.payloadSchemas.findIndex(schemaInSearchCriteria) : bw.payloadSchemas.findLastIndex(schemaInSearchCriteria)\n }\n const hash = bw.payloadHashes[payloadIndex]\n const result = await archivist.get([hash])\n return result?.[0] ? PayloadWrapper.wrap(result?.[0]).payload : undefined\n }\n } else {\n // Find payload\n const filter = createPayloadFilterFromSearchCriteria(searchCriteria)\n const result = await payloadDiviner.divine(filter)\n return result?.[0] ? PayloadWrapper.wrap(result?.[0]).payload : undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport type { Order } from '@xyo-network/diviner-payload-model'\nimport type {\n PayloadRule,\n PayloadSearchCriteria,\n} from '@xyo-network/diviner-payload-pointer-model'\nimport {\n isPayloadAddressRule,\n isPayloadSchemaRule,\n isPayloadSequenceOrderRule,\n} from '@xyo-network/diviner-payload-pointer-model'\n\n// TODO: Could make it so that composability is such that we:\n// • AND first dimension of array\n// • OR 2nd dimension of array\nexport const combineRules = (rules: PayloadRule[][]): PayloadSearchCriteria => {\n const addresses = rules\n .flat()\n .filter(isPayloadAddressRule)\n .map(r => r.address)\n .filter(exists) as Address[]\n\n const schemas = rules\n .flat()\n .filter(isPayloadSchemaRule)\n .map(r => r.schema)\n .filter(exists)\n assertEx(schemas.length, () => 'At least one schema must be supplied')\n\n const sequenceOrderRule = rules.flat().filter(isPayloadSequenceOrderRule).filter(exists)\n assertEx(sequenceOrderRule.length < 2, () => 'Must not supply more than 1 direction/timestamp rule')\n\n const order: Order = sequenceOrderRule[0]?.order || 'desc'\n const cursor = sequenceOrderRule[0]?.sequence\n\n return {\n addresses,\n cursor,\n order,\n schemas,\n }\n}\n"],"mappings":"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","names":["assertEx","result","assertEx"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/diviner-payload-pointer-memory",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.11",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -29,42 +29,42 @@
|
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@xylabs/assert": "^4.
|
|
33
|
-
"@xylabs/exists": "^4.
|
|
34
|
-
"@xylabs/hex": "^4.
|
|
35
|
-
"@xyo-network/archivist-model": "^3.6.
|
|
36
|
-
"@xyo-network/boundwitness-wrapper": "^3.6.
|
|
37
|
-
"@xyo-network/diviner-abstract": "^3.6.
|
|
38
|
-
"@xyo-network/diviner-boundwitness-abstract": "^3.6.
|
|
39
|
-
"@xyo-network/diviner-boundwitness-model": "^3.6.
|
|
40
|
-
"@xyo-network/diviner-model": "^3.6.
|
|
41
|
-
"@xyo-network/diviner-payload-abstract": "^3.6.
|
|
42
|
-
"@xyo-network/diviner-payload-model": "^3.6.
|
|
43
|
-
"@xyo-network/diviner-payload-pointer-model": "^3.6.
|
|
44
|
-
"@xyo-network/payload-model": "^3.6.
|
|
45
|
-
"@xyo-network/payload-wrapper": "^3.6.
|
|
32
|
+
"@xylabs/assert": "^4.5.1",
|
|
33
|
+
"@xylabs/exists": "^4.5.1",
|
|
34
|
+
"@xylabs/hex": "^4.5.1",
|
|
35
|
+
"@xyo-network/archivist-model": "^3.6.11",
|
|
36
|
+
"@xyo-network/boundwitness-wrapper": "^3.6.11",
|
|
37
|
+
"@xyo-network/diviner-abstract": "^3.6.11",
|
|
38
|
+
"@xyo-network/diviner-boundwitness-abstract": "^3.6.11",
|
|
39
|
+
"@xyo-network/diviner-boundwitness-model": "^3.6.11",
|
|
40
|
+
"@xyo-network/diviner-model": "^3.6.11",
|
|
41
|
+
"@xyo-network/diviner-payload-abstract": "^3.6.11",
|
|
42
|
+
"@xyo-network/diviner-payload-model": "^3.6.11",
|
|
43
|
+
"@xyo-network/diviner-payload-pointer-model": "^3.6.11",
|
|
44
|
+
"@xyo-network/payload-model": "^3.6.11",
|
|
45
|
+
"@xyo-network/payload-wrapper": "^3.6.11"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/uuid": "^10.0.0",
|
|
49
|
-
"@xylabs/delay": "^4.
|
|
49
|
+
"@xylabs/delay": "^4.5.1",
|
|
50
50
|
"@xylabs/ts-scripts-yarn3": "^4.2.6",
|
|
51
51
|
"@xylabs/tsconfig": "^4.2.6",
|
|
52
|
-
"@xylabs/vitest-extended": "^4.
|
|
53
|
-
"@xyo-network/account": "^3.6.
|
|
54
|
-
"@xyo-network/account-model": "^3.6.
|
|
55
|
-
"@xyo-network/archivist-memory": "^3.6.
|
|
56
|
-
"@xyo-network/boundwitness-builder": "^3.6.
|
|
57
|
-
"@xyo-network/boundwitness-model": "^3.6.
|
|
58
|
-
"@xyo-network/diviner-boundwitness-memory": "^3.6.
|
|
59
|
-
"@xyo-network/diviner-payload-generic": "^3.6.
|
|
60
|
-
"@xyo-network/diviner-payload-memory": "^3.6.
|
|
61
|
-
"@xyo-network/node-memory": "^3.6.
|
|
62
|
-
"@xyo-network/node-model": "^3.6.
|
|
63
|
-
"@xyo-network/payload-builder": "^3.6.
|
|
64
|
-
"@xyo-network/wallet-model": "^3.6.
|
|
65
|
-
"typescript": "^5.7.
|
|
66
|
-
"uuid": "^11.0.
|
|
67
|
-
"vitest": "^
|
|
52
|
+
"@xylabs/vitest-extended": "^4.5.1",
|
|
53
|
+
"@xyo-network/account": "^3.6.11",
|
|
54
|
+
"@xyo-network/account-model": "^3.6.11",
|
|
55
|
+
"@xyo-network/archivist-memory": "^3.6.11",
|
|
56
|
+
"@xyo-network/boundwitness-builder": "^3.6.11",
|
|
57
|
+
"@xyo-network/boundwitness-model": "^3.6.11",
|
|
58
|
+
"@xyo-network/diviner-boundwitness-memory": "^3.6.11",
|
|
59
|
+
"@xyo-network/diviner-payload-generic": "^3.6.11",
|
|
60
|
+
"@xyo-network/diviner-payload-memory": "^3.6.11",
|
|
61
|
+
"@xyo-network/node-memory": "^3.6.11",
|
|
62
|
+
"@xyo-network/node-model": "^3.6.11",
|
|
63
|
+
"@xyo-network/payload-builder": "^3.6.11",
|
|
64
|
+
"@xyo-network/wallet-model": "^3.6.11",
|
|
65
|
+
"typescript": "^5.7.3",
|
|
66
|
+
"uuid": "^11.0.5",
|
|
67
|
+
"vitest": "^3.0.4"
|
|
68
68
|
},
|
|
69
69
|
"publishConfig": {
|
|
70
70
|
"access": "public"
|
|
@@ -2,11 +2,13 @@ import { Account } from '@xyo-network/account'
|
|
|
2
2
|
import type { AccountInstance } from '@xyo-network/account-model'
|
|
3
3
|
|
|
4
4
|
let _unitTestSigningAccount: Promise<AccountInstance> | undefined
|
|
5
|
-
let _otherUnitTestSigningAccount: Promise<AccountInstance> | undefined
|
|
5
|
+
// let _otherUnitTestSigningAccount: Promise<AccountInstance> | undefined
|
|
6
6
|
|
|
7
7
|
export const unitTestSigningAccount = () =>
|
|
8
8
|
(_unitTestSigningAccount
|
|
9
9
|
= _unitTestSigningAccount ?? Account.create({ phrase: 'draw seven setup planet bitter return old bronze neither nephew panel pelican' }))
|
|
10
|
+
/*
|
|
10
11
|
export const otherUnitTestSigningAccount = () =>
|
|
11
12
|
(_otherUnitTestSigningAccount
|
|
12
13
|
= _otherUnitTestSigningAccount ?? Account.create({ phrase: 'pitch rich dentist meadow few club place dirt push sustain innocent fix' }))
|
|
14
|
+
*/
|
|
@@ -3,14 +3,15 @@ import type { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
4
|
|
|
5
5
|
import { unitTestSigningAccount } from '../Account/index.ts'
|
|
6
|
-
import { getNewPayloads } from '../Payload/index.ts'
|
|
6
|
+
// import { getNewPayloads } from '../Payload/index.ts'
|
|
7
7
|
|
|
8
8
|
export const getNewBlock = async (...payloads: Payload[]): Promise<BoundWitness> => {
|
|
9
9
|
return (await (new BoundWitnessBuilder().witness(await unitTestSigningAccount()).payloads(payloads)).build())[0]
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/*
|
|
12
13
|
export const getNewBlockWithPayloads = async (numPayloads = 1) => {
|
|
13
|
-
return getNewBlock(...(
|
|
14
|
+
return getNewBlock(...(getNewPayloads(numPayloads)))
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export const getNewBlocks = async (numBoundWitnesses = 1): Promise<Array<BoundWitness>> => {
|
|
@@ -28,8 +29,10 @@ export const getNewBlocksWithPayloads = async (numBoundWitnesses = 1, numPayload
|
|
|
28
29
|
.fill(0)
|
|
29
30
|
.map(async () => {
|
|
30
31
|
return (
|
|
31
|
-
await (new BoundWitnessBuilder().witness(await unitTestSigningAccount()).payloads(
|
|
32
|
+
await (new BoundWitnessBuilder().witness(await unitTestSigningAccount()).payloads(getNewPayloads(numPayloads))).build()
|
|
32
33
|
)[0]
|
|
33
34
|
}),
|
|
34
35
|
)
|
|
35
36
|
}
|
|
37
|
+
|
|
38
|
+
*/
|