@xyo-network/diviner-range 2.85.2 → 2.85.3

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.
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -27,24 +27,58 @@ __export(src_exports, {
27
27
  module.exports = __toCommonJS(src_exports);
28
28
 
29
29
  // src/Diviner.ts
30
+ var import_hex = require("@xylabs/hex");
30
31
  var import_abstract_diviner = require("@xyo-network/abstract-diviner");
31
32
  var import_diviner_range_model = require("@xyo-network/diviner-range-model");
32
- var RangeDiviner = class extends import_abstract_diviner.AbstractDiviner {
33
+ var RangeDiviner = class _RangeDiviner extends import_abstract_diviner.AbstractDiviner {
33
34
  static {
34
35
  __name(this, "RangeDiviner");
35
36
  }
36
37
  static configSchemas = [
37
38
  import_diviner_range_model.RangeDivinerConfigSchema
38
39
  ];
40
+ get ranges() {
41
+ return this.config.ranges;
42
+ }
43
+ static generateBigIntRange(range) {
44
+ const result = [];
45
+ const count = BigInt(range.count);
46
+ const start = BigInt((0, import_hex.hexFrom)(range.start, {
47
+ prefix: true
48
+ }));
49
+ for (let i = 0n; i < count; i++) {
50
+ const payload = {
51
+ schema: import_diviner_range_model.BigIntSchema,
52
+ value: (0, import_hex.hexFrom)(start + i, {
53
+ prefix: true
54
+ })
55
+ };
56
+ result.push(payload);
57
+ }
58
+ return result;
59
+ }
60
+ static generateNumberRange(range) {
61
+ const result = [];
62
+ const count = range.count;
63
+ const start = range.start;
64
+ for (let i = 0; i < count; i++) {
65
+ const payload = {
66
+ schema: import_diviner_range_model.NumberSchema,
67
+ value: start + i
68
+ };
69
+ result.push(payload);
70
+ }
71
+ return result;
72
+ }
39
73
  divineHandler(ranges) {
40
74
  const result = [];
41
- for (const range of ranges?.filter(import_diviner_range_model.isRangeDivinerQuery) ?? []) {
42
- for (let i = 0; i < range.count; i++) {
43
- const payload = {
44
- schema: import_diviner_range_model.NumberSchema,
45
- value: range.start + i
46
- };
47
- result.push(payload);
75
+ for (const range of ranges?.filter(import_diviner_range_model.isRangePayload) ?? []) {
76
+ if ((0, import_diviner_range_model.isBigIntRangePayload)(range)) {
77
+ result.push(..._RangeDiviner.generateBigIntRange(range));
78
+ } else if ((0, import_diviner_range_model.isNumberRangePayload)(range)) {
79
+ result.push(..._RangeDiviner.generateNumberRange(range));
80
+ } else {
81
+ throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`);
48
82
  }
49
83
  }
50
84
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts"],"sourcesContent":["export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n","import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n isRangeDivinerQuery,\n NumberPayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangeDivinerQuery,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangeDivinerQuery,\n NumberPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n protected override divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[] {\n const result: NumberPayload[] = []\n for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {\n for (let i = 0; i < range.count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: range.start + i,\n }\n result.push(payload)\n }\n }\n return result\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,8BAAgC;AAEhC,iCAOO;AAKA,IAAMA,eAAN,cAAoFC,wCAAAA;EAd3F,OAc2FA;;;EAKzF,OAAgBC,gBAAgB;IAACC;;EAEdC,cAAcC,QAA+C;AAC9E,UAAMC,SAA0B,CAAA;AAChC,eAAWC,SAASF,QAAQG,OAAOC,8CAAAA,KAAwB,CAAA,GAAI;AAC7D,eAASC,IAAI,GAAGA,IAAIH,MAAMI,OAAOD,KAAK;AACpC,cAAME,UAAyB;UAC7BC,QAAQC;UACRC,OAAOR,MAAMS,QAAQN;QACvB;AACAJ,eAAOW,KAAKL,OAAAA;MACd;IACF;AACA,WAAON;EACT;AACF;;;ADjCA,wBAAc,6CADd;","names":["RangeDiviner","AbstractDiviner","configSchemas","RangeDivinerConfigSchema","divineHandler","ranges","result","range","filter","isRangeDivinerQuery","i","count","payload","schema","NumberSchema","value","start","push"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts"],"sourcesContent":["export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n","import { hexFrom } from '@xylabs/hex'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n BigIntPayload,\n BigIntRangePayload,\n BigIntSchema,\n isBigIntRangePayload,\n isNumberRangePayload,\n isRangePayload,\n NumberPayload,\n NumberRangePayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangePayload,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangePayload,\n NumberPayload | BigIntPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n get ranges() {\n return this.config.ranges\n }\n\n protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[] {\n const result: BigIntPayload[] = []\n const count = BigInt(range.count)\n const start = BigInt(hexFrom(range.start, { prefix: true }))\n for (let i = 0n; i < count; i++) {\n const payload: BigIntPayload = {\n schema: BigIntSchema,\n value: hexFrom(start + i, { prefix: true }),\n }\n result.push(payload)\n }\n return result\n }\n\n protected static generateNumberRange(range: NumberRangePayload): NumberPayload[] {\n const result: NumberPayload[] = []\n const count = range.count\n const start = range.start\n for (let i = 0; i < count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: start + i,\n }\n result.push(payload)\n }\n return result\n }\n\n protected override divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[] {\n const result: (BigIntPayload | NumberPayload)[] = []\n for (const range of ranges?.filter(isRangePayload) ?? []) {\n if (isBigIntRangePayload(range)) {\n result.push(...RangeDiviner.generateBigIntRange(range))\n } else if (isNumberRangePayload(range)) {\n result.push(...RangeDiviner.generateNumberRange(range))\n } else {\n throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`)\n }\n }\n return result\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,iBAAwB;AACxB,8BAAgC;AAEhC,iCAaO;AAKA,IAAMA,eAAN,MAAMA,sBAA8EC,wCAAAA;EArB3F,OAqB2FA;;;EAKzF,OAAgBC,gBAAgB;IAACC;;EAEjC,IAAIC,SAAS;AACX,WAAO,KAAKC,OAAOD;EACrB;EAEA,OAAiBE,oBAAoBC,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQC,OAAOH,MAAME,KAAK;AAChC,UAAME,QAAQD,WAAOE,oBAAQL,MAAMI,OAAO;MAAEE,QAAQ;IAAK,CAAA,CAAA;AACzD,aAASC,IAAI,IAAIA,IAAIL,OAAOK,KAAK;AAC/B,YAAMC,UAAyB;QAC7BC,QAAQC;QACRC,WAAON,oBAAQD,QAAQG,GAAG;UAAED,QAAQ;QAAK,CAAA;MAC3C;AACAL,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEA,OAAiBY,oBAAoBb,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQF,MAAME;AACpB,UAAME,QAAQJ,MAAMI;AACpB,aAASG,IAAI,GAAGA,IAAIL,OAAOK,KAAK;AAC9B,YAAMC,UAAyB;QAC7BC,QAAQK;QACRH,OAAOP,QAAQG;MACjB;AACAN,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEmBc,cAAclB,QAA4D;AAC3F,UAAMI,SAA4C,CAAA;AAClD,eAAWD,SAASH,QAAQmB,OAAOC,yCAAAA,KAAmB,CAAA,GAAI;AACxD,cAAIC,iDAAqBlB,KAAAA,GAAQ;AAC/BC,eAAOW,KAAI,GAAInB,cAAaM,oBAAoBC,KAAAA,CAAAA;MAClD,eAAWmB,iDAAqBnB,KAAAA,GAAQ;AACtCC,eAAOW,KAAI,GAAInB,cAAaoB,oBAAoBb,KAAAA,CAAAA;MAClD,OAAO;AACL,cAAM,IAAIoB,MAAM,gDAAgDC,KAAKC,UAAUtB,OAAO,MAAM,CAAA,CAAA,EAAI;MAClG;IACF;AACA,WAAOC;EACT;AACF;;;ADxEA,wBAAc,6CADd;","names":["RangeDiviner","AbstractDiviner","configSchemas","RangeDivinerConfigSchema","ranges","config","generateBigIntRange","range","result","count","BigInt","start","hexFrom","prefix","i","payload","schema","BigIntSchema","value","push","generateNumberRange","NumberSchema","divineHandler","filter","isRangePayload","isBigIntRangePayload","isNumberRangePayload","Error","JSON","stringify"]}
@@ -2,24 +2,58 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
4
  // src/Diviner.ts
5
+ import { hexFrom } from "@xylabs/hex";
5
6
  import { AbstractDiviner } from "@xyo-network/abstract-diviner";
6
- import { isRangeDivinerQuery, NumberSchema, RangeDivinerConfigSchema } from "@xyo-network/diviner-range-model";
7
- var RangeDiviner = class extends AbstractDiviner {
7
+ import { BigIntSchema, isBigIntRangePayload, isNumberRangePayload, isRangePayload, NumberSchema, RangeDivinerConfigSchema } from "@xyo-network/diviner-range-model";
8
+ var RangeDiviner = class _RangeDiviner extends AbstractDiviner {
8
9
  static {
9
10
  __name(this, "RangeDiviner");
10
11
  }
11
12
  static configSchemas = [
12
13
  RangeDivinerConfigSchema
13
14
  ];
15
+ get ranges() {
16
+ return this.config.ranges;
17
+ }
18
+ static generateBigIntRange(range) {
19
+ const result = [];
20
+ const count = BigInt(range.count);
21
+ const start = BigInt(hexFrom(range.start, {
22
+ prefix: true
23
+ }));
24
+ for (let i = 0n; i < count; i++) {
25
+ const payload = {
26
+ schema: BigIntSchema,
27
+ value: hexFrom(start + i, {
28
+ prefix: true
29
+ })
30
+ };
31
+ result.push(payload);
32
+ }
33
+ return result;
34
+ }
35
+ static generateNumberRange(range) {
36
+ const result = [];
37
+ const count = range.count;
38
+ const start = range.start;
39
+ for (let i = 0; i < count; i++) {
40
+ const payload = {
41
+ schema: NumberSchema,
42
+ value: start + i
43
+ };
44
+ result.push(payload);
45
+ }
46
+ return result;
47
+ }
14
48
  divineHandler(ranges) {
15
49
  const result = [];
16
- for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {
17
- for (let i = 0; i < range.count; i++) {
18
- const payload = {
19
- schema: NumberSchema,
20
- value: range.start + i
21
- };
22
- result.push(payload);
50
+ for (const range of ranges?.filter(isRangePayload) ?? []) {
51
+ if (isBigIntRangePayload(range)) {
52
+ result.push(..._RangeDiviner.generateBigIntRange(range));
53
+ } else if (isNumberRangePayload(range)) {
54
+ result.push(..._RangeDiviner.generateNumberRange(range));
55
+ } else {
56
+ throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`);
23
57
  }
24
58
  }
25
59
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/index.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n isRangeDivinerQuery,\n NumberPayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangeDivinerQuery,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangeDivinerQuery,\n NumberPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n protected override divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[] {\n const result: NumberPayload[] = []\n for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {\n for (let i = 0; i < range.count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: range.start + i,\n }\n result.push(payload)\n }\n }\n return result\n }\n}\n","export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n"],"mappings":";;;;AAAA,SAASA,uBAAuB;AAEhC,SACEC,qBAEAC,cAEAC,gCAEK;AAKA,IAAMC,eAAN,cAAoFC,gBAAAA;EAd3F,OAc2FA;;;EAKzF,OAAgBC,gBAAgB;IAACC;;EAEdC,cAAcC,QAA+C;AAC9E,UAAMC,SAA0B,CAAA;AAChC,eAAWC,SAASF,QAAQG,OAAOC,mBAAAA,KAAwB,CAAA,GAAI;AAC7D,eAASC,IAAI,GAAGA,IAAIH,MAAMI,OAAOD,KAAK;AACpC,cAAME,UAAyB;UAC7BC,QAAQC;UACRC,OAAOR,MAAMS,QAAQN;QACvB;AACAJ,eAAOW,KAAKL,OAAAA;MACd;IACF;AACA,WAAON;EACT;AACF;;;ACjCA,cAAc;","names":["AbstractDiviner","isRangeDivinerQuery","NumberSchema","RangeDivinerConfigSchema","RangeDiviner","AbstractDiviner","configSchemas","RangeDivinerConfigSchema","divineHandler","ranges","result","range","filter","isRangeDivinerQuery","i","count","payload","schema","NumberSchema","value","start","push"]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/index.ts"],"sourcesContent":["import { hexFrom } from '@xylabs/hex'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n BigIntPayload,\n BigIntRangePayload,\n BigIntSchema,\n isBigIntRangePayload,\n isNumberRangePayload,\n isRangePayload,\n NumberPayload,\n NumberRangePayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangePayload,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangePayload,\n NumberPayload | BigIntPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n get ranges() {\n return this.config.ranges\n }\n\n protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[] {\n const result: BigIntPayload[] = []\n const count = BigInt(range.count)\n const start = BigInt(hexFrom(range.start, { prefix: true }))\n for (let i = 0n; i < count; i++) {\n const payload: BigIntPayload = {\n schema: BigIntSchema,\n value: hexFrom(start + i, { prefix: true }),\n }\n result.push(payload)\n }\n return result\n }\n\n protected static generateNumberRange(range: NumberRangePayload): NumberPayload[] {\n const result: NumberPayload[] = []\n const count = range.count\n const start = range.start\n for (let i = 0; i < count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: start + i,\n }\n result.push(payload)\n }\n return result\n }\n\n protected override divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[] {\n const result: (BigIntPayload | NumberPayload)[] = []\n for (const range of ranges?.filter(isRangePayload) ?? []) {\n if (isBigIntRangePayload(range)) {\n result.push(...RangeDiviner.generateBigIntRange(range))\n } else if (isNumberRangePayload(range)) {\n result.push(...RangeDiviner.generateNumberRange(range))\n } else {\n throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`)\n }\n }\n return result\n }\n}\n","export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n"],"mappings":";;;;AAAA,SAASA,eAAe;AACxB,SAASC,uBAAuB;AAEhC,SAGEC,cACAC,sBACAC,sBACAC,gBAGAC,cAEAC,gCAEK;AAKA,IAAMC,eAAN,MAAMA,sBAA8EC,gBAAAA;EArB3F,OAqB2FA;;;EAKzF,OAAgBC,gBAAgB;IAACC;;EAEjC,IAAIC,SAAS;AACX,WAAO,KAAKC,OAAOD;EACrB;EAEA,OAAiBE,oBAAoBC,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQC,OAAOH,MAAME,KAAK;AAChC,UAAME,QAAQD,OAAOE,QAAQL,MAAMI,OAAO;MAAEE,QAAQ;IAAK,CAAA,CAAA;AACzD,aAASC,IAAI,IAAIA,IAAIL,OAAOK,KAAK;AAC/B,YAAMC,UAAyB;QAC7BC,QAAQC;QACRC,OAAON,QAAQD,QAAQG,GAAG;UAAED,QAAQ;QAAK,CAAA;MAC3C;AACAL,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEA,OAAiBY,oBAAoBb,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQF,MAAME;AACpB,UAAME,QAAQJ,MAAMI;AACpB,aAASG,IAAI,GAAGA,IAAIL,OAAOK,KAAK;AAC9B,YAAMC,UAAyB;QAC7BC,QAAQK;QACRH,OAAOP,QAAQG;MACjB;AACAN,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEmBc,cAAclB,QAA4D;AAC3F,UAAMI,SAA4C,CAAA;AAClD,eAAWD,SAASH,QAAQmB,OAAOC,cAAAA,KAAmB,CAAA,GAAI;AACxD,UAAIC,qBAAqBlB,KAAAA,GAAQ;AAC/BC,eAAOW,KAAI,GAAInB,cAAaM,oBAAoBC,KAAAA,CAAAA;MAClD,WAAWmB,qBAAqBnB,KAAAA,GAAQ;AACtCC,eAAOW,KAAI,GAAInB,cAAaoB,oBAAoBb,KAAAA,CAAAA;MAClD,OAAO;AACL,cAAM,IAAIoB,MAAM,gDAAgDC,KAAKC,UAAUtB,OAAO,MAAM,CAAA,CAAA,EAAI;MAClG;IACF;AACA,WAAOC;EACT;AACF;;;ACxEA,cAAc;","names":["hexFrom","AbstractDiviner","BigIntSchema","isBigIntRangePayload","isNumberRangePayload","isRangePayload","NumberSchema","RangeDivinerConfigSchema","RangeDiviner","AbstractDiviner","configSchemas","RangeDivinerConfigSchema","ranges","config","generateBigIntRange","range","result","count","BigInt","start","hexFrom","prefix","i","payload","schema","BigIntSchema","value","push","generateNumberRange","NumberSchema","divineHandler","filter","isRangePayload","isBigIntRangePayload","isNumberRangePayload","Error","JSON","stringify"]}
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -1,10 +1,13 @@
1
1
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
2
2
  import { DivinerParams } from '@xyo-network/diviner-model';
3
- import { NumberPayload, RangeDivinerConfig, RangeDivinerQuery } from '@xyo-network/diviner-range-model';
3
+ import { BigIntPayload, BigIntRangePayload, NumberPayload, NumberRangePayload, RangeDivinerConfig, RangePayload } from '@xyo-network/diviner-range-model';
4
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
5
5
  export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>;
6
- export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangeDivinerQuery, NumberPayload> {
6
+ export declare class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<TParams, RangePayload, NumberPayload | BigIntPayload> {
7
7
  static configSchemas: string[];
8
- protected divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[];
8
+ get ranges(): RangePayload[] | undefined;
9
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[];
10
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[];
11
+ protected divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[];
9
12
  }
10
13
  //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd;IACC,OAAgB,aAAa,WAA6B;cAEvC,aAAa,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE;CAahF"}
1
+ {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAKlB,aAAa,EACb,kBAAkB,EAElB,kBAAkB,EAElB,YAAY,EACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,qBAAa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,eAAe,CACxG,OAAO,EACP,YAAY,EACZ,aAAa,GAAG,aAAa,CAC9B;IACC,OAAgB,aAAa,WAA6B;IAE1D,IAAI,MAAM,+BAET;IAED,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAchF,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;cAc7D,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE;CAa7F"}
@@ -32,18 +32,52 @@ __export(src_exports, {
32
32
  module.exports = __toCommonJS(src_exports);
33
33
 
34
34
  // src/Diviner.ts
35
+ var import_hex = require("@xylabs/hex");
35
36
  var import_abstract_diviner = require("@xyo-network/abstract-diviner");
36
37
  var import_diviner_range_model = require("@xyo-network/diviner-range-model");
37
38
  var _RangeDiviner = class _RangeDiviner extends import_abstract_diviner.AbstractDiviner {
39
+ get ranges() {
40
+ return this.config.ranges;
41
+ }
42
+ static generateBigIntRange(range) {
43
+ const result = [];
44
+ const count = BigInt(range.count);
45
+ const start = BigInt((0, import_hex.hexFrom)(range.start, {
46
+ prefix: true
47
+ }));
48
+ for (let i = 0n; i < count; i++) {
49
+ const payload = {
50
+ schema: import_diviner_range_model.BigIntSchema,
51
+ value: (0, import_hex.hexFrom)(start + i, {
52
+ prefix: true
53
+ })
54
+ };
55
+ result.push(payload);
56
+ }
57
+ return result;
58
+ }
59
+ static generateNumberRange(range) {
60
+ const result = [];
61
+ const count = range.count;
62
+ const start = range.start;
63
+ for (let i = 0; i < count; i++) {
64
+ const payload = {
65
+ schema: import_diviner_range_model.NumberSchema,
66
+ value: start + i
67
+ };
68
+ result.push(payload);
69
+ }
70
+ return result;
71
+ }
38
72
  divineHandler(ranges) {
39
73
  const result = [];
40
- for (const range of (ranges == null ? void 0 : ranges.filter(import_diviner_range_model.isRangeDivinerQuery)) ?? []) {
41
- for (let i = 0; i < range.count; i++) {
42
- const payload = {
43
- schema: import_diviner_range_model.NumberSchema,
44
- value: range.start + i
45
- };
46
- result.push(payload);
74
+ for (const range of (ranges == null ? void 0 : ranges.filter(import_diviner_range_model.isRangePayload)) ?? []) {
75
+ if ((0, import_diviner_range_model.isBigIntRangePayload)(range)) {
76
+ result.push(..._RangeDiviner.generateBigIntRange(range));
77
+ } else if ((0, import_diviner_range_model.isNumberRangePayload)(range)) {
78
+ result.push(..._RangeDiviner.generateNumberRange(range));
79
+ } else {
80
+ throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`);
47
81
  }
48
82
  }
49
83
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts"],"sourcesContent":["export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n","import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n isRangeDivinerQuery,\n NumberPayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangeDivinerQuery,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangeDivinerQuery,\n NumberPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n protected override divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[] {\n const result: NumberPayload[] = []\n for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {\n for (let i = 0; i < range.count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: range.start + i,\n }\n result.push(payload)\n }\n }\n return result\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,8BAAgC;AAEhC,iCAOO;AAKA,IAAMA,gBAAN,MAAMA,sBAA8EC,wCAAAA;EAOtEC,cAAcC,QAA+C;AAC9E,UAAMC,SAA0B,CAAA;AAChC,eAAWC,UAASF,iCAAQG,OAAOC,oDAAwB,CAAA,GAAI;AAC7D,eAASC,IAAI,GAAGA,IAAIH,MAAMI,OAAOD,KAAK;AACpC,cAAME,UAAyB;UAC7BC,QAAQC;UACRC,OAAOR,MAAMS,QAAQN;QACvB;AACAJ,eAAOW,KAAKL,OAAAA;MACd;IACF;AACA,WAAON;EACT;AACF;AApB2FH;AAKzF,cALWD,eAKKgB,iBAAgB;EAACC;;AAL5B,IAAMjB,eAAN;;;ADbP,wBAAc,6CADd;","names":["RangeDiviner","AbstractDiviner","divineHandler","ranges","result","range","filter","isRangeDivinerQuery","i","count","payload","schema","NumberSchema","value","start","push","configSchemas","RangeDivinerConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts"],"sourcesContent":["export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n","import { hexFrom } from '@xylabs/hex'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n BigIntPayload,\n BigIntRangePayload,\n BigIntSchema,\n isBigIntRangePayload,\n isNumberRangePayload,\n isRangePayload,\n NumberPayload,\n NumberRangePayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangePayload,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangePayload,\n NumberPayload | BigIntPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n get ranges() {\n return this.config.ranges\n }\n\n protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[] {\n const result: BigIntPayload[] = []\n const count = BigInt(range.count)\n const start = BigInt(hexFrom(range.start, { prefix: true }))\n for (let i = 0n; i < count; i++) {\n const payload: BigIntPayload = {\n schema: BigIntSchema,\n value: hexFrom(start + i, { prefix: true }),\n }\n result.push(payload)\n }\n return result\n }\n\n protected static generateNumberRange(range: NumberRangePayload): NumberPayload[] {\n const result: NumberPayload[] = []\n const count = range.count\n const start = range.start\n for (let i = 0; i < count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: start + i,\n }\n result.push(payload)\n }\n return result\n }\n\n protected override divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[] {\n const result: (BigIntPayload | NumberPayload)[] = []\n for (const range of ranges?.filter(isRangePayload) ?? []) {\n if (isBigIntRangePayload(range)) {\n result.push(...RangeDiviner.generateBigIntRange(range))\n } else if (isNumberRangePayload(range)) {\n result.push(...RangeDiviner.generateNumberRange(range))\n } else {\n throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`)\n }\n }\n return result\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,iBAAwB;AACxB,8BAAgC;AAEhC,iCAaO;AAKA,IAAMA,gBAAN,MAAMA,sBAA8EC,wCAAAA;EAOzF,IAAIC,SAAS;AACX,WAAO,KAAKC,OAAOD;EACrB;EAEA,OAAiBE,oBAAoBC,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQC,OAAOH,MAAME,KAAK;AAChC,UAAME,QAAQD,WAAOE,oBAAQL,MAAMI,OAAO;MAAEE,QAAQ;IAAK,CAAA,CAAA;AACzD,aAASC,IAAI,IAAIA,IAAIL,OAAOK,KAAK;AAC/B,YAAMC,UAAyB;QAC7BC,QAAQC;QACRC,WAAON,oBAAQD,QAAQG,GAAG;UAAED,QAAQ;QAAK,CAAA;MAC3C;AACAL,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEA,OAAiBY,oBAAoBb,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQF,MAAME;AACpB,UAAME,QAAQJ,MAAMI;AACpB,aAASG,IAAI,GAAGA,IAAIL,OAAOK,KAAK;AAC9B,YAAMC,UAAyB;QAC7BC,QAAQK;QACRH,OAAOP,QAAQG;MACjB;AACAN,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEmBc,cAAclB,QAA4D;AAC3F,UAAMI,SAA4C,CAAA;AAClD,eAAWD,UAASH,iCAAQmB,OAAOC,+CAAmB,CAAA,GAAI;AACxD,cAAIC,iDAAqBlB,KAAAA,GAAQ;AAC/BC,eAAOW,KAAI,GAAIjB,cAAaI,oBAAoBC,KAAAA,CAAAA;MAClD,eAAWmB,iDAAqBnB,KAAAA,GAAQ;AACtCC,eAAOW,KAAI,GAAIjB,cAAakB,oBAAoBb,KAAAA,CAAAA;MAClD,OAAO;AACL,cAAM,IAAIoB,MAAM,gDAAgDC,KAAKC,UAAUtB,OAAO,MAAM,CAAA,CAAA,EAAI;MAClG;IACF;AACA,WAAOC;EACT;AACF;AApD2FL;AAKzF,cALWD,eAKK4B,iBAAgB;EAACC;;AAL5B,IAAM7B,eAAN;;;ADpBP,wBAAc,6CADd;","names":["RangeDiviner","AbstractDiviner","ranges","config","generateBigIntRange","range","result","count","BigInt","start","hexFrom","prefix","i","payload","schema","BigIntSchema","value","push","generateNumberRange","NumberSchema","divineHandler","filter","isRangePayload","isBigIntRangePayload","isNumberRangePayload","Error","JSON","stringify","configSchemas","RangeDivinerConfigSchema"]}
@@ -7,18 +7,52 @@ var __publicField = (obj, key, value) => {
7
7
  };
8
8
 
9
9
  // src/Diviner.ts
10
+ import { hexFrom } from "@xylabs/hex";
10
11
  import { AbstractDiviner } from "@xyo-network/abstract-diviner";
11
- import { isRangeDivinerQuery, NumberSchema, RangeDivinerConfigSchema } from "@xyo-network/diviner-range-model";
12
+ import { BigIntSchema, isBigIntRangePayload, isNumberRangePayload, isRangePayload, NumberSchema, RangeDivinerConfigSchema } from "@xyo-network/diviner-range-model";
12
13
  var _RangeDiviner = class _RangeDiviner extends AbstractDiviner {
14
+ get ranges() {
15
+ return this.config.ranges;
16
+ }
17
+ static generateBigIntRange(range) {
18
+ const result = [];
19
+ const count = BigInt(range.count);
20
+ const start = BigInt(hexFrom(range.start, {
21
+ prefix: true
22
+ }));
23
+ for (let i = 0n; i < count; i++) {
24
+ const payload = {
25
+ schema: BigIntSchema,
26
+ value: hexFrom(start + i, {
27
+ prefix: true
28
+ })
29
+ };
30
+ result.push(payload);
31
+ }
32
+ return result;
33
+ }
34
+ static generateNumberRange(range) {
35
+ const result = [];
36
+ const count = range.count;
37
+ const start = range.start;
38
+ for (let i = 0; i < count; i++) {
39
+ const payload = {
40
+ schema: NumberSchema,
41
+ value: start + i
42
+ };
43
+ result.push(payload);
44
+ }
45
+ return result;
46
+ }
13
47
  divineHandler(ranges) {
14
48
  const result = [];
15
- for (const range of (ranges == null ? void 0 : ranges.filter(isRangeDivinerQuery)) ?? []) {
16
- for (let i = 0; i < range.count; i++) {
17
- const payload = {
18
- schema: NumberSchema,
19
- value: range.start + i
20
- };
21
- result.push(payload);
49
+ for (const range of (ranges == null ? void 0 : ranges.filter(isRangePayload)) ?? []) {
50
+ if (isBigIntRangePayload(range)) {
51
+ result.push(..._RangeDiviner.generateBigIntRange(range));
52
+ } else if (isNumberRangePayload(range)) {
53
+ result.push(..._RangeDiviner.generateNumberRange(range));
54
+ } else {
55
+ throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`);
22
56
  }
23
57
  }
24
58
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/index.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n isRangeDivinerQuery,\n NumberPayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangeDivinerQuery,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangeDivinerQuery,\n NumberPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n protected override divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[] {\n const result: NumberPayload[] = []\n for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {\n for (let i = 0; i < range.count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: range.start + i,\n }\n result.push(payload)\n }\n }\n return result\n }\n}\n","export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n"],"mappings":";;;;;;;;;AAAA,SAASA,uBAAuB;AAEhC,SACEC,qBAEAC,cAEAC,gCAEK;AAKA,IAAMC,gBAAN,MAAMA,sBAA8EC,gBAAAA;EAOtEC,cAAcC,QAA+C;AAC9E,UAAMC,SAA0B,CAAA;AAChC,eAAWC,UAASF,iCAAQG,OAAOC,yBAAwB,CAAA,GAAI;AAC7D,eAASC,IAAI,GAAGA,IAAIH,MAAMI,OAAOD,KAAK;AACpC,cAAME,UAAyB;UAC7BC,QAAQC;UACRC,OAAOR,MAAMS,QAAQN;QACvB;AACAJ,eAAOW,KAAKL,OAAAA;MACd;IACF;AACA,WAAON;EACT;AACF;AApB2FH;AAKzF,cALWD,eAKKgB,iBAAgB;EAACC;;AAL5B,IAAMjB,eAAN;;;ACbP,cAAc;","names":["AbstractDiviner","isRangeDivinerQuery","NumberSchema","RangeDivinerConfigSchema","RangeDiviner","AbstractDiviner","divineHandler","ranges","result","range","filter","isRangeDivinerQuery","i","count","payload","schema","NumberSchema","value","start","push","configSchemas","RangeDivinerConfigSchema"]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/index.ts"],"sourcesContent":["import { hexFrom } from '@xylabs/hex'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport {\n BigIntPayload,\n BigIntRangePayload,\n BigIntSchema,\n isBigIntRangePayload,\n isNumberRangePayload,\n isRangePayload,\n NumberPayload,\n NumberRangePayload,\n NumberSchema,\n RangeDivinerConfig,\n RangeDivinerConfigSchema,\n RangePayload,\n} from '@xyo-network/diviner-range-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\n\nexport type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfig>>\n\nexport class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<\n TParams,\n RangePayload,\n NumberPayload | BigIntPayload\n> {\n static override configSchemas = [RangeDivinerConfigSchema]\n\n get ranges() {\n return this.config.ranges\n }\n\n protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[] {\n const result: BigIntPayload[] = []\n const count = BigInt(range.count)\n const start = BigInt(hexFrom(range.start, { prefix: true }))\n for (let i = 0n; i < count; i++) {\n const payload: BigIntPayload = {\n schema: BigIntSchema,\n value: hexFrom(start + i, { prefix: true }),\n }\n result.push(payload)\n }\n return result\n }\n\n protected static generateNumberRange(range: NumberRangePayload): NumberPayload[] {\n const result: NumberPayload[] = []\n const count = range.count\n const start = range.start\n for (let i = 0; i < count; i++) {\n const payload: NumberPayload = {\n schema: NumberSchema,\n value: start + i,\n }\n result.push(payload)\n }\n return result\n }\n\n protected override divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[] {\n const result: (BigIntPayload | NumberPayload)[] = []\n for (const range of ranges?.filter(isRangePayload) ?? []) {\n if (isBigIntRangePayload(range)) {\n result.push(...RangeDiviner.generateBigIntRange(range))\n } else if (isNumberRangePayload(range)) {\n result.push(...RangeDiviner.generateNumberRange(range))\n } else {\n throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`)\n }\n }\n return result\n }\n}\n","export * from './Diviner'\nexport * from '@xyo-network/diviner-range-model'\n"],"mappings":";;;;;;;;;AAAA,SAASA,eAAe;AACxB,SAASC,uBAAuB;AAEhC,SAGEC,cACAC,sBACAC,sBACAC,gBAGAC,cAEAC,gCAEK;AAKA,IAAMC,gBAAN,MAAMA,sBAA8EC,gBAAAA;EAOzF,IAAIC,SAAS;AACX,WAAO,KAAKC,OAAOD;EACrB;EAEA,OAAiBE,oBAAoBC,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQC,OAAOH,MAAME,KAAK;AAChC,UAAME,QAAQD,OAAOE,QAAQL,MAAMI,OAAO;MAAEE,QAAQ;IAAK,CAAA,CAAA;AACzD,aAASC,IAAI,IAAIA,IAAIL,OAAOK,KAAK;AAC/B,YAAMC,UAAyB;QAC7BC,QAAQC;QACRC,OAAON,QAAQD,QAAQG,GAAG;UAAED,QAAQ;QAAK,CAAA;MAC3C;AACAL,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEA,OAAiBY,oBAAoBb,OAA4C;AAC/E,UAAMC,SAA0B,CAAA;AAChC,UAAMC,QAAQF,MAAME;AACpB,UAAME,QAAQJ,MAAMI;AACpB,aAASG,IAAI,GAAGA,IAAIL,OAAOK,KAAK;AAC9B,YAAMC,UAAyB;QAC7BC,QAAQK;QACRH,OAAOP,QAAQG;MACjB;AACAN,aAAOW,KAAKJ,OAAAA;IACd;AACA,WAAOP;EACT;EAEmBc,cAAclB,QAA4D;AAC3F,UAAMI,SAA4C,CAAA;AAClD,eAAWD,UAASH,iCAAQmB,OAAOC,oBAAmB,CAAA,GAAI;AACxD,UAAIC,qBAAqBlB,KAAAA,GAAQ;AAC/BC,eAAOW,KAAI,GAAIjB,cAAaI,oBAAoBC,KAAAA,CAAAA;MAClD,WAAWmB,qBAAqBnB,KAAAA,GAAQ;AACtCC,eAAOW,KAAI,GAAIjB,cAAakB,oBAAoBb,KAAAA,CAAAA;MAClD,OAAO;AACL,cAAM,IAAIoB,MAAM,gDAAgDC,KAAKC,UAAUtB,OAAO,MAAM,CAAA,CAAA,EAAI;MAClG;IACF;AACA,WAAOC;EACT;AACF;AApD2FL;AAKzF,cALWD,eAKK4B,iBAAgB;EAACC;;AAL5B,IAAM7B,eAAN;;;ACpBP,cAAc;","names":["hexFrom","AbstractDiviner","BigIntSchema","isBigIntRangePayload","isNumberRangePayload","isRangePayload","NumberSchema","RangeDivinerConfigSchema","RangeDiviner","AbstractDiviner","ranges","config","generateBigIntRange","range","result","count","BigInt","start","hexFrom","prefix","i","payload","schema","BigIntSchema","value","push","generateNumberRange","NumberSchema","divineHandler","filter","isRangePayload","isBigIntRangePayload","isNumberRangePayload","Error","JSON","stringify","configSchemas","RangeDivinerConfigSchema"]}
package/package.json CHANGED
@@ -10,10 +10,11 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/abstract-diviner": "~2.85.2",
14
- "@xyo-network/diviner-model": "~2.85.2",
15
- "@xyo-network/diviner-range-model": "~2.85.2",
16
- "@xyo-network/module-model": "~2.85.2"
13
+ "@xylabs/hex": "^2.13.22",
14
+ "@xyo-network/abstract-diviner": "~2.85.3",
15
+ "@xyo-network/diviner-model": "~2.85.3",
16
+ "@xyo-network/diviner-range-model": "~2.85.3",
17
+ "@xyo-network/module-model": "~2.85.3"
17
18
  },
18
19
  "devDependencies": {
19
20
  "@xylabs/ts-scripts-yarn3": "^3.2.25",
@@ -59,6 +60,6 @@
59
60
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
60
61
  },
61
62
  "sideEffects": false,
62
- "version": "2.85.2",
63
+ "version": "2.85.3",
63
64
  "type": "module"
64
65
  }
package/src/Diviner.ts CHANGED
@@ -1,12 +1,19 @@
1
+ import { hexFrom } from '@xylabs/hex'
1
2
  import { AbstractDiviner } from '@xyo-network/abstract-diviner'
2
3
  import { DivinerParams } from '@xyo-network/diviner-model'
3
4
  import {
4
- isRangeDivinerQuery,
5
+ BigIntPayload,
6
+ BigIntRangePayload,
7
+ BigIntSchema,
8
+ isBigIntRangePayload,
9
+ isNumberRangePayload,
10
+ isRangePayload,
5
11
  NumberPayload,
12
+ NumberRangePayload,
6
13
  NumberSchema,
7
14
  RangeDivinerConfig,
8
15
  RangeDivinerConfigSchema,
9
- RangeDivinerQuery,
16
+ RangePayload,
10
17
  } from '@xyo-network/diviner-range-model'
11
18
  import { AnyConfigSchema } from '@xyo-network/module-model'
12
19
 
@@ -14,20 +21,52 @@ export type RangeDivinerParams = DivinerParams<AnyConfigSchema<RangeDivinerConfi
14
21
 
15
22
  export class RangeDiviner<TParams extends RangeDivinerParams = RangeDivinerParams> extends AbstractDiviner<
16
23
  TParams,
17
- RangeDivinerQuery,
18
- NumberPayload
24
+ RangePayload,
25
+ NumberPayload | BigIntPayload
19
26
  > {
20
27
  static override configSchemas = [RangeDivinerConfigSchema]
21
28
 
22
- protected override divineHandler(ranges?: RangeDivinerQuery[]): NumberPayload[] {
29
+ get ranges() {
30
+ return this.config.ranges
31
+ }
32
+
33
+ protected static generateBigIntRange(range: BigIntRangePayload): BigIntPayload[] {
34
+ const result: BigIntPayload[] = []
35
+ const count = BigInt(range.count)
36
+ const start = BigInt(hexFrom(range.start, { prefix: true }))
37
+ for (let i = 0n; i < count; i++) {
38
+ const payload: BigIntPayload = {
39
+ schema: BigIntSchema,
40
+ value: hexFrom(start + i, { prefix: true }),
41
+ }
42
+ result.push(payload)
43
+ }
44
+ return result
45
+ }
46
+
47
+ protected static generateNumberRange(range: NumberRangePayload): NumberPayload[] {
23
48
  const result: NumberPayload[] = []
24
- for (const range of ranges?.filter(isRangeDivinerQuery) ?? []) {
25
- for (let i = 0; i < range.count; i++) {
26
- const payload: NumberPayload = {
27
- schema: NumberSchema,
28
- value: range.start + i,
29
- }
30
- result.push(payload)
49
+ const count = range.count
50
+ const start = range.start
51
+ for (let i = 0; i < count; i++) {
52
+ const payload: NumberPayload = {
53
+ schema: NumberSchema,
54
+ value: start + i,
55
+ }
56
+ result.push(payload)
57
+ }
58
+ return result
59
+ }
60
+
61
+ protected override divineHandler(ranges?: RangePayload[]): (NumberPayload | BigIntPayload)[] {
62
+ const result: (BigIntPayload | NumberPayload)[] = []
63
+ for (const range of ranges?.filter(isRangePayload) ?? []) {
64
+ if (isBigIntRangePayload(range)) {
65
+ result.push(...RangeDiviner.generateBigIntRange(range))
66
+ } else if (isNumberRangePayload(range)) {
67
+ result.push(...RangeDiviner.generateNumberRange(range))
68
+ } else {
69
+ throw new Error(`Only number and bigint ranges are supported: ${JSON.stringify(range, null, 2)}`)
31
70
  }
32
71
  }
33
72
  return result