@voiceflow/common 7.19.3 → 7.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/common/types.d.ts +7 -0
- package/build/common/utils/array.d.ts +13 -2
- package/build/common/utils/array.js +21 -12
- package/build/common/utils/array.js.map +1 -1
- package/build/common/utils/functional.d.ts +1 -0
- package/build/common/utils/functional.js +4 -3
- package/build/common/utils/functional.js.map +1 -1
- package/build/common/utils/id.d.ts +2 -0
- package/build/common/utils/id.js +13 -1
- package/build/common/utils/id.js.map +1 -1
- package/build/common/utils/object/common.d.ts +26 -0
- package/build/common/utils/object/common.js +64 -0
- package/build/common/utils/object/common.js.map +1 -0
- package/build/common/utils/object/deepMap.d.ts +5 -0
- package/build/common/utils/object/deepMap.js +77 -0
- package/build/common/utils/object/deepMap.js.map +1 -0
- package/build/common/utils/object/diff.d.ts +3 -0
- package/build/common/utils/object/diff.js +41 -0
- package/build/common/utils/object/diff.js.map +1 -0
- package/build/common/utils/object/index.d.ts +4 -0
- package/build/common/utils/object/index.js +17 -0
- package/build/common/utils/object/index.js.map +1 -0
- package/build/common/utils/object/keys.d.ts +4 -0
- package/build/common/utils/object/keys.js +62 -0
- package/build/common/utils/object/keys.js.map +1 -0
- package/build/esm/types.d.ts +7 -0
- package/build/esm/utils/array.d.ts +13 -2
- package/build/esm/utils/array.js +18 -11
- package/build/esm/utils/array.js.map +1 -1
- package/build/esm/utils/functional.d.ts +1 -0
- package/build/esm/utils/functional.js +2 -2
- package/build/esm/utils/functional.js.map +1 -1
- package/build/esm/utils/id.d.ts +2 -0
- package/build/esm/utils/id.js +11 -0
- package/build/esm/utils/id.js.map +1 -1
- package/build/esm/utils/object/common.d.ts +26 -0
- package/build/esm/utils/object/common.js +54 -0
- package/build/esm/utils/object/common.js.map +1 -0
- package/build/esm/utils/object/deepMap.d.ts +5 -0
- package/build/esm/utils/object/deepMap.js +72 -0
- package/build/esm/utils/object/deepMap.js.map +1 -0
- package/build/esm/utils/object/diff.d.ts +3 -0
- package/build/esm/utils/object/diff.js +33 -0
- package/build/esm/utils/object/diff.js.map +1 -0
- package/build/esm/utils/object/index.d.ts +4 -0
- package/build/esm/utils/object/index.js +5 -0
- package/build/esm/utils/object/index.js.map +1 -0
- package/build/esm/utils/object/keys.d.ts +4 -0
- package/build/esm/utils/object/keys.js +53 -0
- package/build/esm/utils/object/keys.js.map +1 -0
- package/package.json +6 -2
- package/build/common/utils/object.d.ts +0 -8
- package/build/common/utils/object.js +0 -94
- package/build/common/utils/object.js.map +0 -1
- package/build/esm/utils/object.d.ts +0 -8
- package/build/esm/utils/object.js +0 -80
- package/build/esm/utils/object.js.map +0 -1
package/build/esm/utils/array.js
CHANGED
|
@@ -37,22 +37,29 @@ export const separate = (items, predicate) => items.reduce(([passAcc, failAcc],
|
|
|
37
37
|
}
|
|
38
38
|
return [passAcc, failAcc];
|
|
39
39
|
}, [[], []]);
|
|
40
|
+
export const createEntries = (array, getKey = (value) => value) => array.map((item) => [getKey(item), item]);
|
|
41
|
+
export const createMap = (array, getKey = (value) => value) => Object.fromEntries(createEntries(array, getKey));
|
|
40
42
|
export const findUnion = (lhs, rhs) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
// using sets instead of arrays since .has is O(1)
|
|
44
|
+
const lSet = new Set(lhs);
|
|
45
|
+
const rSet = new Set(rhs);
|
|
46
|
+
const unionSet = new Set([...lhs, ...rhs]);
|
|
47
|
+
const result = { rhsOnly: [], lhsOnly: [], union: [] };
|
|
48
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
49
|
+
for (const item of unionSet) {
|
|
50
|
+
if (lSet.has(item)) {
|
|
51
|
+
if (rSet.has(item)) {
|
|
52
|
+
result.union.push(item);
|
|
46
53
|
}
|
|
47
54
|
else {
|
|
48
|
-
|
|
55
|
+
result.lhsOnly.push(item);
|
|
49
56
|
}
|
|
50
57
|
}
|
|
51
58
|
else {
|
|
52
|
-
|
|
59
|
+
result.rhsOnly.push(item);
|
|
53
60
|
}
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
56
63
|
};
|
|
57
64
|
export const diff = (lhs, rhs) => {
|
|
58
65
|
const { lhsOnly, rhsOnly } = findUnion(lhs, rhs);
|
|
@@ -78,10 +85,10 @@ export const isNotNullish = (value) => value !== null && value !== undefined;
|
|
|
78
85
|
/** @deprecated Use `array.filter(isNotNullish)` instead. */
|
|
79
86
|
export const filterOutNullish = (items) => items.filter(isNotNullish);
|
|
80
87
|
// mostly just saves us needing to traverse an array twice
|
|
81
|
-
export const filterAndGetLastRemovedValue = (list,
|
|
88
|
+
export const filterAndGetLastRemovedValue = (list, filter) => {
|
|
82
89
|
let lastItem = null;
|
|
83
90
|
const filteredList = list.filter((a) => {
|
|
84
|
-
if (
|
|
91
|
+
if (filter(a))
|
|
85
92
|
return true;
|
|
86
93
|
lastItem = a;
|
|
87
94
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/utils/array.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/utils/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Nullish } from '../types';
|
|
2
|
+
export declare const isFunction: <T extends (...args: any[]) => any = (...args: any[]) => any>(value: unknown) => value is T;
|
|
2
3
|
export declare type Transform<T = any, R = T> = (value: T) => R;
|
|
3
4
|
export interface Compose {
|
|
4
5
|
<R, T1>(t0: Transform<T1, R>): (value: T1) => R;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export const isFunction = (value) => typeof value === 'function';
|
|
1
2
|
export const compose = (...transforms) => (value) => {
|
|
2
3
|
if (transforms.length === 1) {
|
|
3
4
|
return transforms[0](value);
|
|
@@ -7,8 +8,7 @@ export const compose = (...transforms) => (value) => {
|
|
|
7
8
|
}
|
|
8
9
|
return transforms.reduceRight((acc, transform) => transform(acc), value);
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
-
export const noop = () => { };
|
|
11
|
+
export const noop = () => undefined;
|
|
12
12
|
export const identity = (value) => value;
|
|
13
13
|
export const stringify = (value) => (typeof value === 'string' ? value : String(value));
|
|
14
14
|
export const chain = (...fns) => (...args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functional.js","sourceRoot":"","sources":["../../../src/utils/functional.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"functional.js","sourceRoot":"","sources":["../../../src/utils/functional.ts"],"names":[],"mappings":"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"}
|
package/build/esm/utils/id.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import cuid from 'cuid';
|
|
2
|
+
import { EmptyObject } from '../types';
|
|
2
3
|
export { cuid };
|
|
3
4
|
export declare const objectID: () => string;
|
|
5
|
+
export declare const remapObjectIDs: <T extends Readonly<EmptyObject>>(object: T, lookupMap: Record<string, string> | Map<string, string>) => T;
|
package/build/esm/utils/id.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import ObjectId from 'bson-objectid';
|
|
2
2
|
import cuid from 'cuid';
|
|
3
|
+
import { deepMap, deepMapKeys } from './object';
|
|
3
4
|
export { cuid };
|
|
4
5
|
export const objectID = () => new ObjectId().toHexString();
|
|
6
|
+
export const remapObjectIDs = (object, lookupMap) => {
|
|
7
|
+
const map = lookupMap instanceof Map ? lookupMap : new Map(Object.entries(lookupMap));
|
|
8
|
+
const mapping = (value) => {
|
|
9
|
+
if (typeof value === 'string' && map.has(value)) {
|
|
10
|
+
return map.get(value);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
};
|
|
14
|
+
return deepMapKeys(deepMap(object, mapping), mapping);
|
|
15
|
+
};
|
|
5
16
|
//# sourceMappingURL=id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/utils/id.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/utils/id.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAkC,MAAS,EAAE,SAAuD,EAAK,EAAE;IACvI,MAAM,GAAG,GAAgC,SAAS,YAAY,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnH,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;SACxB;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AnyRecord, Struct } from "../../types";
|
|
2
|
+
export declare const selectField: <K extends string | number>(field: K) => <T extends { [key in K]: any; }>(obj: T) => T[K];
|
|
3
|
+
export declare const selectID: <T extends {
|
|
4
|
+
id: any;
|
|
5
|
+
}>(obj: T) => T["id"];
|
|
6
|
+
export declare const selectKey: <T extends {
|
|
7
|
+
key: any;
|
|
8
|
+
}>(obj: T) => T["key"];
|
|
9
|
+
export declare const selectValue: <T extends {
|
|
10
|
+
value: any;
|
|
11
|
+
}>(obj: T) => T["value"];
|
|
12
|
+
export declare const isObject: (obj: unknown) => obj is Struct;
|
|
13
|
+
export declare const hasProperty: <T, K extends string | keyof T>(obj: T, key: K) => obj is T & Record<K, unknown>;
|
|
14
|
+
export declare const omit: <T, K extends keyof T>(obj: T, keys: K[]) => Omit<T, K>;
|
|
15
|
+
export declare const pick: <T, K extends keyof T>(obj: T, keys: K[]) => Pick<T, K>;
|
|
16
|
+
interface PickOmitBy {
|
|
17
|
+
<T extends AnyRecord>(obj: T, predicate: (key: keyof T, value: T[keyof T]) => boolean): Partial<T>;
|
|
18
|
+
<T extends AnyRecord, R extends AnyRecord>(obj: T, predicate: (key: keyof T, value: T[keyof T]) => boolean): R;
|
|
19
|
+
}
|
|
20
|
+
export declare const pickBy: PickOmitBy;
|
|
21
|
+
export declare const omitBy: PickOmitBy;
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated use pickBy instead
|
|
24
|
+
*/
|
|
25
|
+
export declare const filterEntries: PickOmitBy;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export const selectField = (field) => (obj) => obj[field];
|
|
2
|
+
export const selectID = selectField('id');
|
|
3
|
+
export const selectKey = selectField('key');
|
|
4
|
+
export const selectValue = selectField('value');
|
|
5
|
+
export const isObject = (obj) => obj !== null && typeof obj === 'object';
|
|
6
|
+
export const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);
|
|
7
|
+
export const omit = (obj, keys) => {
|
|
8
|
+
const newObj = Object.assign({}, obj);
|
|
9
|
+
if (keys.length === 0) {
|
|
10
|
+
return newObj;
|
|
11
|
+
}
|
|
12
|
+
if (keys.length === 1) {
|
|
13
|
+
delete newObj[keys[0]];
|
|
14
|
+
return newObj;
|
|
15
|
+
}
|
|
16
|
+
if (keys.length === 2) {
|
|
17
|
+
delete newObj[keys[0]];
|
|
18
|
+
delete newObj[keys[1]];
|
|
19
|
+
return newObj;
|
|
20
|
+
}
|
|
21
|
+
return keys.reduce((acc, key) => {
|
|
22
|
+
delete acc[key];
|
|
23
|
+
return acc;
|
|
24
|
+
}, newObj);
|
|
25
|
+
};
|
|
26
|
+
export const pick = (obj, keys) => {
|
|
27
|
+
if (keys.length === 0) {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
if (keys.length === 1) {
|
|
31
|
+
return { [keys[0]]: obj[keys[0]] };
|
|
32
|
+
}
|
|
33
|
+
if (keys.length === 2) {
|
|
34
|
+
return { [keys[0]]: obj[keys[0]], [keys[1]]: obj[keys[1]] };
|
|
35
|
+
}
|
|
36
|
+
return keys.reduce((acc, key) => Object.assign(acc, { [key]: obj[key] }), {});
|
|
37
|
+
};
|
|
38
|
+
export const pickBy = (obj, predicate) => Object.entries(obj).reduce((acc, [key, value]) => {
|
|
39
|
+
if (predicate(key, value)) {
|
|
40
|
+
acc[key] = value;
|
|
41
|
+
}
|
|
42
|
+
return acc;
|
|
43
|
+
}, {});
|
|
44
|
+
export const omitBy = (obj, predicate) => Object.entries(obj).reduce((acc, [key, value]) => {
|
|
45
|
+
if (predicate(key, value)) {
|
|
46
|
+
delete acc[key];
|
|
47
|
+
}
|
|
48
|
+
return acc;
|
|
49
|
+
}, Object.assign({}, obj));
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated use pickBy instead
|
|
52
|
+
*/
|
|
53
|
+
export const filterEntries = pickBy;
|
|
54
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/object/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Struct } from "../../types";
|
|
2
|
+
export declare const deepMap: <T = Struct>(object: unknown, mapFunction: (value: unknown, key: string | number) => unknown, options?: {
|
|
3
|
+
inPlace?: boolean;
|
|
4
|
+
}) => T;
|
|
5
|
+
export declare const deepMapKeys: <T = Struct>(object: unknown, mapFunction: (key: string, value: unknown) => string) => T;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { isObject } from './common';
|
|
2
|
+
export const deepMap = (object, mapFunction, options = {}) => {
|
|
3
|
+
const cache = new WeakMap();
|
|
4
|
+
const mapArray = (arr) => {
|
|
5
|
+
if (cache.has(arr)) {
|
|
6
|
+
return cache.get(arr);
|
|
7
|
+
}
|
|
8
|
+
const result = options.inPlace ? arr : [];
|
|
9
|
+
cache.set(arr, result);
|
|
10
|
+
const { length } = arr;
|
|
11
|
+
for (let index = 0; index < length; index++) {
|
|
12
|
+
result[index] = map(arr[index], index);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
const mapObject = (obj) => {
|
|
17
|
+
if (cache.has(obj)) {
|
|
18
|
+
return cache.get(obj);
|
|
19
|
+
}
|
|
20
|
+
const result = options.inPlace ? obj : {};
|
|
21
|
+
cache.set(obj, result);
|
|
22
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
23
|
+
for (const key of Object.keys(obj)) {
|
|
24
|
+
result[key] = map(obj[key], key);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
const map = (value, key) => {
|
|
29
|
+
if (Array.isArray(value))
|
|
30
|
+
return mapArray(value);
|
|
31
|
+
if (isObject(value))
|
|
32
|
+
return mapObject(value);
|
|
33
|
+
return mapFunction(value, key);
|
|
34
|
+
};
|
|
35
|
+
return map(object);
|
|
36
|
+
};
|
|
37
|
+
export const deepMapKeys = (object, mapFunction) => {
|
|
38
|
+
const cache = new WeakMap();
|
|
39
|
+
const mapArray = (arr) => {
|
|
40
|
+
if (cache.has(arr)) {
|
|
41
|
+
return cache.get(arr);
|
|
42
|
+
}
|
|
43
|
+
const result = [];
|
|
44
|
+
cache.set(arr, result);
|
|
45
|
+
const { length } = arr;
|
|
46
|
+
for (let i = 0; i < length; i++) {
|
|
47
|
+
result.push(map(arr[i]));
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
const mapObject = (obj) => {
|
|
52
|
+
if (cache.has(obj)) {
|
|
53
|
+
return cache.get(obj);
|
|
54
|
+
}
|
|
55
|
+
const result = {};
|
|
56
|
+
cache.set(obj, result);
|
|
57
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
58
|
+
for (const key of Object.keys(obj)) {
|
|
59
|
+
result[mapFunction(key, obj[key])] = map(obj[key]);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
};
|
|
63
|
+
const map = (value) => {
|
|
64
|
+
if (Array.isArray(value))
|
|
65
|
+
return mapArray(value);
|
|
66
|
+
if (isObject(value))
|
|
67
|
+
return mapObject(value);
|
|
68
|
+
return value;
|
|
69
|
+
};
|
|
70
|
+
return map(object);
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=deepMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMap.js","sourceRoot":"","sources":["../../../../src/utils/object/deepMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AnyRecord, DeepPartial } from "../../types";
|
|
2
|
+
export declare const getDiff: <S extends AnyRecord>(object: S, base: S, compare?: <T>(left: T, right: T) => boolean) => DeepPartial<S>;
|
|
3
|
+
export declare const getTopLevelDiff: <S extends AnyRecord>(object: S, base: S, compare?: <T>(left: T, right: T) => boolean) => Partial<S>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import _transform from 'lodash/transform';
|
|
2
|
+
import { isObject } from './common';
|
|
3
|
+
const defaultCompare = (left, right) => left === right;
|
|
4
|
+
export const getDiff = (object, base, compare = defaultCompare) => {
|
|
5
|
+
const changes = (object, base) => _transform(object, (result, value, key) => {
|
|
6
|
+
var _a;
|
|
7
|
+
if (!compare(value, base[key])) {
|
|
8
|
+
if (isObject(value) && isObject(base[key])) {
|
|
9
|
+
// eslint-disable-next-line no-param-reassign
|
|
10
|
+
result[key] = changes(value, base[key]);
|
|
11
|
+
if (Object.keys((_a = result[key]) !== null && _a !== void 0 ? _a : {}).length === 0) {
|
|
12
|
+
// eslint-disable-next-line no-param-reassign
|
|
13
|
+
delete result[key];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// eslint-disable-next-line no-param-reassign
|
|
18
|
+
result[key] = value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return changes(object, base);
|
|
23
|
+
};
|
|
24
|
+
export const getTopLevelDiff = (object, base, compare = defaultCompare) => {
|
|
25
|
+
const changes = (object, base) => _transform(object, (result, value, key) => {
|
|
26
|
+
if (!compare(value, base[key])) {
|
|
27
|
+
// eslint-disable-next-line no-param-reassign
|
|
28
|
+
result[key] = value;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return changes(object, base);
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/utils/object/diff.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,cAAc,GAAG,CAAI,IAAO,EAAE,KAAQ,EAAW,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;AAEzE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAsB,MAAS,EAAE,IAAO,EAAE,OAAO,GAAG,cAAc,EAAkB,EAAE;IAC3G,MAAM,OAAO,GAAG,CAAsB,MAAS,EAAE,IAAO,EAAE,EAAE,CAC1D,UAAU,CAAoB,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;;QAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAC9B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1C,6CAA6C;gBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAmD,CAAC;gBAE1F,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAM,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,6CAA6C;oBAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF;iBAAM;gBACL,6CAA6C;gBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACrB;SACF;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAsB,MAAS,EAAE,IAAO,EAAE,OAAO,GAAG,cAAc,EAAc,EAAE;IAC/G,MAAM,OAAO,GAAG,CAAC,MAAS,EAAE,IAAO,EAAE,EAAE,CACrC,UAAU,CAAgB,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACvD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAC9B,6CAA6C;YAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/object/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AnyRecord } from "../../types";
|
|
2
|
+
export declare const getKeys: <T>(obj: T) => (keyof T)[];
|
|
3
|
+
export declare const getIn: <T, K extends string | keyof T>(rawObj: T, key: K | K[], def?: any, index?: number) => rawObj is T & Record<K, unknown>;
|
|
4
|
+
export declare const setIn: (obj: AnyRecord, path: unknown, value: unknown) => any;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _cloneDeep from 'lodash/cloneDeep';
|
|
2
|
+
import _toPath from 'lodash/toPath';
|
|
3
|
+
export const getKeys = (obj) => Object.keys(obj);
|
|
4
|
+
export const getIn = (rawObj, key, def, index = 0) => {
|
|
5
|
+
const path = _toPath(key);
|
|
6
|
+
let obj = rawObj;
|
|
7
|
+
let i = index;
|
|
8
|
+
if (path.length === 1) {
|
|
9
|
+
return obj[path[0]];
|
|
10
|
+
}
|
|
11
|
+
while (obj && i < path.length) {
|
|
12
|
+
obj = obj[path[i++]];
|
|
13
|
+
}
|
|
14
|
+
return obj === undefined ? def : obj;
|
|
15
|
+
};
|
|
16
|
+
export const setIn = (obj, path, value) => {
|
|
17
|
+
const res = {};
|
|
18
|
+
const pathArray = _toPath(path);
|
|
19
|
+
let resVal = res;
|
|
20
|
+
let index = 0;
|
|
21
|
+
for (; index < pathArray.length - 1; index++) {
|
|
22
|
+
const currentPath = pathArray[index];
|
|
23
|
+
if (resVal[currentPath]) {
|
|
24
|
+
resVal = resVal[currentPath];
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const currentObj = getIn(obj, pathArray.slice(0, index + 1));
|
|
28
|
+
if (currentObj) {
|
|
29
|
+
resVal[currentPath] = _cloneDeep(currentObj);
|
|
30
|
+
resVal = resVal[currentPath];
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const nextPath = pathArray[index + 1];
|
|
34
|
+
resVal[currentPath] = +nextPath >= 0 ? [] : {};
|
|
35
|
+
resVal = resVal[currentPath];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if ((index === 0 ? obj : resVal)[pathArray[index]] === value) {
|
|
39
|
+
return obj;
|
|
40
|
+
}
|
|
41
|
+
if (value === undefined) {
|
|
42
|
+
delete resVal[pathArray[index]];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
resVal[pathArray[index]] = value;
|
|
46
|
+
}
|
|
47
|
+
const result = Object.assign(Object.assign({}, obj), res);
|
|
48
|
+
if (index === 0 && value === undefined) {
|
|
49
|
+
delete result[pathArray[index]];
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/utils/object/keys.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,OAAO,MAAM,eAAe,CAAC;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,GAAM,EAAe,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB,CAAC;AAEnF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAgC,MAAS,EAAE,GAAY,EAAE,GAAS,EAAE,KAAK,GAAG,CAAC,EAAoC,EAAE;IACtI,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,GAAQ,MAAM,CAAC;IACtB,IAAI,CAAC,GAAG,KAAK,CAAC;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB;IAED,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QAC7B,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACtB;IAED,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAc,EAAE,IAAa,EAAE,KAAc,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,MAAM,GAAc,GAAG,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;YACvB,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC7B,SAAS;SACV;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;SAC9B;aAAM;YACL,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAEtC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE;QAC5D,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACjC;SAAM;QACL,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;KAClC;IAED,MAAM,MAAM,mCAAa,GAAG,GAAK,GAAG,CAAE,CAAC;IAEvC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE;QACtC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACjC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voiceflow/common",
|
|
3
3
|
"description": "Junk drawer of utility functions",
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.21.0",
|
|
5
5
|
"author": "Voiceflow",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/voiceflow/libs/issues"
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"mocha": "9.1.3",
|
|
35
35
|
"nyc": "^15.1.0",
|
|
36
36
|
"rimraf": "^3.0.2",
|
|
37
|
+
"sinon": "^10.0.0",
|
|
37
38
|
"ts-mocha": "^8.0.0",
|
|
38
39
|
"ts-node": "10.5.0",
|
|
39
40
|
"tsconfig-paths": "3.12.0",
|
|
@@ -50,6 +51,9 @@
|
|
|
50
51
|
"license": "ISC",
|
|
51
52
|
"main": "build/common/index.js",
|
|
52
53
|
"module": "build/esm/index.js",
|
|
54
|
+
"publishConfig": {
|
|
55
|
+
"access": "public"
|
|
56
|
+
},
|
|
53
57
|
"repository": {
|
|
54
58
|
"type": "git",
|
|
55
59
|
"url": "git+https://github.com/voiceflow/libs.git"
|
|
@@ -72,5 +76,5 @@
|
|
|
72
76
|
"test:single": "NODE_ENV=test ts-mocha --paths --config config/tests/mocharc.yml",
|
|
73
77
|
"test:unit": "NODE_ENV=test nyc --report-dir=nyc_coverage_unit ts-mocha --paths --config config/tests/mocharc.yml 'tests/**/*.unit.ts'"
|
|
74
78
|
},
|
|
75
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "4f265e2cd11970e42817b7e40dbf7612a53ea385"
|
|
76
80
|
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare const getKeys: <T>(obj: T) => (keyof T)[];
|
|
2
|
-
export declare const pick: <T, K extends keyof T>(obj: T, keys: K[]) => Pick<T, K>;
|
|
3
|
-
export declare const hasProperty: <T, K extends string | keyof T>(obj: T, key: K) => obj is T & Record<K, unknown>;
|
|
4
|
-
export declare const getIn: <T, K extends string | keyof T>(rawObj: T, key: K | K[], def?: any, index?: number) => rawObj is T & Record<K, unknown>;
|
|
5
|
-
export declare const setIn: (obj: Record<string, unknown>, path: any, value: any) => any;
|
|
6
|
-
export declare const filterEntries: (obj: Record<string, any>, predicate: any) => any;
|
|
7
|
-
export declare const getDiff: (object: Record<string, any>, base: Record<string, any>) => unknown;
|
|
8
|
-
export declare const getTopLevelDiff: (object: any, base: any) => unknown;
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getTopLevelDiff = exports.getDiff = exports.filterEntries = exports.setIn = exports.getIn = exports.hasProperty = exports.pick = exports.getKeys = void 0;
|
|
7
|
-
const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
|
|
8
|
-
const isObject_1 = __importDefault(require("lodash/isObject"));
|
|
9
|
-
const toPath_1 = __importDefault(require("lodash/toPath"));
|
|
10
|
-
const transform_1 = __importDefault(require("lodash/transform"));
|
|
11
|
-
const getKeys = (obj) => Object.keys(obj);
|
|
12
|
-
exports.getKeys = getKeys;
|
|
13
|
-
const pick = (obj, keys) => keys.reduce((acc, key) => Object.assign(acc, { [key]: obj[key] }), {});
|
|
14
|
-
exports.pick = pick;
|
|
15
|
-
const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);
|
|
16
|
-
exports.hasProperty = hasProperty;
|
|
17
|
-
const getIn = (rawObj, key, def, index = 0) => {
|
|
18
|
-
const path = (0, toPath_1.default)(key);
|
|
19
|
-
let obj = rawObj;
|
|
20
|
-
let i = index;
|
|
21
|
-
if (path.length === 1) {
|
|
22
|
-
return obj[path[0]];
|
|
23
|
-
}
|
|
24
|
-
while (obj && i < path.length) {
|
|
25
|
-
obj = obj[path[i++]];
|
|
26
|
-
}
|
|
27
|
-
return obj === undefined ? def : obj;
|
|
28
|
-
};
|
|
29
|
-
exports.getIn = getIn;
|
|
30
|
-
const setIn = (obj, path, value) => {
|
|
31
|
-
const res = {};
|
|
32
|
-
const pathArray = (0, toPath_1.default)(path);
|
|
33
|
-
let resVal = res;
|
|
34
|
-
let i = 0;
|
|
35
|
-
for (; i < pathArray.length - 1; i++) {
|
|
36
|
-
const currentPath = pathArray[i];
|
|
37
|
-
const currentObj = (0, exports.getIn)(obj, pathArray.slice(0, i + 1));
|
|
38
|
-
if (resVal[currentPath]) {
|
|
39
|
-
resVal = resVal[currentPath];
|
|
40
|
-
}
|
|
41
|
-
else if (currentObj) {
|
|
42
|
-
resVal[currentPath] = (0, cloneDeep_1.default)(currentObj);
|
|
43
|
-
resVal = resVal[currentPath];
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
const nextPath = pathArray[i + 1];
|
|
47
|
-
resVal[currentPath] = +nextPath >= 0 ? [] : {};
|
|
48
|
-
resVal = resVal[currentPath];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {
|
|
52
|
-
return obj;
|
|
53
|
-
}
|
|
54
|
-
if (value === undefined) {
|
|
55
|
-
delete resVal[pathArray[i]];
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
resVal[pathArray[i]] = value;
|
|
59
|
-
}
|
|
60
|
-
const result = Object.assign(Object.assign({}, obj), res);
|
|
61
|
-
if (i === 0 && value === undefined) {
|
|
62
|
-
delete result[pathArray[i]];
|
|
63
|
-
}
|
|
64
|
-
return result;
|
|
65
|
-
};
|
|
66
|
-
exports.setIn = setIn;
|
|
67
|
-
const filterEntries = (obj, predicate) => Object.entries(obj).reduce((acc, [key, value]) => {
|
|
68
|
-
if (predicate(key, value)) {
|
|
69
|
-
acc[key] = value;
|
|
70
|
-
}
|
|
71
|
-
return acc;
|
|
72
|
-
}, {});
|
|
73
|
-
exports.filterEntries = filterEntries;
|
|
74
|
-
const getDiff = (object, base) => {
|
|
75
|
-
const changes = (object, base) => (0, transform_1.default)(object, (result, value, key) => {
|
|
76
|
-
if (value !== base[key]) {
|
|
77
|
-
// eslint-disable-next-line no-param-reassign
|
|
78
|
-
result[key] = (0, isObject_1.default)(value) && (0, isObject_1.default)(base[key]) ? changes(value, base[key]) : value;
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return changes(object, base);
|
|
82
|
-
};
|
|
83
|
-
exports.getDiff = getDiff;
|
|
84
|
-
const getTopLevelDiff = (object, base) => {
|
|
85
|
-
const changes = (object, base) => (0, transform_1.default)(object, (result, value, key) => {
|
|
86
|
-
if (value !== base[key]) {
|
|
87
|
-
// eslint-disable-next-line no-param-reassign
|
|
88
|
-
result[key] = value;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
return changes(object, base);
|
|
92
|
-
};
|
|
93
|
-
exports.getTopLevelDiff = getTopLevelDiff;
|
|
94
|
-
//# sourceMappingURL=object.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/utils/object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare const getKeys: <T>(obj: T) => (keyof T)[];
|
|
2
|
-
export declare const pick: <T, K extends keyof T>(obj: T, keys: K[]) => Pick<T, K>;
|
|
3
|
-
export declare const hasProperty: <T, K extends string | keyof T>(obj: T, key: K) => obj is T & Record<K, unknown>;
|
|
4
|
-
export declare const getIn: <T, K extends string | keyof T>(rawObj: T, key: K | K[], def?: any, index?: number) => rawObj is T & Record<K, unknown>;
|
|
5
|
-
export declare const setIn: (obj: Record<string, unknown>, path: any, value: any) => any;
|
|
6
|
-
export declare const filterEntries: (obj: Record<string, any>, predicate: any) => any;
|
|
7
|
-
export declare const getDiff: (object: Record<string, any>, base: Record<string, any>) => unknown;
|
|
8
|
-
export declare const getTopLevelDiff: (object: any, base: any) => unknown;
|