@xyo-network/diviner-jsonpath-aggregate-memory 2.84.6 → 2.84.8

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.
Files changed (42) hide show
  1. package/dist/browser/Diviner.d.cts.map +1 -1
  2. package/dist/browser/Diviner.d.mts.map +1 -1
  3. package/dist/browser/Diviner.d.ts.map +1 -1
  4. package/dist/browser/index.cjs +24 -9
  5. package/dist/browser/index.cjs.map +1 -1
  6. package/dist/browser/index.d.cts +1 -0
  7. package/dist/browser/index.d.cts.map +1 -1
  8. package/dist/browser/index.d.mts +1 -0
  9. package/dist/browser/index.d.mts.map +1 -1
  10. package/dist/browser/index.d.ts +1 -0
  11. package/dist/browser/index.d.ts.map +1 -1
  12. package/dist/browser/index.js +24 -9
  13. package/dist/browser/index.js.map +1 -1
  14. package/dist/browser/jsonpath/reducePayloads.d.cts +4 -3
  15. package/dist/browser/jsonpath/reducePayloads.d.cts.map +1 -1
  16. package/dist/browser/jsonpath/reducePayloads.d.mts +4 -3
  17. package/dist/browser/jsonpath/reducePayloads.d.mts.map +1 -1
  18. package/dist/browser/jsonpath/reducePayloads.d.ts +4 -3
  19. package/dist/browser/jsonpath/reducePayloads.d.ts.map +1 -1
  20. package/dist/node/Diviner.d.cts.map +1 -1
  21. package/dist/node/Diviner.d.mts.map +1 -1
  22. package/dist/node/Diviner.d.ts.map +1 -1
  23. package/dist/node/index.cjs +28 -10
  24. package/dist/node/index.cjs.map +1 -1
  25. package/dist/node/index.d.cts +1 -0
  26. package/dist/node/index.d.cts.map +1 -1
  27. package/dist/node/index.d.mts +1 -0
  28. package/dist/node/index.d.mts.map +1 -1
  29. package/dist/node/index.d.ts +1 -0
  30. package/dist/node/index.d.ts.map +1 -1
  31. package/dist/node/index.js +24 -9
  32. package/dist/node/index.js.map +1 -1
  33. package/dist/node/jsonpath/reducePayloads.d.cts +4 -3
  34. package/dist/node/jsonpath/reducePayloads.d.cts.map +1 -1
  35. package/dist/node/jsonpath/reducePayloads.d.mts +4 -3
  36. package/dist/node/jsonpath/reducePayloads.d.mts.map +1 -1
  37. package/dist/node/jsonpath/reducePayloads.d.ts +4 -3
  38. package/dist/node/jsonpath/reducePayloads.d.ts.map +1 -1
  39. package/package.json +15 -15
  40. package/src/Diviner.ts +8 -3
  41. package/src/index.ts +1 -0
  42. package/src/jsonpath/reducePayloads.ts +14 -13
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -20,7 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
- JsonPathAggregateDiviner: () => JsonPathAggregateDiviner
23
+ JsonPathAggregateDiviner: () => JsonPathAggregateDiviner,
24
+ jsonPathToTransformersDictionary: () => jsonPathToTransformersDictionary,
25
+ reducePayloads: () => reducePayloads,
26
+ reducePayloadsArray: () => reducePayloadsArray
24
27
  });
25
28
  module.exports = __toCommonJS(src_exports);
26
29
 
@@ -44,13 +47,20 @@ var jsonPathToTransformersDictionary = (schemaTransforms) => {
44
47
  // src/jsonpath/reducePayloads.ts
45
48
  var import_hash = require("@xyo-network/hash");
46
49
  var import_payload_builder = require("@xyo-network/payload-builder");
47
- var reducePayloads = async (payloads, payloadTransformers, destinationSchema) => {
48
- const indexFields = payloads.map((payload) => {
50
+ var reducePayloads = async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
51
+ const payloadFields = payloads.flatMap((payload) => {
49
52
  const transformers = payloadTransformers[payload.schema];
50
53
  return transformers ? transformers.map((transform) => transform(payload)) : [];
51
- }).flat();
52
- const sources = (await import_hash.PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash);
53
- return await new import_payload_builder.PayloadBuilder({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build();
54
+ });
55
+ const baseObject = excludeSources ? {} : { sources: (await import_hash.PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) };
56
+ return await new import_payload_builder.PayloadBuilder({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build();
57
+ };
58
+ var reducePayloadsArray = async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
59
+ return await Promise.all(
60
+ payloadsArray.map(async (payloads) => {
61
+ return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
62
+ })
63
+ );
54
64
  };
55
65
 
56
66
  // src/Diviner.ts
@@ -85,13 +95,18 @@ var JsonPathAggregateDiviner = class extends import_abstract_diviner.AbstractDiv
85
95
  */
86
96
  get transformableSchemas() {
87
97
  if (!this._transformableSchemas)
88
- this._transformableSchemas = [...Object.keys(this.schemaTransforms)];
98
+ this._transformableSchemas = Object.keys(this.schemaTransforms);
89
99
  return this._transformableSchemas;
90
100
  }
91
101
  async divineHandler(payloads) {
92
102
  if (!payloads)
93
103
  return [];
94
- const reducedPayloads = await reducePayloads(payloads, this.payloadTransformers, this.destinationSchema);
104
+ const reducedPayloads = await reducePayloads(
105
+ payloads,
106
+ this.payloadTransformers,
107
+ this.destinationSchema,
108
+ this.config.excludeSources ?? false
109
+ );
95
110
  return [reducedPayloads];
96
111
  }
97
112
  /**
@@ -108,7 +123,7 @@ var JsonPathAggregateDiviner = class extends import_abstract_diviner.AbstractDiv
108
123
  * @returns True if this schema is one transformed by this diviner, false otherwise
109
124
  */
110
125
  isTransformableSchema = (schema) => {
111
- return this.transformableSchemas.some((s) => s === schema);
126
+ return typeof schema === "string" ? this.transformableSchemas.includes(schema) : false;
112
127
  };
113
128
  };
114
129
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["export * from './Diviner'\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = [...Object.keys(this.schemaTransforms)]\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(payloads, this.payloadTransformers, this.destinationSchema)\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return this.transformableSchemas.some((s) => s === schema)\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const indexFields = payloads\n .map<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n .flat()\n // Include all the sources for reference\n const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash)\n // Build and return the index\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param destinationSchema The schema of the destination payloads\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema)\n }),\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AACzB,8BAAgC;AAChC,8CAMO;AAEP,2BAAuC;;;ACTvC,qCAAqC;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,mDAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,kBAA8B;AAC9B,6BAA+B;AAUxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,sBACe;AAEf,QAAM,cAAc,SACjB,IAAqB,CAAC,YAAY;AAEjC,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC,EACA,KAAK;AAER,QAAM,WAAW,MAAM,0BAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAErF,SAAO,MAAM,IAAI,sCAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,EAAE,QAAQ,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM;AAC7H;;;AFhBA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,wCAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,4EAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AAC/E,eAAO,wBAAS,KAAK,QAAQ,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,CAAC,GAAG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpG,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM,eAAqB,UAAU,KAAK,qBAAqB,KAAK,iBAAiB;AAC7G,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,GAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,KAAK,qBAAqB,KAAK,CAAC,MAAM,MAAM,MAAM;AAAA,EAC3D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './jsonpath'\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms)\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(\n payloads,\n this.payloadTransformers,\n this.destinationSchema,\n this.config.excludeSources ?? false,\n )\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return typeof schema === 'string' ? this.transformableSchemas.includes(schema) : false\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const payloadFields = payloads.flatMap<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n // Include all the sources for reference\n const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) }\n // Build and return the payload\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema, excludeSources)\n }),\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AACzB,8BAAgC;AAChC,8CAMO;AAEP,2BAAuC;;;ACTvC,qCAAqC;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,mDAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,kBAA8B;AAC9B,6BAA+B;AAWxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,mBACA,iBAAiB,UACF;AAEf,QAAM,gBAAgB,SAAS,QAAyB,CAAC,YAAY;AAEnE,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC;AAED,QAAM,aAAa,iBAAiB,CAAC,IAAI,EAAE,UAAU,MAAM,0BAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE;AAE3H,SAAO,MAAM,IAAI,sCAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,YAAY,GAAG,aAAa,CAAC,EAAE,MAAM;AAC9H;AASO,IAAM,sBAAsB,OACjC,eACA,qBACA,mBACA,iBAAiB,UACA;AACjB,SAAO,MAAM,QAAQ;AAAA,IACnB,cAAc,IAAI,OAAO,aAAa;AACpC,aAAO,MAAM,eAAkB,UAAU,qBAAqB,mBAAmB,cAAc;AAAA,IACjG,CAAC;AAAA,EACH;AACF;;;AFpCA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,wCAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,4EAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AAC/E,eAAO,wBAAS,KAAK,QAAQ,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,OAAO,KAAK,KAAK,gBAAgB;AAC/F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM;AAAA,MAC5B;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,OAAO,kBAAkB;AAAA,IAChC;AACA,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,GAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,OAAO,WAAW,WAAW,KAAK,qBAAqB,SAAS,MAAM,IAAI;AAAA,EACnF;AACF;","names":[]}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -20,13 +20,20 @@ var jsonPathToTransformersDictionary = (schemaTransforms) => {
20
20
  // src/jsonpath/reducePayloads.ts
21
21
  import { PayloadHasher } from "@xyo-network/hash";
22
22
  import { PayloadBuilder } from "@xyo-network/payload-builder";
23
- var reducePayloads = async (payloads, payloadTransformers, destinationSchema) => {
24
- const indexFields = payloads.map((payload) => {
23
+ var reducePayloads = async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
24
+ const payloadFields = payloads.flatMap((payload) => {
25
25
  const transformers = payloadTransformers[payload.schema];
26
26
  return transformers ? transformers.map((transform) => transform(payload)) : [];
27
- }).flat();
28
- const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash);
29
- return await new PayloadBuilder({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build();
27
+ });
28
+ const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) };
29
+ return await new PayloadBuilder({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build();
30
+ };
31
+ var reducePayloadsArray = async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
32
+ return await Promise.all(
33
+ payloadsArray.map(async (payloads) => {
34
+ return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
35
+ })
36
+ );
30
37
  };
31
38
 
32
39
  // src/Diviner.ts
@@ -61,13 +68,18 @@ var JsonPathAggregateDiviner = class extends AbstractDiviner {
61
68
  */
62
69
  get transformableSchemas() {
63
70
  if (!this._transformableSchemas)
64
- this._transformableSchemas = [...Object.keys(this.schemaTransforms)];
71
+ this._transformableSchemas = Object.keys(this.schemaTransforms);
65
72
  return this._transformableSchemas;
66
73
  }
67
74
  async divineHandler(payloads) {
68
75
  if (!payloads)
69
76
  return [];
70
- const reducedPayloads = await reducePayloads(payloads, this.payloadTransformers, this.destinationSchema);
77
+ const reducedPayloads = await reducePayloads(
78
+ payloads,
79
+ this.payloadTransformers,
80
+ this.destinationSchema,
81
+ this.config.excludeSources ?? false
82
+ );
71
83
  return [reducedPayloads];
72
84
  }
73
85
  /**
@@ -84,10 +96,13 @@ var JsonPathAggregateDiviner = class extends AbstractDiviner {
84
96
  * @returns True if this schema is one transformed by this diviner, false otherwise
85
97
  */
86
98
  isTransformableSchema = (schema) => {
87
- return this.transformableSchemas.some((s) => s === schema);
99
+ return typeof schema === "string" ? this.transformableSchemas.includes(schema) : false;
88
100
  };
89
101
  };
90
102
  export {
91
- JsonPathAggregateDiviner
103
+ JsonPathAggregateDiviner,
104
+ jsonPathToTransformersDictionary,
105
+ reducePayloads,
106
+ reducePayloadsArray
92
107
  };
93
108
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = [...Object.keys(this.schemaTransforms)]\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(payloads, this.payloadTransformers, this.destinationSchema)\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return this.transformableSchemas.some((s) => s === schema)\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const indexFields = payloads\n .map<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n .flat()\n // Include all the sources for reference\n const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash)\n // Build and return the index\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param destinationSchema The schema of the destination payloads\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema)\n }),\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,OAKK;AAEP,SAAkB,qBAAqB;;;ACTvC,SAAS,4BAA4B;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,oBAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAUxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,sBACe;AAEf,QAAM,cAAc,SACjB,IAAqB,CAAC,YAAY;AAEjC,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC,EACA,KAAK;AAER,QAAM,WAAW,MAAM,cAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAErF,SAAO,MAAM,IAAI,eAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,EAAE,QAAQ,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM;AAC7H;;;AFhBA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,gBAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,oCAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AAC/E,WAAO,SAAS,KAAK,QAAQ,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,CAAC,GAAG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpG,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM,eAAqB,UAAU,KAAK,qBAAqB,KAAK,iBAAiB;AAC7G,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,GAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,KAAK,qBAAqB,KAAK,CAAC,MAAM,MAAM,MAAM;AAAA,EAC3D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms)\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(\n payloads,\n this.payloadTransformers,\n this.destinationSchema,\n this.config.excludeSources ?? false,\n )\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return typeof schema === 'string' ? this.transformableSchemas.includes(schema) : false\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const payloadFields = payloads.flatMap<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n // Include all the sources for reference\n const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) }\n // Build and return the payload\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema, excludeSources)\n }),\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,OAKK;AAEP,SAAkB,qBAAqB;;;ACTvC,SAAS,4BAA4B;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,oBAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAWxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,mBACA,iBAAiB,UACF;AAEf,QAAM,gBAAgB,SAAS,QAAyB,CAAC,YAAY;AAEnE,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC;AAED,QAAM,aAAa,iBAAiB,CAAC,IAAI,EAAE,UAAU,MAAM,cAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE;AAE3H,SAAO,MAAM,IAAI,eAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,YAAY,GAAG,aAAa,CAAC,EAAE,MAAM;AAC9H;AASO,IAAM,sBAAsB,OACjC,eACA,qBACA,mBACA,iBAAiB,UACA;AACjB,SAAO,MAAM,QAAQ;AAAA,IACnB,cAAc,IAAI,OAAO,aAAa;AACpC,aAAO,MAAM,eAAkB,UAAU,qBAAqB,mBAAmB,cAAc;AAAA,IACjG,CAAC;AAAA,EACH;AACF;;;AFpCA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,gBAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,oCAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AAC/E,WAAO,SAAS,KAAK,QAAQ,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,OAAO,KAAK,KAAK,gBAAgB;AAC/F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM;AAAA,MAC5B;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,OAAO,kBAAkB;AAAA,IAChC;AACA,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,GAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,OAAO,WAAW,WAAW,KAAK,qBAAqB,SAAS,MAAM,IAAI;AAAA,EACnF;AACF;","names":[]}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -1 +1 @@
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAMzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
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,EAEL,8BAA8B,EAC9B,kBAAkB,EAClB,8CAA8C,EAC9C,qCAAqC,EACtC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAA;AAMnE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,EAC/E,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CACxI,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAgB,aAAa,oDAAyC;IAEtE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;IAEvD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAAsB;IAEnD;;OAEG;IACH,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,qCAAqC,CAGzE;IAED;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,8CAA8C,CAE/E;IAED;;OAEG;IACH,SAAS,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAG7C;cAEwB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWzE;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,MAAO,OAAO,aAE7C;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,YAAa,MAAM,GAAG,IAAI,aAExD;CACF"}
@@ -20,7 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
- JsonPathAggregateDiviner: () => JsonPathAggregateDiviner
23
+ JsonPathAggregateDiviner: () => JsonPathAggregateDiviner,
24
+ jsonPathToTransformersDictionary: () => jsonPathToTransformersDictionary,
25
+ reducePayloads: () => reducePayloads,
26
+ reducePayloadsArray: () => reducePayloadsArray
24
27
  });
25
28
  module.exports = __toCommonJS(src_exports);
26
29
 
@@ -44,13 +47,20 @@ var jsonPathToTransformersDictionary = (schemaTransforms) => {
44
47
  // src/jsonpath/reducePayloads.ts
45
48
  var import_hash = require("@xyo-network/hash");
46
49
  var import_payload_builder = require("@xyo-network/payload-builder");
47
- var reducePayloads = async (payloads, payloadTransformers, destinationSchema) => {
48
- const indexFields = payloads.map((payload) => {
50
+ var reducePayloads = async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
51
+ const payloadFields = payloads.flatMap((payload) => {
49
52
  const transformers = payloadTransformers[payload.schema];
50
53
  return transformers ? transformers.map((transform) => transform(payload)) : [];
51
- }).flat();
52
- const sources = (await import_hash.PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash);
53
- return await new import_payload_builder.PayloadBuilder({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build();
54
+ });
55
+ const baseObject = excludeSources ? {} : { sources: (await import_hash.PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) };
56
+ return await new import_payload_builder.PayloadBuilder({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build();
57
+ };
58
+ var reducePayloadsArray = async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
59
+ return await Promise.all(
60
+ payloadsArray.map(async (payloads) => {
61
+ return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
62
+ })
63
+ );
54
64
  };
55
65
 
56
66
  // src/Diviner.ts
@@ -86,13 +96,18 @@ var JsonPathAggregateDiviner = class extends import_abstract_diviner.AbstractDiv
86
96
  */
87
97
  get transformableSchemas() {
88
98
  if (!this._transformableSchemas)
89
- this._transformableSchemas = [...Object.keys(this.schemaTransforms)];
99
+ this._transformableSchemas = Object.keys(this.schemaTransforms);
90
100
  return this._transformableSchemas;
91
101
  }
92
102
  async divineHandler(payloads) {
93
103
  if (!payloads)
94
104
  return [];
95
- const reducedPayloads = await reducePayloads(payloads, this.payloadTransformers, this.destinationSchema);
105
+ const reducedPayloads = await reducePayloads(
106
+ payloads,
107
+ this.payloadTransformers,
108
+ this.destinationSchema,
109
+ this.config.excludeSources ?? false
110
+ );
96
111
  return [reducedPayloads];
97
112
  }
98
113
  /**
@@ -109,11 +124,14 @@ var JsonPathAggregateDiviner = class extends import_abstract_diviner.AbstractDiv
109
124
  * @returns True if this schema is one transformed by this diviner, false otherwise
110
125
  */
111
126
  isTransformableSchema = (schema) => {
112
- return this.transformableSchemas.some((s) => s === schema);
127
+ return typeof schema === "string" ? this.transformableSchemas.includes(schema) : false;
113
128
  };
114
129
  };
115
130
  // Annotate the CommonJS export names for ESM import in node:
116
131
  0 && (module.exports = {
117
- JsonPathAggregateDiviner
132
+ JsonPathAggregateDiviner,
133
+ jsonPathToTransformersDictionary,
134
+ reducePayloads,
135
+ reducePayloadsArray
118
136
  });
119
137
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["export * from './Diviner'\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = [...Object.keys(this.schemaTransforms)]\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(payloads, this.payloadTransformers, this.destinationSchema)\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return this.transformableSchemas.some((s) => s === schema)\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const indexFields = payloads\n .map<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n .flat()\n // Include all the sources for reference\n const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash)\n // Build and return the index\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param destinationSchema The schema of the destination payloads\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema)\n }),\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AACzB,8BAAgC;AAChC,8CAMO;AAEP,2BAAuC;;;ACTvC,qCAAqC;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,mDAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,kBAA8B;AAC9B,6BAA+B;AAUxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,sBACe;AAEf,QAAM,cAAc,SACjB,IAAqB,CAAC,YAAY;AAEjC,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC,EACA,KAAK;AAER,QAAM,WAAW,MAAM,0BAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAErF,SAAO,MAAM,IAAI,sCAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,EAAE,QAAQ,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM;AAC7H;;;AFhBA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,wCAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,4EAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AA/CnF;AAgDI,eAAO,yBAAS,UAAK,WAAL,mBAAa,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,CAAC,GAAG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpG,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM,eAAqB,UAAU,KAAK,qBAAqB,KAAK,iBAAiB;AAC7G,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,uBAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,KAAK,qBAAqB,KAAK,CAAC,MAAM,MAAM,MAAM;AAAA,EAC3D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './jsonpath'\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms)\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(\n payloads,\n this.payloadTransformers,\n this.destinationSchema,\n this.config.excludeSources ?? false,\n )\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return typeof schema === 'string' ? this.transformableSchemas.includes(schema) : false\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const payloadFields = payloads.flatMap<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n // Include all the sources for reference\n const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) }\n // Build and return the payload\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema, excludeSources)\n }),\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AACzB,8BAAgC;AAChC,8CAMO;AAEP,2BAAuC;;;ACTvC,qCAAqC;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,mDAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,kBAA8B;AAC9B,6BAA+B;AAWxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,mBACA,iBAAiB,UACF;AAEf,QAAM,gBAAgB,SAAS,QAAyB,CAAC,YAAY;AAEnE,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC;AAED,QAAM,aAAa,iBAAiB,CAAC,IAAI,EAAE,UAAU,MAAM,0BAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE;AAE3H,SAAO,MAAM,IAAI,sCAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,YAAY,GAAG,aAAa,CAAC,EAAE,MAAM;AAC9H;AASO,IAAM,sBAAsB,OACjC,eACA,qBACA,mBACA,iBAAiB,UACA;AACjB,SAAO,MAAM,QAAQ;AAAA,IACnB,cAAc,IAAI,OAAO,aAAa;AACpC,aAAO,MAAM,eAAkB,UAAU,qBAAqB,mBAAmB,cAAc;AAAA,IACjG,CAAC;AAAA,EACH;AACF;;;AFpCA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,wCAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,4EAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AA/CnF;AAgDI,eAAO,yBAAS,UAAK,WAAL,mBAAa,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,OAAO,KAAK,KAAK,gBAAgB;AAC/F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM;AAAA,MAC5B;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,OAAO,kBAAkB;AAAA,IAChC;AACA,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,uBAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,OAAO,WAAW,WAAW,KAAK,qBAAqB,SAAS,MAAM,IAAI;AAAA,EACnF;AACF;","names":[]}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './Diviner';
2
+ export * from './jsonpath';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
@@ -20,13 +20,20 @@ var jsonPathToTransformersDictionary = (schemaTransforms) => {
20
20
  // src/jsonpath/reducePayloads.ts
21
21
  import { PayloadHasher } from "@xyo-network/hash";
22
22
  import { PayloadBuilder } from "@xyo-network/payload-builder";
23
- var reducePayloads = async (payloads, payloadTransformers, destinationSchema) => {
24
- const indexFields = payloads.map((payload) => {
23
+ var reducePayloads = async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
24
+ const payloadFields = payloads.flatMap((payload) => {
25
25
  const transformers = payloadTransformers[payload.schema];
26
26
  return transformers ? transformers.map((transform) => transform(payload)) : [];
27
- }).flat();
28
- const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash);
29
- return await new PayloadBuilder({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build();
27
+ });
28
+ const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) };
29
+ return await new PayloadBuilder({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build();
30
+ };
31
+ var reducePayloadsArray = async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
32
+ return await Promise.all(
33
+ payloadsArray.map(async (payloads) => {
34
+ return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
35
+ })
36
+ );
30
37
  };
31
38
 
32
39
  // src/Diviner.ts
@@ -62,13 +69,18 @@ var JsonPathAggregateDiviner = class extends AbstractDiviner {
62
69
  */
63
70
  get transformableSchemas() {
64
71
  if (!this._transformableSchemas)
65
- this._transformableSchemas = [...Object.keys(this.schemaTransforms)];
72
+ this._transformableSchemas = Object.keys(this.schemaTransforms);
66
73
  return this._transformableSchemas;
67
74
  }
68
75
  async divineHandler(payloads) {
69
76
  if (!payloads)
70
77
  return [];
71
- const reducedPayloads = await reducePayloads(payloads, this.payloadTransformers, this.destinationSchema);
78
+ const reducedPayloads = await reducePayloads(
79
+ payloads,
80
+ this.payloadTransformers,
81
+ this.destinationSchema,
82
+ this.config.excludeSources ?? false
83
+ );
72
84
  return [reducedPayloads];
73
85
  }
74
86
  /**
@@ -85,10 +97,13 @@ var JsonPathAggregateDiviner = class extends AbstractDiviner {
85
97
  * @returns True if this schema is one transformed by this diviner, false otherwise
86
98
  */
87
99
  isTransformableSchema = (schema) => {
88
- return this.transformableSchemas.some((s) => s === schema);
100
+ return typeof schema === "string" ? this.transformableSchemas.includes(schema) : false;
89
101
  };
90
102
  };
91
103
  export {
92
- JsonPathAggregateDiviner
104
+ JsonPathAggregateDiviner,
105
+ jsonPathToTransformersDictionary,
106
+ reducePayloads,
107
+ reducePayloadsArray
93
108
  };
94
109
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = [...Object.keys(this.schemaTransforms)]\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(payloads, this.payloadTransformers, this.destinationSchema)\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return this.transformableSchemas.some((s) => s === schema)\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const indexFields = payloads\n .map<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n .flat()\n // Include all the sources for reference\n const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash)\n // Build and return the index\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param destinationSchema The schema of the destination payloads\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema)\n }),\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,OAKK;AAEP,SAAkB,qBAAqB;;;ACTvC,SAAS,4BAA4B;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,oBAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAUxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,sBACe;AAEf,QAAM,cAAc,SACjB,IAAqB,CAAC,YAAY;AAEjC,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC,EACA,KAAK;AAER,QAAM,WAAW,MAAM,cAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAErF,SAAO,MAAM,IAAI,eAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,EAAE,QAAQ,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM;AAC7H;;;AFhBA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,gBAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,oCAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AA/CnF;AAgDI,WAAO,UAAS,UAAK,WAAL,mBAAa,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,CAAC,GAAG,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACpG,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM,eAAqB,UAAU,KAAK,qBAAqB,KAAK,iBAAiB;AAC7G,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,uBAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,KAAK,qBAAqB,KAAK,CAAC,MAAM,MAAM,MAAM;AAAA,EAC3D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n JsonPathAggregateDivinerConfigSchema,\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { DivinerModule, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath'\n\nconst moduleName = 'JsonPathAggregateDiviner'\n\nexport class JsonPathAggregateDiviner<\n TParams extends JsonPathAggregateDivinerParams = JsonPathAggregateDivinerParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut> = DivinerModuleEventData<DivinerModule<TParams>, TIn, TOut>,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override configSchemas = [JsonPathAggregateDivinerConfigSchema]\n\n protected _transforms: PayloadTransformer[] | undefined\n\n private _payloadTransformers: SchemaToPayloadTransformersDictionary | undefined\n private _transformableSchemas: string[] | undefined\n\n /**\n * The schema to use for the destination payloads\n */\n protected get destinationSchema(): string {\n return this.config.destinationSchema ?? PayloadSchema\n }\n\n /**\n * Dictionary of schemas to payload transformers\n */\n protected get payloadTransformers(): SchemaToPayloadTransformersDictionary {\n if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms)\n return this._payloadTransformers\n }\n\n /**\n * The dictionary of schemas to JSON Path transform expressions\n */\n protected get schemaTransforms(): SchemaToJsonPathTransformExpressionsDictionary {\n return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`)\n }\n\n /**\n * List of transformable schemas for this diviner\n */\n protected get transformableSchemas(): string[] {\n if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms)\n return this._transformableSchemas\n }\n\n protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {\n if (!payloads) return []\n const reducedPayloads = await reducePayloads<TOut>(\n payloads,\n this.payloadTransformers,\n this.destinationSchema,\n this.config.excludeSources ?? false,\n )\n return [reducedPayloads]\n }\n\n /**\n * Identifies if a payload is one that is transformed by this diviner\n * @param x The candidate payload\n * @returns True if the payload is one transformed by this diviner, false otherwise\n */\n protected isTransformablePayload = (x: Payload) => {\n return this.transformableSchemas.includes(x?.schema)\n }\n\n /**\n * Identifies if a schema is one that is transformed by this diviner\n * @param schema The candidate schema\n * @returns True if this schema is one transformed by this diviner, false otherwise\n */\n protected isTransformableSchema = (schema?: string | null) => {\n return typeof schema === 'string' ? this.transformableSchemas.includes(schema) : false\n }\n}\n","import { SchemaToJsonPathTransformExpressionsDictionary, SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { toPayloadTransformer } from '@xyo-network/diviner-jsonpath-memory'\n\n/**\n * Materializes the JSON-path expressions into memoized functions by converting a\n * dictionary of schema to JSON Path transform expressions to a dictionary\n * of schema to payload transformers\n * @param schemaTransforms The schema transforms to convert\n * @returns A dictionary of schema to payload transformers\n */\nexport const jsonPathToTransformersDictionary = (\n schemaTransforms: SchemaToJsonPathTransformExpressionsDictionary,\n): SchemaToPayloadTransformersDictionary => {\n return Object.fromEntries(\n Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {\n const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer)\n return [schema, transformers]\n }),\n )\n}\n","import { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadFields } from '@xyo-network/payload-model'\n\n/**\n * Reduces the payloads to a single payload using the supplied transformers\n * @param payloads The payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payload\n * @param destinationSchema The schema of the destination payload\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payload\n */\nexport const reducePayloads = async <T extends Payload = Payload>(\n payloads: Payload[],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T> => {\n // Use the payload transformers to convert the fields from the source payloads to the destination fields\n const payloadFields = payloads.flatMap<PayloadFields[]>((payload) => {\n // Find the transformers for this payload\n const transformers = payloadTransformers[payload.schema]\n // If transformers exist, apply them to the payload otherwise return an empty array\n return transformers ? transformers.map((transform) => transform(payload)) : []\n })\n // Include all the sources for reference\n const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) }\n // Build and return the payload\n return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build()\n}\n\n/**\n * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers\n * @param payloadsArray The arrays of payloads to reduce\n * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads\n * @param excludeSources Exclude the source hashes from the destination payload\n * @returns The reduced payloads\n */\nexport const reducePayloadsArray = async <T extends Payload = Payload>(\n payloadsArray: Payload[][],\n payloadTransformers: SchemaToPayloadTransformersDictionary,\n destinationSchema: string,\n excludeSources = false,\n): Promise<T[]> => {\n return await Promise.all(\n payloadsArray.map(async (payloads) => {\n return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema, excludeSources)\n }),\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,OAKK;AAEP,SAAkB,qBAAqB;;;ACTvC,SAAS,4BAA4B;AAS9B,IAAM,mCAAmC,CAC9C,qBAC0C;AAC1C,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,QAAQ,8BAA8B,MAAM;AACjF,YAAM,eAAe,+BAA+B,IAAI,oBAAoB;AAC5E,aAAO,CAAC,QAAQ,YAAY;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;;;AClBA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAWxB,IAAM,iBAAiB,OAC5B,UACA,qBACA,mBACA,iBAAiB,UACF;AAEf,QAAM,gBAAgB,SAAS,QAAyB,CAAC,YAAY;AAEnE,UAAM,eAAe,oBAAoB,QAAQ,MAAM;AAEvD,WAAO,eAAe,aAAa,IAAI,CAAC,cAAc,UAAU,OAAO,CAAC,IAAI,CAAC;AAAA,EAC/E,CAAC;AAED,QAAM,aAAa,iBAAiB,CAAC,IAAI,EAAE,UAAU,MAAM,cAAc,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE;AAE3H,SAAO,MAAM,IAAI,eAAkB,EAAE,QAAQ,kBAAkB,CAAC,EAAE,OAAO,OAAO,OAAO,YAAY,GAAG,aAAa,CAAC,EAAE,MAAM;AAC9H;AASO,IAAM,sBAAsB,OACjC,eACA,qBACA,mBACA,iBAAiB,UACA;AACjB,SAAO,MAAM,QAAQ;AAAA,IACnB,cAAc,IAAI,OAAO,aAAa;AACpC,aAAO,MAAM,eAAkB,UAAU,qBAAqB,mBAAmB,cAAc;AAAA,IACjG,CAAC;AAAA,EACH;AACF;;;AFpCA,IAAM,aAAa;AAEZ,IAAM,2BAAN,cAKG,gBAAgD;AAAA,EACxD,OAAgB,gBAAgB,CAAC,oCAAoC;AAAA,EAE3D;AAAA,EAEF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,IAAc,oBAA4B;AACxC,WAAO,KAAK,OAAO,qBAAqB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA6D;AACzE,QAAI,CAAC,KAAK;AAAsB,WAAK,uBAAuB,iCAAiC,KAAK,gBAAgB;AAClH,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,mBAAmE;AA/CnF;AAgDI,WAAO,UAAS,UAAK,WAAL,mBAAa,kBAAkB,MAAM,GAAG,UAAU,2CAA2C;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,uBAAiC;AAC7C,QAAI,CAAC,KAAK;AAAuB,WAAK,wBAAwB,OAAO,KAAK,KAAK,gBAAgB;AAC/F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,UAAmC;AACxE,QAAI,CAAC;AAAU,aAAO,CAAC;AACvB,UAAM,kBAAkB,MAAM;AAAA,MAC5B;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,OAAO,kBAAkB;AAAA,IAChC;AACA,WAAO,CAAC,eAAe;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,yBAAyB,CAAC,MAAe;AACjD,WAAO,KAAK,qBAAqB,SAAS,uBAAG,MAAM;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,wBAAwB,CAAC,WAA2B;AAC5D,WAAO,OAAO,WAAW,WAAW,KAAK,qBAAqB,SAAS,MAAM,IAAI;AAAA,EACnF;AACF;","names":[]}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
@@ -5,23 +5,24 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model';
5
5
  * @param payloads The payloads to reduce
6
6
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
7
7
  * @param destinationSchema The schema of the destination payload
8
+ * @param excludeSources Exclude the source hashes from the destination payload
8
9
  * @returns The reduced payload
9
10
  */
10
11
  export declare const reducePayloads: <T extends {
11
12
  schema: string;
12
13
  } & PayloadFields = {
13
14
  schema: string;
14
- } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T>;
15
+ } & PayloadFields>(payloads: Payload[], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T>;
15
16
  /**
16
17
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
17
18
  * @param payloadsArray The arrays of payloads to reduce
18
19
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
19
- * @param destinationSchema The schema of the destination payloads
20
+ * @param excludeSources Exclude the source hashes from the destination payload
20
21
  * @returns The reduced payloads
21
22
  */
22
23
  export declare const reducePayloadsArray: <T extends {
23
24
  schema: string;
24
25
  } & PayloadFields = {
25
26
  schema: string;
26
- } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string) => Promise<T[]>;
27
+ } & PayloadFields>(payloadsArray: Payload[][], payloadTransformers: SchemaToPayloadTransformersDictionary, destinationSchema: string, excludeSources?: boolean) => Promise<T[]>;
27
28
  //# sourceMappingURL=reducePayloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,eAe1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,iBAO1B,CAAA"}
1
+ {"version":3,"file":"reducePayloads.d.ts","sourceRoot":"","sources":["../../../src/jsonpath/reducePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAGrG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;6BACf,OAAO,EAAE,uBACE,qCAAqC,qBACvC,MAAM,yCAc1B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;kCACf,OAAO,EAAE,EAAE,uBACL,qCAAqC,qBACvC,MAAM,2CAQ1B,CAAA"}
package/package.json CHANGED
@@ -11,22 +11,22 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.13.20",
14
- "@xyo-network/abstract-diviner": "~2.84.6",
15
- "@xyo-network/diviner-jsonpath-aggregate-model": "~2.84.6",
16
- "@xyo-network/diviner-model": "~2.84.6",
17
- "@xyo-network/hash": "~2.84.6",
18
- "@xyo-network/payload-builder": "~2.84.6",
19
- "@xyo-network/payload-model": "~2.84.6"
14
+ "@xyo-network/abstract-diviner": "~2.84.8",
15
+ "@xyo-network/diviner-jsonpath-aggregate-model": "~2.84.8",
16
+ "@xyo-network/diviner-model": "~2.84.8",
17
+ "@xyo-network/hash": "~2.84.8",
18
+ "@xyo-network/payload-builder": "~2.84.8",
19
+ "@xyo-network/payload-model": "~2.84.8"
20
20
  },
21
21
  "devDependencies": {
22
- "@xylabs/ts-scripts-yarn3": "^3.2.19",
23
- "@xylabs/tsconfig": "^3.2.19",
24
- "@xyo-network/account": "~2.84.6",
25
- "@xyo-network/boundwitness-builder": "~2.84.6",
26
- "@xyo-network/boundwitness-model": "~2.84.6",
27
- "@xyo-network/diviner-jsonpath-memory": "~2.84.6",
28
- "@xyo-network/diviner-jsonpath-model": "~2.84.6",
29
- "@xyo-network/wallet-model": "~2.84.6",
22
+ "@xylabs/ts-scripts-yarn3": "^3.2.24",
23
+ "@xylabs/tsconfig": "^3.2.24",
24
+ "@xyo-network/account": "~2.84.8",
25
+ "@xyo-network/boundwitness-builder": "~2.84.8",
26
+ "@xyo-network/boundwitness-model": "~2.84.8",
27
+ "@xyo-network/diviner-jsonpath-memory": "~2.84.8",
28
+ "@xyo-network/diviner-jsonpath-model": "~2.84.8",
29
+ "@xyo-network/wallet-model": "~2.84.8",
30
30
  "typescript": "^5.3.3"
31
31
  },
32
32
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -68,6 +68,6 @@
68
68
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
69
69
  },
70
70
  "sideEffects": false,
71
- "version": "2.84.6",
71
+ "version": "2.84.8",
72
72
  "type": "module"
73
73
  }
package/src/Diviner.ts CHANGED
@@ -53,13 +53,18 @@ export class JsonPathAggregateDiviner<
53
53
  * List of transformable schemas for this diviner
54
54
  */
55
55
  protected get transformableSchemas(): string[] {
56
- if (!this._transformableSchemas) this._transformableSchemas = [...Object.keys(this.schemaTransforms)]
56
+ if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms)
57
57
  return this._transformableSchemas
58
58
  }
59
59
 
60
60
  protected override async divineHandler(payloads?: TIn[]): Promise<TOut[]> {
61
61
  if (!payloads) return []
62
- const reducedPayloads = await reducePayloads<TOut>(payloads, this.payloadTransformers, this.destinationSchema)
62
+ const reducedPayloads = await reducePayloads<TOut>(
63
+ payloads,
64
+ this.payloadTransformers,
65
+ this.destinationSchema,
66
+ this.config.excludeSources ?? false,
67
+ )
63
68
  return [reducedPayloads]
64
69
  }
65
70
 
@@ -78,6 +83,6 @@ export class JsonPathAggregateDiviner<
78
83
  * @returns True if this schema is one transformed by this diviner, false otherwise
79
84
  */
80
85
  protected isTransformableSchema = (schema?: string | null) => {
81
- return this.transformableSchemas.some((s) => s === schema)
86
+ return typeof schema === 'string' ? this.transformableSchemas.includes(schema) : false
82
87
  }
83
88
  }
package/src/index.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './Diviner'
2
+ export * from './jsonpath'
@@ -8,43 +8,44 @@ import { Payload, PayloadFields } from '@xyo-network/payload-model'
8
8
  * @param payloads The payloads to reduce
9
9
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payload
10
10
  * @param destinationSchema The schema of the destination payload
11
+ * @param excludeSources Exclude the source hashes from the destination payload
11
12
  * @returns The reduced payload
12
13
  */
13
14
  export const reducePayloads = async <T extends Payload = Payload>(
14
15
  payloads: Payload[],
15
16
  payloadTransformers: SchemaToPayloadTransformersDictionary,
16
17
  destinationSchema: string,
18
+ excludeSources = false,
17
19
  ): Promise<T> => {
18
20
  // Use the payload transformers to convert the fields from the source payloads to the destination fields
19
- const indexFields = payloads
20
- .map<PayloadFields[]>((payload) => {
21
- // Find the transformers for this payload
22
- const transformers = payloadTransformers[payload.schema]
23
- // If transformers exist, apply them to the payload otherwise return an empty array
24
- return transformers ? transformers.map((transform) => transform(payload)) : []
25
- })
26
- .flat()
21
+ const payloadFields = payloads.flatMap<PayloadFields[]>((payload) => {
22
+ // Find the transformers for this payload
23
+ const transformers = payloadTransformers[payload.schema]
24
+ // If transformers exist, apply them to the payload otherwise return an empty array
25
+ return transformers ? transformers.map((transform) => transform(payload)) : []
26
+ })
27
27
  // Include all the sources for reference
28
- const sources = (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash)
29
- // Build and return the index
30
- return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign({ sources }, ...indexFields)).build()
28
+ const baseObject = excludeSources ? {} : { sources: (await PayloadHasher.hashPairs([...payloads])).map(([, hash]) => hash) }
29
+ // Build and return the payload
30
+ return await new PayloadBuilder<T>({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build()
31
31
  }
32
32
 
33
33
  /**
34
34
  * Reduces the arrays of payload arrays to an array of payloads using the supplied transformers
35
35
  * @param payloadsArray The arrays of payloads to reduce
36
36
  * @param payloadTransformers The transformers to use to convert the payloads to the destination payloads
37
- * @param destinationSchema The schema of the destination payloads
37
+ * @param excludeSources Exclude the source hashes from the destination payload
38
38
  * @returns The reduced payloads
39
39
  */
40
40
  export const reducePayloadsArray = async <T extends Payload = Payload>(
41
41
  payloadsArray: Payload[][],
42
42
  payloadTransformers: SchemaToPayloadTransformersDictionary,
43
43
  destinationSchema: string,
44
+ excludeSources = false,
44
45
  ): Promise<T[]> => {
45
46
  return await Promise.all(
46
47
  payloadsArray.map(async (payloads) => {
47
- return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema)
48
+ return await reducePayloads<T>(payloads, payloadTransformers, destinationSchema, excludeSources)
48
49
  }),
49
50
  )
50
51
  }