@autometa/cucumber-expressions 0.0.0 → 0.1.1

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/CHANGELOG.md ADDED
@@ -0,0 +1,23 @@
1
+ # @autometa/cucumber-expressions
2
+
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [bf23fc4]
8
+ - @autometa/datetime@0.1.1
9
+
10
+ ## 0.1.0
11
+
12
+ ### Minor Changes
13
+
14
+ - 554b77e: Releasing packages
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [554b77e]
19
+ - @autometa/overloaded@0.3.0
20
+ - @autometa/asserters@0.1.0
21
+ - @autometa/datetime@0.1.0
22
+ - @autometa/errors@0.1.0
23
+ - @autometa/types@0.4.0
package/dist/esm/index.js CHANGED
@@ -84,7 +84,7 @@ function isExpressionCandidate(change1, change2) {
84
84
  }
85
85
 
86
86
  // src/search-report.ts
87
- import chalk from "chalk";
87
+ import chalk from "colors-cli";
88
88
  var SameStepTypeMatch = class {
89
89
  constructor(diff) {
90
90
  this.keyword = diff.step.keyword;
@@ -93,7 +93,7 @@ var SameStepTypeMatch = class {
93
93
  }
94
94
  toString() {
95
95
  const keyword = chalk.green(this.keyword);
96
- const text = chalk.whiteBright(this.text);
96
+ const text = chalk.white(this.text);
97
97
  const distance2 = chalk.blue(`[${this.distance}]`);
98
98
  return `${distance2} ${keyword} ${text}`;
99
99
  }
@@ -105,9 +105,9 @@ var DifferentStepTypeMatch = class {
105
105
  this.distance = diff.distance;
106
106
  }
107
107
  toString() {
108
- const keywordColor = chalk.ansi256(208);
108
+ const keywordColor = chalk.cyan_bt;
109
109
  const keyword = keywordColor(this.keyword);
110
- const text = chalk.whiteBright(this.text);
110
+ const text = chalk.white_b(this.text);
111
111
  const distance2 = chalk.blue(`[${this.distance}]`);
112
112
  return `${distance2} ${keyword} ${text}`;
113
113
  }
@@ -152,7 +152,7 @@ var FuzzySearchReport = class {
152
152
  const formatChildren = children.map((it) => it.toString().replace(/^/gm, " ")).join("\n");
153
153
  const message = messageArray.join(`
154
154
  ${TAB}`);
155
- const heading = chalk.bgBlackBright(this.headingText);
155
+ const heading = chalk.black_b(this.headingText);
156
156
  return `${heading}
157
157
  ${TAB}${message}
158
158
  ${formatChildren}`;
@@ -208,9 +208,15 @@ import {
208
208
  nil,
209
209
  array
210
210
  } from "@autometa/overloaded";
211
- Argument.prototype.getValue = function(thisObj) {
211
+ Argument.prototype.getValue = function() {
212
+ if (this.group.children.length > 0) {
213
+ const value = this.group.children.filter((it) => it.value !== void 0).map((child) => child.value);
214
+ if (value.length > 0) {
215
+ return this.parameterType.transform(this.parameterType, value);
216
+ }
217
+ }
212
218
  const groupValues = this.group ? this.group.value ? [this.group.value] : this.group.values : null;
213
- return this.parameterType.transform(thisObj, groupValues);
219
+ return this.parameterType.transform(this.parameterType, groupValues);
214
220
  };
215
221
  var regexp = instance(RegExp).or(array([instance(RegExp)]));
216
222
  function defineParameterType(registry, ...params) {
@@ -247,7 +253,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
247
253
  }),
248
254
  def`allTransforms`(
249
255
  string(),
250
- instance(RegExp),
256
+ regexp,
251
257
  func("type"),
252
258
  func("transform"),
253
259
  nil("primitive")
@@ -262,7 +268,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
262
268
  }),
263
269
  def`transformPrimitive`(
264
270
  string(),
265
- instance(RegExp),
271
+ regexp,
266
272
  nil("type"),
267
273
  func("transform"),
268
274
  func("primitive")
@@ -275,9 +281,9 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
275
281
  const param = new ParameterType(name2, regexp2, primitive2, wrapper);
276
282
  registry.defineParameterType(param);
277
283
  }),
278
- def`encapuslatePrimitive`(
284
+ def`encapsulatePrimitive`(
279
285
  string(),
280
- instance(RegExp),
286
+ regexp,
281
287
  func("type"),
282
288
  nil("transform"),
283
289
  func("primitive")
@@ -291,21 +297,17 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
291
297
  const param = new ParameterType(name2, regexp2, type2, wrapper);
292
298
  registry.defineParameterType(param);
293
299
  }),
294
- def`makeType`(
295
- string(),
296
- instance(RegExp),
297
- func("type"),
298
- nil(),
299
- nil()
300
- ).matches((name2, pattern, type2) => {
301
- const prototype = type2;
302
- const transform2 = (val) => new prototype(val);
303
- const param = new ParameterType(name2, pattern, null, transform2);
304
- registry.defineParameterType(param);
305
- }),
300
+ def`makeType`(string(), regexp, func("type"), nil(), nil()).matches(
301
+ (name2, pattern, type2) => {
302
+ const prototype = type2;
303
+ const transform2 = (val) => new prototype(val);
304
+ const param = new ParameterType(name2, pattern, null, transform2);
305
+ registry.defineParameterType(param);
306
+ }
307
+ ),
306
308
  def`makePrimitive`(
307
309
  string(),
308
- instance(RegExp),
310
+ regexp,
309
311
  nil(),
310
312
  nil(),
311
313
  func("primitive")
@@ -317,7 +319,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
317
319
  }),
318
320
  def`transformValue`(
319
321
  string(),
320
- instance(RegExp),
322
+ regexp,
321
323
  nil(),
322
324
  func("transform"),
323
325
  nil()
@@ -351,11 +353,38 @@ var NumberParam = {
351
353
  regexpPattern: /\d+/,
352
354
  primitive: Number
353
355
  };
356
+ var AnyParam = {
357
+ name: "any",
358
+ regexpPattern: /.*/
359
+ };
360
+ var UnknownParam = {
361
+ name: "unknown",
362
+ regexpPattern: /.*/
363
+ };
364
+ var TextParam = {
365
+ name: "text",
366
+ regexpPattern: /"([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'/,
367
+ primitive: String,
368
+ transform: (value) => {
369
+ const asStr = value;
370
+ return asStr.replace(/^"(.*)"$/, "$1").replace(/^'(.*)'$/, "$1");
371
+ }
372
+ };
354
373
  var BooleanParam = {
355
374
  name: "boolean",
356
375
  regexpPattern: /true|false/,
357
376
  primitive: Boolean
358
377
  };
378
+ var BoolParam = {
379
+ name: "bool",
380
+ regexpPattern: /true|false/,
381
+ primitive: Boolean
382
+ };
383
+ var DateParam = {
384
+ name: "date",
385
+ regexpPattern: [isodateRegexp, shortDateRegex],
386
+ type: Date
387
+ };
359
388
  var PrimitiveParam = {
360
389
  name: "primitive",
361
390
  regexpPattern: [
@@ -394,7 +423,7 @@ var PrimitiveParam = {
394
423
  if (fromPhrase && !isNaN(fromPhrase.getTime())) {
395
424
  return fromPhrase;
396
425
  }
397
- return val;
426
+ return val.replace(/^"(.*)"$/, "$1").replace(/^'(.*)'$/, "$1");
398
427
  })
399
428
  ).use([value]);
400
429
  }
@@ -415,12 +444,17 @@ function parseIso(val) {
415
444
  return DateTime.fromISO(val).toJSDate();
416
445
  }
417
446
  export {
447
+ AnyParam,
448
+ BoolParam,
418
449
  BooleanParam,
450
+ DateParam,
419
451
  DifferentStepTypeMatch,
420
452
  FuzzySearchReport,
421
453
  NumberParam,
422
454
  PrimitiveParam,
423
455
  SameStepTypeMatch,
456
+ TextParam,
457
+ UnknownParam,
424
458
  buildFuzzySearchReport,
425
459
  checkMatch,
426
460
  defineParameterType,
@@ -430,3 +464,4 @@ export {
430
464
  limitDiffs,
431
465
  refineDiff
432
466
  };
467
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/step-matcher.ts","../../src/search-report.ts","../../src/parameters.ts","../../src/default.parameters.ts"],"sourcesContent":["import { diffWordsWithSpace, Change } from \"diff\";\nimport { distance } from \"closest-match\";\nimport { Expression } from \"@cucumber/cucumber-expressions\";\nimport { AssertKey } from \"@autometa/asserters\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport interface Matchable {\n matches(text: string): boolean;\n}\n\nexport interface ExpressionWrapper {\n expression: Expression;\n}\n\nexport interface GherkinKeyword {\n type: StepType;\n}\nexport type StepDiff = {\n merged: string;\n step: {\n keyword: StepKeyword;\n expression: Expression;\n type: StepType;\n matches: (text: string) => boolean;\n };\n gherkin: string;\n distance: number;\n};\nexport type StepDiffs = StepDiff[];\nexport type LimitedStepDiffs = { same: StepDiffs; other: StepDiffs };\nexport function checkMatch<T extends Matchable>(text: string, it: T): boolean {\n return it.matches(text);\n}\nexport function limitDiffs(\n sameStepType: StepDiff[],\n differentStepType: StepDiff[],\n max: number\n) : LimitedStepDiffs {\n const sameDistances = sameStepType.map((it) => it.distance);\n const maxSameStepDistance = Math.max(...sameDistances);\n const otherStepDistance = differentStepType.map((it) => it.distance);\n const minDifferentStepDistance = Math.min(...otherStepDistance);\n // Prioritize same-type steps for search. Only\n // consider other-type steps when the lowest\n // other score is lower than the highest same scoreF\n if (maxSameStepDistance > minDifferentStepDistance) {\n const filter = sameStepType.filter(\n (it) => it.distance <= minDifferentStepDistance\n );\n if (filter.length >= max) {\n return { same: filter.slice(0, max), other: [] };\n }\n const diff = max - filter.length;\n const sameSlice = sameStepType.slice(0, diff);\n const differentSlice = differentStepType.slice(0, max - diff);\n return { same: sameSlice, other: differentSlice };\n }\n const maxIndex = Math.min(max, sameStepType.length);\n const result = { same: sameStepType.slice(0, maxIndex), other: [] };\n return result;\n}\n\nexport function getDiffs<T extends Matchable & ExpressionWrapper>(\n text: string,\n maxResults: number,\n step: T[]\n) {\n const sorted = step\n .map((it) => {\n if (checkMatch(text, it)) {\n return { merged: text, step: it, gherkin: text, distance: 0 };\n }\n AssertKey(it, \"expression\");\n AssertKey(it, \"matches\");\n const diff = getDiff(text, it);\n const refined = refineDiff(diff);\n const dist = distance(text, refined);\n return { merged: refined, step: it, gherkin: text, distance: dist };\n })\n .sort((a, b) => a.distance - b.distance);\n const max = Math.min(maxResults, sorted.length);\n return sorted.slice(0, max);\n}\n\nexport function getDiff<T extends ExpressionWrapper>(text: string, it: T) {\n return diffWordsWithSpace(text, it.expression.source);\n}\n\nexport function refineDiff(diff: Change[]) {\n const strings: string[] = [];\n for (let index = 0; index < diff.length; index++) {\n const gherkinChange = diff[index];\n const scopeChange = diff[index + 1];\n if (isExpressionCandidate(gherkinChange, scopeChange)) {\n strings.push(gherkinChange.value);\n index++;\n continue;\n }\n if (gherkinChange.value) {\n strings.push(gherkinChange.value);\n continue;\n }\n }\n return strings.join(\"\");\n}\n\nexport function isExpressionCandidate(change1: Change, change2: Change) {\n if (change1.removed && change2.added) {\n const scopeText = change2.value;\n return /{.*}/.test(scopeText);\n }\n return false;\n}\n","import type { LimitedStepDiffs, StepDiff } from \"./step-matcher\";\nimport chalk from \"colors-cli\";\nexport class SameStepTypeMatch {\n readonly keyword: string;\n readonly text: string;\n readonly distance: number;\n constructor(diff: StepDiff) {\n this.keyword = diff.step.keyword;\n this.text = diff.merged;\n this.distance = diff.distance;\n }\n toString() {\n const keyword = chalk.green(this.keyword);\n const text = chalk.white(this.text);\n const distance = chalk.blue(`[${this.distance}]`);\n return `${distance} ${keyword} ${text}`;\n }\n}\nexport class DifferentStepTypeMatch {\n readonly keyword: string;\n readonly text: string;\n readonly distance: number;\n constructor(diff: StepDiff) {\n this.keyword = diff.step.keyword;\n this.text = diff.merged;\n this.distance = diff.distance;\n }\n toString() {\n const keywordColor = chalk.cyan_bt;\n const keyword = keywordColor(this.keyword);\n const text = chalk.white_b(this.text);\n const distance = chalk.blue(`[${this.distance}]`);\n return `${distance} ${keyword} ${text}`;\n }\n}\nexport class FuzzySearchReport {\n headingText: string;\n matches: (SameStepTypeMatch | DifferentStepTypeMatch)[] = [];\n children: FuzzySearchReport[] = [];\n\n get length() {\n return (\n this.matches.length +\n this.children.length\n );\n }\n addHeading(headingText: string) {\n this.headingText = headingText;\n return this;\n }\n addMatch(match: SameStepTypeMatch | DifferentStepTypeMatch) {\n this.matches.push(match);\n return this;\n }\n addChild(child: FuzzySearchReport) {\n this.children.push(child);\n return this;\n }\n get #sameMatchTypes() {\n return this.matches.filter(\n (it) => it instanceof SameStepTypeMatch\n ) as SameStepTypeMatch[];\n }\n get #differentMatchTypes() {\n return this.matches.filter(\n (it) => it instanceof DifferentStepTypeMatch\n ) as DifferentStepTypeMatch[];\n }\n\n toString() {\n const same = this.#sameMatchTypes.map((it) => it.toString()).join(\"\\n\");\n const sameMessage = same.length > 0 ? `Steps with matching step type:` : \"\";\n const different = this.#differentMatchTypes\n .map((it) => it.toString())\n .join(\"\\n\");\n const differentMessage =\n different.length > 0 ? `Steps with different step type:` : \"\";\n const messageArray: string[] = [];\n appendSubMessage(messageArray, sameMessage);\n appendSubMessage(messageArray, same, TAB);\n appendSubMessage(messageArray, differentMessage);\n appendSubMessage(messageArray, different, TAB);\n const children: FuzzySearchReport[] = [];\n this.children.forEach((child) => {\n appendChild(children, child);\n });\n const formatChildren: string = children\n .map((it) => it.toString().replace(/^/gm, \" \"))\n .join(\"\\n\");\n const message = messageArray.join(`\\n${TAB}`);\n const heading = chalk.black_b(this.headingText);\n return `${heading}\n${TAB}${message}\n${formatChildren}`;\n }\n}\nfunction appendSubMessage(arr: string[], message: string, prefix?: string) {\n if (message && message.length > 0) {\n const str = prefix ? `${prefix}${message}` : message;\n arr.push(str);\n }\n}\nfunction appendChild(arr: FuzzySearchReport[], message: FuzzySearchReport) {\n if (message) {\n arr.push(message);\n }\n}\nconst SPACE = \" \";\nconst TAB = SPACE.repeat(2);\n\nexport function buildFuzzySearchReport({ same, other }: LimitedStepDiffs) {\n const report = new FuzzySearchReport();\n same.forEach((diff) => {\n report.addMatch(new SameStepTypeMatch(diff));\n });\n other.forEach((diff) => {\n report.addMatch(new DifferentStepTypeMatch(diff));\n });\n return report;\n}\n","import {\n Argument,\n ParameterType,\n ParameterTypeRegistry\n} from \"@cucumber/cucumber-expressions\";\nimport { Class } from \"@autometa/types\";\nimport {\n def,\n func,\n instance,\n overloads,\n string,\n nil,\n array\n} from \"@autometa/overloaded\";\n// todo - this has a bug when dealing with {string} - does not remove quotes\nArgument.prototype.getValue = function () {\n if (this.group.children.length > 0) {\n const value = this.group.children\n .filter((it) => it.value !== undefined)\n .map((child) => child.value);\n if (value.length > 0) {\n return this.parameterType.transform(this.parameterType, value);\n }\n }\n const groupValues = this.group\n ? this.group.value\n ? [this.group.value]\n : this.group.values\n : null;\n return this.parameterType.transform(this.parameterType, groupValues);\n};\ntype PrimitiveConstructor =\n | typeof Number\n | typeof String\n | typeof Boolean\n | typeof BigInt;\n\nexport type ParamTypeDefinition = {\n name: string;\n regexpPattern: RegExp | RegExp[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform?: (value: any) => unknown;\n type?: Class<unknown>;\n primitive?:\n | typeof String\n | typeof Number\n | typeof Boolean\n | typeof BigInt\n | typeof Date;\n};\n\nconst regexp = instance(RegExp).or(array([instance(RegExp)]));\n\nexport function defineParameterType<T extends ParamTypeDefinition[]>(\n registry: ParameterTypeRegistry,\n ...params: T\n) {\n params.forEach((param) => {\n const { name, regexpPattern, transform, type, primitive } =\n param as ParamTypeDefinition;\n return registerParameterType(\n registry,\n name,\n regexpPattern,\n transform,\n type,\n primitive\n );\n });\n}\nfunction registerParameterType(\n registry: ParameterTypeRegistry,\n name: string,\n regexpPattern: RegExp | RegExp[],\n transform: ((value: unknown) => unknown) | undefined,\n type: Class<unknown> | undefined,\n primitive:\n | NumberConstructor\n | StringConstructor\n | BooleanConstructor\n | BigIntConstructor\n | DateConstructor\n | undefined\n): void {\n return overloads(\n def(\n string(),\n regexp,\n func(\"type\"),\n func(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, type, transform, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n const asType = new typePrototype(asPrimitive);\n return transform(asType);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`allTransforms`(\n string(),\n regexp,\n func(\"type\"),\n func(\"transform\"),\n nil(\"primitive\")\n ).matches((name, regexp, type, transform) => {\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asType = new typePrototype(val);\n return transform(asType);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`transformPrimitive`(\n string(),\n regexp,\n nil(\"type\"),\n func(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, _, transform, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n return transform(asPrimitive);\n };\n const param = new ParameterType(name, regexp, primitive, wrapper);\n registry.defineParameterType(param);\n }),\n def`encapsulatePrimitive`(\n string(),\n regexp,\n func(\"type\"),\n nil(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, type, _, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n return new typePrototype(asPrimitive);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`makeType`(string(), regexp, func(\"type\"), nil(), nil()).matches(\n (name, pattern, type) => {\n const prototype = type as unknown as Class<unknown>;\n const transform = (val: unknown) => new prototype(val);\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }\n ),\n def`makePrimitive`(\n string(),\n regexp,\n nil(),\n nil(),\n func(\"primitive\")\n ).matches((name, pattern, _, __, primitive) => {\n const prototype = primitive as unknown as PrimitiveConstructor;\n const transform = (val: unknown) => prototype(val);\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }),\n def`transformValue`(\n string(),\n regexp,\n nil(),\n func(\"transform\"),\n nil()\n ).matches((name, pattern, _, transform, __) => {\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }),\n def`default`(string(), instance(RegExp), nil(), nil(), nil()).matches(\n (name, pattern, _, __, ___) => {\n const transform = (val: unknown) => val;\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }\n )\n ).use([name, regexpPattern, type, transform, primitive]);\n}\n","import { def, fallback, overloads, string } from \"@autometa/overloaded\";\nimport { ParamTypeDefinition } from \"./parameters\";\nimport { Dates } from \"@autometa/datetime\";\nimport { AssertIs } from \"@autometa/asserters\";\nimport { DateTime } from \"luxon\";\ntype AutoParamTypeDefinition = Omit<ParamTypeDefinition, \"transform\">;\nconst strNum = /['\"]-?\\d+['\"]/;\n\nconst isodateRegexp =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\nconst shortDateRegex =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\d)/;\nconst boolTypesActive = [\"active\", \"inactive\"];\nconst boolTypesEnabled = [\"enabled\", \"disabled\"];\nconst boolTypes = [\"true\", \"false\"];\n\nexport const NumberParam: AutoParamTypeDefinition = {\n name: \"number\",\n regexpPattern: /\\d+/,\n primitive: Number\n};\n\nexport const AnyParam: AutoParamTypeDefinition = {\n name: \"any\",\n regexpPattern: /.*/\n};\nexport const UnknownParam: AutoParamTypeDefinition = {\n name: \"unknown\",\n regexpPattern: /.*/\n};\nexport const TextParam: ParamTypeDefinition = {\n name: \"text\",\n regexpPattern: /\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"|'([^'\\\\]*(\\\\.[^'\\\\]*)*)'/,\n primitive: String,\n transform: (value: string) => {\n const asStr = value as string;\n return asStr.replace(/^\"(.*)\"$/, \"$1\").replace(/^'(.*)'$/, \"$1\");\n }\n};\n\nexport const BooleanParam: AutoParamTypeDefinition = {\n name: \"boolean\",\n regexpPattern: /true|false/,\n primitive: Boolean\n};\nexport const BoolParam: AutoParamTypeDefinition = {\n name: \"bool\",\n regexpPattern: /true|false/,\n primitive: Boolean\n};\nexport const DateParam: AutoParamTypeDefinition = {\n name: \"date\",\n regexpPattern: [isodateRegexp, shortDateRegex],\n type: Date\n};\n\nexport const PrimitiveParam: ParamTypeDefinition = {\n name: \"primitive\",\n regexpPattern: [\n /true|false/,\n /enabled|disabled/,\n /active|inactive/,\n /null/,\n /empty/,\n /undefined/,\n /NaN/,\n /Infinity/,\n /-Infinity/,\n isodateRegexp,\n shortDateRegex,\n /-?\\d+/,\n /\"([^\"]*)\"/,\n /'([^']*)'/\n ],\n transform: (value: unknown) => {\n return overloads(\n def(string({ equals: \"null\" })).matches((_) => null),\n def(string({ equals: \"undefined\" })).matches((_) => undefined),\n def(string({ in: boolTypes })).matches((val) => Boolean(val)),\n def(string({ equals: \"NaN\" })).matches((_) => NaN),\n def(string({ equals: \"Infinity\" })).matches((_) => Infinity),\n def(string({ equals: \"-Infinity\" })).matches((_) => -Infinity),\n def(string({ pattern: isodateRegexp })).matches(parseIso),\n def(string({ pattern: shortDateRegex })).matches(parseDate),\n def(string({ pattern: strNum })).matches(trimQuotes),\n def(string({ pattern: /-?\\d+/ })).matches((val) => Number(val)),\n def(string({ in: boolTypesEnabled })).matches(boolEnabled),\n def(string({ in: boolTypesActive })).matches(boolActive),\n fallback((val) => {\n AssertIs(val, \"string\");\n const fromPhrase = Dates.fromPhrase(val);\n if (fromPhrase && !isNaN(fromPhrase.getTime())) {\n return fromPhrase;\n }\n return val.replace(/^\"(.*)\"$/, \"$1\").replace(/^'(.*)'$/, \"$1\");\n })\n ).use([value]);\n }\n};\n\nfunction boolActive(val: string): boolean {\n return val === \"active\";\n}\n\nfunction boolEnabled(val: string): boolean {\n return val === \"enabled\";\n}\n\nfunction parseDate(val: string): Date {\n return new Date(Date.parse(val));\n}\n\nfunction trimQuotes(val: string): string {\n return val.slice(1, -1);\n}\n\nfunction parseIso(val: string): Date {\n return DateTime.fromISO(val).toJSDate();\n}\n"],"mappings":"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","names":["distance","name","regexp","type","transform","primitive","def","overloads","string"]}
@@ -0,0 +1,88 @@
1
+ import { Change } from 'diff';
2
+ import { Expression, ParameterTypeRegistry } from '@cucumber/cucumber-expressions';
3
+ import { StepType, StepKeyword, Class } from '@autometa/types';
4
+
5
+ interface Matchable {
6
+ matches(text: string): boolean;
7
+ }
8
+ interface ExpressionWrapper {
9
+ expression: Expression;
10
+ }
11
+ interface GherkinKeyword {
12
+ type: StepType;
13
+ }
14
+ type StepDiff = {
15
+ merged: string;
16
+ step: {
17
+ keyword: StepKeyword;
18
+ expression: Expression;
19
+ type: StepType;
20
+ matches: (text: string) => boolean;
21
+ };
22
+ gherkin: string;
23
+ distance: number;
24
+ };
25
+ type StepDiffs = StepDiff[];
26
+ type LimitedStepDiffs = {
27
+ same: StepDiffs;
28
+ other: StepDiffs;
29
+ };
30
+ declare function checkMatch<T extends Matchable>(text: string, it: T): boolean;
31
+ declare function limitDiffs(sameStepType: StepDiff[], differentStepType: StepDiff[], max: number): LimitedStepDiffs;
32
+ declare function getDiffs<T extends Matchable & ExpressionWrapper>(text: string, maxResults: number, step: T[]): {
33
+ merged: string;
34
+ step: T;
35
+ gherkin: string;
36
+ distance: number;
37
+ }[];
38
+ declare function getDiff<T extends ExpressionWrapper>(text: string, it: T): Change[];
39
+ declare function refineDiff(diff: Change[]): string;
40
+ declare function isExpressionCandidate(change1: Change, change2: Change): boolean;
41
+
42
+ declare class SameStepTypeMatch {
43
+ readonly keyword: string;
44
+ readonly text: string;
45
+ readonly distance: number;
46
+ constructor(diff: StepDiff);
47
+ toString(): string;
48
+ }
49
+ declare class DifferentStepTypeMatch {
50
+ readonly keyword: string;
51
+ readonly text: string;
52
+ readonly distance: number;
53
+ constructor(diff: StepDiff);
54
+ toString(): string;
55
+ }
56
+ declare class FuzzySearchReport {
57
+ #private;
58
+ headingText: string;
59
+ matches: (SameStepTypeMatch | DifferentStepTypeMatch)[];
60
+ children: FuzzySearchReport[];
61
+ get length(): number;
62
+ addHeading(headingText: string): this;
63
+ addMatch(match: SameStepTypeMatch | DifferentStepTypeMatch): this;
64
+ addChild(child: FuzzySearchReport): this;
65
+ toString(): string;
66
+ }
67
+ declare function buildFuzzySearchReport({ same, other }: LimitedStepDiffs): FuzzySearchReport;
68
+
69
+ type ParamTypeDefinition = {
70
+ name: string;
71
+ regexpPattern: RegExp | RegExp[];
72
+ transform?: (value: any) => unknown;
73
+ type?: Class<unknown>;
74
+ primitive?: typeof String | typeof Number | typeof Boolean | typeof BigInt | typeof Date;
75
+ };
76
+ declare function defineParameterType<T extends ParamTypeDefinition[]>(registry: ParameterTypeRegistry, ...params: T): void;
77
+
78
+ type AutoParamTypeDefinition = Omit<ParamTypeDefinition, "transform">;
79
+ declare const NumberParam: AutoParamTypeDefinition;
80
+ declare const AnyParam: AutoParamTypeDefinition;
81
+ declare const UnknownParam: AutoParamTypeDefinition;
82
+ declare const TextParam: ParamTypeDefinition;
83
+ declare const BooleanParam: AutoParamTypeDefinition;
84
+ declare const BoolParam: AutoParamTypeDefinition;
85
+ declare const DateParam: AutoParamTypeDefinition;
86
+ declare const PrimitiveParam: ParamTypeDefinition;
87
+
88
+ export { AnyParam, BoolParam, BooleanParam, DateParam, DifferentStepTypeMatch, ExpressionWrapper, FuzzySearchReport, GherkinKeyword, LimitedStepDiffs, Matchable, NumberParam, ParamTypeDefinition, PrimitiveParam, SameStepTypeMatch, StepDiff, StepDiffs, TextParam, UnknownParam, buildFuzzySearchReport, checkMatch, defineParameterType, getDiff, getDiffs, isExpressionCandidate, limitDiffs, refineDiff };
package/dist/index.d.ts CHANGED
@@ -69,15 +69,20 @@ declare function buildFuzzySearchReport({ same, other }: LimitedStepDiffs): Fuzz
69
69
  type ParamTypeDefinition = {
70
70
  name: string;
71
71
  regexpPattern: RegExp | RegExp[];
72
- transform?: (value: unknown) => unknown;
72
+ transform?: (value: any) => unknown;
73
73
  type?: Class<unknown>;
74
- primitive?: typeof String | typeof Number | typeof Boolean | typeof BigInt;
74
+ primitive?: typeof String | typeof Number | typeof Boolean | typeof BigInt | typeof Date;
75
75
  };
76
76
  declare function defineParameterType<T extends ParamTypeDefinition[]>(registry: ParameterTypeRegistry, ...params: T): void;
77
77
 
78
78
  type AutoParamTypeDefinition = Omit<ParamTypeDefinition, "transform">;
79
79
  declare const NumberParam: AutoParamTypeDefinition;
80
+ declare const AnyParam: AutoParamTypeDefinition;
81
+ declare const UnknownParam: AutoParamTypeDefinition;
82
+ declare const TextParam: ParamTypeDefinition;
80
83
  declare const BooleanParam: AutoParamTypeDefinition;
84
+ declare const BoolParam: AutoParamTypeDefinition;
85
+ declare const DateParam: AutoParamTypeDefinition;
81
86
  declare const PrimitiveParam: ParamTypeDefinition;
82
87
 
83
- export { BooleanParam, DifferentStepTypeMatch, ExpressionWrapper, FuzzySearchReport, GherkinKeyword, LimitedStepDiffs, Matchable, NumberParam, ParamTypeDefinition, PrimitiveParam, SameStepTypeMatch, StepDiff, StepDiffs, buildFuzzySearchReport, checkMatch, defineParameterType, getDiff, getDiffs, isExpressionCandidate, limitDiffs, refineDiff };
88
+ export { AnyParam, BoolParam, BooleanParam, DateParam, DifferentStepTypeMatch, ExpressionWrapper, FuzzySearchReport, GherkinKeyword, LimitedStepDiffs, Matchable, NumberParam, ParamTypeDefinition, PrimitiveParam, SameStepTypeMatch, StepDiff, StepDiffs, TextParam, UnknownParam, buildFuzzySearchReport, checkMatch, defineParameterType, getDiff, getDiffs, isExpressionCandidate, limitDiffs, refineDiff };
package/dist/index.js CHANGED
@@ -43,12 +43,17 @@ var __privateAdd = (obj, member, value) => {
43
43
  // src/index.ts
44
44
  var src_exports = {};
45
45
  __export(src_exports, {
46
+ AnyParam: () => AnyParam,
47
+ BoolParam: () => BoolParam,
46
48
  BooleanParam: () => BooleanParam,
49
+ DateParam: () => DateParam,
47
50
  DifferentStepTypeMatch: () => DifferentStepTypeMatch,
48
51
  FuzzySearchReport: () => FuzzySearchReport,
49
52
  NumberParam: () => NumberParam,
50
53
  PrimitiveParam: () => PrimitiveParam,
51
54
  SameStepTypeMatch: () => SameStepTypeMatch,
55
+ TextParam: () => TextParam,
56
+ UnknownParam: () => UnknownParam,
52
57
  buildFuzzySearchReport: () => buildFuzzySearchReport,
53
58
  checkMatch: () => checkMatch,
54
59
  defineParameterType: () => defineParameterType,
@@ -132,7 +137,7 @@ function isExpressionCandidate(change1, change2) {
132
137
  }
133
138
 
134
139
  // src/search-report.ts
135
- var import_chalk = __toESM(require("chalk"), 1);
140
+ var import_colors_cli = __toESM(require("colors-cli"), 1);
136
141
  var SameStepTypeMatch = class {
137
142
  constructor(diff) {
138
143
  this.keyword = diff.step.keyword;
@@ -140,9 +145,9 @@ var SameStepTypeMatch = class {
140
145
  this.distance = diff.distance;
141
146
  }
142
147
  toString() {
143
- const keyword = import_chalk.default.green(this.keyword);
144
- const text = import_chalk.default.whiteBright(this.text);
145
- const distance2 = import_chalk.default.blue(`[${this.distance}]`);
148
+ const keyword = import_colors_cli.default.green(this.keyword);
149
+ const text = import_colors_cli.default.white(this.text);
150
+ const distance2 = import_colors_cli.default.blue(`[${this.distance}]`);
146
151
  return `${distance2} ${keyword} ${text}`;
147
152
  }
148
153
  };
@@ -153,10 +158,10 @@ var DifferentStepTypeMatch = class {
153
158
  this.distance = diff.distance;
154
159
  }
155
160
  toString() {
156
- const keywordColor = import_chalk.default.ansi256(208);
161
+ const keywordColor = import_colors_cli.default.cyan_bt;
157
162
  const keyword = keywordColor(this.keyword);
158
- const text = import_chalk.default.whiteBright(this.text);
159
- const distance2 = import_chalk.default.blue(`[${this.distance}]`);
163
+ const text = import_colors_cli.default.white_b(this.text);
164
+ const distance2 = import_colors_cli.default.blue(`[${this.distance}]`);
160
165
  return `${distance2} ${keyword} ${text}`;
161
166
  }
162
167
  };
@@ -200,7 +205,7 @@ var FuzzySearchReport = class {
200
205
  const formatChildren = children.map((it) => it.toString().replace(/^/gm, " ")).join("\n");
201
206
  const message = messageArray.join(`
202
207
  ${TAB}`);
203
- const heading = import_chalk.default.bgBlackBright(this.headingText);
208
+ const heading = import_colors_cli.default.black_b(this.headingText);
204
209
  return `${heading}
205
210
  ${TAB}${message}
206
211
  ${formatChildren}`;
@@ -245,9 +250,15 @@ function buildFuzzySearchReport({ same, other }) {
245
250
  // src/parameters.ts
246
251
  var import_cucumber_expressions = require("@cucumber/cucumber-expressions");
247
252
  var import_overloaded = require("@autometa/overloaded");
248
- import_cucumber_expressions.Argument.prototype.getValue = function(thisObj) {
253
+ import_cucumber_expressions.Argument.prototype.getValue = function() {
254
+ if (this.group.children.length > 0) {
255
+ const value = this.group.children.filter((it) => it.value !== void 0).map((child) => child.value);
256
+ if (value.length > 0) {
257
+ return this.parameterType.transform(this.parameterType, value);
258
+ }
259
+ }
249
260
  const groupValues = this.group ? this.group.value ? [this.group.value] : this.group.values : null;
250
- return this.parameterType.transform(thisObj, groupValues);
261
+ return this.parameterType.transform(this.parameterType, groupValues);
251
262
  };
252
263
  var regexp = (0, import_overloaded.instance)(RegExp).or((0, import_overloaded.array)([(0, import_overloaded.instance)(RegExp)]));
253
264
  function defineParameterType(registry, ...params) {
@@ -284,7 +295,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
284
295
  }),
285
296
  import_overloaded.def`allTransforms`(
286
297
  (0, import_overloaded.string)(),
287
- (0, import_overloaded.instance)(RegExp),
298
+ regexp,
288
299
  (0, import_overloaded.func)("type"),
289
300
  (0, import_overloaded.func)("transform"),
290
301
  (0, import_overloaded.nil)("primitive")
@@ -299,7 +310,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
299
310
  }),
300
311
  import_overloaded.def`transformPrimitive`(
301
312
  (0, import_overloaded.string)(),
302
- (0, import_overloaded.instance)(RegExp),
313
+ regexp,
303
314
  (0, import_overloaded.nil)("type"),
304
315
  (0, import_overloaded.func)("transform"),
305
316
  (0, import_overloaded.func)("primitive")
@@ -312,9 +323,9 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
312
323
  const param = new import_cucumber_expressions.ParameterType(name2, regexp2, primitive2, wrapper);
313
324
  registry.defineParameterType(param);
314
325
  }),
315
- import_overloaded.def`encapuslatePrimitive`(
326
+ import_overloaded.def`encapsulatePrimitive`(
316
327
  (0, import_overloaded.string)(),
317
- (0, import_overloaded.instance)(RegExp),
328
+ regexp,
318
329
  (0, import_overloaded.func)("type"),
319
330
  (0, import_overloaded.nil)("transform"),
320
331
  (0, import_overloaded.func)("primitive")
@@ -328,21 +339,17 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
328
339
  const param = new import_cucumber_expressions.ParameterType(name2, regexp2, type2, wrapper);
329
340
  registry.defineParameterType(param);
330
341
  }),
331
- import_overloaded.def`makeType`(
332
- (0, import_overloaded.string)(),
333
- (0, import_overloaded.instance)(RegExp),
334
- (0, import_overloaded.func)("type"),
335
- (0, import_overloaded.nil)(),
336
- (0, import_overloaded.nil)()
337
- ).matches((name2, pattern, type2) => {
338
- const prototype = type2;
339
- const transform2 = (val) => new prototype(val);
340
- const param = new import_cucumber_expressions.ParameterType(name2, pattern, null, transform2);
341
- registry.defineParameterType(param);
342
- }),
342
+ import_overloaded.def`makeType`((0, import_overloaded.string)(), regexp, (0, import_overloaded.func)("type"), (0, import_overloaded.nil)(), (0, import_overloaded.nil)()).matches(
343
+ (name2, pattern, type2) => {
344
+ const prototype = type2;
345
+ const transform2 = (val) => new prototype(val);
346
+ const param = new import_cucumber_expressions.ParameterType(name2, pattern, null, transform2);
347
+ registry.defineParameterType(param);
348
+ }
349
+ ),
343
350
  import_overloaded.def`makePrimitive`(
344
351
  (0, import_overloaded.string)(),
345
- (0, import_overloaded.instance)(RegExp),
352
+ regexp,
346
353
  (0, import_overloaded.nil)(),
347
354
  (0, import_overloaded.nil)(),
348
355
  (0, import_overloaded.func)("primitive")
@@ -354,7 +361,7 @@ function registerParameterType(registry, name, regexpPattern, transform, type, p
354
361
  }),
355
362
  import_overloaded.def`transformValue`(
356
363
  (0, import_overloaded.string)(),
357
- (0, import_overloaded.instance)(RegExp),
364
+ regexp,
358
365
  (0, import_overloaded.nil)(),
359
366
  (0, import_overloaded.func)("transform"),
360
367
  (0, import_overloaded.nil)()
@@ -388,11 +395,38 @@ var NumberParam = {
388
395
  regexpPattern: /\d+/,
389
396
  primitive: Number
390
397
  };
398
+ var AnyParam = {
399
+ name: "any",
400
+ regexpPattern: /.*/
401
+ };
402
+ var UnknownParam = {
403
+ name: "unknown",
404
+ regexpPattern: /.*/
405
+ };
406
+ var TextParam = {
407
+ name: "text",
408
+ regexpPattern: /"([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'/,
409
+ primitive: String,
410
+ transform: (value) => {
411
+ const asStr = value;
412
+ return asStr.replace(/^"(.*)"$/, "$1").replace(/^'(.*)'$/, "$1");
413
+ }
414
+ };
391
415
  var BooleanParam = {
392
416
  name: "boolean",
393
417
  regexpPattern: /true|false/,
394
418
  primitive: Boolean
395
419
  };
420
+ var BoolParam = {
421
+ name: "bool",
422
+ regexpPattern: /true|false/,
423
+ primitive: Boolean
424
+ };
425
+ var DateParam = {
426
+ name: "date",
427
+ regexpPattern: [isodateRegexp, shortDateRegex],
428
+ type: Date
429
+ };
396
430
  var PrimitiveParam = {
397
431
  name: "primitive",
398
432
  regexpPattern: [
@@ -431,7 +465,7 @@ var PrimitiveParam = {
431
465
  if (fromPhrase && !isNaN(fromPhrase.getTime())) {
432
466
  return fromPhrase;
433
467
  }
434
- return val;
468
+ return val.replace(/^"(.*)"$/, "$1").replace(/^'(.*)'$/, "$1");
435
469
  })
436
470
  ).use([value]);
437
471
  }
@@ -453,12 +487,17 @@ function parseIso(val) {
453
487
  }
454
488
  // Annotate the CommonJS export names for ESM import in node:
455
489
  0 && (module.exports = {
490
+ AnyParam,
491
+ BoolParam,
456
492
  BooleanParam,
493
+ DateParam,
457
494
  DifferentStepTypeMatch,
458
495
  FuzzySearchReport,
459
496
  NumberParam,
460
497
  PrimitiveParam,
461
498
  SameStepTypeMatch,
499
+ TextParam,
500
+ UnknownParam,
462
501
  buildFuzzySearchReport,
463
502
  checkMatch,
464
503
  defineParameterType,
@@ -468,3 +507,4 @@ function parseIso(val) {
468
507
  limitDiffs,
469
508
  refineDiff
470
509
  });
510
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/step-matcher.ts","../src/search-report.ts","../src/parameters.ts","../src/default.parameters.ts"],"sourcesContent":["export * from \"./step-matcher\";\nexport * from './search-report'\nexport * from'./parameters'\nexport * from './default.parameters'","import { diffWordsWithSpace, Change } from \"diff\";\nimport { distance } from \"closest-match\";\nimport { Expression } from \"@cucumber/cucumber-expressions\";\nimport { AssertKey } from \"@autometa/asserters\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport interface Matchable {\n matches(text: string): boolean;\n}\n\nexport interface ExpressionWrapper {\n expression: Expression;\n}\n\nexport interface GherkinKeyword {\n type: StepType;\n}\nexport type StepDiff = {\n merged: string;\n step: {\n keyword: StepKeyword;\n expression: Expression;\n type: StepType;\n matches: (text: string) => boolean;\n };\n gherkin: string;\n distance: number;\n};\nexport type StepDiffs = StepDiff[];\nexport type LimitedStepDiffs = { same: StepDiffs; other: StepDiffs };\nexport function checkMatch<T extends Matchable>(text: string, it: T): boolean {\n return it.matches(text);\n}\nexport function limitDiffs(\n sameStepType: StepDiff[],\n differentStepType: StepDiff[],\n max: number\n) : LimitedStepDiffs {\n const sameDistances = sameStepType.map((it) => it.distance);\n const maxSameStepDistance = Math.max(...sameDistances);\n const otherStepDistance = differentStepType.map((it) => it.distance);\n const minDifferentStepDistance = Math.min(...otherStepDistance);\n // Prioritize same-type steps for search. Only\n // consider other-type steps when the lowest\n // other score is lower than the highest same scoreF\n if (maxSameStepDistance > minDifferentStepDistance) {\n const filter = sameStepType.filter(\n (it) => it.distance <= minDifferentStepDistance\n );\n if (filter.length >= max) {\n return { same: filter.slice(0, max), other: [] };\n }\n const diff = max - filter.length;\n const sameSlice = sameStepType.slice(0, diff);\n const differentSlice = differentStepType.slice(0, max - diff);\n return { same: sameSlice, other: differentSlice };\n }\n const maxIndex = Math.min(max, sameStepType.length);\n const result = { same: sameStepType.slice(0, maxIndex), other: [] };\n return result;\n}\n\nexport function getDiffs<T extends Matchable & ExpressionWrapper>(\n text: string,\n maxResults: number,\n step: T[]\n) {\n const sorted = step\n .map((it) => {\n if (checkMatch(text, it)) {\n return { merged: text, step: it, gherkin: text, distance: 0 };\n }\n AssertKey(it, \"expression\");\n AssertKey(it, \"matches\");\n const diff = getDiff(text, it);\n const refined = refineDiff(diff);\n const dist = distance(text, refined);\n return { merged: refined, step: it, gherkin: text, distance: dist };\n })\n .sort((a, b) => a.distance - b.distance);\n const max = Math.min(maxResults, sorted.length);\n return sorted.slice(0, max);\n}\n\nexport function getDiff<T extends ExpressionWrapper>(text: string, it: T) {\n return diffWordsWithSpace(text, it.expression.source);\n}\n\nexport function refineDiff(diff: Change[]) {\n const strings: string[] = [];\n for (let index = 0; index < diff.length; index++) {\n const gherkinChange = diff[index];\n const scopeChange = diff[index + 1];\n if (isExpressionCandidate(gherkinChange, scopeChange)) {\n strings.push(gherkinChange.value);\n index++;\n continue;\n }\n if (gherkinChange.value) {\n strings.push(gherkinChange.value);\n continue;\n }\n }\n return strings.join(\"\");\n}\n\nexport function isExpressionCandidate(change1: Change, change2: Change) {\n if (change1.removed && change2.added) {\n const scopeText = change2.value;\n return /{.*}/.test(scopeText);\n }\n return false;\n}\n","import type { LimitedStepDiffs, StepDiff } from \"./step-matcher\";\nimport chalk from \"colors-cli\";\nexport class SameStepTypeMatch {\n readonly keyword: string;\n readonly text: string;\n readonly distance: number;\n constructor(diff: StepDiff) {\n this.keyword = diff.step.keyword;\n this.text = diff.merged;\n this.distance = diff.distance;\n }\n toString() {\n const keyword = chalk.green(this.keyword);\n const text = chalk.white(this.text);\n const distance = chalk.blue(`[${this.distance}]`);\n return `${distance} ${keyword} ${text}`;\n }\n}\nexport class DifferentStepTypeMatch {\n readonly keyword: string;\n readonly text: string;\n readonly distance: number;\n constructor(diff: StepDiff) {\n this.keyword = diff.step.keyword;\n this.text = diff.merged;\n this.distance = diff.distance;\n }\n toString() {\n const keywordColor = chalk.cyan_bt;\n const keyword = keywordColor(this.keyword);\n const text = chalk.white_b(this.text);\n const distance = chalk.blue(`[${this.distance}]`);\n return `${distance} ${keyword} ${text}`;\n }\n}\nexport class FuzzySearchReport {\n headingText: string;\n matches: (SameStepTypeMatch | DifferentStepTypeMatch)[] = [];\n children: FuzzySearchReport[] = [];\n\n get length() {\n return (\n this.matches.length +\n this.children.length\n );\n }\n addHeading(headingText: string) {\n this.headingText = headingText;\n return this;\n }\n addMatch(match: SameStepTypeMatch | DifferentStepTypeMatch) {\n this.matches.push(match);\n return this;\n }\n addChild(child: FuzzySearchReport) {\n this.children.push(child);\n return this;\n }\n get #sameMatchTypes() {\n return this.matches.filter(\n (it) => it instanceof SameStepTypeMatch\n ) as SameStepTypeMatch[];\n }\n get #differentMatchTypes() {\n return this.matches.filter(\n (it) => it instanceof DifferentStepTypeMatch\n ) as DifferentStepTypeMatch[];\n }\n\n toString() {\n const same = this.#sameMatchTypes.map((it) => it.toString()).join(\"\\n\");\n const sameMessage = same.length > 0 ? `Steps with matching step type:` : \"\";\n const different = this.#differentMatchTypes\n .map((it) => it.toString())\n .join(\"\\n\");\n const differentMessage =\n different.length > 0 ? `Steps with different step type:` : \"\";\n const messageArray: string[] = [];\n appendSubMessage(messageArray, sameMessage);\n appendSubMessage(messageArray, same, TAB);\n appendSubMessage(messageArray, differentMessage);\n appendSubMessage(messageArray, different, TAB);\n const children: FuzzySearchReport[] = [];\n this.children.forEach((child) => {\n appendChild(children, child);\n });\n const formatChildren: string = children\n .map((it) => it.toString().replace(/^/gm, \" \"))\n .join(\"\\n\");\n const message = messageArray.join(`\\n${TAB}`);\n const heading = chalk.black_b(this.headingText);\n return `${heading}\n${TAB}${message}\n${formatChildren}`;\n }\n}\nfunction appendSubMessage(arr: string[], message: string, prefix?: string) {\n if (message && message.length > 0) {\n const str = prefix ? `${prefix}${message}` : message;\n arr.push(str);\n }\n}\nfunction appendChild(arr: FuzzySearchReport[], message: FuzzySearchReport) {\n if (message) {\n arr.push(message);\n }\n}\nconst SPACE = \" \";\nconst TAB = SPACE.repeat(2);\n\nexport function buildFuzzySearchReport({ same, other }: LimitedStepDiffs) {\n const report = new FuzzySearchReport();\n same.forEach((diff) => {\n report.addMatch(new SameStepTypeMatch(diff));\n });\n other.forEach((diff) => {\n report.addMatch(new DifferentStepTypeMatch(diff));\n });\n return report;\n}\n","import {\n Argument,\n ParameterType,\n ParameterTypeRegistry\n} from \"@cucumber/cucumber-expressions\";\nimport { Class } from \"@autometa/types\";\nimport {\n def,\n func,\n instance,\n overloads,\n string,\n nil,\n array\n} from \"@autometa/overloaded\";\n// todo - this has a bug when dealing with {string} - does not remove quotes\nArgument.prototype.getValue = function () {\n if (this.group.children.length > 0) {\n const value = this.group.children\n .filter((it) => it.value !== undefined)\n .map((child) => child.value);\n if (value.length > 0) {\n return this.parameterType.transform(this.parameterType, value);\n }\n }\n const groupValues = this.group\n ? this.group.value\n ? [this.group.value]\n : this.group.values\n : null;\n return this.parameterType.transform(this.parameterType, groupValues);\n};\ntype PrimitiveConstructor =\n | typeof Number\n | typeof String\n | typeof Boolean\n | typeof BigInt;\n\nexport type ParamTypeDefinition = {\n name: string;\n regexpPattern: RegExp | RegExp[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform?: (value: any) => unknown;\n type?: Class<unknown>;\n primitive?:\n | typeof String\n | typeof Number\n | typeof Boolean\n | typeof BigInt\n | typeof Date;\n};\n\nconst regexp = instance(RegExp).or(array([instance(RegExp)]));\n\nexport function defineParameterType<T extends ParamTypeDefinition[]>(\n registry: ParameterTypeRegistry,\n ...params: T\n) {\n params.forEach((param) => {\n const { name, regexpPattern, transform, type, primitive } =\n param as ParamTypeDefinition;\n return registerParameterType(\n registry,\n name,\n regexpPattern,\n transform,\n type,\n primitive\n );\n });\n}\nfunction registerParameterType(\n registry: ParameterTypeRegistry,\n name: string,\n regexpPattern: RegExp | RegExp[],\n transform: ((value: unknown) => unknown) | undefined,\n type: Class<unknown> | undefined,\n primitive:\n | NumberConstructor\n | StringConstructor\n | BooleanConstructor\n | BigIntConstructor\n | DateConstructor\n | undefined\n): void {\n return overloads(\n def(\n string(),\n regexp,\n func(\"type\"),\n func(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, type, transform, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n const asType = new typePrototype(asPrimitive);\n return transform(asType);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`allTransforms`(\n string(),\n regexp,\n func(\"type\"),\n func(\"transform\"),\n nil(\"primitive\")\n ).matches((name, regexp, type, transform) => {\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asType = new typePrototype(val);\n return transform(asType);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`transformPrimitive`(\n string(),\n regexp,\n nil(\"type\"),\n func(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, _, transform, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n return transform(asPrimitive);\n };\n const param = new ParameterType(name, regexp, primitive, wrapper);\n registry.defineParameterType(param);\n }),\n def`encapsulatePrimitive`(\n string(),\n regexp,\n func(\"type\"),\n nil(\"transform\"),\n func(\"primitive\")\n ).matches((name, regexp, type, _, primitive) => {\n const primitivePrototype = primitive as unknown as PrimitiveConstructor;\n const typePrototype = type as unknown as Class<unknown>;\n const wrapper = (val: unknown) => {\n const asPrimitive = primitivePrototype(val);\n return new typePrototype(asPrimitive);\n };\n const param = new ParameterType(name, regexp, type, wrapper);\n registry.defineParameterType(param);\n }),\n def`makeType`(string(), regexp, func(\"type\"), nil(), nil()).matches(\n (name, pattern, type) => {\n const prototype = type as unknown as Class<unknown>;\n const transform = (val: unknown) => new prototype(val);\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }\n ),\n def`makePrimitive`(\n string(),\n regexp,\n nil(),\n nil(),\n func(\"primitive\")\n ).matches((name, pattern, _, __, primitive) => {\n const prototype = primitive as unknown as PrimitiveConstructor;\n const transform = (val: unknown) => prototype(val);\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }),\n def`transformValue`(\n string(),\n regexp,\n nil(),\n func(\"transform\"),\n nil()\n ).matches((name, pattern, _, transform, __) => {\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }),\n def`default`(string(), instance(RegExp), nil(), nil(), nil()).matches(\n (name, pattern, _, __, ___) => {\n const transform = (val: unknown) => val;\n const param = new ParameterType(name, pattern, null, transform);\n registry.defineParameterType(param);\n }\n )\n ).use([name, regexpPattern, type, transform, primitive]);\n}\n","import { def, fallback, overloads, string } from \"@autometa/overloaded\";\nimport { ParamTypeDefinition } from \"./parameters\";\nimport { Dates } from \"@autometa/datetime\";\nimport { AssertIs } from \"@autometa/asserters\";\nimport { DateTime } from \"luxon\";\ntype AutoParamTypeDefinition = Omit<ParamTypeDefinition, \"transform\">;\nconst strNum = /['\"]-?\\d+['\"]/;\n\nconst isodateRegexp =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\nconst shortDateRegex =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\d)/;\nconst boolTypesActive = [\"active\", \"inactive\"];\nconst boolTypesEnabled = [\"enabled\", \"disabled\"];\nconst boolTypes = [\"true\", \"false\"];\n\nexport const NumberParam: AutoParamTypeDefinition = {\n name: \"number\",\n regexpPattern: /\\d+/,\n primitive: Number\n};\n\nexport const AnyParam: AutoParamTypeDefinition = {\n name: \"any\",\n regexpPattern: /.*/\n};\nexport const UnknownParam: AutoParamTypeDefinition = {\n name: \"unknown\",\n regexpPattern: /.*/\n};\nexport const TextParam: ParamTypeDefinition = {\n name: \"text\",\n regexpPattern: /\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"|'([^'\\\\]*(\\\\.[^'\\\\]*)*)'/,\n primitive: String,\n transform: (value: string) => {\n const asStr = value as string;\n return asStr.replace(/^\"(.*)\"$/, \"$1\").replace(/^'(.*)'$/, \"$1\");\n }\n};\n\nexport const BooleanParam: AutoParamTypeDefinition = {\n name: \"boolean\",\n regexpPattern: /true|false/,\n primitive: Boolean\n};\nexport const BoolParam: AutoParamTypeDefinition = {\n name: \"bool\",\n regexpPattern: /true|false/,\n primitive: Boolean\n};\nexport const DateParam: AutoParamTypeDefinition = {\n name: \"date\",\n regexpPattern: [isodateRegexp, shortDateRegex],\n type: Date\n};\n\nexport const PrimitiveParam: ParamTypeDefinition = {\n name: \"primitive\",\n regexpPattern: [\n /true|false/,\n /enabled|disabled/,\n /active|inactive/,\n /null/,\n /empty/,\n /undefined/,\n /NaN/,\n /Infinity/,\n /-Infinity/,\n isodateRegexp,\n shortDateRegex,\n /-?\\d+/,\n /\"([^\"]*)\"/,\n /'([^']*)'/\n ],\n transform: (value: unknown) => {\n return overloads(\n def(string({ equals: \"null\" })).matches((_) => null),\n def(string({ equals: \"undefined\" })).matches((_) => undefined),\n def(string({ in: boolTypes })).matches((val) => Boolean(val)),\n def(string({ equals: \"NaN\" })).matches((_) => NaN),\n def(string({ equals: \"Infinity\" })).matches((_) => Infinity),\n def(string({ equals: \"-Infinity\" })).matches((_) => -Infinity),\n def(string({ pattern: isodateRegexp })).matches(parseIso),\n def(string({ pattern: shortDateRegex })).matches(parseDate),\n def(string({ pattern: strNum })).matches(trimQuotes),\n def(string({ pattern: /-?\\d+/ })).matches((val) => Number(val)),\n def(string({ in: boolTypesEnabled })).matches(boolEnabled),\n def(string({ in: boolTypesActive })).matches(boolActive),\n fallback((val) => {\n AssertIs(val, \"string\");\n const fromPhrase = Dates.fromPhrase(val);\n if (fromPhrase && !isNaN(fromPhrase.getTime())) {\n return fromPhrase;\n }\n return val.replace(/^\"(.*)\"$/, \"$1\").replace(/^'(.*)'$/, \"$1\");\n })\n ).use([value]);\n }\n};\n\nfunction boolActive(val: string): boolean {\n return val === \"active\";\n}\n\nfunction boolEnabled(val: string): boolean {\n return val === \"enabled\";\n}\n\nfunction parseDate(val: string): Date {\n return new Date(Date.parse(val));\n}\n\nfunction trimQuotes(val: string): string {\n return val.slice(1, -1);\n}\n\nfunction parseIso(val: string): Date {\n return DateTime.fromISO(val).toJSDate();\n}\n"],"mappings":"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","names":["chalk","distance","name","regexp","type","transform","primitive","import_overloaded","import_asserters"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autometa/cucumber-expressions",
3
- "version": "0.0.0",
3
+ "version": "0.1.1",
4
4
  "description": "wrapper on @cucumber/cucumber-expressions",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,32 +19,34 @@
19
19
  "@types/uuid": "^9.0.1",
20
20
  "@typescript-eslint/eslint-plugin": "^5.54.1",
21
21
  "@typescript-eslint/parser": "^5.54.1",
22
+ "@vitest/coverage-istanbul": "^0.31.0",
22
23
  "eslint": "^8.37.0",
23
- "eslint-config-custom": "0.5.1",
24
+ "eslint-config-custom": "0.6.0",
24
25
  "eslint-config-prettier": "^8.3.0",
25
26
  "rimraf": "^4.1.2",
26
27
  "strip-color": "^0.1.0",
27
28
  "tsconfig": " *",
28
- "tsup": "^6.7.0",
29
+ "tsup": "^7.2.0",
29
30
  "typescript": "^4.9.5",
30
31
  "vitest": "^0.29.8"
31
32
  },
32
33
  "dependencies": {
33
- "@autometa/asserters": "^0.0.0",
34
- "@autometa/datetime": "^0.0.0",
35
- "@autometa/errors": "^0.0.0",
36
- "@autometa/overloaded": "^0.2.9",
37
- "@autometa/types": "^0.3.1",
34
+ "@autometa/asserters": "^0.1.0",
35
+ "@autometa/datetime": "^0.1.1",
36
+ "@autometa/errors": "^0.1.0",
37
+ "@autometa/overloaded": "^0.3.0",
38
+ "@autometa/types": "^0.4.0",
38
39
  "@cucumber/cucumber-expressions": "^16.1.2",
39
40
  "@types/diff": "^5.0.3",
40
41
  "@types/luxon": "^3.3.1",
41
- "chalk": "^5.3.0",
42
42
  "closest-match": "^1.3.3",
43
+ "colors-cli": "^1.0.32",
43
44
  "diff": "^5.1.0",
44
45
  "luxon": "^3.3.0"
45
46
  },
46
47
  "scripts": {
47
48
  "test": "vitest run --passWithNoTests",
49
+ "coverage": "vitest run --coverage",
48
50
  "prettify": "prettier --config .prettierrc 'src/**/*.ts' --write",
49
51
  "lint": "eslint . --max-warnings 0",
50
52
  "lint:fix": "eslint . --fix",
package/tsup.config.ts CHANGED
@@ -4,7 +4,7 @@ export default defineConfig({
4
4
  clean: true, // clean up the dist folder
5
5
  format: ["cjs", "esm"], // generate cjs and esm files
6
6
  dts: true,
7
- sourcemap: false, // generate sourcemaps
7
+ sourcemap:true, // generate sourcemaps
8
8
  skipNodeModulesBundle: true,
9
9
  entryPoints: ["src/index.ts"],
10
10
  target: "es2020",