@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 +23 -0
- package/dist/esm/index.js +61 -26
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.cts +88 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.js +69 -29
- package/dist/index.js.map +1 -0
- package/package.json +11 -9
- package/tsup.config.ts +1 -1
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 "
|
|
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.
|
|
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.
|
|
108
|
+
const keywordColor = chalk.cyan_bt;
|
|
109
109
|
const keyword = keywordColor(this.keyword);
|
|
110
|
-
const text = chalk.
|
|
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.
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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`
|
|
284
|
+
def`encapsulatePrimitive`(
|
|
279
285
|
string(),
|
|
280
|
-
|
|
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
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"]}
|
package/dist/index.d.cts
ADDED
|
@@ -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:
|
|
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
|
|
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 =
|
|
144
|
-
const text =
|
|
145
|
-
const distance2 =
|
|
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 =
|
|
161
|
+
const keywordColor = import_colors_cli.default.cyan_bt;
|
|
157
162
|
const keyword = keywordColor(this.keyword);
|
|
158
|
-
const text =
|
|
159
|
-
const distance2 =
|
|
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 =
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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`
|
|
326
|
+
import_overloaded.def`encapsulatePrimitive`(
|
|
316
327
|
(0, import_overloaded.string)(),
|
|
317
|
-
|
|
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
|
-
(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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": "^
|
|
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.
|
|
34
|
-
"@autometa/datetime": "^0.
|
|
35
|
-
"@autometa/errors": "^0.
|
|
36
|
-
"@autometa/overloaded": "^0.
|
|
37
|
-
"@autometa/types": "^0.
|
|
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:
|
|
7
|
+
sourcemap:true, // generate sourcemaps
|
|
8
8
|
skipNodeModulesBundle: true,
|
|
9
9
|
entryPoints: ["src/index.ts"],
|
|
10
10
|
target: "es2020",
|