@voiceflow/common 7.14.0 → 7.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,3 @@
1
1
  export { default as Base64 } from './base64';
2
+ export { default as MurmurHash } from './murmurhash';
2
3
  export { default as Synchronous } from './synchronous';
@@ -3,9 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Synchronous = exports.Base64 = void 0;
6
+ exports.Synchronous = exports.MurmurHash = exports.Base64 = void 0;
7
7
  var base64_1 = require("./base64");
8
8
  Object.defineProperty(exports, "Base64", { enumerable: true, get: function () { return __importDefault(base64_1).default; } });
9
+ var murmurhash_1 = require("./murmurhash");
10
+ Object.defineProperty(exports, "MurmurHash", { enumerable: true, get: function () { return __importDefault(murmurhash_1).default; } });
9
11
  var synchronous_1 = require("./synchronous");
10
12
  Object.defineProperty(exports, "Synchronous", { enumerable: true, get: function () { return __importDefault(synchronous_1).default; } });
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe"}
@@ -0,0 +1,4 @@
1
+ export declare class MurmurHash {
2
+ static hash(key: string, seed?: number): string;
3
+ }
4
+ export default MurmurHash;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MurmurHash = void 0;
4
+ const murmurhash_wasm_1 = require("murmurhash-wasm");
5
+ const hex2abc_1 = require("./hex2abc");
6
+ class MurmurHash {
7
+ static hash(key, seed = 0) {
8
+ const hash = murmurhash_wasm_1.MurmurHash3.hash32(key, seed);
9
+ const value = hash.readUInt32BE();
10
+ const hex = value.toString(16);
11
+ return hex2abc_1.hex2abc(hex);
12
+ }
13
+ }
14
+ exports.MurmurHash = MurmurHash;
15
+ exports.default = MurmurHash;
16
+ //# sourceMappingURL=murmurhash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murmurhash.js","sourceRoot":"","sources":["../../../src/crypto/murmurhash.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAE9C,uCAA2C;AAE3C,MAAa,UAAU;IACd,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,IAAI,GAAG,CAAC;QACtC,MAAM,IAAI,GAAG,6BAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE/B,OAAO,iBAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AARD,gCAQC;AAED,kBAAe,UAAU,CAAC"}
@@ -15,3 +15,18 @@ export declare const getSlotType: (slots: BuiltinSlot<string, string>[], slot: {
15
15
  value?: string;
16
16
  };
17
17
  }) => string;
18
+ export declare const VF_ENTITY_REGEXP: RegExp;
19
+ export interface JSONEntity {
20
+ startPos: number;
21
+ endPos: number;
22
+ entity: string;
23
+ }
24
+ export interface JSONUtterance {
25
+ text?: string;
26
+ entities?: JSONEntity[];
27
+ }
28
+ export declare const utteranceEntityPermutations: (utterances: string[], entitiesByID: Record<string, {
29
+ inputs: string[];
30
+ name: string;
31
+ }>, limit?: number) => JSONUtterance[];
32
+ export declare const injectUtteranceSpaces: (originalUtterance: string) => string;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSlotType = exports.getUtterancesWithSlotNames = exports.formatIntentName = void 0;
6
+ exports.injectUtteranceSpaces = exports.utteranceEntityPermutations = exports.VF_ENTITY_REGEXP = exports.getSlotType = exports.getUtterancesWithSlotNames = exports.formatIntentName = void 0;
7
+ const sample_1 = __importDefault(require("lodash/sample"));
4
8
  const constants_1 = require("../constants");
5
9
  const formatIntentName = (name) => {
6
10
  if (!name) {
@@ -37,4 +41,110 @@ const getSlotType = (slots, slot) => {
37
41
  return type;
38
42
  };
39
43
  exports.getSlotType = getSlotType;
44
+ exports.VF_ENTITY_REGEXP = /{{\[(\w{1,32})]\.(\w{1,32})}}/gi;
45
+ // extension of the String.prototype.replace format
46
+ const continuousReplace = (text, regex, replacer) => {
47
+ // regex without any global flags (g or i)
48
+ const localRegex = new RegExp(regex, '');
49
+ let temp;
50
+ let current = text;
51
+ // keep replacing until there is nothing else to replace (local replaces one instance at a time, this is important to keep positional offset data)
52
+ while (temp !== current) {
53
+ temp = current;
54
+ current = current.replace(localRegex, replacer);
55
+ }
56
+ return current;
57
+ };
58
+ // spread all synonyms into string array ['car, automobile', 'plane, jet'] => ['car', 'automobile', 'plane', 'jet']
59
+ const getAllSamples = (inputs = []) => inputs.flatMap((input) => input.split(',')).filter((sample) => !!sample.trim());
60
+ const utteranceEntityPermutations = (utterances, entitiesByID, limit = 22
61
+ // eslint-disable-next-line sonarjs/cognitive-complexity
62
+ ) => {
63
+ var _a;
64
+ const newUtterances = [];
65
+ const entityRef = {};
66
+ const addNewUtterance = (utterance) => {
67
+ if (!(utterance === null || utterance === void 0 ? void 0 : utterance.trim()))
68
+ return;
69
+ const entities = [];
70
+ // Find all occurences of {entityName} in training utterances
71
+ const text = continuousReplace(utterance, exports.VF_ENTITY_REGEXP, (_match, entityName, entityID, offset) => {
72
+ var _a, _b, _c;
73
+ const entity = entitiesByID[entityID];
74
+ if (!entity)
75
+ return entityName;
76
+ const sample = (((_a = entityRef[entityID]) === null || _a === void 0 ? void 0 : _a.samples.shift()) || sample_1.default(getAllSamples(entity === null || entity === void 0 ? void 0 : entity.inputs)) || entityName).trim();
77
+ if (!((_c = (_b = entityRef[entityID]) === null || _b === void 0 ? void 0 : _b.samples) === null || _c === void 0 ? void 0 : _c.length))
78
+ delete entityRef[entityID];
79
+ // This module should additionally create one full training utterance with positional entity (startPos, endPos, entityName).
80
+ const startPos = offset || 0;
81
+ const endPos = startPos + sample.length - 1;
82
+ entities.push({
83
+ startPos,
84
+ endPos,
85
+ entity: entity.name,
86
+ });
87
+ // Replace the entities with the sample value
88
+ return sample;
89
+ });
90
+ newUtterances.push({
91
+ text,
92
+ entities,
93
+ });
94
+ };
95
+ // find all the entities referenced by this intent
96
+ // first pass over all utterances guarantees every utterance used
97
+ utterances.forEach((utterance) => {
98
+ // find all the entities used in this utterance
99
+ const entityMatches = [...utterance.matchAll(exports.VF_ENTITY_REGEXP)];
100
+ entityMatches.forEach((match) => {
101
+ const entityID = match[2];
102
+ // if this entity hasn't been visited before, initialize the ref and populate samples with all synonyms of the entity
103
+ if (!entityRef[entityID]) {
104
+ entityRef[entityID] = { samples: [], utterances: [] };
105
+ const entity = entitiesByID[entityID];
106
+ if (entity) {
107
+ entityRef[entityID].samples.push(...getAllSamples(entity.inputs));
108
+ }
109
+ }
110
+ entityRef[entityID].utterances.push(utterance);
111
+ });
112
+ addNewUtterance(utterance);
113
+ });
114
+ while (Object.keys(entityRef).length > 0 && newUtterances.length < limit) {
115
+ const entityID = Object.keys(entityRef)[0];
116
+ const utterancesUsingEntity = (_a = entityRef[entityID]) === null || _a === void 0 ? void 0 : _a.utterances;
117
+ if (utterancesUsingEntity === null || utterancesUsingEntity === void 0 ? void 0 : utterancesUsingEntity.length) {
118
+ addNewUtterance(utterancesUsingEntity[newUtterances.length % utterancesUsingEntity.length]);
119
+ }
120
+ else {
121
+ delete entityRef[entityID];
122
+ }
123
+ }
124
+ return newUtterances;
125
+ };
126
+ exports.utteranceEntityPermutations = utteranceEntityPermutations;
127
+ const ALPHANUMERIC_REGEXP = /[\dA-Za-z{}]/;
128
+ // some NLP/NLU models do not allow entity classifications without a space seperator: 'I work at {startupName}flow' => 'I work at {startupName} flow'
129
+ const injectUtteranceSpaces = (originalUtterance) => {
130
+ let spacesAdded = 0;
131
+ let utterance = originalUtterance ? originalUtterance.trim() : '';
132
+ const slots = [...utterance.matchAll(exports.VF_ENTITY_REGEXP)];
133
+ slots.forEach((slot) => {
134
+ let index = slot.index + spacesAdded;
135
+ // Check if space should be added before slot
136
+ if (index > 0 && utterance[index - 1].match(ALPHANUMERIC_REGEXP)) {
137
+ utterance = `${utterance.slice(0, index)} ${utterance.slice(index)}`;
138
+ ++spacesAdded;
139
+ ++index;
140
+ }
141
+ // Check if space should be added after slot
142
+ if (index + slot[0].length < utterance.length - 1 && utterance[index + slot[0].length].match(ALPHANUMERIC_REGEXP)) {
143
+ utterance = `${utterance.slice(0, index + slot[0].length)} ${utterance.slice(index + slot[0].length)}`;
144
+ ++spacesAdded;
145
+ }
146
+ });
147
+ return utterance;
148
+ };
149
+ exports.injectUtteranceSpaces = injectUtteranceSpaces;
40
150
  //# sourceMappingURL=intent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/utils/intent.ts"],"names":[],"mappings":";;;AAAA,4CAAkG;AAE3F,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;IACvD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IAED,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,wCAAwC;IACxC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAY,EAAE,GAAG,CAAC,CAAC;IAChD,mEAAmE;IACnE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEvG,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAZW,QAAA,gBAAgB,oBAY3B;AAEK,MAAM,0BAA0B,GAAG,CAAC,EACzC,KAAK,GAAG,EAAE,EACV,UAAU,GAAG,EAAE,GAIhB,EAAY,EAAE,CACb,UAAU;KACP,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,IAAI,0CAAE,IAAI,EAAE,CAAA,CAAA,EAAA,CAAC;KAC/C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAChB,IAAI,CAAC,OAAO,CAAC,uBAAW,EAAE,CAAC,SAAS,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtD,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC,CAAC,CACH,CAAC;AAfO,QAAA,0BAA0B,8BAejC;AAEC,MAAM,WAAW,GAAG,CAAC,KAAoC,EAAE,IAAgD,EAAU,EAAE;;IAC5H,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,MAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;IAE3D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,KAAK,uCAA2B,EAAE;QACtE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;QAEvF,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,yBAAyB;SAClD;aAAM;YACL,CAAC,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;SAC1B;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB"}
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/utils/intent.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { default as Base64 } from './base64';
2
+ export { default as MurmurHash } from './murmurhash';
2
3
  export { default as Synchronous } from './synchronous';
@@ -1,3 +1,4 @@
1
1
  export { default as Base64 } from './base64';
2
+ export { default as MurmurHash } from './murmurhash';
2
3
  export { default as Synchronous } from './synchronous';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare class MurmurHash {
2
+ static hash(key: string, seed?: number): string;
3
+ }
4
+ export default MurmurHash;
@@ -0,0 +1,12 @@
1
+ import { MurmurHash3 } from 'murmurhash-wasm';
2
+ import { hex2abc } from "./hex2abc";
3
+ export class MurmurHash {
4
+ static hash(key, seed = 0) {
5
+ const hash = MurmurHash3.hash32(key, seed);
6
+ const value = hash.readUInt32BE();
7
+ const hex = value.toString(16);
8
+ return hex2abc(hex);
9
+ }
10
+ }
11
+ export default MurmurHash;
12
+ //# sourceMappingURL=murmurhash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murmurhash.js","sourceRoot":"","sources":["../../../src/crypto/murmurhash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,kBAAyB;AAE3C,MAAM,OAAO,UAAU;IACd,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,IAAI,GAAG,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,eAAe,UAAU,CAAC"}
@@ -15,3 +15,18 @@ export declare const getSlotType: (slots: BuiltinSlot<string, string>[], slot: {
15
15
  value?: string;
16
16
  };
17
17
  }) => string;
18
+ export declare const VF_ENTITY_REGEXP: RegExp;
19
+ export interface JSONEntity {
20
+ startPos: number;
21
+ endPos: number;
22
+ entity: string;
23
+ }
24
+ export interface JSONUtterance {
25
+ text?: string;
26
+ entities?: JSONEntity[];
27
+ }
28
+ export declare const utteranceEntityPermutations: (utterances: string[], entitiesByID: Record<string, {
29
+ inputs: string[];
30
+ name: string;
31
+ }>, limit?: number) => JSONUtterance[];
32
+ export declare const injectUtteranceSpaces: (originalUtterance: string) => string;
@@ -1,3 +1,4 @@
1
+ import _sample from 'lodash/sample';
1
2
  import { LOWER_CASE_CUSTOM_SLOT_TYPE, SLOT_REGEXP, SPACE_REGEXP } from "../constants";
2
3
  export const formatIntentName = (name) => {
3
4
  if (!name) {
@@ -31,4 +32,108 @@ export const getSlotType = (slots, slot) => {
31
32
  }
32
33
  return type;
33
34
  };
35
+ export const VF_ENTITY_REGEXP = /{{\[(\w{1,32})]\.(\w{1,32})}}/gi;
36
+ // extension of the String.prototype.replace format
37
+ const continuousReplace = (text, regex, replacer) => {
38
+ // regex without any global flags (g or i)
39
+ const localRegex = new RegExp(regex, '');
40
+ let temp;
41
+ let current = text;
42
+ // keep replacing until there is nothing else to replace (local replaces one instance at a time, this is important to keep positional offset data)
43
+ while (temp !== current) {
44
+ temp = current;
45
+ current = current.replace(localRegex, replacer);
46
+ }
47
+ return current;
48
+ };
49
+ // spread all synonyms into string array ['car, automobile', 'plane, jet'] => ['car', 'automobile', 'plane', 'jet']
50
+ const getAllSamples = (inputs = []) => inputs.flatMap((input) => input.split(',')).filter((sample) => !!sample.trim());
51
+ export const utteranceEntityPermutations = (utterances, entitiesByID, limit = 22
52
+ // eslint-disable-next-line sonarjs/cognitive-complexity
53
+ ) => {
54
+ var _a;
55
+ const newUtterances = [];
56
+ const entityRef = {};
57
+ const addNewUtterance = (utterance) => {
58
+ if (!(utterance === null || utterance === void 0 ? void 0 : utterance.trim()))
59
+ return;
60
+ const entities = [];
61
+ // Find all occurences of {entityName} in training utterances
62
+ const text = continuousReplace(utterance, VF_ENTITY_REGEXP, (_match, entityName, entityID, offset) => {
63
+ var _a, _b, _c;
64
+ const entity = entitiesByID[entityID];
65
+ if (!entity)
66
+ return entityName;
67
+ const sample = (((_a = entityRef[entityID]) === null || _a === void 0 ? void 0 : _a.samples.shift()) || _sample(getAllSamples(entity === null || entity === void 0 ? void 0 : entity.inputs)) || entityName).trim();
68
+ if (!((_c = (_b = entityRef[entityID]) === null || _b === void 0 ? void 0 : _b.samples) === null || _c === void 0 ? void 0 : _c.length))
69
+ delete entityRef[entityID];
70
+ // This module should additionally create one full training utterance with positional entity (startPos, endPos, entityName).
71
+ const startPos = offset || 0;
72
+ const endPos = startPos + sample.length - 1;
73
+ entities.push({
74
+ startPos,
75
+ endPos,
76
+ entity: entity.name,
77
+ });
78
+ // Replace the entities with the sample value
79
+ return sample;
80
+ });
81
+ newUtterances.push({
82
+ text,
83
+ entities,
84
+ });
85
+ };
86
+ // find all the entities referenced by this intent
87
+ // first pass over all utterances guarantees every utterance used
88
+ utterances.forEach((utterance) => {
89
+ // find all the entities used in this utterance
90
+ const entityMatches = [...utterance.matchAll(VF_ENTITY_REGEXP)];
91
+ entityMatches.forEach((match) => {
92
+ const entityID = match[2];
93
+ // if this entity hasn't been visited before, initialize the ref and populate samples with all synonyms of the entity
94
+ if (!entityRef[entityID]) {
95
+ entityRef[entityID] = { samples: [], utterances: [] };
96
+ const entity = entitiesByID[entityID];
97
+ if (entity) {
98
+ entityRef[entityID].samples.push(...getAllSamples(entity.inputs));
99
+ }
100
+ }
101
+ entityRef[entityID].utterances.push(utterance);
102
+ });
103
+ addNewUtterance(utterance);
104
+ });
105
+ while (Object.keys(entityRef).length > 0 && newUtterances.length < limit) {
106
+ const entityID = Object.keys(entityRef)[0];
107
+ const utterancesUsingEntity = (_a = entityRef[entityID]) === null || _a === void 0 ? void 0 : _a.utterances;
108
+ if (utterancesUsingEntity === null || utterancesUsingEntity === void 0 ? void 0 : utterancesUsingEntity.length) {
109
+ addNewUtterance(utterancesUsingEntity[newUtterances.length % utterancesUsingEntity.length]);
110
+ }
111
+ else {
112
+ delete entityRef[entityID];
113
+ }
114
+ }
115
+ return newUtterances;
116
+ };
117
+ const ALPHANUMERIC_REGEXP = /[\dA-Za-z{}]/;
118
+ // some NLP/NLU models do not allow entity classifications without a space seperator: 'I work at {startupName}flow' => 'I work at {startupName} flow'
119
+ export const injectUtteranceSpaces = (originalUtterance) => {
120
+ let spacesAdded = 0;
121
+ let utterance = originalUtterance ? originalUtterance.trim() : '';
122
+ const slots = [...utterance.matchAll(VF_ENTITY_REGEXP)];
123
+ slots.forEach((slot) => {
124
+ let index = slot.index + spacesAdded;
125
+ // Check if space should be added before slot
126
+ if (index > 0 && utterance[index - 1].match(ALPHANUMERIC_REGEXP)) {
127
+ utterance = `${utterance.slice(0, index)} ${utterance.slice(index)}`;
128
+ ++spacesAdded;
129
+ ++index;
130
+ }
131
+ // Check if space should be added after slot
132
+ if (index + slot[0].length < utterance.length - 1 && utterance[index + slot[0].length].match(ALPHANUMERIC_REGEXP)) {
133
+ utterance = `${utterance.slice(0, index + slot[0].length)} ${utterance.slice(index + slot[0].length)}`;
134
+ ++spacesAdded;
135
+ }
136
+ });
137
+ return utterance;
138
+ };
34
139
  //# sourceMappingURL=intent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/utils/intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,2BAA2B,EAAE,WAAW,EAAE,YAAY,EAAE,qBAAoB;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;IACvD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IAED,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,wCAAwC;IACxC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAChD,mEAAmE;IACnE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEvG,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,KAAK,GAAG,EAAE,EACV,UAAU,GAAG,EAAE,GAIhB,EAAY,EAAE,CACb,UAAU;KACP,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,IAAI,0CAAE,IAAI,EAAE,CAAA,CAAA,EAAA,CAAC;KAC/C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAChB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtD,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC,CAAC,CACH,CAAC;AAEN,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAoC,EAAE,IAAgD,EAAU,EAAE;;IAC5H,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,MAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;IAE3D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,KAAK,2BAA2B,EAAE;QACtE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;QAEvF,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,yBAAyB;SAClD;aAAM;YACL,CAAC,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;SAC1B;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/utils/intent.ts"],"names":[],"mappings":"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"}
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.14.0",
4
+ "version": "7.15.3",
5
5
  "author": "Voiceflow",
6
6
  "bugs": {
7
7
  "url": "https://github.com/voiceflow/libs/issues"
@@ -13,6 +13,7 @@
13
13
  "cuid": "^2.1.8",
14
14
  "dayjs": "^1.10.7",
15
15
  "lodash": "^4.17.21",
16
+ "murmurhash-wasm": "^1.3.0",
16
17
  "number-to-words": "^1.2.4",
17
18
  "typescript-fsa": "3.0.0"
18
19
  },
@@ -72,5 +73,5 @@
72
73
  "test:single": "NODE_ENV=test ts-mocha --paths --config config/tests/mocharc.yml",
73
74
  "test:unit": "NODE_ENV=test nyc --report-dir=nyc_coverage_unit ts-mocha --paths --config config/tests/mocharc.yml 'tests/**/*.unit.ts'"
74
75
  },
75
- "gitHead": "d8e510b542d74ec94fe6e20040c83f7c5429ae80"
76
+ "gitHead": "775f8c46df9560cbd35b267a985a87ddf6d361df"
76
77
  }