@voiceflow/common 8.10.0 → 8.11.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.
@@ -5,15 +5,21 @@ export declare const splitVariableName: (inner: string, options?: {
5
5
  id: string;
6
6
  path: string;
7
7
  };
8
- export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, modifier?: (variable: unknown) => unknown, options?: {
8
+ export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, options?: {
9
+ modifier?: (variable: unknown) => unknown;
9
10
  trim?: boolean;
10
11
  keepTypeIfOnlyVariable?: false;
11
12
  }): string;
12
- export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, modifier?: (variable: unknown) => unknown, options?: {
13
+ export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, options: {
14
+ modifier?: (variable: unknown) => unknown;
13
15
  trim?: boolean;
14
16
  keepTypeIfOnlyVariable: true;
15
17
  }): unknown;
16
18
  export declare const sanitizeVariables: (variables: Record<string, unknown>) => Record<string, unknown>;
17
19
  export declare const transformStringVariableToNumber: (str: string | number | null) => number | string | null;
18
- export declare const deepVariableSubstitution: <T>(bodyData: T, variableMap: Record<string, unknown>) => T;
20
+ export declare const deepVariableSubstitution: <T>(bodyData: T, variableMap: Record<string, unknown>, options?: {
21
+ trim?: boolean;
22
+ modifier?: (variable: unknown) => unknown;
23
+ keepTypeIfOnlyVariable?: boolean;
24
+ }) => T;
19
25
  //# sourceMappingURL=variables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/utils/variables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,UACpB,MAAM,SACN,MAAM,aACF,OAAO,MAAM,EAAE,OAAO,CAAC,aACvB,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,KACxC,OAmBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,MAAM,YACJ;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE;;;CAiCxC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3D,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,EAAE,IAAI,CAAA;CAAE,GACzD,OAAO,CAAC;AAuBX,eAAO,MAAM,iBAAiB,cAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CASrF,CAAC;AAET,eAAO,MAAM,+BAA+B,QAAS,MAAM,GAAG,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,MAAM,GAAG,IAY/F,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBAAiB,CAAC,eAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,CA2B/F,CAAC"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/utils/variables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,UACpB,MAAM,SACN,MAAM,aACF,OAAO,MAAM,EAAE,OAAO,CAAC,aACxB,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,KACvC,OAoBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,MAAM,YACJ;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE;;;CAiCxC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,KAAK,CAAA;CAAE,GACtG,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,EAAE,IAAI,CAAA;CAAE,GACnG,OAAO,CAAC;AA6BX,eAAO,MAAM,iBAAiB,cAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CASrF,CAAC;AAET,eAAO,MAAM,+BAA+B,QAAS,MAAM,GAAG,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,MAAM,GAAG,IAY/F,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBACzB,CAAC,eACE,OAAO,MAAM,EAAE,OAAO,CAAC,YAC1B;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,KACxG,CA2BF,CAAC"}
@@ -6,17 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.deepVariableSubstitution = exports.transformStringVariableToNumber = exports.sanitizeVariables = exports.replaceVariables = exports.splitVariableName = exports.variableReplacer = void 0;
7
7
  const constants_1 = require("../constants");
8
8
  const get_js_1 = __importDefault(require("lodash/get.js"));
9
- const variableReplacer = (match, inner, variables, modifier) => {
9
+ const variableReplacer = (match, inner, variables, modifier = (val) => val) => {
10
10
  const { id, path } = (0, exports.splitVariableName)(inner);
11
11
  if (!(id in variables)) {
12
12
  return match;
13
13
  }
14
14
  if (!path) {
15
- return typeof modifier === 'function' ? modifier(variables[id]) : variables[id];
15
+ return modifier(variables[id]);
16
16
  }
17
17
  try {
18
18
  const variable = typeof variables[id] === 'string' ? JSON.parse(variables[id]) : variables[id];
19
- return typeof modifier === 'function' ? modifier((0, get_js_1.default)(variable, path, 0)) : (0, get_js_1.default)(variable, path, 0);
19
+ return modifier((0, get_js_1.default)(variable, path, 0));
20
20
  }
21
21
  catch (err) {
22
22
  if (err?.message.includes('is not valid JSON')) {
@@ -56,16 +56,17 @@ const splitVariableName = (inner, options = { pathWithDotPrefix: false }) => {
56
56
  };
57
57
  };
58
58
  exports.splitVariableName = splitVariableName;
59
- function replaceVariables(phrase, variables, modifier = undefined, { trim = true, keepTypeIfOnlyVariable = false } = {}) {
60
- if (!phrase || (trim && !phrase.trim())) {
59
+ function replaceVariables(phrase, variables, { trim = true, modifier, keepTypeIfOnlyVariable = false, } = {}) {
60
+ const formattedPhrase = trim ? phrase?.trim() : phrase;
61
+ if (!formattedPhrase) {
61
62
  return '';
62
63
  }
63
- if (keepTypeIfOnlyVariable && phrase.match(constants_1.VARIABLE_ONLY_REGEXP)) {
64
+ if (keepTypeIfOnlyVariable && formattedPhrase.match(constants_1.VARIABLE_ONLY_REGEXP)) {
64
65
  // remove the curly braces {} from phrase to get the inner
65
- const inner = phrase.slice(1, -1);
66
- return (0, exports.variableReplacer)(phrase, inner, variables, modifier);
66
+ const inner = formattedPhrase.slice(1, -1);
67
+ return (0, exports.variableReplacer)(formattedPhrase, inner, variables, modifier);
67
68
  }
68
- return phrase.replace(constants_1.READABLE_VARIABLE_REGEXP, (match, inner) => String((0, exports.variableReplacer)(match, inner, variables, modifier)));
69
+ return formattedPhrase.replace(constants_1.READABLE_VARIABLE_REGEXP, (match, inner) => String((0, exports.variableReplacer)(match, inner, variables, modifier)));
69
70
  }
70
71
  exports.replaceVariables = replaceVariables;
71
72
  // turn float variables to 4 decimal places
@@ -90,16 +91,16 @@ const transformStringVariableToNumber = (str) => {
90
91
  return Number.isNaN(number) ? str : number;
91
92
  };
92
93
  exports.transformStringVariableToNumber = transformStringVariableToNumber;
93
- const deepVariableSubstitution = (bodyData, variableMap) => {
94
- const _recurse = (subCollection, modifier) => {
94
+ const deepVariableSubstitution = (bodyData, variableMap, options) => {
95
+ const _recurse = (subCollection) => {
95
96
  if (!subCollection) {
96
97
  return subCollection;
97
98
  }
98
99
  if (typeof subCollection === 'string') {
99
- return replaceVariables(subCollection, variableMap, modifier);
100
+ return replaceVariables(subCollection, variableMap, options);
100
101
  }
101
102
  if (Array.isArray(subCollection)) {
102
- return subCollection.map((v) => _recurse(v, modifier));
103
+ return subCollection.map((v) => _recurse(v));
103
104
  }
104
105
  if (typeof subCollection === 'object') {
105
106
  Object.keys(subCollection).forEach((key) => {
@@ -5,15 +5,21 @@ export declare const splitVariableName: (inner: string, options?: {
5
5
  id: string;
6
6
  path: string;
7
7
  };
8
- export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, modifier?: (variable: unknown) => unknown, options?: {
8
+ export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, options?: {
9
+ modifier?: (variable: unknown) => unknown;
9
10
  trim?: boolean;
10
11
  keepTypeIfOnlyVariable?: false;
11
12
  }): string;
12
- export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, modifier?: (variable: unknown) => unknown, options?: {
13
+ export declare function replaceVariables(phrase: string | undefined | null, variables: Record<string, unknown>, options: {
14
+ modifier?: (variable: unknown) => unknown;
13
15
  trim?: boolean;
14
16
  keepTypeIfOnlyVariable: true;
15
17
  }): unknown;
16
18
  export declare const sanitizeVariables: (variables: Record<string, unknown>) => Record<string, unknown>;
17
19
  export declare const transformStringVariableToNumber: (str: string | number | null) => number | string | null;
18
- export declare const deepVariableSubstitution: <T>(bodyData: T, variableMap: Record<string, unknown>) => T;
20
+ export declare const deepVariableSubstitution: <T>(bodyData: T, variableMap: Record<string, unknown>, options?: {
21
+ trim?: boolean;
22
+ modifier?: (variable: unknown) => unknown;
23
+ keepTypeIfOnlyVariable?: boolean;
24
+ }) => T;
19
25
  //# sourceMappingURL=variables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/utils/variables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,UACpB,MAAM,SACN,MAAM,aACF,OAAO,MAAM,EAAE,OAAO,CAAC,aACvB,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,KACxC,OAmBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,MAAM,YACJ;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE;;;CAiCxC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3D,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EACzC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,EAAE,IAAI,CAAA;CAAE,GACzD,OAAO,CAAC;AAuBX,eAAO,MAAM,iBAAiB,cAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CASrF,CAAC;AAET,eAAO,MAAM,+BAA+B,QAAS,MAAM,GAAG,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,MAAM,GAAG,IAY/F,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBAAiB,CAAC,eAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,CA2B/F,CAAC"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/utils/variables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,UACpB,MAAM,SACN,MAAM,aACF,OAAO,MAAM,EAAE,OAAO,CAAC,aACxB,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,KACvC,OAoBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,MAAM,YACJ;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE;;;CAiCxC,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,KAAK,CAAA;CAAE,GACtG,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,EAAE,IAAI,CAAA;CAAE,GACnG,OAAO,CAAC;AA6BX,eAAO,MAAM,iBAAiB,cAAe,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CASrF,CAAC;AAET,eAAO,MAAM,+BAA+B,QAAS,MAAM,GAAG,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,MAAM,GAAG,IAY/F,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBACzB,CAAC,eACE,OAAO,MAAM,EAAE,OAAO,CAAC,YAC1B;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,KACxG,CA2BF,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { READABLE_VARIABLE_REGEXP, VARIABLE_ONLY_REGEXP } from '../constants/index.js';
2
2
  import _get from 'lodash/get.js';
3
- export const variableReplacer = (match, inner, variables, modifier) => {
3
+ export const variableReplacer = (match, inner, variables, modifier = (val) => val) => {
4
4
  const { id, path } = splitVariableName(inner);
5
5
  if (!(id in variables)) {
6
6
  return match;
7
7
  }
8
8
  if (!path) {
9
- return typeof modifier === 'function' ? modifier(variables[id]) : variables[id];
9
+ return modifier(variables[id]);
10
10
  }
11
11
  try {
12
12
  const variable = typeof variables[id] === 'string' ? JSON.parse(variables[id]) : variables[id];
13
- return typeof modifier === 'function' ? modifier(_get(variable, path, 0)) : _get(variable, path, 0);
13
+ return modifier(_get(variable, path, 0));
14
14
  }
15
15
  catch (err) {
16
16
  if (err?.message.includes('is not valid JSON')) {
@@ -48,16 +48,17 @@ export const splitVariableName = (inner, options = { pathWithDotPrefix: false })
48
48
  path: inner.slice(firstSquareBracketIndex),
49
49
  };
50
50
  };
51
- export function replaceVariables(phrase, variables, modifier = undefined, { trim = true, keepTypeIfOnlyVariable = false } = {}) {
52
- if (!phrase || (trim && !phrase.trim())) {
51
+ export function replaceVariables(phrase, variables, { trim = true, modifier, keepTypeIfOnlyVariable = false, } = {}) {
52
+ const formattedPhrase = trim ? phrase?.trim() : phrase;
53
+ if (!formattedPhrase) {
53
54
  return '';
54
55
  }
55
- if (keepTypeIfOnlyVariable && phrase.match(VARIABLE_ONLY_REGEXP)) {
56
+ if (keepTypeIfOnlyVariable && formattedPhrase.match(VARIABLE_ONLY_REGEXP)) {
56
57
  // remove the curly braces {} from phrase to get the inner
57
- const inner = phrase.slice(1, -1);
58
- return variableReplacer(phrase, inner, variables, modifier);
58
+ const inner = formattedPhrase.slice(1, -1);
59
+ return variableReplacer(formattedPhrase, inner, variables, modifier);
59
60
  }
60
- return phrase.replace(READABLE_VARIABLE_REGEXP, (match, inner) => String(variableReplacer(match, inner, variables, modifier)));
61
+ return formattedPhrase.replace(READABLE_VARIABLE_REGEXP, (match, inner) => String(variableReplacer(match, inner, variables, modifier)));
61
62
  }
62
63
  // turn float variables to 4 decimal places
63
64
  export const sanitizeVariables = (variables) => Object.entries(variables).reduce((acc, [key, value]) => {
@@ -79,16 +80,16 @@ export const transformStringVariableToNumber = (str) => {
79
80
  const number = Number(str);
80
81
  return Number.isNaN(number) ? str : number;
81
82
  };
82
- export const deepVariableSubstitution = (bodyData, variableMap) => {
83
- const _recurse = (subCollection, modifier) => {
83
+ export const deepVariableSubstitution = (bodyData, variableMap, options) => {
84
+ const _recurse = (subCollection) => {
84
85
  if (!subCollection) {
85
86
  return subCollection;
86
87
  }
87
88
  if (typeof subCollection === 'string') {
88
- return replaceVariables(subCollection, variableMap, modifier);
89
+ return replaceVariables(subCollection, variableMap, options);
89
90
  }
90
91
  if (Array.isArray(subCollection)) {
91
- return subCollection.map((v) => _recurse(v, modifier));
92
+ return subCollection.map((v) => _recurse(v));
92
93
  }
93
94
  if (typeof subCollection === 'object') {
94
95
  Object.keys(subCollection).forEach((key) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voiceflow/common",
3
- "version": "8.10.0",
3
+ "version": "8.11.0",
4
4
  "description": "Junk drawer of utility functions",
5
5
  "keywords": [
6
6
  "voiceflow"
@@ -88,5 +88,5 @@
88
88
  "publishConfig": {
89
89
  "access": "public"
90
90
  },
91
- "gitHead": "94bd4e1b18f7067a2c7c0799347eb68e2b8735a0"
91
+ "gitHead": "f36349e81e2cc0cdee06b6c74d68f41116a7072e"
92
92
  }