@voiceflow/common 6.9.2 → 7.2.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.
Files changed (54) hide show
  1. package/build/constants/environment.d.ts +6 -0
  2. package/build/constants/environment.js +12 -0
  3. package/build/constants/environment.js.map +1 -0
  4. package/build/constants/index.d.ts +1 -0
  5. package/build/constants/index.js +1 -0
  6. package/build/constants/index.js.map +1 -1
  7. package/build/crypto/base64.js +2 -2
  8. package/build/crypto/base64.js.map +1 -1
  9. package/build/index.d.ts +1 -0
  10. package/build/index.js +3 -1
  11. package/build/index.js.map +1 -1
  12. package/build/utils/array.d.ts +21 -0
  13. package/build/utils/array.js +100 -0
  14. package/build/utils/array.js.map +1 -0
  15. package/build/utils/emails.d.ts +2 -0
  16. package/build/utils/emails.js +9 -0
  17. package/build/utils/emails.js.map +1 -0
  18. package/build/utils/expression.d.ts +0 -0
  19. package/build/utils/expression.js +2 -0
  20. package/build/utils/expression.js.map +1 -0
  21. package/build/utils/functional.d.ts +23 -0
  22. package/build/utils/functional.js +32 -0
  23. package/build/utils/functional.js.map +1 -0
  24. package/build/utils/id.d.ts +1 -0
  25. package/build/utils/id.js +11 -0
  26. package/build/utils/id.js.map +1 -0
  27. package/build/utils/index.d.ts +14 -0
  28. package/build/utils/index.js +28 -0
  29. package/build/utils/index.js.map +1 -1
  30. package/build/utils/mathjs.d.ts +1 -0
  31. package/build/utils/mathjs.js +64 -0
  32. package/build/utils/mathjs.js.map +1 -0
  33. package/build/utils/normalized.d.ts +49 -0
  34. package/build/utils/normalized.js +93 -0
  35. package/build/utils/normalized.js.map +1 -0
  36. package/build/utils/number.d.ts +4 -0
  37. package/build/utils/number.js +15 -0
  38. package/build/utils/number.js.map +1 -0
  39. package/build/utils/object.d.ts +7 -0
  40. package/build/utils/object.js +90 -0
  41. package/build/utils/object.js.map +1 -0
  42. package/build/utils/promise.d.ts +8 -0
  43. package/build/utils/promise.js +22 -0
  44. package/build/utils/promise.js.map +1 -0
  45. package/build/utils/string.d.ts +8 -0
  46. package/build/utils/string.js +25 -0
  47. package/build/utils/string.js.map +1 -0
  48. package/build/utils/time.d.ts +3 -0
  49. package/build/utils/time.js +53 -0
  50. package/build/utils/time.js.map +1 -0
  51. package/build/utils/timezones.d.ts +1 -0
  52. package/build/utils/timezones.js +2034 -0
  53. package/build/utils/timezones.js.map +1 -0
  54. package/package.json +13 -3
@@ -0,0 +1,6 @@
1
+ export declare enum Environment {
2
+ PRODUCTION = "production",
3
+ LOCAL = "local",
4
+ E2E = "e2e",
5
+ TEST = "test"
6
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /* eslint-disable import/prefer-default-export */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Environment = void 0;
5
+ var Environment;
6
+ (function (Environment) {
7
+ Environment["PRODUCTION"] = "production";
8
+ Environment["LOCAL"] = "local";
9
+ Environment["E2E"] = "e2e";
10
+ Environment["TEST"] = "test";
11
+ })(Environment = exports.Environment || (exports.Environment = {}));
12
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/constants/environment.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAEjD,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,8BAAe,CAAA;IACf,0BAAW,CAAA;IACX,4BAAa,CAAA;AACf,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB"}
@@ -1,3 +1,4 @@
1
+ export * from './environment';
1
2
  export * from './intent';
2
3
  export * from './regexp';
3
4
  export * from './slot';
@@ -10,6 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./environment"), exports);
13
14
  __exportStar(require("./intent"), exports);
14
15
  __exportStar(require("./regexp"), exports);
15
16
  __exportStar(require("./slot"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB"}
@@ -15,8 +15,8 @@ class Base64 {
15
15
  static decode(data) {
16
16
  return enc_utf8_1.default.stringify(enc_base64_1.default.parse(data));
17
17
  }
18
- static decodeJSON(data = '') {
19
- return JSON.parse(Base64.decode(data));
18
+ static decodeJSON(data) {
19
+ return data ? JSON.parse(Base64.decode(data)) : '';
20
20
  }
21
21
  }
22
22
  exports.default = Base64;
@@ -1 +1 @@
1
- {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/crypto/base64.ts"],"names":[],"mappings":";;;;;AAAA,sEAAgD;AAChD,kEAAsC;AAEtC,MAAM,MAAM;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QAC/B,OAAO,oBAAY,CAAC,SAAS,CAAC,kBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAa;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAY;QAC/B,OAAO,kBAAI,CAAC,SAAS,CAAC,oBAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAI,IAAI,GAAG,EAAE;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAED,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/crypto/base64.ts"],"names":[],"mappings":";;;;;AAAA,sEAAgD;AAChD,kEAAsC;AAEtC,MAAM,MAAM;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QAC/B,OAAO,oBAAY,CAAC,SAAS,CAAC,kBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAa;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAY;QAC/B,OAAO,kBAAI,CAAC,SAAS,CAAC,oBAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAI,IAAa;QACvC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;CACF;AAED,kBAAe,MAAM,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './constants';
2
2
  export * as Crypto from './crypto';
3
3
  export * from './types';
4
+ export * as Utils from './utils';
4
5
  export * from './utils';
package/build/index.js CHANGED
@@ -22,9 +22,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  return result;
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Crypto = void 0;
25
+ exports.Utils = exports.Crypto = void 0;
26
26
  __exportStar(require("./constants"), exports);
27
27
  exports.Crypto = __importStar(require("./crypto"));
28
28
  __exportStar(require("./types"), exports);
29
+ exports.Utils = __importStar(require("./utils"));
30
+ // TODO: Remove this export once we migrate all utils in other repos.
29
31
  __exportStar(require("./utils"), exports);
30
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,mDAAmC;AACnC,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,mDAAmC;AACnC,0CAAwB;AACxB,iDAAiC;AAEjC,qEAAqE;AACrE,0CAAwB"}
@@ -0,0 +1,21 @@
1
+ export declare const unique: <T>(items: T[]) => T[];
2
+ export declare const without: <T>(items: T[], index: number) => T[];
3
+ export declare const withoutValue: <T>(items: T[], value: T) => T[];
4
+ export declare const withoutValues: <T>(items: T[], values: T[]) => T[];
5
+ export declare const replace: <T>(items: T[], index: number, item: T) => T[];
6
+ export declare const insert: <T>(items: T[], index: number, item: T) => T[];
7
+ export declare const insertAll: <T>(items: T[], index: number, additionalItems: T[]) => T[];
8
+ export declare const append: <T>(items: T[], item: T) => T[];
9
+ export declare const toggleMembership: <T>(items: T[], item: T) => T[];
10
+ export declare const head: <T>(items: T[]) => [T, T[]];
11
+ export declare const tail: <T>(items: T[]) => [T[], T];
12
+ export declare const reorder: <T>(items: T[], fromIndex: number, toIndex: number) => T[];
13
+ export declare const separate: <T>(items: T[], predicate: (item: T, index: number) => boolean) => [T[], T[]];
14
+ export declare const findUnion: <T>(lhs: T[], rhs: T[]) => {
15
+ rhsOnly: T[];
16
+ lhsOnly: T[];
17
+ union: T[];
18
+ };
19
+ export declare const diff: <T>(lhs: T[], rhs: T[]) => T[];
20
+ export declare const hasIdenticalMembers: <T>(lhs: T[], rhs: T[]) => boolean;
21
+ export declare const asyncForEach: <T>(array: T[], callback: (item: T, index: number, array: T[]) => Promise<void>) => Promise<void>;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asyncForEach = exports.hasIdenticalMembers = exports.diff = exports.findUnion = exports.separate = exports.reorder = exports.tail = exports.head = exports.toggleMembership = exports.append = exports.insertAll = exports.insert = exports.replace = exports.withoutValues = exports.withoutValue = exports.without = exports.unique = void 0;
4
+ const unique = (items) => Array.from(new Set(items));
5
+ exports.unique = unique;
6
+ const without = (items, index) => (index === -1 ? items : [...items.slice(0, index), ...items.slice(index + 1)]);
7
+ exports.without = without;
8
+ const withoutValue = (items, value) => exports.without(items, items.indexOf(value));
9
+ exports.withoutValue = withoutValue;
10
+ const withoutValues = (items, values) => items.filter((item) => !values.includes(item));
11
+ exports.withoutValues = withoutValues;
12
+ const replace = (items, index, item) => [...items.slice(0, index), item, ...items.slice(index + 1)];
13
+ exports.replace = replace;
14
+ const insert = (items, index, item) => [...items.slice(0, index), item, ...items.slice(index)];
15
+ exports.insert = insert;
16
+ const insertAll = (items, index, additionalItems) => [
17
+ ...items.slice(0, index),
18
+ ...additionalItems,
19
+ ...items.slice(index),
20
+ ];
21
+ exports.insertAll = insertAll;
22
+ const append = (items, item) => (items.includes(item) ? items : [...items, item]);
23
+ exports.append = append;
24
+ const toggleMembership = (items, item) => (items.includes(item) ? exports.withoutValue(items, item) : [...items, item]);
25
+ exports.toggleMembership = toggleMembership;
26
+ const head = (items) => {
27
+ const [first, ...rest] = items;
28
+ return [first, rest];
29
+ };
30
+ exports.head = head;
31
+ const tail = (items) => {
32
+ const last = items[items.length - 1];
33
+ const rest = items.slice(0, -1);
34
+ return [rest, last];
35
+ };
36
+ exports.tail = tail;
37
+ const reorder = (items, fromIndex, toIndex) => {
38
+ if (fromIndex < 0 || fromIndex >= items.length) {
39
+ return items;
40
+ }
41
+ if (toIndex < 0) {
42
+ return [items[fromIndex], ...exports.without(items, fromIndex)];
43
+ }
44
+ if (toIndex >= items.length) {
45
+ return [...exports.without(items, fromIndex), items[fromIndex]];
46
+ }
47
+ return exports.insert(exports.without(items, fromIndex), toIndex, items[fromIndex]);
48
+ };
49
+ exports.reorder = reorder;
50
+ const separate = (items, predicate) => items.reduce(([passAcc, failAcc], item, index) => {
51
+ if (predicate(item, index)) {
52
+ passAcc.push(item);
53
+ }
54
+ else {
55
+ failAcc.push(item);
56
+ }
57
+ return [passAcc, failAcc];
58
+ }, [[], []]);
59
+ exports.separate = separate;
60
+ const findUnion = (lhs, rhs) => {
61
+ const unique = new Set([...lhs, ...rhs]);
62
+ return Array.from(unique).reduce((acc, item) => {
63
+ if (lhs.includes(item)) {
64
+ if (rhs.includes(item)) {
65
+ acc.union.push(item);
66
+ }
67
+ else {
68
+ acc.lhsOnly.push(item);
69
+ }
70
+ }
71
+ else {
72
+ acc.rhsOnly.push(item);
73
+ }
74
+ return acc;
75
+ }, { rhsOnly: [], lhsOnly: [], union: [] });
76
+ };
77
+ exports.findUnion = findUnion;
78
+ const diff = (lhs, rhs) => {
79
+ const { lhsOnly, rhsOnly } = exports.findUnion(lhs, rhs);
80
+ return [...lhsOnly, ...rhsOnly];
81
+ };
82
+ exports.diff = diff;
83
+ const hasIdenticalMembers = (lhs, rhs) => {
84
+ if (lhs.length !== rhs.length) {
85
+ return false;
86
+ }
87
+ if (!lhs.length && !rhs.length) {
88
+ return true;
89
+ }
90
+ return !lhs.some((value) => !rhs.includes(value));
91
+ };
92
+ exports.hasIdenticalMembers = hasIdenticalMembers;
93
+ const asyncForEach = async (array, callback) => {
94
+ for (let index = 0; index < array.length; index++) {
95
+ // eslint-disable-next-line callback-return,no-await-in-loop
96
+ await callback(array[index], index, array);
97
+ }
98
+ };
99
+ exports.asyncForEach = asyncForEach;
100
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const isValidEmail: (email: string) => boolean;
2
+ export declare const getEmailDomain: (email: string) => string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEmailDomain = exports.isValidEmail = void 0;
4
+ const FORMAT = /^\w+(['+-.]\w+)*@\w+([.-]\w+)*\.\w+([.-]\w+)*$/;
5
+ const isValidEmail = (email) => !!email.match(FORMAT);
6
+ exports.isValidEmail = isValidEmail;
7
+ const getEmailDomain = (email) => email.substring(email.lastIndexOf('@') + 1);
8
+ exports.getEmailDomain = getEmailDomain;
9
+ //# sourceMappingURL=emails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emails.js","sourceRoot":"","sources":["../../src/utils/emails.ts"],"names":[],"mappings":";;;AAAA,MAAM,MAAM,GAAG,gDAAgD,CAAC;AAEzD,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAAjE,QAAA,YAAY,gBAAqD;AAEvE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAAxF,QAAA,cAAc,kBAA0E"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/utils/expression.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { Nullish } from '../types';
2
+ export declare type Transform<T = any, R = T> = (value: T) => R;
3
+ export interface Compose {
4
+ <R, T1>(t0: Transform<T1, R>): (value: T1) => R;
5
+ <R, T1, T2>(t0: Transform<T1, T2>, t1: Transform<T2, R>): (value: T1) => R;
6
+ <R, T1, T2, T3>(t0: Transform<T1, T2>, t1: Transform<T2, T3>, t2: Transform<T3, R>): (value: T1) => R;
7
+ <R, T1, T2, T3, T4>(t0: Transform<T1, T2>, t1: Transform<T2, T3>, t2: Transform<T3, T4>, t3: Transform<T4, R>): (value: T1) => R;
8
+ <R, T1, T2, T3, T4, T5>(t0: Transform<T1, T2>, t1: Transform<T2, T3>, t2: Transform<T3, T4>, t3: Transform<T4, T5>, t4: Transform<T5, R>): (value: T1) => R;
9
+ <R, T1, T2, T3, T4, T5, T6>(t0: Transform<T1, T2>, t1: Transform<T2, T3>, t2: Transform<T3, T4>, t3: Transform<T4, T5>, t4: Transform<T5, T6>, t5: Transform<T6, R>): (value: T1) => R;
10
+ (...transforms: Transform[]): <T extends object>(value: T) => T;
11
+ }
12
+ export declare const compose: Compose;
13
+ export declare type VoidFunction = () => void;
14
+ export declare const noop: VoidFunction;
15
+ export declare const identity: <T>(value: T) => T;
16
+ export declare const stringify: (value: any) => string;
17
+ declare type ChainCallback<A extends any[]> = (...args: A) => void;
18
+ export declare const chain: <A extends any[]>(...fns: Nullish<ChainCallback<A>>[]) => (...args: A) => void;
19
+ export declare const chainVoid: (...fns: Array<Nullish<VoidFunction>>) => () => void;
20
+ export declare const chainAsync: <A extends any[]>(...fns: Nullish<ChainCallback<A>>[]) => (...args: A) => Promise<void>;
21
+ export declare const chainVoidAsync: (...fns: Array<Nullish<VoidFunction>>) => () => Promise<void>;
22
+ export declare const withEffect: <T>(callback: (value: T) => void) => (value: T) => T;
23
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withEffect = exports.chainVoidAsync = exports.chainAsync = exports.chainVoid = exports.chain = exports.stringify = exports.identity = exports.noop = exports.compose = void 0;
4
+ const compose = (...transforms) => (value) => [...transforms].reverse().reduce((acc, transform) => transform(acc), value);
5
+ exports.compose = compose;
6
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
7
+ const noop = () => { };
8
+ exports.noop = noop;
9
+ const identity = (value) => value;
10
+ exports.identity = identity;
11
+ const stringify = (value) => (typeof value === 'string' ? value : String(value));
12
+ exports.stringify = stringify;
13
+ const chain = (...fns) => (...args) => fns.forEach((fn) => fn === null || fn === void 0 ? void 0 : fn(...args));
14
+ exports.chain = chain;
15
+ const chainVoid = (...fns) => () => exports.chain(...fns)();
16
+ exports.chainVoid = chainVoid;
17
+ const chainAsync = (...fns) => async (...args) => {
18
+ // eslint-disable-next-line no-restricted-syntax
19
+ for (const fn of fns) {
20
+ // eslint-disable-next-line no-await-in-loop
21
+ await (fn === null || fn === void 0 ? void 0 : fn(...args));
22
+ }
23
+ };
24
+ exports.chainAsync = chainAsync;
25
+ const chainVoidAsync = (...fns) => () => exports.chainAsync(...fns)();
26
+ exports.chainVoidAsync = chainVoidAsync;
27
+ const withEffect = (callback) => (value) => {
28
+ callback(value);
29
+ return value;
30
+ };
31
+ exports.withEffect = withEffect;
32
+ //# sourceMappingURL=functional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functional.js","sourceRoot":"","sources":["../../src/utils/functional.ts"],"names":[],"mappings":";;;AAwBO,MAAM,OAAO,GAClB,CAAC,GAAG,UAAuB,EAAE,EAAE,CAC/B,CAAmB,KAAQ,EAAK,EAAE,CAChC,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAHnE,QAAA,OAAO,WAG4D;AAIhF,gEAAgE;AACzD,MAAM,IAAI,GAAiB,GAAG,EAAE,GAAE,CAAC,CAAC;AAA9B,QAAA,IAAI,QAA0B;AAEpC,MAAM,QAAQ,GAAG,CAAI,KAAQ,EAAK,EAAE,CAAC,KAAK,CAAC;AAArC,QAAA,QAAQ,YAA6B;AAE3C,MAAM,SAAS,GAAG,CAAC,KAAU,EAAU,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAxF,QAAA,SAAS,aAA+E;AAI9F,MAAM,KAAK,GAChB,CAAkB,GAAG,GAAqC,EAAE,EAAE,CAC9D,CAAC,GAAG,IAAO,EAAQ,EAAE,CACnB,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAH1B,QAAA,KAAK,SAGqB;AAEhC,MAAM,SAAS,GACpB,CAAC,GAAG,GAAiC,EAAE,EAAE,CACzC,GAAS,EAAE,CACT,aAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AAHP,QAAA,SAAS,aAGF;AAEb,MAAM,UAAU,GACrB,CAAkB,GAAG,GAAqC,EAAE,EAAE,CAC9D,KAAK,EAAE,GAAG,IAAO,EAAiB,EAAE;IAClC,gDAAgD;IAChD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;QACpB,4CAA4C;QAC5C,MAAM,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAG,GAAG,IAAI,CAAC,CAAA,CAAC;KACrB;AACH,CAAC,CAAC;AARS,QAAA,UAAU,cAQnB;AAEG,MAAM,cAAc,GACzB,CAAC,GAAG,GAAiC,EAAE,EAAE,CACzC,GAAkB,EAAE,CAClB,kBAAU,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AAHZ,QAAA,cAAc,kBAGF;AAElB,MAAM,UAAU,GACrB,CAAI,QAA4B,EAAE,EAAE,CACpC,CAAC,KAAQ,EAAE,EAAE;IACX,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AANS,QAAA,UAAU,cAMnB"}
@@ -0,0 +1 @@
1
+ export declare const objectID: () => string;
@@ -0,0 +1,11 @@
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.objectID = void 0;
7
+ const bson_objectid_1 = __importDefault(require("bson-objectid"));
8
+ // eslint-disable-next-line import/prefer-default-export
9
+ const objectID = () => new bson_objectid_1.default().toHexString();
10
+ exports.objectID = objectID;
11
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAqC;AAErC,wDAAwD;AACjD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,uBAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;AAA9C,QAAA,QAAQ,YAAsC"}
@@ -1,3 +1,17 @@
1
+ export * as emails from './emails';
2
+ export * as functional from './functional';
3
+ export * as generate from './generate';
4
+ export * as id from './id';
5
+ export * as intent from './intent';
6
+ export * as mathjs from './mathjs';
7
+ export * as normalized from './normalized';
8
+ export * as number from './number';
9
+ export * as object from './object';
10
+ export * as promise from './promise';
11
+ export * as string from './string';
12
+ export * as time from './time';
13
+ export * as timezones from './timezones';
14
+ export * as variables from './variables';
1
15
  export * from './generate';
2
16
  export * from './intent';
3
17
  export * from './variables';
@@ -6,10 +6,38 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
9
21
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
22
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
23
  };
12
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.variables = exports.timezones = exports.time = exports.string = exports.promise = exports.object = exports.number = exports.normalized = exports.mathjs = exports.intent = exports.id = exports.generate = exports.functional = exports.emails = void 0;
26
+ exports.emails = __importStar(require("./emails"));
27
+ exports.functional = __importStar(require("./functional"));
28
+ exports.generate = __importStar(require("./generate"));
29
+ exports.id = __importStar(require("./id"));
30
+ exports.intent = __importStar(require("./intent"));
31
+ exports.mathjs = __importStar(require("./mathjs"));
32
+ exports.normalized = __importStar(require("./normalized"));
33
+ exports.number = __importStar(require("./number"));
34
+ exports.object = __importStar(require("./object"));
35
+ exports.promise = __importStar(require("./promise"));
36
+ exports.string = __importStar(require("./string"));
37
+ exports.time = __importStar(require("./time"));
38
+ exports.timezones = __importStar(require("./timezones"));
39
+ exports.variables = __importStar(require("./variables"));
40
+ // TODO: Remove these exports once we migrate all utils in other repos.
13
41
  __exportStar(require("./generate"), exports);
14
42
  __exportStar(require("./intent"), exports);
15
43
  __exportStar(require("./variables"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB;AACzB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAmC;AACnC,2DAA2C;AAC3C,uDAAuC;AACvC,2CAA2B;AAC3B,mDAAmC;AACnC,mDAAmC;AACnC,2DAA2C;AAC3C,mDAAmC;AACnC,mDAAmC;AACnC,qDAAqC;AACrC,mDAAmC;AACnC,+CAA+B;AAC/B,yDAAyC;AACzC,yDAAyC;AAEzC,uEAAuE;AACvE,6CAA2B;AAC3B,2CAAyB;AACzB,8CAA4B"}
@@ -0,0 +1 @@
1
+ export declare const parser: (exp: string) => string;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ const getRegex = (variable) => new RegExp(variable, 'gi');
5
+ const EQUAL_REGEX = /(equal\()(.*)(,\s?)(.*)(\))/gi;
6
+ const OR_REGEX = /(or\()(.*)(,\s?)(.*)(\))/gi;
7
+ const AND_REGEX = /(and\()(.*)(,\s?)(.*)(\))/gi;
8
+ const NOT_REGEX = /(not\()(.*)(\))/gi;
9
+ const XOR_REGEX = /(xor\()(.*)(,\s?)(.*)(\))/gi;
10
+ const ADD_REGEX = /(add\()(.*)(,\s?)(.*)(\))/gi;
11
+ const SUBTRACT_REGEX = /(subtract\()(.*)(,\s?)(.*)(\))/gi;
12
+ const MULTIPLY_REGEX = /(multiply\()(.*)(,\s?)(.*)(\))/gi;
13
+ const DIVIDE_REGEX = /(divide\()(.*)(,\s?)(.*)(\))/gi;
14
+ const POW_REGEX = /(pow\()(.*)(,\s?)(.*)(\))/gi;
15
+ const COMPARE_REGEX = /(compare\()(.*)(,\s?)(.*)(\))/gi;
16
+ const EVAL_REGEX = /(evaluate\()(.*)(\))/gi;
17
+ const RANDOM_INT_REGEX = /(randomint\()(\d*)(,?\s)?(\d*)?(\))/gi;
18
+ const RANDOM_REGEX = /(random\()(\d*)(,?\s)?(\d*)?(\))/gi;
19
+ const getMinMax = (v1, v2) => {
20
+ let min = 0;
21
+ let max;
22
+ if (v2) {
23
+ min = v1;
24
+ max = v2;
25
+ }
26
+ else {
27
+ max = v1;
28
+ }
29
+ return { min, max };
30
+ };
31
+ // eslint-disable-next-line import/prefer-default-export
32
+ const parser = (exp) => {
33
+ let sanitized = exp;
34
+ sanitized = sanitized.replace(EQUAL_REGEX, '($2 == $4)');
35
+ sanitized = sanitized.replace(OR_REGEX, '($2 || $4)');
36
+ sanitized = sanitized.replace(AND_REGEX, '($2 && $4)');
37
+ sanitized = sanitized.replace(NOT_REGEX, '!$2');
38
+ sanitized = sanitized.replace(getRegex('sqrt'), 'Math.sqrt');
39
+ sanitized = sanitized.replace(getRegex('sign'), 'Math.sign');
40
+ sanitized = sanitized.replace(getRegex('isNaN'), 'Number.isNaN');
41
+ // Math.floor/round will ignore the second argument(if exist) when compiling
42
+ sanitized = sanitized.replace(getRegex('floor'), 'Math.floor');
43
+ sanitized = sanitized.replace(getRegex('round'), 'Math.round');
44
+ sanitized = sanitized.replace(getRegex('integer'), 'Number.isInteger');
45
+ sanitized = sanitized.replace(XOR_REGEX, '((!$2 && !!$4) || (!!$2 && !$4))');
46
+ sanitized = sanitized.replace(ADD_REGEX, '($2 + $4)');
47
+ sanitized = sanitized.replace(SUBTRACT_REGEX, '($2 - $4)');
48
+ sanitized = sanitized.replace(MULTIPLY_REGEX, '($2 * $4)');
49
+ sanitized = sanitized.replace(DIVIDE_REGEX, '($2 / $4)');
50
+ sanitized = sanitized.replace(POW_REGEX, 'Math.pow($2$3$4)');
51
+ sanitized = sanitized.replace(COMPARE_REGEX, '(($2 == $4) ? 0 : ($2 > $4) ? 1 : -1)');
52
+ sanitized = sanitized.replace(RANDOM_REGEX, (_match, _g1, g2, _g3, g4) => {
53
+ const { min, max } = getMinMax(g2, g4);
54
+ return min || max ? `Math.random() * (${max} - ${min}) + ${min}` : 'Math.random()';
55
+ });
56
+ sanitized = sanitized.replace(RANDOM_INT_REGEX, (_match, _g1, g2, _g3, g4) => {
57
+ const { min, max } = getMinMax(g2, g4);
58
+ return min || max ? `Math.floor(Math.random() * (${max} - ${min} + 1)) + ${min}` : `Math.floor(Math.random())`;
59
+ });
60
+ sanitized = sanitized.replace(EVAL_REGEX, 'eval($2)');
61
+ return sanitized;
62
+ };
63
+ exports.parser = parser;
64
+ //# sourceMappingURL=mathjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathjs.js","sourceRoot":"","sources":["../../src/utils/mathjs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export interface ObjectWithId {
2
+ id: number | string;
3
+ }
4
+ export interface Normalized<T> {
5
+ byKey: Record<string, T>;
6
+ allKeys: string[];
7
+ }
8
+ export interface RemoveNormalizedByKey {
9
+ <T>(normalized: Normalized<T>, targetKey: string): Normalized<T>;
10
+ <T extends Normalized<any>>(normalized: T, targetKey: string): T;
11
+ }
12
+ export interface GetNormalizedByKey {
13
+ <T>({ byKey }: Normalized<T>, key: string): T;
14
+ <T extends Normalized<any>>({ byKey }: T, key: string): T extends Normalized<infer R> ? R : never;
15
+ }
16
+ export interface SafeGetNormalizedByKey {
17
+ <T>({ byKey }: Normalized<T>, key: string): T | null;
18
+ <T extends Normalized<any>>({ byKey }: T, key: string): T extends Normalized<infer R> ? R | null : never;
19
+ }
20
+ export declare const createEmptyNormalized: () => Normalized<any>;
21
+ export declare const EMPTY: Normalized<any>;
22
+ export declare type NormalizedValue<T> = T extends Normalized<infer R> ? R : never;
23
+ export declare type GetKey<T> = (obj: T, index?: number, array?: T[]) => string;
24
+ export declare type GetKeyFromMap<T> = (obj: T, index: number, array: T[]) => string;
25
+ export declare const defaultGetKey: <T extends ObjectWithId>(obj: T) => string;
26
+ export declare const safeAdd: <T>(items: T[], obj: T) => T[];
27
+ export declare const safeAddToStart: <T>(items: T[], obj: T) => T[];
28
+ export declare const getByIndex: <T>(items: T[]) => (_: string, index: number) => T;
29
+ export declare const getByKey: <T>(lookup: Record<string, T>) => (key: string) => T;
30
+ export declare const buildLookup: <T>(allKeys: string[], getValue: (key: string, index: number) => T) => Record<string, T>;
31
+ export declare const normalize: <T extends unknown>(items: T[], getKey?: GetKeyFromMap<T> | undefined) => Normalized<T>;
32
+ export declare const denormalize: <T>({ allKeys, byKey }: Normalized<T>) => T[];
33
+ export declare const getNormalizedByKey: GetNormalizedByKey;
34
+ export declare const safeGetNormalizedByKey: SafeGetNormalizedByKey;
35
+ export declare const getAllNormalizedByKeys: <T>({ byKey }: Normalized<T>, keys: string[]) => T[];
36
+ export declare const updateNormalizedByKey: <T, N extends Normalized<T>>({ byKey, ...rest }: N, key: string, obj: T) => N;
37
+ export declare const patchNormalizedByKey: <T, N extends Normalized<T>>(normalized: N, key: string, obj: Partial<T>) => N;
38
+ export declare const addNormalizedByKey: <T>(normalized: Normalized<T>, key: string, obj: T) => {
39
+ allKeys: string[];
40
+ byKey: Record<string, T>;
41
+ };
42
+ export declare const addToStartNormalizedByKey: <T>(normalized: Normalized<T>, key: string, obj: T) => {
43
+ allKeys: string[];
44
+ byKey: Record<string, T>;
45
+ };
46
+ export declare const addAllNormalizedByKeys: <T extends unknown, K extends GetKey<T> = (obj: T) => string>(normalized: Normalized<T>, objs: T[], getKey?: K | undefined) => Normalized<T>;
47
+ export declare const removeNormalizedByKey: RemoveNormalizedByKey;
48
+ export declare const reorderKeys: <T>(newKeyArray: string[], byKey: Record<string, T>) => Normalized<T>;
49
+ export declare const removeAllNormalizedByKeys: <T>({ allKeys, byKey }: Normalized<T>, targetKeys: string[]) => Normalized<T>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.removeAllNormalizedByKeys = exports.reorderKeys = exports.removeNormalizedByKey = exports.addAllNormalizedByKeys = exports.addToStartNormalizedByKey = exports.addNormalizedByKey = exports.patchNormalizedByKey = exports.updateNormalizedByKey = exports.getAllNormalizedByKeys = exports.safeGetNormalizedByKey = exports.getNormalizedByKey = exports.denormalize = exports.normalize = exports.buildLookup = exports.getByKey = exports.getByIndex = exports.safeAddToStart = exports.safeAdd = exports.defaultGetKey = exports.EMPTY = exports.createEmptyNormalized = void 0;
15
+ const array_1 = require("./array");
16
+ const functional_1 = require("./functional");
17
+ const object_1 = require("./object");
18
+ const createEmptyNormalized = () => ({ byKey: {}, allKeys: [] });
19
+ exports.createEmptyNormalized = createEmptyNormalized;
20
+ exports.EMPTY = exports.createEmptyNormalized();
21
+ const defaultGetKey = (obj) => functional_1.stringify(obj.id);
22
+ exports.defaultGetKey = defaultGetKey;
23
+ const safeAdd = (items, obj) => (items.includes(obj) ? items : [...items, obj]);
24
+ exports.safeAdd = safeAdd;
25
+ const safeAddToStart = (items, obj) => (items.includes(obj) ? items : [obj, ...items]);
26
+ exports.safeAddToStart = safeAddToStart;
27
+ const getByIndex = (items) => (_, index) => items[index];
28
+ exports.getByIndex = getByIndex;
29
+ const getByKey = (lookup) => (key) => lookup[key];
30
+ exports.getByKey = getByKey;
31
+ const buildLookup = (allKeys, getValue) => allKeys.reduce((acc, key, index) => {
32
+ acc[key] = getValue(key, index);
33
+ return acc;
34
+ }, {});
35
+ exports.buildLookup = buildLookup;
36
+ const normalize = (items, getKey) => {
37
+ const allKeys = items.map(getKey !== null && getKey !== void 0 ? getKey : exports.defaultGetKey);
38
+ return {
39
+ byKey: exports.buildLookup(allKeys, exports.getByIndex(items)),
40
+ allKeys,
41
+ };
42
+ };
43
+ exports.normalize = normalize;
44
+ const denormalize = ({ allKeys, byKey }) => allKeys.map((key) => byKey[key]);
45
+ exports.denormalize = denormalize;
46
+ const getNormalizedByKey = ({ byKey }, key) => byKey[key];
47
+ exports.getNormalizedByKey = getNormalizedByKey;
48
+ const safeGetNormalizedByKey = ({ byKey }, key) => object_1.hasProperty(byKey, key) ? byKey[key] : null;
49
+ exports.safeGetNormalizedByKey = safeGetNormalizedByKey;
50
+ const getAllNormalizedByKeys = ({ byKey }, keys) => keys.map((key) => byKey[key]);
51
+ exports.getAllNormalizedByKeys = getAllNormalizedByKeys;
52
+ const updateNormalizedByKey = (_a, key, obj) => {
53
+ var { byKey } = _a, rest = __rest(_a, ["byKey"]);
54
+ return (Object.assign(Object.assign({}, rest), { byKey: Object.assign(Object.assign({}, byKey), { [key]: obj }) }));
55
+ };
56
+ exports.updateNormalizedByKey = updateNormalizedByKey;
57
+ const patchNormalizedByKey = (normalized, key, obj) => exports.updateNormalizedByKey(normalized, key, Object.assign(Object.assign({}, exports.getNormalizedByKey(normalized, key)), obj));
58
+ exports.patchNormalizedByKey = patchNormalizedByKey;
59
+ const addNormalizedByKey = (normalized, key, obj) => (Object.assign(Object.assign({}, exports.updateNormalizedByKey(normalized, key, obj)), { allKeys: exports.safeAdd(normalized.allKeys, key) }));
60
+ exports.addNormalizedByKey = addNormalizedByKey;
61
+ const addToStartNormalizedByKey = (normalized, key, obj) => (Object.assign(Object.assign({}, exports.updateNormalizedByKey(normalized, key, obj)), { allKeys: exports.safeAddToStart(normalized.allKeys, key) }));
62
+ exports.addToStartNormalizedByKey = addToStartNormalizedByKey;
63
+ const addAllNormalizedByKeys = (normalized, objs, getKey) => {
64
+ const keyGetter = getKey !== null && getKey !== void 0 ? getKey : exports.defaultGetKey;
65
+ const keys = objs.map(keyGetter);
66
+ return {
67
+ byKey: Object.assign(Object.assign({}, normalized.byKey), objs.reduce((acc, obj) => Object.assign(acc, { [keyGetter(obj)]: obj }), {})),
68
+ allKeys: keys.reduce(exports.safeAdd, normalized.allKeys),
69
+ };
70
+ };
71
+ exports.addAllNormalizedByKeys = addAllNormalizedByKeys;
72
+ const removeNormalizedByKey = ({ allKeys, byKey }, targetKey) => {
73
+ const filteredKeys = array_1.withoutValue(allKeys, targetKey);
74
+ return {
75
+ allKeys: filteredKeys,
76
+ byKey: exports.buildLookup(filteredKeys, exports.getByKey(byKey)),
77
+ };
78
+ };
79
+ exports.removeNormalizedByKey = removeNormalizedByKey;
80
+ const reorderKeys = (newKeyArray, byKey) => ({
81
+ allKeys: newKeyArray,
82
+ byKey,
83
+ });
84
+ exports.reorderKeys = reorderKeys;
85
+ const removeAllNormalizedByKeys = ({ allKeys, byKey }, targetKeys) => {
86
+ const filteredKeys = allKeys.filter((key) => !targetKeys.includes(key));
87
+ return {
88
+ allKeys: filteredKeys,
89
+ byKey: exports.buildLookup(filteredKeys, exports.getByKey(byKey)),
90
+ };
91
+ };
92
+ exports.removeAllNormalizedByKeys = removeAllNormalizedByKeys;
93
+ //# sourceMappingURL=normalized.js.map