map-transform 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1425,11 +1425,14 @@ The following transformers may be applied to the value in a pipeline with the
1425
1425
  with the [`filter` operation](#filterconditionFn-operation) to filter away
1426
1426
  values in the pipeline.
1427
1427
 
1428
- #### `bucket({ path, buckets })` transformer
1428
+ #### `bucket({ path, buckets, groupByPath })` transformer
1429
1429
 
1430
1430
  The `bucket` transformer will split an array out in buckets based on condition
1431
1431
  pipelines (pipelines that will return truthy for the items that belong in
1432
1432
  a certain bucket) or by size (how many items from the array to put in a bucket).
1433
+ There's also an alternative way of using `groupByPath` (see below).
1434
+
1435
+ You may specify a `path` to the array that will be sorted into buckets.
1433
1436
 
1434
1437
  The buckets are defined in an array on the `buckets` property, with one object
1435
1438
  per bucket. The object has a `key` property that will be the key of the bucket
@@ -1439,13 +1442,23 @@ belong in the bucket. When distributing based on size, you set `size` to the
1439
1442
  number of items you want to put in this bucket. You may also combine `condition`
1440
1443
  and `size`, to get the provided number of items matching the condition.
1441
1444
 
1442
- You may also specify a `path` to the array that will be sorted into buckets.
1443
-
1444
1445
  Each item is tested against the bucket condition in the order the buckets are
1445
1446
  defined, and will be placed in the first bucket that matches. You may have
1446
1447
  a bucket without a condition or size, which will serve as a catch-all bucket,
1447
1448
  and should therefore be placed last.
1448
1449
 
1450
+ As an alternative to specifying `buckets`, you may provide a path or a pipeline
1451
+ in `groupByPath`. The transformer will then fetch the value from that path or
1452
+ pipeline for every item in the array, and use it as keys for buckets. Every item
1453
+ with the same value returned from `groupByPath` will be grouped together. You
1454
+ may for example set `groupByPath: 'category'` to get an object with all
1455
+ available categories as keys, and items with a certain category grouped in an
1456
+ array on the category property.
1457
+
1458
+ The value returned from the `groupByPath` pipeline will be forced to a string.
1459
+ When the value from an item is a non-value, the item will not be put in any
1460
+ group.
1461
+
1449
1462
  When a bucket is run in reverse, the items in the buckets will be merged into
1450
1463
  one array. The order of the items will be the same as the order of the buckets
1451
1464
  and not the order of the items in the original array. When a path is given, the
@@ -3,6 +3,7 @@ import { pathGetter } from '../operations/getSet.js';
3
3
  import { getStateValue, setStateValue, goForward, revFromState, } from '../utils/stateHelpers.js';
4
4
  import { defToOperation } from '../utils/definitionHelpers.js';
5
5
  import { noopNext } from '../utils/stateHelpers.js';
6
+ import { isObject } from '../utils/is.js';
6
7
  const FLATTEN_DEPTH = 1;
7
8
  const flattenIfArray = (data) => Array.isArray(data) ? data.flat(FLATTEN_DEPTH) : data;
8
9
  const findAllMatches = (value, state, arr, getProp) => arr.filter((val) => getProp(val, state) === value);
@@ -11,7 +12,15 @@ const matchInArray = (getArray, match, getProp) => (state) => {
11
12
  const getFn = getArray({})(noopNext);
12
13
  return async (value) => {
13
14
  const { value: arr } = await getFn(goForward(state));
14
- return Array.isArray(arr) ? match(value, state, arr, getProp) : undefined;
15
+ if (Array.isArray(arr)) {
16
+ return match(value, state, arr, getProp);
17
+ }
18
+ else if (isObject(arr)) {
19
+ return match(value, state, [arr], getProp);
20
+ }
21
+ else {
22
+ return undefined;
23
+ }
15
24
  };
16
25
  };
17
26
  export function lookup({ arrayPath, propPath, matchSeveral = false, flip = false, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/operations/lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/operations/lookup.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export interface Bucket {
8
8
  export interface Props extends TransformerProps {
9
9
  path?: Path;
10
10
  buckets?: Bucket[];
11
+ groupByPath?: TransformDefinition;
11
12
  }
12
13
  declare const transformer: AsyncTransformer<Props>;
13
14
  export default transformer;
@@ -12,15 +12,25 @@ function addToBucket(value, buckets, key) {
12
12
  buckets.set(key, [value]);
13
13
  }
14
14
  }
15
- async function sortIntoBuckets(getFn, pipelines, data, state) {
15
+ async function sortIntoBuckets(getFn, pipelines, getGroupFn, data, state, nonvalues) {
16
16
  const arr = ensureArray(getFn(data, state));
17
17
  const retBucket = new Map();
18
- for (const value of arr) {
19
- for (const [pipeline, key] of pipelines) {
20
- const result = await pipeline(value, state);
21
- if (result) {
22
- addToBucket(value, retBucket, key);
23
- break;
18
+ if (pipelines.length > 0) {
19
+ for (const value of arr) {
20
+ for (const [pipeline, key] of pipelines) {
21
+ const result = await pipeline(value, state);
22
+ if (result) {
23
+ addToBucket(value, retBucket, key);
24
+ break;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ else if (getGroupFn) {
30
+ for (const value of arr) {
31
+ const key = await getGroupFn(value, state);
32
+ if (!isNonvalue(key, nonvalues)) {
33
+ addToBucket(value, retBucket, String(key));
24
34
  }
25
35
  }
26
36
  }
@@ -40,27 +50,34 @@ function shouldGoInBucket(options, condition, size) {
40
50
  };
41
51
  }
42
52
  const extractArrayFromBuckets = (buckets, keys, nonvalues) => isObject(buckets)
43
- ? keys
53
+ ? (keys || Object.keys(buckets))
44
54
  .flatMap((key) => buckets[key])
45
55
  .filter((key) => !isNonvalue(key, nonvalues))
46
56
  : [];
47
- const transformer = function bucket({ path = '.', buckets = [], }) {
57
+ const prepareGroupByPathFn = (pipeline, options) => typeof pipeline === 'string'
58
+ ? pathGetter(pipeline)
59
+ : pipeline === undefined
60
+ ? undefined
61
+ : defToDataMapper(pipeline, options);
62
+ const extractBucketKeys = (buckets, hasGroupFn) => buckets.length === 0 && hasGroupFn ? undefined : buckets.map(({ key }) => key);
63
+ const transformer = function bucket({ path = '.', buckets = [], groupByPath, }) {
48
64
  return (options) => {
49
65
  const getFn = pathGetter(path);
50
66
  const setFn = pathSetter(path, options);
67
+ const getGroupByPathFn = prepareGroupByPathFn(groupByPath, options);
51
68
  const pipelines = buckets
52
69
  .filter(({ key }) => typeof key === 'string')
53
70
  .map((bucket) => [
54
71
  shouldGoInBucket(options, bucket.condition ?? bucket.pipeline, bucket.size),
55
72
  bucket.key,
56
73
  ]);
57
- const keys = buckets.map(({ key }) => key);
74
+ const keys = extractBucketKeys(buckets, !!getGroupByPathFn);
58
75
  return async (data, state) => {
59
76
  if (revFromState(state)) {
60
77
  return setFn(extractArrayFromBuckets(data, keys, options.nonvalues), state);
61
78
  }
62
79
  else {
63
- return sortIntoBuckets(getFn, pipelines, data, state);
80
+ return sortIntoBuckets(getFn, pipelines, getGroupByPathFn, data, state, options.nonvalues);
64
81
  }
65
82
  };
66
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../src/transformers/bucket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../src/transformers/bucket.ts"],"names":[],"mappings":"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"}
@@ -41,11 +41,7 @@ function prepareProjectFn(include, includePath, exclude, excludePath) {
41
41
  }
42
42
  const transformer = function bucket({ include, includePath, exclude, excludePath, }) {
43
43
  const projectFn = prepareProjectFn(include, includePath, exclude, excludePath);
44
- return () => (data, state) => mapAny((data) => isObject(data)
45
- ? state.rev
46
- ? data
47
- : projectFn(data, state)
48
- : undefined, data);
44
+ return () => (data, state) => mapAny((data) => (isObject(data) ? projectFn(data, state) : undefined), data);
49
45
  };
50
46
  export default transformer;
51
47
  //# sourceMappingURL=project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/transformers/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/transformers/project.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const escapeValue: <T = unknown>(value: string | T) => string | (T & ({} | null));
1
+ export declare const escapeValue: <T = unknown>(value: T | string) => string | (T & ({} | null));
2
2
  export declare const unescapeValue: <T = unknown>(value: T | undefined) => T | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-transform",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "description": "Map and transform objects with mapping definitions",
5
5
  "author": "Kjell-Morten Bratsberg Thorsen <kjellmorten@integreat.io>",
6
6
  "license": "ISC",
@@ -26,10 +26,10 @@
26
26
  }
27
27
  },
28
28
  "scripts": {
29
- "test": "npm run build && c8 --reporter=text-summary ava --config ./ava-dist.config.cjs",
29
+ "test": "npm run build && c8 --reporter=text-summary ava --config ./ava-dist.config.js",
30
30
  "test:watch": "npm run dev",
31
31
  "dev": "ava --watch",
32
- "perf": "ava --watch --config ./ava-perf.config.cjs",
32
+ "perf": "ava --watch --config ./ava-perf.config.js",
33
33
  "build": "tsc",
34
34
  "prepublish": "npm run build",
35
35
  "coverage": "c8 report",
@@ -48,15 +48,16 @@
48
48
  },
49
49
  "homepage": "https://github.com/integreat-io/map-transform#readme",
50
50
  "dependencies": {
51
- "ajv": "^8.12.0",
51
+ "ajv": "^8.13.0",
52
52
  "deepmerge": "^4.3.1",
53
53
  "map-any": "^1.0.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@integreat/ts-dev-setup": "^5.0.4",
56
+ "@integreat/ts-dev-setup": "^6.0.2",
57
57
  "@types/deep-freeze": "^0.1.5",
58
+ "@types/node": "^20.12.12",
58
59
  "@types/sinon": "^17.0.3",
59
60
  "deep-freeze": "0.0.1",
60
- "sinon": "^17.0.1"
61
+ "sinon": "^18.0.0"
61
62
  }
62
63
  }