@xyo-network/diviner-stateful 2.84.19 → 2.85.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.
@@ -10,7 +10,7 @@ export type AnyModule<TParams extends StatefulModuleParams = StatefulModuleParam
10
10
  export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/object").BaseParamsFields & {
11
11
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
12
12
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
13
- accountDerivationPath?: string | undefined;
13
+ accountPath?: string | undefined;
14
14
  readonly archivist?: string | undefined;
15
15
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
16
16
  readonly name?: string | undefined;
@@ -27,7 +27,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
27
27
  readonly storeQueries?: boolean | undefined;
28
28
  readonly timestamp?: boolean | undefined;
29
29
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
30
- accountDerivationPath?: string | undefined;
30
+ accountPath?: string | undefined;
31
31
  readonly archivist?: string | undefined;
32
32
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
33
33
  readonly name?: string | undefined;
@@ -56,11 +56,10 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
56
56
  schema: string;
57
57
  };
58
58
  ephemeralQueryAccountEnabled?: boolean | undefined;
59
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
60
59
  } = import("@xyo-network/object").BaseParamsFields & {
61
60
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
62
61
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
63
- accountDerivationPath?: string | undefined;
62
+ accountPath?: string | undefined;
64
63
  readonly archivist?: string | undefined;
65
64
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
66
65
  readonly name?: string | undefined;
@@ -77,7 +76,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
77
76
  readonly storeQueries?: boolean | undefined;
78
77
  readonly timestamp?: boolean | undefined;
79
78
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
80
- accountDerivationPath?: string | undefined;
79
+ accountPath?: string | undefined;
81
80
  readonly archivist?: string | undefined;
82
81
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
83
82
  readonly name?: string | undefined;
@@ -106,7 +105,6 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
106
105
  schema: string;
107
106
  };
108
107
  ephemeralQueryAccountEnabled?: boolean | undefined;
109
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
110
108
  }, TModule extends AnyModule<TParams> = AnyModule<TParams>, TState extends StateDictionary = StateDictionary>(ModuleBase: TModule) => (abstract new (...args: any[]) => {
111
109
  _lastState?: ModuleState<TState> | undefined;
112
110
  /**
@@ -158,7 +156,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
158
156
  }, "schema"> & {
159
157
  schema: "network.xyo.boundwitness";
160
158
  }, TConf extends import("@xyo-network/payload-model").SchemaFields & object & {
161
- accountDerivationPath?: string | undefined;
159
+ accountPath?: string | undefined;
162
160
  readonly archivist?: string | undefined;
163
161
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
164
162
  readonly name?: string | undefined;
@@ -175,7 +173,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
175
173
  readonly storeQueries?: boolean | undefined;
176
174
  readonly timestamp?: boolean | undefined;
177
175
  } & import("@xyo-network/module-model").ArchivingModuleConfig = import("@xyo-network/payload-model").SchemaFields & object & {
178
- accountDerivationPath?: string | undefined;
176
+ accountPath?: string | undefined;
179
177
  readonly archivist?: string | undefined;
180
178
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
181
179
  readonly name?: string | undefined;
@@ -207,7 +205,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
207
205
  }, "schema"> & {
208
206
  schema: "network.xyo.boundwitness";
209
207
  }, TConf_1 extends import("@xyo-network/payload-model").SchemaFields & object & {
210
- accountDerivationPath?: string | undefined;
208
+ accountPath?: string | undefined;
211
209
  readonly archivist?: string | undefined;
212
210
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
213
211
  readonly name?: string | undefined;
@@ -224,7 +222,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
224
222
  readonly storeQueries?: boolean | undefined;
225
223
  readonly timestamp?: boolean | undefined;
226
224
  } & import("@xyo-network/module-model").ArchivingModuleConfig = import("@xyo-network/payload-model").SchemaFields & object & {
227
- accountDerivationPath?: string | undefined;
225
+ accountPath?: string | undefined;
228
226
  readonly archivist?: string | undefined;
229
227
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
230
228
  readonly name?: string | undefined;
@@ -258,7 +256,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
258
256
  resolve<T_2 extends ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
259
257
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
260
258
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
261
- accountDerivationPath?: string | undefined;
259
+ accountPath?: string | undefined;
262
260
  readonly archivist?: string | undefined;
263
261
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
264
262
  readonly name?: string | undefined;
@@ -275,7 +273,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
275
273
  readonly storeQueries?: boolean | undefined;
276
274
  readonly timestamp?: boolean | undefined;
277
275
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
278
- accountDerivationPath?: string | undefined;
276
+ accountPath?: string | undefined;
279
277
  readonly archivist?: string | undefined;
280
278
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
281
279
  readonly name?: string | undefined;
@@ -295,11 +293,10 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
295
293
  schema: string;
296
294
  };
297
295
  ephemeralQueryAccountEnabled?: boolean | undefined;
298
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
299
296
  }, import("@xyo-network/module-model").ModuleEventData<object>> = ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
300
297
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
301
298
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
302
- accountDerivationPath?: string | undefined;
299
+ accountPath?: string | undefined;
303
300
  readonly archivist?: string | undefined;
304
301
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
305
302
  readonly name?: string | undefined;
@@ -316,7 +313,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
316
313
  readonly storeQueries?: boolean | undefined;
317
314
  readonly timestamp?: boolean | undefined;
318
315
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
319
- accountDerivationPath?: string | undefined;
316
+ accountPath?: string | undefined;
320
317
  readonly archivist?: string | undefined;
321
318
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
322
319
  readonly name?: string | undefined;
@@ -336,12 +333,11 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
336
333
  schema: string;
337
334
  };
338
335
  ephemeralQueryAccountEnabled?: boolean | undefined;
339
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
340
336
  }, import("@xyo-network/module-model").ModuleEventData<object>>>(filter?: import("@xyo-network/module-model").ModuleFilter<T_2> | undefined, options?: import("@xyo-network/module-model").ModuleFilterOptions<T_2> | undefined): import("@xylabs/promise").Promisable<T_2[]>;
341
337
  resolve<T_3 extends ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
342
338
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
343
339
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
344
- accountDerivationPath?: string | undefined;
340
+ accountPath?: string | undefined;
345
341
  readonly archivist?: string | undefined;
346
342
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
347
343
  readonly name?: string | undefined;
@@ -358,7 +354,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
358
354
  readonly storeQueries?: boolean | undefined;
359
355
  readonly timestamp?: boolean | undefined;
360
356
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
361
- accountDerivationPath?: string | undefined;
357
+ accountPath?: string | undefined;
362
358
  readonly archivist?: string | undefined;
363
359
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
364
360
  readonly name?: string | undefined;
@@ -378,11 +374,10 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
378
374
  schema: string;
379
375
  };
380
376
  ephemeralQueryAccountEnabled?: boolean | undefined;
381
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
382
377
  }, import("@xyo-network/module-model").ModuleEventData<object>> = ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
383
378
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
384
379
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
385
- accountDerivationPath?: string | undefined;
380
+ accountPath?: string | undefined;
386
381
  readonly archivist?: string | undefined;
387
382
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
388
383
  readonly name?: string | undefined;
@@ -399,7 +394,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
399
394
  readonly storeQueries?: boolean | undefined;
400
395
  readonly timestamp?: boolean | undefined;
401
396
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
402
- accountDerivationPath?: string | undefined;
397
+ accountPath?: string | undefined;
403
398
  readonly archivist?: string | undefined;
404
399
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
405
400
  readonly name?: string | undefined;
@@ -419,12 +414,11 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
419
414
  schema: string;
420
415
  };
421
416
  ephemeralQueryAccountEnabled?: boolean | undefined;
422
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
423
417
  }, import("@xyo-network/module-model").ModuleEventData<object>>>(nameOrAddress: string, options?: import("@xyo-network/module-model").ModuleFilterOptions<T_3> | undefined): import("@xylabs/promise").Promisable<T_3 | undefined>;
424
418
  resolve<T_4 extends ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
425
419
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
426
420
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
427
- accountDerivationPath?: string | undefined;
421
+ accountPath?: string | undefined;
428
422
  readonly archivist?: string | undefined;
429
423
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
430
424
  readonly name?: string | undefined;
@@ -441,7 +435,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
441
435
  readonly storeQueries?: boolean | undefined;
442
436
  readonly timestamp?: boolean | undefined;
443
437
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
444
- accountDerivationPath?: string | undefined;
438
+ accountPath?: string | undefined;
445
439
  readonly archivist?: string | undefined;
446
440
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
447
441
  readonly name?: string | undefined;
@@ -461,11 +455,10 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
461
455
  schema: string;
462
456
  };
463
457
  ephemeralQueryAccountEnabled?: boolean | undefined;
464
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
465
458
  }, import("@xyo-network/module-model").ModuleEventData<object>> = ModuleInstance<import("@xyo-network/object").BaseParamsFields & {
466
459
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
467
460
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
468
- accountDerivationPath?: string | undefined;
461
+ accountPath?: string | undefined;
469
462
  readonly archivist?: string | undefined;
470
463
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
471
464
  readonly name?: string | undefined;
@@ -482,7 +475,7 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
482
475
  readonly storeQueries?: boolean | undefined;
483
476
  readonly timestamp?: boolean | undefined;
484
477
  } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
485
- accountDerivationPath?: string | undefined;
478
+ accountPath?: string | undefined;
486
479
  readonly archivist?: string | undefined;
487
480
  readonly labels?: import("@xyo-network/module-model").Labels | undefined;
488
481
  readonly name?: string | undefined;
@@ -502,7 +495,6 @@ export declare const StatefulModuleMixin: <TParams extends import("@xyo-network/
502
495
  schema: string;
503
496
  };
504
497
  ephemeralQueryAccountEnabled?: boolean | undefined;
505
- wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
506
498
  }, import("@xyo-network/module-model").ModuleEventData<object>>>(nameOrAddressOrFilter?: string | import("@xyo-network/module-model").ModuleFilter<T_4> | undefined, options?: import("@xyo-network/module-model").ModuleFilterOptions<T_4> | undefined): import("@xylabs/promise").Promisable<T_4 | T_4[] | undefined>;
507
499
  describe: () => Promise<import("@xyo-network/module-model").ModuleDescription>;
508
500
  discover: () => import("@xylabs/promise").Promisable<({
@@ -1 +1 @@
1
- {"version":3,"file":"DivinerMixin.d.ts","sourceRoot":"","sources":["../../src/DivinerMixin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EAEf,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,eAAe,EAChB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAGvF,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAA;AAIpI;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8JATmE,GAAG,EAAE;;IAmBpG;;;;;;OAMG;;IAWH;;;;OAIG;;IASH;;;;OAIG;;IAWH;;;;OAIG;;IAQH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2CN,CAAA"}
1
+ {"version":3,"file":"DivinerMixin.d.ts","sourceRoot":"","sources":["../../src/DivinerMixin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EAEf,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,eAAe,EAChB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAGvF,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAA;AAIpI;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8JATmE,GAAG,EAAE;;IAmBpG;;;;;;OAMG;;IAWH;;;;OAIG;;IASH;;;;OAIG;;IAWH;;;;OAIG;;IAQH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2CN,CAAA"}
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -46,85 +47,102 @@ var import_module_model = require("@xyo-network/module-model");
46
47
  var import_payload_builder = require("@xyo-network/payload-builder");
47
48
  var moduleName = "StatefulDiviner";
48
49
  var StatefulDiviner = class extends import_abstract_diviner.AbstractDiviner {
49
- static configSchemas = [import_diviner_model.DivinerConfigSchema, StatefulDivinerConfigSchema];
50
+ static {
51
+ __name(this, "StatefulDiviner");
52
+ }
53
+ static configSchemas = [
54
+ import_diviner_model.DivinerConfigSchema,
55
+ StatefulDivinerConfigSchema
56
+ ];
50
57
  /**
51
- * The last state
52
- */
58
+ * The last state
59
+ */
53
60
  _lastState;
54
61
  /**
55
- * Commit the internal state of the Diviner process. This is similar
56
- * to a transaction completion in a database and should only be called
57
- * when results have been successfully persisted to the appropriate
58
- * external stores.
59
- * @param nextState The state to commit
60
- */
62
+ * Commit the internal state of the Diviner process. This is similar
63
+ * to a transaction completion in a database and should only be called
64
+ * when results have been successfully persisted to the appropriate
65
+ * external stores.
66
+ * @param nextState The state to commit
67
+ */
61
68
  async commitState(nextState) {
62
69
  if (nextState.state.offset === this._lastState?.state.offset)
63
70
  return;
64
71
  this._lastState = nextState;
65
72
  const archivist = await this.getArchivistForStateStore();
66
73
  const [bw] = await new import_boundwitness_builder.BoundWitnessBuilder().payload(nextState).witness(this.account).build();
67
- await archivist.insert([bw, nextState]);
74
+ await archivist.insert([
75
+ bw,
76
+ nextState
77
+ ]);
68
78
  }
69
79
  /**
70
- * Retrieves the archivist for the specified store
71
- * @param store The store to retrieve the archivist for
72
- * @returns The archivist for the specified store
73
- */
80
+ * Retrieves the archivist for the specified store
81
+ * @param store The store to retrieve the archivist for
82
+ * @returns The archivist for the specified store
83
+ */
74
84
  async getArchivistForStateStore() {
75
85
  const name = (0, import_assert.assertEx)(this.config?.stateStore.archivist, () => `${moduleName}: Config for stateStore.archivist not specified`);
76
86
  const mod = (0, import_assert.assertEx)(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.archivist`);
77
87
  return import_archivist_wrapper.ArchivistWrapper.wrap(mod, this.account);
78
88
  }
79
89
  /**
80
- * Retrieves the BoundWitness Diviner for the specified store
81
- * @param store The store to retrieve the BoundWitness Diviner for
82
- * @returns The BoundWitness Diviner for the specified store
83
- */
90
+ * Retrieves the BoundWitness Diviner for the specified store
91
+ * @param store The store to retrieve the BoundWitness Diviner for
92
+ * @returns The BoundWitness Diviner for the specified store
93
+ */
84
94
  async getBoundWitnessDivinerForStateStore() {
85
95
  const name = (0, import_assert.assertEx)(this.config?.stateStore.boundWitnessDiviner, () => `${moduleName}: Config for stateStore.boundWitnessDiviner not specified`);
86
96
  const mod = (0, import_assert.assertEx)(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.boundWitnessDiviner`);
87
97
  return import_diviner_wrapper.DivinerWrapper.wrap(mod, this.account);
88
98
  }
89
99
  /**
90
- * Retrieves the Payload Diviner for the specified store
91
- * @param store The store to retrieve the Payload Diviner for
92
- * @returns The Payload Diviner for the specified store
93
- */
100
+ * Retrieves the Payload Diviner for the specified store
101
+ * @param store The store to retrieve the Payload Diviner for
102
+ * @returns The Payload Diviner for the specified store
103
+ */
94
104
  async getPayloadDivinerForStateStore() {
95
105
  const name = (0, import_assert.assertEx)(this.config?.stateStore?.payloadDiviner, () => `${moduleName}: Config for stateStore.payloadDiviner not specified`);
96
106
  const mod = (0, import_assert.assertEx)(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.payloadDiviner`);
97
107
  return import_diviner_wrapper.DivinerWrapper.wrap(mod, this.account);
98
108
  }
99
109
  /**
100
- * Retrieves the last state of the Diviner process. Used to recover state after
101
- * preemptions, reboots, etc.
102
- */
110
+ * Retrieves the last state of the Diviner process. Used to recover state after
111
+ * preemptions, reboots, etc.
112
+ */
103
113
  async retrieveState() {
104
114
  if (this._lastState)
105
115
  return this._lastState;
106
116
  let hash = "";
107
117
  const diviner = await this.getBoundWitnessDivinerForStateStore();
108
- const query = await new import_payload_builder.PayloadBuilder({ schema: import_diviner_boundwitness_model.BoundWitnessDivinerQuerySchema }).fields({
118
+ const query = await new import_payload_builder.PayloadBuilder({
119
+ schema: import_diviner_boundwitness_model.BoundWitnessDivinerQuerySchema
120
+ }).fields({
109
121
  address: this.account.address,
110
122
  limit: 1,
111
123
  offset: 0,
112
124
  order: "desc",
113
- payload_schemas: [import_module_model.ModuleStateSchema]
125
+ payload_schemas: [
126
+ import_module_model.ModuleStateSchema
127
+ ]
114
128
  }).build();
115
- const boundWitnesses = await diviner.divine([query]);
129
+ const boundWitnesses = await diviner.divine([
130
+ query
131
+ ]);
116
132
  if (boundWitnesses.length > 0) {
117
133
  const boundWitness = boundWitnesses[0];
118
134
  if ((0, import_boundwitness_model.isBoundWitness)(boundWitness)) {
119
- hash = boundWitness.addresses.map((address, index) => ({ address, index })).filter(({ address }) => address === this.account.address).reduce(
120
- (prev, curr) => boundWitness.payload_schemas?.[curr?.index] === import_module_model.ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev,
121
- ""
122
- );
135
+ hash = boundWitness.addresses.map((address, index) => ({
136
+ address,
137
+ index
138
+ })).filter(({ address }) => address === this.account.address).reduce((prev, curr) => boundWitness.payload_schemas?.[curr?.index] === import_module_model.ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev, "");
123
139
  }
124
140
  }
125
141
  if (hash) {
126
142
  const archivist = await this.getArchivistForStateStore();
127
- const payload = (await archivist.get([hash])).find(import_module_model.isModuleState);
143
+ const payload = (await archivist.get([
144
+ hash
145
+ ])).find(import_module_model.isModuleState);
128
146
  if (payload) {
129
147
  return payload;
130
148
  }
@@ -143,29 +161,35 @@ var import_diviner_model2 = require("@xyo-network/diviner-model");
143
161
  var import_module_model2 = require("@xyo-network/module-model");
144
162
  var import_payload_builder2 = require("@xyo-network/payload-builder");
145
163
  var moduleName2 = "StatefulModuleMixin";
146
- var StatefulModuleMixin = (ModuleBase) => {
147
- class StatefulModuleBase extends ModuleBase {
164
+ var StatefulModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
165
+ let StatefulModuleBase = class StatefulModuleBase extends ModuleBase {
166
+ static {
167
+ __name(this, "StatefulModuleBase");
168
+ }
148
169
  _lastState;
149
170
  /**
150
- * Commit the internal state of the Diviner process. This is similar
151
- * to a transaction completion in a database and should only be called
152
- * when results have been successfully persisted to the appropriate
153
- * external stores.
154
- * @param nextState The state to commit
155
- */
171
+ * Commit the internal state of the Diviner process. This is similar
172
+ * to a transaction completion in a database and should only be called
173
+ * when results have been successfully persisted to the appropriate
174
+ * external stores.
175
+ * @param nextState The state to commit
176
+ */
156
177
  async commitState(nextState) {
157
178
  if (nextState.state.offset === this._lastState?.state.offset)
158
179
  return;
159
180
  this._lastState = nextState;
160
181
  const archivist = await this.getArchivistForStore();
161
182
  const [bw] = await new import_boundwitness_builder2.BoundWitnessBuilder().payload(nextState).build();
162
- await archivist.insert([bw, nextState]);
183
+ await archivist.insert([
184
+ bw,
185
+ nextState
186
+ ]);
163
187
  }
164
188
  /**
165
- * Retrieves the archivist for the specified store
166
- * @param store The store to retrieve the archivist for
167
- * @returns The archivist for the specified store
168
- */
189
+ * Retrieves the archivist for the specified store
190
+ * @param store The store to retrieve the archivist for
191
+ * @returns The archivist for the specified store
192
+ */
169
193
  async getArchivistForStore() {
170
194
  const name = (0, import_assert2.assertEx)(this.config?.stateStore?.archivist, () => `${moduleName2}: Config for stateStore.archivist not specified`);
171
195
  const mod = (0, import_assert2.assertEx)(await this.resolve(name), () => `${moduleName2}: Failed to resolve stateStore.archivist`);
@@ -173,24 +197,21 @@ var StatefulModuleMixin = (ModuleBase) => {
173
197
  return (0, import_assert2.assertEx)(instance, () => `${moduleName2}: Failed to wrap archivist instance`);
174
198
  }
175
199
  /**
176
- * Retrieves the BoundWitness Diviner for the specified store
177
- * @param store The store to retrieve the BoundWitness Diviner for
178
- * @returns The BoundWitness Diviner for the specified store
179
- */
200
+ * Retrieves the BoundWitness Diviner for the specified store
201
+ * @param store The store to retrieve the BoundWitness Diviner for
202
+ * @returns The BoundWitness Diviner for the specified store
203
+ */
180
204
  async getBoundWitnessDivinerForStore() {
181
- const name = (0, import_assert2.assertEx)(
182
- this.config?.stateStore?.boundWitnessDiviner,
183
- () => `${moduleName2}: Config for stateStore.boundWitnessDiviner not specified`
184
- );
205
+ const name = (0, import_assert2.assertEx)(this.config?.stateStore?.boundWitnessDiviner, () => `${moduleName2}: Config for stateStore.boundWitnessDiviner not specified`);
185
206
  const mod = (0, import_assert2.assertEx)(await this.resolve(name), () => `${moduleName2}: Failed to resolve stateStore.boundWitnessDiviner`);
186
207
  const instance = (0, import_diviner_model2.asDivinerInstance)(mod);
187
208
  return (0, import_assert2.assertEx)(instance, () => `${moduleName2}: Failed to wrap diviner instance`);
188
209
  }
189
210
  /**
190
- * Retrieves the Payload Diviner for the specified store
191
- * @param store The store to retrieve the Payload Diviner for
192
- * @returns The Payload Diviner for the specified store
193
- */
211
+ * Retrieves the Payload Diviner for the specified store
212
+ * @param store The store to retrieve the Payload Diviner for
213
+ * @returns The Payload Diviner for the specified store
214
+ */
194
215
  async getPayloadDivinerForStateStore() {
195
216
  const name = (0, import_assert2.assertEx)(this.config?.stateStore?.payloadDiviner, () => `${moduleName2}: Config for stateStore.payloadDiviner not specified`);
196
217
  const mod = (0, import_assert2.assertEx)(await this.resolve(name), () => `${moduleName2}: Failed to resolve stateStore.payloadDiviner`);
@@ -198,41 +219,49 @@ var StatefulModuleMixin = (ModuleBase) => {
198
219
  return (0, import_assert2.assertEx)(instance, () => `${moduleName2}: Failed to wrap diviner instance`);
199
220
  }
200
221
  /**
201
- * Retrieves the last state of the Diviner process. Used to recover state after
202
- * preemptions, reboots, etc.
203
- */
222
+ * Retrieves the last state of the Diviner process. Used to recover state after
223
+ * preemptions, reboots, etc.
224
+ */
204
225
  async retrieveState() {
205
226
  if (this._lastState)
206
227
  return this._lastState;
207
228
  let hash = "";
208
229
  const diviner = await this.getBoundWitnessDivinerForStore();
209
- const query = await new import_payload_builder2.PayloadBuilder({ schema: import_diviner_boundwitness_model2.BoundWitnessDivinerQuerySchema }).fields({
230
+ const query = await new import_payload_builder2.PayloadBuilder({
231
+ schema: import_diviner_boundwitness_model2.BoundWitnessDivinerQuerySchema
232
+ }).fields({
210
233
  // address: this.account.address,
211
234
  limit: 1,
212
235
  offset: 0,
213
236
  order: "desc",
214
- payload_schemas: [import_module_model2.ModuleStateSchema]
237
+ payload_schemas: [
238
+ import_module_model2.ModuleStateSchema
239
+ ]
215
240
  }).build();
216
- const boundWitnesses = await diviner.divine([query]);
241
+ const boundWitnesses = await diviner.divine([
242
+ query
243
+ ]);
217
244
  if (boundWitnesses.length > 0) {
218
245
  const boundWitness = boundWitnesses[0];
219
246
  if ((0, import_boundwitness_model2.isBoundWitness)(boundWitness)) {
220
- hash = boundWitness.addresses.map((address, index) => ({ address, index })).reduce(
221
- (prev, curr) => boundWitness.payload_schemas?.[curr?.index] === import_module_model2.ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev,
222
- ""
223
- );
247
+ hash = boundWitness.addresses.map((address, index) => ({
248
+ address,
249
+ index
250
+ })).reduce((prev, curr) => boundWitness.payload_schemas?.[curr?.index] === import_module_model2.ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev, "");
224
251
  }
225
252
  }
226
253
  if (hash) {
227
254
  const archivist = await this.getArchivistForStore();
228
- const payload = (await archivist.get([hash])).find(import_module_model2.isModuleState);
255
+ const payload = (await archivist.get([
256
+ hash
257
+ ])).find(import_module_model2.isModuleState);
229
258
  if (payload) {
230
259
  return payload;
231
260
  }
232
261
  }
233
262
  return void 0;
234
263
  }
235
- }
264
+ };
236
265
  return StatefulModuleBase;
237
- };
266
+ }, "StatefulModuleMixin");
238
267
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Diviner.ts","../../src/DivinerMixin.ts"],"sourcesContent":["export * from './Config'\nexport * from './Diviner'\nexport * from './DivinerMixin'\nexport * from './Params'\nexport * from './Schema'\n","export const StatefulDivinerSchema = 'network.xyo.diviner.stateful' as const\nexport type StatefulDivinerSchema = typeof StatefulDivinerSchema\n","import { DivinerConfig } from '@xyo-network/diviner-model'\n\nimport { StatefulDivinerSchema } from './Schema'\n\n/**\n * The schema for a Stateful Diviner config\n */\nexport const StatefulDivinerConfigSchema = `${StatefulDivinerSchema}.config` as const\n/**\n * The schema for a Stateful Diviner config\n */\nexport type StatefulDivinerConfigSchema = typeof StatefulDivinerConfigSchema\n\n/**\n * The config for a Stateful Diviner\n */\nexport type StatefulDivinerConfig = DivinerConfig<{\n schema: StatefulDivinerConfigSchema\n stateStore: {\n archivist: string\n boundWitnessDiviner: string\n payloadDiviner: string\n }\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { DivinerConfigSchema, DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport { isModuleState, ModuleState, ModuleStateSchema, StateDictionary } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { StatefulDivinerConfigSchema } from './Config'\nimport { StatefulDivinerParams } from './Params'\n\nconst moduleName = 'StatefulDiviner'\n\n/**\n * A Diviner that maintains state\n */\nexport abstract class StatefulDiviner<\n TParams extends StatefulDivinerParams = StatefulDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n TState extends StateDictionary = StateDictionary,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: string[] = [DivinerConfigSchema, StatefulDivinerConfigSchema]\n\n /**\n * The last state\n */\n protected _lastState?: ModuleState<TState>\n\n /**\n * Commit the internal state of the Diviner process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param nextState The state to commit\n */\n protected async commitState(nextState: ModuleState<TState>) {\n // Don't commit state if no state has changed\n if (nextState.state.offset === this._lastState?.state.offset) return\n this._lastState = nextState\n const archivist = await this.getArchivistForStateStore()\n const [bw] = await new BoundWitnessBuilder().payload(nextState).witness(this.account).build()\n await archivist.insert([bw, nextState])\n }\n\n /**\n * Retrieves the archivist for the specified store\n * @param store The store to retrieve the archivist for\n * @returns The archivist for the specified store\n */\n protected async getArchivistForStateStore() {\n const name = assertEx(this.config?.stateStore.archivist, () => `${moduleName}: Config for stateStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.archivist`)\n return ArchivistWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the specified store\n * @param store The store to retrieve the BoundWitness Diviner for\n * @returns The BoundWitness Diviner for the specified store\n */\n protected async getBoundWitnessDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore.boundWitnessDiviner, () => `${moduleName}: Config for stateStore.boundWitnessDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.boundWitnessDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the Payload Diviner for the specified store\n * @param store The store to retrieve the Payload Diviner for\n * @returns The Payload Diviner for the specified store\n */\n protected async getPayloadDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore?.payloadDiviner, () => `${moduleName}: Config for stateStore.payloadDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.payloadDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the last state of the Diviner process. Used to recover state after\n * preemptions, reboots, etc.\n */\n protected async retrieveState(): Promise<ModuleState<TState> | undefined> {\n if (this._lastState) return this._lastState\n let hash: string = ''\n const diviner = await this.getBoundWitnessDivinerForStateStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({\n address: this.account.address,\n limit: 1,\n offset: 0,\n order: 'desc',\n payload_schemas: [ModuleStateSchema],\n })\n .build()\n const boundWitnesses = await diviner.divine([query])\n if (boundWitnesses.length > 0) {\n const boundWitness = boundWitnesses[0]\n if (isBoundWitness(boundWitness)) {\n // Find the index for this address in the BoundWitness that is a ModuleState\n hash = boundWitness.addresses\n .map((address, index) => ({ address, index }))\n .filter(({ address }) => address === this.account.address)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce(\n (prev, curr) => (boundWitness.payload_schemas?.[curr?.index] === ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev),\n '',\n )\n }\n }\n\n // If we able to located the last state\n if (hash) {\n // Get last state\n const archivist = await this.getArchivistForStateStore()\n const payload = (await archivist.get([hash])).find(isModuleState<TState>)\n if (payload) {\n return payload\n }\n }\n return undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport {\n AnyConfigSchema,\n isModuleState,\n ModuleInstance,\n ModuleParams,\n ModuleState,\n ModuleStateSchema,\n StateDictionary,\n} from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nimport { StatefulDivinerConfig } from './Config'\n\nexport type StatefulModuleParams = ModuleParams<AnyConfigSchema<StatefulDivinerConfig>>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyModule<TParams extends StatefulModuleParams = StatefulModuleParams> = new (...args: any[]) => ModuleInstance<TParams>\n\nconst moduleName = 'StatefulModuleMixin'\n\n/**\n * @ignore Inherit from StatefulDiviner instead\n * @param ModuleBase\n * @returns\n */\nexport const StatefulModuleMixin = <\n TParams extends StatefulModuleParams = StatefulModuleParams,\n TModule extends AnyModule<TParams> = AnyModule<TParams>,\n TState extends StateDictionary = StateDictionary,\n>(\n ModuleBase: TModule,\n) => {\n abstract class StatefulModuleBase extends ModuleBase {\n _lastState?: ModuleState<TState>\n\n /**\n * Commit the internal state of the Diviner process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param nextState The state to commit\n */\n async commitState(nextState: ModuleState<TState>) {\n // Don't commit state if no state has changed\n if (nextState.state.offset === this._lastState?.state.offset) return\n this._lastState = nextState\n const archivist = await this.getArchivistForStore()\n // const [bw] = await new BoundWitnessBuilder().payload(nextState).witness(this.account).build()\n const [bw] = await new BoundWitnessBuilder().payload(nextState).build()\n await archivist.insert([bw, nextState])\n }\n\n /**\n * Retrieves the archivist for the specified store\n * @param store The store to retrieve the archivist for\n * @returns The archivist for the specified store\n */\n async getArchivistForStore() {\n const name = assertEx(this.config?.stateStore?.archivist, () => `${moduleName}: Config for stateStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.archivist`)\n // return ArchivistWrapper.wrap(mod, this.account)\n const instance = asArchivistInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap archivist instance`)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the specified store\n * @param store The store to retrieve the BoundWitness Diviner for\n * @returns The BoundWitness Diviner for the specified store\n */\n async getBoundWitnessDivinerForStore() {\n const name = assertEx(\n this.config?.stateStore?.boundWitnessDiviner,\n () => `${moduleName}: Config for stateStore.boundWitnessDiviner not specified`,\n )\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.boundWitnessDiviner`)\n // return DivinerWrapper.wrap(mod, this.account)\n const instance = asDivinerInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap diviner instance`)\n }\n /**\n * Retrieves the Payload Diviner for the specified store\n * @param store The store to retrieve the Payload Diviner for\n * @returns The Payload Diviner for the specified store\n */\n async getPayloadDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore?.payloadDiviner, () => `${moduleName}: Config for stateStore.payloadDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.payloadDiviner`)\n // return DivinerWrapper.wrap(mod, this.account)\n const instance = asDivinerInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap diviner instance`)\n }\n /**\n * Retrieves the last state of the Diviner process. Used to recover state after\n * preemptions, reboots, etc.\n */\n async retrieveState(): Promise<ModuleState<TState> | undefined> {\n if (this._lastState) return this._lastState\n let hash: string = ''\n const diviner = await this.getBoundWitnessDivinerForStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({\n // address: this.account.address,\n limit: 1,\n offset: 0,\n order: 'desc',\n payload_schemas: [ModuleStateSchema],\n })\n .build()\n const boundWitnesses = await diviner.divine([query])\n if (boundWitnesses.length > 0) {\n const boundWitness = boundWitnesses[0]\n if (isBoundWitness(boundWitness)) {\n // Find the index for this address in the BoundWitness that is a ModuleState\n hash = boundWitness.addresses\n .map((address, index) => ({ address, index }))\n // .filter(({ address }) => address === this.account.address)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce(\n (prev, curr) => (boundWitness.payload_schemas?.[curr?.index] === ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev),\n '',\n )\n }\n }\n\n // If we able to located the last state\n if (hash) {\n // Get last state\n const archivist = await this.getArchivistForStore()\n const payload = (await archivist.get([hash])).find(isModuleState<TState>)\n if (payload) {\n return payload\n }\n }\n return undefined\n }\n }\n return StatefulModuleBase\n}\n"],"mappings":"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","names":["import_assert","import_boundwitness_builder","import_boundwitness_model","import_diviner_boundwitness_model","import_diviner_model","import_module_model","import_payload_builder","moduleName"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Diviner.ts","../../src/DivinerMixin.ts"],"sourcesContent":["export * from './Config'\nexport * from './Diviner'\nexport * from './DivinerMixin'\nexport * from './Params'\nexport * from './Schema'\n","export const StatefulDivinerSchema = 'network.xyo.diviner.stateful' as const\nexport type StatefulDivinerSchema = typeof StatefulDivinerSchema\n","import { DivinerConfig } from '@xyo-network/diviner-model'\n\nimport { StatefulDivinerSchema } from './Schema'\n\n/**\n * The schema for a Stateful Diviner config\n */\nexport const StatefulDivinerConfigSchema = `${StatefulDivinerSchema}.config` as const\n/**\n * The schema for a Stateful Diviner config\n */\nexport type StatefulDivinerConfigSchema = typeof StatefulDivinerConfigSchema\n\n/**\n * The config for a Stateful Diviner\n */\nexport type StatefulDivinerConfig = DivinerConfig<{\n schema: StatefulDivinerConfigSchema\n stateStore: {\n archivist: string\n boundWitnessDiviner: string\n payloadDiviner: string\n }\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { DivinerConfigSchema, DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport { isModuleState, ModuleState, ModuleStateSchema, StateDictionary } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { StatefulDivinerConfigSchema } from './Config'\nimport { StatefulDivinerParams } from './Params'\n\nconst moduleName = 'StatefulDiviner'\n\n/**\n * A Diviner that maintains state\n */\nexport abstract class StatefulDiviner<\n TParams extends StatefulDivinerParams = StatefulDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n TState extends StateDictionary = StateDictionary,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: string[] = [DivinerConfigSchema, StatefulDivinerConfigSchema]\n\n /**\n * The last state\n */\n protected _lastState?: ModuleState<TState>\n\n /**\n * Commit the internal state of the Diviner process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param nextState The state to commit\n */\n protected async commitState(nextState: ModuleState<TState>) {\n // Don't commit state if no state has changed\n if (nextState.state.offset === this._lastState?.state.offset) return\n this._lastState = nextState\n const archivist = await this.getArchivistForStateStore()\n const [bw] = await new BoundWitnessBuilder().payload(nextState).witness(this.account).build()\n await archivist.insert([bw, nextState])\n }\n\n /**\n * Retrieves the archivist for the specified store\n * @param store The store to retrieve the archivist for\n * @returns The archivist for the specified store\n */\n protected async getArchivistForStateStore() {\n const name = assertEx(this.config?.stateStore.archivist, () => `${moduleName}: Config for stateStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.archivist`)\n return ArchivistWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the specified store\n * @param store The store to retrieve the BoundWitness Diviner for\n * @returns The BoundWitness Diviner for the specified store\n */\n protected async getBoundWitnessDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore.boundWitnessDiviner, () => `${moduleName}: Config for stateStore.boundWitnessDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.boundWitnessDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the Payload Diviner for the specified store\n * @param store The store to retrieve the Payload Diviner for\n * @returns The Payload Diviner for the specified store\n */\n protected async getPayloadDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore?.payloadDiviner, () => `${moduleName}: Config for stateStore.payloadDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.payloadDiviner`)\n return DivinerWrapper.wrap(mod, this.account)\n }\n\n /**\n * Retrieves the last state of the Diviner process. Used to recover state after\n * preemptions, reboots, etc.\n */\n protected async retrieveState(): Promise<ModuleState<TState> | undefined> {\n if (this._lastState) return this._lastState\n let hash: string = ''\n const diviner = await this.getBoundWitnessDivinerForStateStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({\n address: this.account.address,\n limit: 1,\n offset: 0,\n order: 'desc',\n payload_schemas: [ModuleStateSchema],\n })\n .build()\n const boundWitnesses = await diviner.divine([query])\n if (boundWitnesses.length > 0) {\n const boundWitness = boundWitnesses[0]\n if (isBoundWitness(boundWitness)) {\n // Find the index for this address in the BoundWitness that is a ModuleState\n hash = boundWitness.addresses\n .map((address, index) => ({ address, index }))\n .filter(({ address }) => address === this.account.address)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce(\n (prev, curr) => (boundWitness.payload_schemas?.[curr?.index] === ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev),\n '',\n )\n }\n }\n\n // If we able to located the last state\n if (hash) {\n // Get last state\n const archivist = await this.getArchivistForStateStore()\n const payload = (await archivist.get([hash])).find(isModuleState<TState>)\n if (payload) {\n return payload\n }\n }\n return undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport {\n AnyConfigSchema,\n isModuleState,\n ModuleInstance,\n ModuleParams,\n ModuleState,\n ModuleStateSchema,\n StateDictionary,\n} from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nimport { StatefulDivinerConfig } from './Config'\n\nexport type StatefulModuleParams = ModuleParams<AnyConfigSchema<StatefulDivinerConfig>>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyModule<TParams extends StatefulModuleParams = StatefulModuleParams> = new (...args: any[]) => ModuleInstance<TParams>\n\nconst moduleName = 'StatefulModuleMixin'\n\n/**\n * @ignore Inherit from StatefulDiviner instead\n * @param ModuleBase\n * @returns\n */\nexport const StatefulModuleMixin = <\n TParams extends StatefulModuleParams = StatefulModuleParams,\n TModule extends AnyModule<TParams> = AnyModule<TParams>,\n TState extends StateDictionary = StateDictionary,\n>(\n ModuleBase: TModule,\n) => {\n abstract class StatefulModuleBase extends ModuleBase {\n _lastState?: ModuleState<TState>\n\n /**\n * Commit the internal state of the Diviner process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param nextState The state to commit\n */\n async commitState(nextState: ModuleState<TState>) {\n // Don't commit state if no state has changed\n if (nextState.state.offset === this._lastState?.state.offset) return\n this._lastState = nextState\n const archivist = await this.getArchivistForStore()\n // const [bw] = await new BoundWitnessBuilder().payload(nextState).witness(this.account).build()\n const [bw] = await new BoundWitnessBuilder().payload(nextState).build()\n await archivist.insert([bw, nextState])\n }\n\n /**\n * Retrieves the archivist for the specified store\n * @param store The store to retrieve the archivist for\n * @returns The archivist for the specified store\n */\n async getArchivistForStore() {\n const name = assertEx(this.config?.stateStore?.archivist, () => `${moduleName}: Config for stateStore.archivist not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.archivist`)\n // return ArchivistWrapper.wrap(mod, this.account)\n const instance = asArchivistInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap archivist instance`)\n }\n\n /**\n * Retrieves the BoundWitness Diviner for the specified store\n * @param store The store to retrieve the BoundWitness Diviner for\n * @returns The BoundWitness Diviner for the specified store\n */\n async getBoundWitnessDivinerForStore() {\n const name = assertEx(\n this.config?.stateStore?.boundWitnessDiviner,\n () => `${moduleName}: Config for stateStore.boundWitnessDiviner not specified`,\n )\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.boundWitnessDiviner`)\n // return DivinerWrapper.wrap(mod, this.account)\n const instance = asDivinerInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap diviner instance`)\n }\n /**\n * Retrieves the Payload Diviner for the specified store\n * @param store The store to retrieve the Payload Diviner for\n * @returns The Payload Diviner for the specified store\n */\n async getPayloadDivinerForStateStore() {\n const name = assertEx(this.config?.stateStore?.payloadDiviner, () => `${moduleName}: Config for stateStore.payloadDiviner not specified`)\n const mod = assertEx(await this.resolve(name), () => `${moduleName}: Failed to resolve stateStore.payloadDiviner`)\n // return DivinerWrapper.wrap(mod, this.account)\n const instance = asDivinerInstance(mod)\n return assertEx(instance, () => `${moduleName}: Failed to wrap diviner instance`)\n }\n /**\n * Retrieves the last state of the Diviner process. Used to recover state after\n * preemptions, reboots, etc.\n */\n async retrieveState(): Promise<ModuleState<TState> | undefined> {\n if (this._lastState) return this._lastState\n let hash: string = ''\n const diviner = await this.getBoundWitnessDivinerForStore()\n const query = await new PayloadBuilder<BoundWitnessDivinerQueryPayload>({ schema: BoundWitnessDivinerQuerySchema })\n .fields({\n // address: this.account.address,\n limit: 1,\n offset: 0,\n order: 'desc',\n payload_schemas: [ModuleStateSchema],\n })\n .build()\n const boundWitnesses = await diviner.divine([query])\n if (boundWitnesses.length > 0) {\n const boundWitness = boundWitnesses[0]\n if (isBoundWitness(boundWitness)) {\n // Find the index for this address in the BoundWitness that is a ModuleState\n hash = boundWitness.addresses\n .map((address, index) => ({ address, index }))\n // .filter(({ address }) => address === this.account.address)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce(\n (prev, curr) => (boundWitness.payload_schemas?.[curr?.index] === ModuleStateSchema ? boundWitness.payload_hashes[curr?.index] : prev),\n '',\n )\n }\n }\n\n // If we able to located the last state\n if (hash) {\n // Get last state\n const archivist = await this.getArchivistForStore()\n const payload = (await archivist.get([hash])).find(isModuleState<TState>)\n if (payload) {\n return payload\n }\n }\n return undefined\n }\n }\n return StatefulModuleBase\n}\n"],"mappings":"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","names":["StatefulDivinerSchema","StatefulDivinerConfigSchema","StatefulDivinerSchema","moduleName","StatefulDiviner","AbstractDiviner","configSchemas","DivinerConfigSchema","StatefulDivinerConfigSchema","_lastState","commitState","nextState","state","offset","archivist","getArchivistForStateStore","bw","BoundWitnessBuilder","payload","witness","account","build","insert","name","assertEx","config","stateStore","mod","resolve","ArchivistWrapper","wrap","getBoundWitnessDivinerForStateStore","boundWitnessDiviner","DivinerWrapper","getPayloadDivinerForStateStore","payloadDiviner","retrieveState","hash","diviner","query","PayloadBuilder","schema","BoundWitnessDivinerQuerySchema","fields","address","limit","order","payload_schemas","ModuleStateSchema","boundWitnesses","divine","length","boundWitness","isBoundWitness","addresses","map","index","filter","reduce","prev","curr","payload_hashes","get","find","isModuleState","undefined","import_assert","import_boundwitness_builder","import_boundwitness_model","import_diviner_boundwitness_model","import_diviner_model","import_module_model","import_payload_builder","moduleName","StatefulModuleMixin","ModuleBase","StatefulModuleBase","_lastState","commitState","nextState","state","offset","archivist","getArchivistForStore","bw","BoundWitnessBuilder","payload","build","insert","name","assertEx","config","stateStore","mod","resolve","instance","asArchivistInstance","getBoundWitnessDivinerForStore","boundWitnessDiviner","asDivinerInstance","getPayloadDivinerForStateStore","payloadDiviner","retrieveState","hash","diviner","query","PayloadBuilder","schema","BoundWitnessDivinerQuerySchema","fields","limit","order","payload_schemas","ModuleStateSchema","boundWitnesses","divine","length","boundWitness","isBoundWitness","addresses","map","address","index","reduce","prev","curr","payload_hashes","get","find","isModuleState","undefined"]}