@xyo-network/diviner-jsonpath-aggregate-memory 3.6.9 → 3.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/Diviner.ts
5
2
  import { assertEx } from "@xylabs/assert";
6
3
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
@@ -12,73 +9,64 @@ import { combinationsByBoundwitness, combinationsBySchema } from "@xyo-network/p
12
9
 
13
10
  // src/jsonpath/jsonPathToTransformersDictionary.ts
14
11
  import { toPayloadTransformer } from "@xyo-network/diviner-jsonpath-memory";
15
- var jsonPathToTransformersDictionary = /* @__PURE__ */ __name((schemaTransforms) => {
16
- return Object.fromEntries(Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {
17
- const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer);
18
- return [
19
- schema,
20
- transformers
21
- ];
22
- }));
23
- }, "jsonPathToTransformersDictionary");
12
+ var jsonPathToTransformersDictionary = (schemaTransforms) => {
13
+ return Object.fromEntries(
14
+ Object.entries(schemaTransforms).map(([schema, jsonPathTransformerExpressions]) => {
15
+ const transformers = jsonPathTransformerExpressions.map(toPayloadTransformer);
16
+ return [schema, transformers];
17
+ })
18
+ );
19
+ };
24
20
 
25
21
  // src/jsonpath/reducePayloads.ts
26
22
  import { exists } from "@xylabs/exists";
27
23
  import { PayloadBuilder } from "@xyo-network/payload-builder";
28
- var reducePayloads = /* @__PURE__ */ __name(async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
24
+ var reducePayloads = async (payloads, payloadTransformers, destinationSchema, excludeSources = false) => {
29
25
  const payloadFields = payloads.filter(exists).flatMap((payload) => {
30
26
  const transformers = payloadTransformers[payload.schema];
31
27
  return transformers ? transformers.map((transform) => transform(payload)) : [];
32
28
  });
33
- const baseObject = excludeSources ? {} : {
34
- sources: await PayloadBuilder.dataHashes(payloads)
35
- };
36
- return await new PayloadBuilder({
37
- schema: destinationSchema
38
- }).fields(Object.assign(baseObject, ...payloadFields)).build();
39
- }, "reducePayloads");
40
- var reducePayloadsArray = /* @__PURE__ */ __name(async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
41
- return await Promise.all(payloadsArray.map(async (payloads) => {
42
- return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
43
- }));
44
- }, "reducePayloadsArray");
29
+ const baseObject = excludeSources ? {} : { sources: await PayloadBuilder.dataHashes(payloads) };
30
+ return await new PayloadBuilder({ schema: destinationSchema }).fields(Object.assign(baseObject, ...payloadFields)).build();
31
+ };
32
+ var reducePayloadsArray = async (payloadsArray, payloadTransformers, destinationSchema, excludeSources = false) => {
33
+ return await Promise.all(
34
+ payloadsArray.map(async (payloads) => {
35
+ return await reducePayloads(payloads, payloadTransformers, destinationSchema, excludeSources);
36
+ })
37
+ );
38
+ };
45
39
 
46
40
  // src/Diviner.ts
47
41
  var moduleName = "JsonPathAggregateDiviner";
48
42
  var JsonPathAggregateDiviner = class extends AbstractDiviner {
49
- static {
50
- __name(this, "JsonPathAggregateDiviner");
51
- }
52
- static configSchemas = [
53
- ...super.configSchemas,
54
- JsonPathAggregateDivinerConfigSchema
55
- ];
43
+ static configSchemas = [...super.configSchemas, JsonPathAggregateDivinerConfigSchema];
56
44
  static defaultConfigSchema = JsonPathAggregateDivinerConfigSchema;
57
45
  _transforms;
58
46
  _payloadTransformers;
59
47
  _transformableSchemas;
60
48
  /**
61
- * The schema to use for the destination payloads
62
- */
49
+ * The schema to use for the destination payloads
50
+ */
63
51
  get destinationSchema() {
64
52
  return this.config.destinationSchema ?? PayloadSchema;
65
53
  }
66
54
  /**
67
- * Dictionary of schemas to payload transformers
68
- */
55
+ * Dictionary of schemas to payload transformers
56
+ */
69
57
  get payloadTransformers() {
70
58
  if (!this._payloadTransformers) this._payloadTransformers = jsonPathToTransformersDictionary(this.schemaTransforms);
71
59
  return this._payloadTransformers;
72
60
  }
73
61
  /**
74
- * The dictionary of schemas to JSON Path transform expressions
75
- */
62
+ * The dictionary of schemas to JSON Path transform expressions
63
+ */
76
64
  get schemaTransforms() {
77
65
  return assertEx(this.config?.schemaTransforms, () => `${moduleName}: Missing config.schemaTransforms section`);
78
66
  }
79
67
  /**
80
- * List of transformable schemas for this diviner
81
- */
68
+ * List of transformable schemas for this diviner
69
+ */
82
70
  get transformableSchemas() {
83
71
  if (!this._transformableSchemas) this._transformableSchemas = Object.keys(this.schemaTransforms);
84
72
  return this._transformableSchemas;
@@ -86,32 +74,32 @@ var JsonPathAggregateDiviner = class extends AbstractDiviner {
86
74
  async divineHandler(payloads) {
87
75
  if (!payloads) return [];
88
76
  const strippedPayloads = payloads.map((payload) => {
89
- const p = {
90
- ...payload
91
- };
77
+ const p = { ...payload };
92
78
  return PayloadBuilder2.omitMeta(p);
93
79
  });
94
80
  const combinations = this.transformableSchemas.includes(BoundWitnessSchema) ? await combinationsByBoundwitness(strippedPayloads) : await combinationsBySchema(strippedPayloads, this.transformableSchemas);
95
- return await Promise.all(combinations.map((combination) => {
96
- return reducePayloads(combination, this.payloadTransformers, this.destinationSchema, this.config.excludeSources ?? false);
97
- }));
81
+ return await Promise.all(
82
+ combinations.map((combination) => {
83
+ return reducePayloads(combination, this.payloadTransformers, this.destinationSchema, this.config.excludeSources ?? false);
84
+ })
85
+ );
98
86
  }
99
87
  /**
100
- * Identifies if a payload is one that is transformed by this diviner
101
- * @param x The candidate payload
102
- * @returns True if the payload is one transformed by this diviner, false otherwise
103
- */
104
- isTransformablePayload = /* @__PURE__ */ __name((x) => {
88
+ * Identifies if a payload is one that is transformed by this diviner
89
+ * @param x The candidate payload
90
+ * @returns True if the payload is one transformed by this diviner, false otherwise
91
+ */
92
+ isTransformablePayload = (x) => {
105
93
  return this.transformableSchemas.includes(x?.schema);
106
- }, "isTransformablePayload");
94
+ };
107
95
  /**
108
- * Identifies if a schema is one that is transformed by this diviner
109
- * @param schema The candidate schema
110
- * @returns True if this schema is one transformed by this diviner, false otherwise
111
- */
112
- isTransformableSchema = /* @__PURE__ */ __name((schema) => {
96
+ * Identifies if a schema is one that is transformed by this diviner
97
+ * @param schema The candidate schema
98
+ * @returns True if this schema is one transformed by this diviner, false otherwise
99
+ */
100
+ isTransformableSchema = (schema) => {
113
101
  return typeof schema === "string" ? this.transformableSchemas.includes(schema) : false;
114
- }, "isTransformableSchema");
102
+ };
115
103
  };
116
104
  export {
117
105
  JsonPathAggregateDiviner,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type {\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { JsonPathAggregateDivinerConfigSchema } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport type { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { PayloadSchema } from '@xyo-network/payload-model'\nimport { combinationsByBoundwitness, combinationsBySchema } from '@xyo-network/payload-utils'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath/index.ts'\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<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<\n DivinerInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, JsonPathAggregateDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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 strippedPayloads = payloads.map((payload) => {\n const p = { ...payload } as TIn\n return PayloadBuilder.omitMeta(p as TIn)\n })\n const combinations\n = this.transformableSchemas.includes(BoundWitnessSchema)\n ? await combinationsByBoundwitness(strippedPayloads)\n : await combinationsBySchema(strippedPayloads, this.transformableSchemas)\n return await Promise.all(\n combinations.map((combination) => {\n return reducePayloads<TOut>(combination, this.payloadTransformers, this.destinationSchema, this.config.excludeSources ?? false)\n }),\n )\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 type { 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 { exists } from '@xylabs/exists'\nimport type { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithoutSchema } 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.filter(exists).flatMap<WithoutSchema<Payload>[]>((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 PayloadBuilder.dataHashes(payloads) }\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":"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","names":["assertEx","BoundWitnessSchema","AbstractDiviner","JsonPathAggregateDivinerConfigSchema","PayloadBuilder","PayloadSchema","combinationsByBoundwitness","combinationsBySchema","toPayloadTransformer","jsonPathToTransformersDictionary","schemaTransforms","Object","fromEntries","entries","map","schema","jsonPathTransformerExpressions","transformers","toPayloadTransformer","exists","PayloadBuilder","reducePayloads","payloads","payloadTransformers","destinationSchema","excludeSources","payloadFields","filter","exists","flatMap","payload","transformers","schema","map","transform","baseObject","sources","PayloadBuilder","dataHashes","fields","Object","assign","build","reducePayloadsArray","payloadsArray","Promise","all","moduleName","JsonPathAggregateDiviner","AbstractDiviner","configSchemas","JsonPathAggregateDivinerConfigSchema","defaultConfigSchema","_transforms","_payloadTransformers","_transformableSchemas","destinationSchema","config","PayloadSchema","payloadTransformers","jsonPathToTransformersDictionary","schemaTransforms","assertEx","transformableSchemas","Object","keys","divineHandler","payloads","strippedPayloads","map","payload","p","PayloadBuilder","omitMeta","combinations","includes","BoundWitnessSchema","combinationsByBoundwitness","combinationsBySchema","Promise","all","combination","reducePayloads","excludeSources","isTransformablePayload","x","schema","isTransformableSchema"]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/jsonpath/jsonPathToTransformersDictionary.ts","../../src/jsonpath/reducePayloads.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type {\n JsonPathAggregateDivinerParams,\n PayloadTransformer,\n SchemaToJsonPathTransformExpressionsDictionary,\n SchemaToPayloadTransformersDictionary,\n} from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { JsonPathAggregateDivinerConfigSchema } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport type { DivinerInstance, DivinerModuleEventData } from '@xyo-network/diviner-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { PayloadSchema } from '@xyo-network/payload-model'\nimport { combinationsByBoundwitness, combinationsBySchema } from '@xyo-network/payload-utils'\n\nimport { jsonPathToTransformersDictionary, reducePayloads } from './jsonpath/index.ts'\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<DivinerInstance<TParams, TIn, TOut>, TIn, TOut> = DivinerModuleEventData<\n DivinerInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractDiviner<TParams, TIn, TOut, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, JsonPathAggregateDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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 strippedPayloads = payloads.map((payload) => {\n const p = { ...payload } as TIn\n return PayloadBuilder.omitMeta(p as TIn)\n })\n const combinations\n = this.transformableSchemas.includes(BoundWitnessSchema)\n ? await combinationsByBoundwitness(strippedPayloads)\n : await combinationsBySchema(strippedPayloads, this.transformableSchemas)\n return await Promise.all(\n combinations.map((combination) => {\n return reducePayloads<TOut>(combination, this.payloadTransformers, this.destinationSchema, this.config.excludeSources ?? false)\n }),\n )\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 type { 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 { exists } from '@xylabs/exists'\nimport type { SchemaToPayloadTransformersDictionary } from '@xyo-network/diviner-jsonpath-aggregate-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithoutSchema } 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.filter(exists).flatMap<WithoutSchema<Payload>[]>((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 PayloadBuilder.dataHashes(payloads) }\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":"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","names":["PayloadBuilder","PayloadBuilder"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/diviner-jsonpath-aggregate-memory",
3
- "version": "3.6.9",
3
+ "version": "3.6.10",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,27 +29,27 @@
29
29
  "module": "dist/neutral/index.mjs",
30
30
  "types": "dist/neutral/index.d.ts",
31
31
  "dependencies": {
32
- "@xylabs/assert": "^4.4.34",
33
- "@xylabs/exists": "^4.4.34",
34
- "@xyo-network/boundwitness-model": "^3.6.9",
35
- "@xyo-network/diviner-abstract": "^3.6.9",
36
- "@xyo-network/diviner-jsonpath-aggregate-model": "^3.6.9",
37
- "@xyo-network/diviner-jsonpath-memory": "^3.6.9",
38
- "@xyo-network/diviner-model": "^3.6.9",
39
- "@xyo-network/payload-builder": "^3.6.9",
40
- "@xyo-network/payload-model": "^3.6.9",
41
- "@xyo-network/payload-utils": "^3.6.9"
32
+ "@xylabs/assert": "^4.5.1",
33
+ "@xylabs/exists": "^4.5.1",
34
+ "@xyo-network/boundwitness-model": "^3.6.10",
35
+ "@xyo-network/diviner-abstract": "^3.6.10",
36
+ "@xyo-network/diviner-jsonpath-aggregate-model": "^3.6.10",
37
+ "@xyo-network/diviner-jsonpath-memory": "^3.6.10",
38
+ "@xyo-network/diviner-model": "^3.6.10",
39
+ "@xyo-network/payload-builder": "^3.6.10",
40
+ "@xyo-network/payload-model": "^3.6.10",
41
+ "@xyo-network/payload-utils": "^3.6.10"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@xylabs/ts-scripts-yarn3": "^4.2.6",
45
45
  "@xylabs/tsconfig": "^4.2.6",
46
- "@xylabs/vitest-extended": "^4.4.34",
47
- "@xyo-network/account": "^3.6.9",
48
- "@xyo-network/account-model": "^3.6.9",
49
- "@xyo-network/boundwitness-builder": "^3.6.9",
50
- "@xyo-network/diviner-jsonpath-model": "^3.6.9",
51
- "typescript": "^5.7.2",
52
- "vitest": "^2.1.8"
46
+ "@xylabs/vitest-extended": "^4.5.1",
47
+ "@xyo-network/account": "^3.6.10",
48
+ "@xyo-network/account-model": "^3.6.10",
49
+ "@xyo-network/boundwitness-builder": "^3.6.10",
50
+ "@xyo-network/diviner-jsonpath-model": "^3.6.10",
51
+ "typescript": "^5.7.3",
52
+ "vitest": "^3.0.4"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"