@xapp/stentor-validation 1.40.100 → 1.40.105

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.
@@ -23,14 +23,15 @@ class IntentValidator extends lakmus_1.Validator {
23
23
  // ******************* validations for only the intent ***************
24
24
  const result = super.validate(intent);
25
25
  const utterances = new stentor_interaction_model_1.UtteranceGenerator().forIntent(intent);
26
- const slotNames = [];
26
+ // Found slot names in the utterances
27
+ const slotNamesInUtterances = [];
27
28
  if (utterances.length > 0) {
28
29
  utterances.forEach((utterance) => {
29
30
  // Validate them
30
31
  const utteranceResult = new UtteranceValidator_1.UtteranceValidator().validate(utterance);
31
32
  result.errors.push(...utteranceResult.errors);
32
33
  // Pull out the slot names
33
- slotNames.push(...(0, stentor_interaction_model_1.getSlotNames)(utterance));
34
+ slotNamesInUtterances.push(...(0, stentor_interaction_model_1.getSlotNames)(utterance));
34
35
  });
35
36
  }
36
37
  const intentSlots = intent.slots || [];
@@ -44,11 +45,22 @@ class IntentValidator extends lakmus_1.Validator {
44
45
  return previous;
45
46
  }, {});
46
47
  // Every slot name needs a defined slot
47
- slotNames.forEach((slotName) => {
48
+ slotNamesInUtterances.forEach((slotName) => {
48
49
  if (!slotMap[slotName]) {
49
50
  result.errors.push(new lakmus_1.ValidationError(`Slot ${slotName} does not have a defined type.`));
50
51
  }
51
52
  });
53
+ // This intents slots
54
+ intentSlots.forEach((slot) => {
55
+ // Validate the name
56
+ if (/[^A-Za-z_]/.test(slot.name)) {
57
+ result.errors.push(new lakmus_1.ValidationError(`Slot "${slot.name}" has an invalid name. They must contain only letters and underscores.`));
58
+ }
59
+ // If it is defined it needs to be used
60
+ if (!slotNamesInUtterances.includes(slot.name)) {
61
+ result.errors.push(new lakmus_1.ValidationError(`Slot "${slot.name}" is not being used in the utterances. If the name is invalid then it will not be properly detected in utterances.`));
62
+ }
63
+ });
52
64
  // ******************************************************************
53
65
  // ******************* validations across all intents ***************
54
66
  this.slots.push(...intentSlots);
@@ -1 +1 @@
1
- {"version":3,"file":"IntentValidator.js","sourceRoot":"","sources":["../src/IntentValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntentValidator.js","sourceRoot":"","sources":["../src/IntentValidator.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.UtteranceValidator = void 0;
5
5
  const lakmus_1 = require("lakmus");
6
6
  const stringSegment_1 = require("./stringSegment");
7
- const INVALID_CHARACTERS = ["‘", "’", "“", "”"];
7
+ const INVALID_CHARACTERS = ["‘", "’", "“", "”", "\\", "\/"];
8
8
  class UtteranceValidator extends lakmus_1.Validator {
9
9
  constructor() {
10
10
  super();
@@ -21,10 +21,15 @@ class UtteranceValidator extends lakmus_1.Validator {
21
21
  if (/[0-9]/.test(utterance)) {
22
22
  result.errors.push(new lakmus_1.ValidationError(`Utterances cannot contain numbers.`));
23
23
  }
24
+ // Only valid punctuation marks including $ { } . _ - '
25
+ if (/[^a-zA-Z\d\s${}.-_']/.test(utterance)) {
26
+ result.errors.push(new lakmus_1.ValidationError(`Utterances can only contain valid punctuation including periods, underscores, hyphens and apostrophes.`));
27
+ }
24
28
  //Look for the case where there is a spacing missing "}${" "}foo"
25
29
  if (/}\S/.test(utterance) || /\S\${/.test(utterance)) {
26
30
  result.errors.push(new lakmus_1.ValidationError("You must have a space separating slot values in the utterance."));
27
31
  }
32
+ // Our catch all
28
33
  if (/[^\u0000-\u00ff]/.test(utterance)) {
29
34
  result.errors.push(new lakmus_1.ValidationError("Utterance contains invalid characters."));
30
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UtteranceValidator.js","sourceRoot":"","sources":["../src/UtteranceValidator.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,mCAAsE;AACtE,mDAAgD;AAEhD,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE/C,MAAa,kBAAmB,SAAQ,kBAAiB;IACrD;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,SAAiB;QAE7B,MAAM,MAAM,GAAG,IAAI,yBAAgB,EAAE,CAAC;QAEtC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,yCAAyC,OAAO,cAAc,KAAK,MAAM,IAAA,6BAAa,EAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;aACvJ;QACL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,oCAAoC,CAAC,CAAC,CAAC;SACjF;QAED,iEAAiE;QACjE,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,gEAAgE,CAAC,CAAC,CAAA;SAC5G;QAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA;SACpF;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhCD,gDAgCC"}
1
+ {"version":3,"file":"UtteranceValidator.js","sourceRoot":"","sources":["../src/UtteranceValidator.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,mCAAsE;AACtE,mDAAgD;AAEhD,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE3D,MAAa,kBAAmB,SAAQ,kBAAiB;IACrD;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,SAAiB;QAE7B,MAAM,MAAM,GAAG,IAAI,yBAAgB,EAAE,CAAC;QAEtC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,yCAAyC,OAAO,cAAc,KAAK,MAAM,IAAA,6BAAa,EAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;aACvJ;QACL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,oCAAoC,CAAC,CAAC,CAAC;SACjF;QAED,wDAAwD;QACxD,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,wGAAwG,CAAC,CAAC,CAAC;SACrJ;QAED,iEAAiE;QACjE,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,gEAAgE,CAAC,CAAC,CAAA;SAC5G;QACD,gBAAgB;QAChB,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA;SACpF;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AArCD,gDAqCC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },
7
- "version": "1.40.100",
7
+ "version": "1.40.105",
8
8
  "description": "Model validation for Stentor",
9
9
  "types": "lib/index",
10
10
  "main": "lib/index",
@@ -21,12 +21,12 @@
21
21
  "chai": "4.3.6",
22
22
  "mocha": "9.2.2",
23
23
  "stentor-guards": "1.54.7",
24
- "stentor-interaction-model": "1.54.7",
25
- "stentor-logger": "1.54.7",
24
+ "stentor-interaction-model": "1.54.8",
25
+ "stentor-logger": "1.54.8",
26
26
  "stentor-models": "1.54.7",
27
- "stentor-utils": "1.54.7",
27
+ "stentor-utils": "1.54.8",
28
28
  "ts-node": "9.1.1",
29
- "typescript": "4.6.2"
29
+ "typescript": "4.6.3"
30
30
  },
31
31
  "dependencies": {
32
32
  "lakmus": "0.3.0"
@@ -43,5 +43,5 @@
43
43
  "clean": "rm -rf ./lib/*",
44
44
  "test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
45
45
  },
46
- "gitHead": "72a555c30721e7e818b1db677a422f050dbfd17d"
46
+ "gitHead": "644ead34ff4e3a43378a8fff6cd5cdfbcdfd68e5"
47
47
  }