diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/cucumber-js-1646.iml b/.idea/cucumber-js-1646.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/cucumber-js-1646.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..6e0a8a8
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..26cb953
--- /dev/null
+++ b/index.js
@@ -0,0 +1 @@
+const TestCaseHookDefinition = require('@cucumber/cucumber/lib/models/test_case_hook_definition');
diff --git a/node_modules/.bin/cucumber-html-formatter b/node_modules/.bin/cucumber-html-formatter
new file mode 120000
index 0000000..9a78372
--- /dev/null
+++ b/node_modules/.bin/cucumber-html-formatter
@@ -0,0 +1 @@
+../@cucumber/html-formatter/bin/cucumber-html-formatter.js
\ No newline at end of file
diff --git a/node_modules/.bin/cucumber-js b/node_modules/.bin/cucumber-js
new file mode 120000
index 0000000..41e52bf
--- /dev/null
+++ b/node_modules/.bin/cucumber-js
@@ -0,0 +1 @@
+../@cucumber/cucumber/bin/cucumber-js
\ No newline at end of file
diff --git a/node_modules/.bin/gherkin-javascript b/node_modules/.bin/gherkin-javascript
new file mode 120000
index 0000000..4f924d4
--- /dev/null
+++ b/node_modules/.bin/gherkin-javascript
@@ -0,0 +1 @@
+../@cucumber/gherkin-streams/bin/gherkin
\ No newline at end of file
diff --git a/node_modules/.bin/pbjs b/node_modules/.bin/pbjs
new file mode 120000
index 0000000..a96b24a
--- /dev/null
+++ b/node_modules/.bin/pbjs
@@ -0,0 +1 @@
+../protobufjs/bin/pbjs
\ No newline at end of file
diff --git a/node_modules/.bin/pbts b/node_modules/.bin/pbts
new file mode 120000
index 0000000..b4c7c52
--- /dev/null
+++ b/node_modules/.bin/pbts
@@ -0,0 +1 @@
+../protobufjs/bin/pbts
\ No newline at end of file
diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf
new file mode 120000
index 0000000..4cd49a4
--- /dev/null
+++ b/node_modules/.bin/rimraf
@@ -0,0 +1 @@
+../rimraf/bin.js
\ No newline at end of file
diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid
new file mode 120000
index 0000000..588f70e
--- /dev/null
+++ b/node_modules/.bin/uuid
@@ -0,0 +1 @@
+../uuid/dist/bin/uuid
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/.github/ISSUE_TEMPLATE.md b/node_modules/@cucumber/create-meta/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..fac9619
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,5 @@
+PLEASE DO NOT CREATE ISSUES IN THIS REPO.
+THIS REPO IS A READ-ONLY MIRROR.
+
+Create your issue in the Cucumber monorepo instead:
+https://github.com/cucumber/cucumber/issues
diff --git a/node_modules/@cucumber/create-meta/.github/PULL_REQUEST_TEMPLATE.md b/node_modules/@cucumber/create-meta/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..2c0c878
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,5 @@
+PLEASE DO NOT CREATE PULL REAUESTS IN THIS REPO.
+THIS REPO IS A READ-ONLY MIRROR.
+
+Create your pull request in the Cucumber monorepo instead:
+https://github.com/cucumber/cucumber/pulls
diff --git a/node_modules/@cucumber/create-meta/.mocharc.json b/node_modules/@cucumber/create-meta/.mocharc.json
new file mode 100644
index 0000000..d5055eb
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/.mocharc.json
@@ -0,0 +1,6 @@
+{
+ "require": ["tsconfig-paths/register", "ts-node/register", "source-map-support/register"],
+ "extension": ["ts", "tsx"],
+ "recursive": true,
+ "timeout": 10000
+}
diff --git a/node_modules/@cucumber/create-meta/.rsync b/node_modules/@cucumber/create-meta/.rsync
new file mode 100644
index 0000000..da29589
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/.rsync
@@ -0,0 +1,4 @@
+../../LICENSE LICENSE
+../../.templates/github/ .github/
+../../.templates/javascript/ .
+../ciDict.json src/ciDict.json
diff --git a/node_modules/@cucumber/create-meta/LICENSE b/node_modules/@cucumber/create-meta/LICENSE
new file mode 100644
index 0000000..725ba9f
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Cucumber Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@cucumber/create-meta/Makefile b/node_modules/@cucumber/create-meta/Makefile
new file mode 100644
index 0000000..cfeb948
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/Makefile
@@ -0,0 +1,17 @@
+include default.mk
+
+ENVIRONMENT_FILES = $(shell find ../testdata -name "*.txt")
+CIS = $(patsubst ../testdata/%.txt,acceptance/%.txt.json,$(ENVIRONMENT_FILES))
+PRINT_META = npm run print-meta --silent
+
+.DELETE_ON_ERROR:
+
+.tested: .compared
+
+.compared: $(CIS)
+ touch $@
+
+acceptance/%.txt.json: ../testdata/%.txt ../testdata/%.txt.json
+ mkdir -p $(@D)
+ $(PRINT_META) -- $< | jq --sort-keys "." > $@
+ diff --unified <(jq --sort-keys "." $<.json) <(jq "." $@)
diff --git a/node_modules/@cucumber/create-meta/bin/print-meta b/node_modules/@cucumber/create-meta/bin/print-meta
new file mode 100755
index 0000000..0057d24
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/bin/print-meta
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+require('source-map-support').install()
+require('../dist/src/printMeta')
diff --git a/node_modules/@cucumber/create-meta/default.mk b/node_modules/@cucumber/create-meta/default.mk
new file mode 100644
index 0000000..2d7aafb
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/default.mk
@@ -0,0 +1,69 @@
+SHELL := /usr/bin/env bash
+# https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
+rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
+TYPESCRIPT_SOURCE_FILES = $(sort $(call rwildcard,src test,*.ts *.tsx))
+PRIVATE = $(shell node -e "console.log(require('./package.json').private)")
+IS_TESTDATA = $(findstring -testdata,${CURDIR})
+NPM_MODULE = $(shell cat package.json | jq .name --raw-output)
+
+default: .tested
+.PHONY: default
+
+.codegen:
+ touch $@
+
+.tested: .tested-npm
+
+.tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
+ npm run test
+ touch $@
+
+pre-release: clean update-version update-dependencies default
+.PHONY: pre-release
+
+update-dependencies:
+ ../../node_modules/.bin/npm-check-updates --upgrade && \
+ pushd ../.. && \
+ npm install && \
+ npm run build && \
+ popd
+.PHONY: update-dependencies
+
+update-version:
+ifeq ($(IS_TESTDATA),-testdata)
+ # no-op
+else
+ifdef NEW_VERSION
+ npm --no-git-tag-version --allow-same-version version "$(NEW_VERSION)"
+ # Update all npm packages that depend on us
+ pushd ../.. && \
+ ./scripts/npm-each update_npm_dependency_if_exists package.json "$(NPM_MODULE)" "^$(NEW_VERSION)"
+ # npm install
+else
+ @echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
+ exit 1
+endif
+endif
+.PHONY: update-version
+
+publish: .codegen
+ifeq ($(IS_TESTDATA),-testdata)
+ # no-op
+else
+ifneq (true,$(PRIVATE))
+ npm publish --access public
+else
+ @echo "Not publishing private npm module"
+endif
+endif
+.PHONY: publish
+
+post-release:
+.PHONY: post-release
+
+clean: clean-javascript
+.PHONY: clean
+
+clean-javascript:
+ rm -rf .deps .codegen .tested* node_modules coverage dist acceptance
+.PHONY: clean-javascript
diff --git a/node_modules/@cucumber/create-meta/dist/src/ciDict.json b/node_modules/@cucumber/create-meta/dist/src/ciDict.json
new file mode 100644
index 0000000..cb03112
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/ciDict.json
@@ -0,0 +1,110 @@
+{
+ "Azure Pipelines": {
+ "url": "${BUILD_URI}",
+ "git": {
+ "remote": "${BUILD_REPOSITORY_URI}",
+ "revision": "${BUILD_SOURCEVERSION}",
+ "branch": "${refbranch BUILD_SOURCEBRANCH}",
+ "tag": "${reftag BUILD_SOURCEBRANCH}"
+ }
+ },
+ "Bamboo": {
+ "url": "${bamboo.buildResultsUrl}",
+ "git": {
+ "remote": "${bamboo.planRepository.1.repositoryUrl}",
+ "revision": "${bamboo.planRepository.1.revision}",
+ "branch": "${bamboo.planRepository.1.branch}",
+ "tag": null
+ }
+ },
+ "Buddy": {
+ "url": "${BUDDY_EXECUTION_URL}",
+ "git": {
+ "remote": "${BUDDY_SCM_URL}",
+ "revision": "${BUDDY_EXECUTION_REVISION}",
+ "branch": "${BUDDY_EXECUTION_BRANCH}",
+ "tag": "${BUDDY_EXECUTION_TAG}"
+ }
+ },
+ "CircleCI": {
+ "url": "${CIRCLE_BUILD_URL}",
+ "git": {
+ "remote": "${CIRCLE_REPOSITORY_URL}",
+ "revision": "${CIRCLE_SHA1}",
+ "branch": "${CIRCLE_BRANCH}",
+ "tag": "${CIRCLE_TAG}"
+ }
+ },
+ "CodeShip": {
+ "url": "${CF_BUILD_URL}",
+ "git": {
+ "remote": "${CF_COMMIT_URL}",
+ "revision": "${CF_REVISION}",
+ "branch": "${CF_BRANCH}",
+ "tag": null
+ }
+ },
+ "GitHub Actions": {
+ "url": "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}",
+ "git": {
+ "remote": "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git",
+ "revision": "${GITHUB_SHA}",
+ "branch": "${refbranch GITHUB_REF}",
+ "tag": "${reftag GITHUB_REF}"
+ }
+ },
+ "GitLab": {
+ "url": "${CI_JOB_URL}",
+ "git": {
+ "remote": "${CI_REPOSITORY_URL}",
+ "revision": "${CI_COMMIT_SHA}",
+ "branch": "${CI_COMMIT_BRANCH}",
+ "tag": "${CI_COMMIT_TAG}"
+ }
+ },
+ "GoCD": {
+ "url": "${GO_SERVER_URL}/???",
+ "git": {
+ "remote": null,
+ "revision": "${GO_REVISION}",
+ "branch": null,
+ "tag": null
+ }
+ },
+ "Semaphore": {
+ "url": "${SEMAPHORE_ORGANIZATION_URL}/${}",
+ "git": {
+ "remote": "${SEMAPHORE_GIT_URL}",
+ "revision": "${SEMAPHORE_GIT_SHA}",
+ "branch": "${SEMAPHORE_GIT_BRANCH}",
+ "tag": "${SEMAPHORE_GIT_TAG_NAME}"
+ }
+ },
+ "TeamCity": {
+ "url": "${teamcity.serverUrl}/app/rest/builds/id:${teamcity.build.id}",
+ "git": {
+ "remote": null,
+ "revision": "${build.vcs.number}",
+ "branch": "${teamcity.build.branch}",
+ "tag": null
+ }
+ },
+ "Travis CI": {
+ "url": "${TRAVIS_BUILD_WEB_URL}",
+ "git": {
+ "remote": "https://github.com/${TRAVIS_REPO_SLUG}.git",
+ "revision": "${TRAVIS_COMMIT}",
+ "branch": "${TRAVIS_BRANCH}",
+ "tag": "${TRAVIS_TAG}"
+ }
+ },
+ "Wercker": {
+ "url": "${WERCKER_RUN_URL}",
+ "git": {
+ "remote": "https://${WERCKER_GIT_DOMAIN}/${WERCKER_GIT_OWNER}/${WERCKER_GIT_REPOSITORY}.git",
+ "revision": "${WERCKER_GIT_COMMIT}",
+ "branch": "${WERCKER_GIT_BRANCH}",
+ "tag": null
+ }
+ }
+}
diff --git a/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts b/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts
new file mode 100644
index 0000000..54c5bee
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts
@@ -0,0 +1,20 @@
+import { messages } from '@cucumber/messages';
+export declare type CiDict = {
+ [name: string]: CiSystem;
+};
+export declare type EnvDict = {
+ [name: string]: string | undefined;
+};
+export interface CiSystem {
+ url: string;
+ git: {
+ remote: string | undefined;
+ branch: string | undefined;
+ revision: string | undefined;
+ tag: string | undefined;
+ };
+}
+export default function createMeta(toolName: string, toolVersion: string, envDict: EnvDict, ciDict?: CiDict): messages.Meta;
+export declare function detectCI(ciDict: CiDict, envDict: EnvDict): messages.Meta.CI | undefined;
+export declare function removeUserInfoFromUrl(value: string): string;
+//# sourceMappingURL=createMeta.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts.map b/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts.map
new file mode 100644
index 0000000..d1c568f
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/createMeta.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"createMeta.d.ts","sourceRoot":"","sources":["../../src/createMeta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAA8B,MAAM,oBAAoB,CAAA;AAGzE,oBAAY,MAAM,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAA;AACjD,oBAAY,OAAO,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAE5D,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KACxB,CAAA;CACF;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,QAAQ,CAAC,IAAI,CAuBf;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAYvF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM3D"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/createMeta.js b/node_modules/@cucumber/create-meta/dist/src/createMeta.js
new file mode 100644
index 0000000..df00602
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/createMeta.js
@@ -0,0 +1,119 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.removeUserInfoFromUrl = exports.detectCI = void 0;
+const os_1 = __importDefault(require("os"));
+const url_1 = require("url");
+const messages_1 = require("@cucumber/messages");
+const ciDict_json_1 = __importDefault(require("./ciDict.json"));
+function createMeta(toolName, toolVersion, envDict, ciDict) {
+ if (ciDict === undefined) {
+ ciDict = ciDict_json_1.default;
+ }
+ return new messages_1.messages.Meta({
+ protocolVersion: messages_1.version,
+ implementation: new messages_1.messages.Meta.Product({
+ name: toolName,
+ version: toolVersion,
+ }),
+ cpu: new messages_1.messages.Meta.Product({
+ name: os_1.default.arch(),
+ }),
+ os: new messages_1.messages.Meta.Product({
+ name: os_1.default.platform(),
+ version: os_1.default.release(),
+ }),
+ runtime: new messages_1.messages.Meta.Product({
+ name: 'node.js',
+ version: process.versions.node,
+ }),
+ ci: detectCI(ciDict, envDict),
+ });
+}
+exports.default = createMeta;
+function detectCI(ciDict, envDict) {
+ const detected = [];
+ for (const [ciName, ciSystem] of Object.entries(ciDict)) {
+ const ci = createCi(ciName, ciSystem, envDict);
+ if (ci) {
+ detected.push(ci);
+ }
+ }
+ if (detected.length !== 1) {
+ return undefined;
+ }
+ return detected[0];
+}
+exports.detectCI = detectCI;
+function removeUserInfoFromUrl(value) {
+ if (!value)
+ return value;
+ const url = url_1.parse(value);
+ if (url.auth === null)
+ return value;
+ url.auth = null;
+ return url_1.format(url);
+}
+exports.removeUserInfoFromUrl = removeUserInfoFromUrl;
+function createCi(ciName, ciSystem, envDict) {
+ const url = evaluate(ciSystem.url, envDict);
+ if (url === undefined) {
+ // The url is what consumers will use as the primary key for a build
+ // If this cannot be determined, we return nothing.
+ return undefined;
+ }
+ return messages_1.messages.Meta.CI.create({
+ url,
+ name: ciName,
+ git: {
+ remote: removeUserInfoFromUrl(evaluate(ciSystem.git.remote, envDict)),
+ revision: evaluate(ciSystem.git.revision, envDict),
+ branch: evaluate(ciSystem.git.branch, envDict),
+ tag: evaluate(ciSystem.git.tag, envDict),
+ },
+ });
+}
+/**
+ * Evaluates a simple template
+ *
+ * @param template - the template from the ciDict.json file
+ * @param envDict - variables
+ * @return the evaluated template, or undefined if a variable was undefined
+ */
+function evaluate(template, envDict) {
+ if (template === undefined) {
+ return undefined;
+ }
+ try {
+ return template.replace(/\${((refbranch|reftag)\s+)?([^\s}]+)(\s+\|\s+([^}]+))?}/g, (substring, ...args) => {
+ const func = args[1];
+ const variable = args[2];
+ const defaultValue = args[4];
+ const value = envDict[variable] || defaultValue;
+ if (value === undefined) {
+ throw new Error(`Undefined variable: ${variable}`);
+ }
+ switch (func) {
+ case 'refbranch':
+ return group1(value, /^refs\/heads\/(.*)/);
+ case 'reftag':
+ return group1(value, /^refs\/tags\/(.*)/);
+ default:
+ return value;
+ }
+ });
+ }
+ catch (err) {
+ // There was an undefined variable
+ return undefined;
+ }
+}
+function group1(value, regexp) {
+ const match = value.match(regexp);
+ if (match === null)
+ throw new Error('No match');
+ return match[1];
+}
+//# sourceMappingURL=createMeta.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/createMeta.js.map b/node_modules/@cucumber/create-meta/dist/src/createMeta.js.map
new file mode 100644
index 0000000..0c4bb39
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/createMeta.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"createMeta.js","sourceRoot":"","sources":["../../src/createMeta.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/index.d.ts b/node_modules/@cucumber/create-meta/dist/src/index.d.ts
new file mode 100644
index 0000000..b0ac3b9
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/index.d.ts
@@ -0,0 +1,3 @@
+import createMeta from './createMeta';
+export default createMeta;
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/index.d.ts.map b/node_modules/@cucumber/create-meta/dist/src/index.d.ts.map
new file mode 100644
index 0000000..b6ae63f
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,eAAe,UAAU,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/index.js b/node_modules/@cucumber/create-meta/dist/src/index.js
new file mode 100644
index 0000000..3404a10
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/index.js
@@ -0,0 +1,8 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const createMeta_1 = __importDefault(require("./createMeta"));
+exports.default = createMeta_1.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/index.js.map b/node_modules/@cucumber/create-meta/dist/src/index.js.map
new file mode 100644
index 0000000..7dad409
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AAErC,kBAAe,oBAAU,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts b/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts
new file mode 100644
index 0000000..25b3342
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts
@@ -0,0 +1,4 @@
+///
+import { Writable } from 'stream';
+export declare function main(envPath: string, stdout: Writable): Promise;
+//# sourceMappingURL=printMeta.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts.map b/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts.map
new file mode 100644
index 0000000..cb65b20
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/printMeta.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"printMeta.d.ts","sourceRoot":"","sources":["../../src/printMeta.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,iBAM3D"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/printMeta.js b/node_modules/@cucumber/create-meta/dist/src/printMeta.js
new file mode 100644
index 0000000..e27d7bc
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/printMeta.js
@@ -0,0 +1,30 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.main = void 0;
+const fs_1 = require("fs");
+const createMeta_1 = require("./createMeta");
+const ciDict_json_1 = __importDefault(require("./ciDict.json"));
+function main(envPath, stdout) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const envData = yield fs_1.promises.readFile(envPath, 'utf-8');
+ const entries = envData.split('\n').map((line) => line.split('='));
+ const env = Object.fromEntries(entries);
+ const ci = createMeta_1.detectCI(ciDict_json_1.default, env);
+ stdout.write(JSON.stringify(ci.toJSON(), null, 2) + '\n');
+ });
+}
+exports.main = main;
+main(process.argv[2], process.stdout).catch((err) => console.error(err.backtrace));
+//# sourceMappingURL=printMeta.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/src/printMeta.js.map b/node_modules/@cucumber/create-meta/dist/src/printMeta.js.map
new file mode 100644
index 0000000..b1b665a
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/src/printMeta.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"printMeta.js","sourceRoot":"","sources":["../../src/printMeta.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2BAAmC;AACnC,6CAAuC;AACvC,gEAAkC;AAGlC,SAAsB,IAAI,CAAC,OAAe,EAAE,MAAgB;;QAC1D,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,EAAE,GAAG,qBAAQ,CAAC,qBAAM,EAAE,GAAG,CAAC,CAAA;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC3D,CAAC;CAAA;AAND,oBAMC;AACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts
new file mode 100644
index 0000000..0b6d122
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=createMetaTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts.map b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts.map
new file mode 100644
index 0000000..537584a
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"createMetaTest.d.ts","sourceRoot":"","sources":["../../test/createMetaTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js
new file mode 100644
index 0000000..18212e9
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js
@@ -0,0 +1,115 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const createMeta_1 = __importDefault(require("../src/createMeta"));
+const assert_1 = __importDefault(require("assert"));
+const ciDict_json_1 = __importDefault(require("../src/ciDict.json"));
+const messages_1 = require("@cucumber/messages");
+describe('createMeta', () => {
+ it('defines the implementation product', () => {
+ const meta = createMeta_1.default('someTool', '1.2.3', {}, {});
+ assert_1.default.strictEqual(meta.implementation.name, 'someTool');
+ assert_1.default.strictEqual(meta.implementation.version, '1.2.3');
+ });
+ it('detects CircleCI', () => {
+ const envDict = {
+ CIRCLE_BUILD_URL: 'the-url',
+ CIRCLE_REPOSITORY_URL: 'the-remote',
+ CIRCLE_BRANCH: 'the-branch',
+ CIRCLE_SHA1: 'the-revision',
+ CIRCLE_TAG: 'the-tag',
+ };
+ const meta = createMeta_1.default('someTool', '1.2.3', envDict, ciDict_json_1.default);
+ assert_1.default.deepStrictEqual(meta.ci, messages_1.messages.Meta.CI.create({
+ name: 'CircleCI',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: 'the-branch',
+ revision: 'the-revision',
+ tag: 'the-tag',
+ },
+ }));
+ });
+ it('detects GitHub Actions', () => {
+ const envDict = {
+ GITHUB_SERVER_URL: 'https://github.com',
+ GITHUB_REPOSITORY: 'cucumber/cucumber-ruby',
+ GITHUB_RUN_ID: '140170388',
+ GITHUB_SHA: 'the-revision',
+ GITHUB_REF: 'refs/tags/the-tag',
+ };
+ const meta = createMeta_1.default('someTool', '1.2.3', envDict, ciDict_json_1.default);
+ assert_1.default.deepStrictEqual(meta.ci, messages_1.messages.Meta.CI.create({
+ name: 'GitHub Actions',
+ url: 'https://github.com/cucumber/cucumber-ruby/actions/runs/140170388',
+ git: {
+ remote: 'https://github.com/cucumber/cucumber-ruby.git',
+ branch: undefined,
+ revision: 'the-revision',
+ tag: 'the-tag',
+ },
+ }));
+ });
+ it('detects GitHub Actions with custom base url', () => {
+ const envDict = {
+ GITHUB_SERVER_URL: 'https://github.company.com',
+ GITHUB_REPOSITORY: 'cucumber/cucumber-ruby',
+ GITHUB_RUN_ID: '140170388',
+ GITHUB_SHA: 'the-revision',
+ GITHUB_REF: 'refs/heads/the-branch',
+ };
+ const meta = createMeta_1.default('someTool', '1.2.3', envDict, ciDict_json_1.default);
+ assert_1.default.deepStrictEqual(meta.ci, messages_1.messages.Meta.CI.create({
+ name: 'GitHub Actions',
+ url: 'https://github.company.com/cucumber/cucumber-ruby/actions/runs/140170388',
+ git: {
+ remote: 'https://github.company.com/cucumber/cucumber-ruby.git',
+ branch: 'the-branch',
+ revision: 'the-revision',
+ tag: undefined,
+ },
+ }));
+ });
+ it('post-processes git refs to branch', () => {
+ const envDict = {
+ BUILD_URI: 'the-url',
+ BUILD_REPOSITORY_URI: 'the-remote',
+ BUILD_SOURCEBRANCH: 'refs/heads/main',
+ BUILD_SOURCEVERSION: 'the-revision',
+ };
+ const meta = createMeta_1.default('someTool', '1.2.3', envDict, ciDict_json_1.default);
+ assert_1.default.deepStrictEqual(meta.ci, messages_1.messages.Meta.CI.create({
+ name: 'Azure Pipelines',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: 'main',
+ revision: 'the-revision',
+ tag: undefined,
+ },
+ }));
+ });
+ it('post-processes git refs to tag', () => {
+ const envDict = {
+ BUILD_URI: 'the-url',
+ BUILD_REPOSITORY_URI: 'the-remote',
+ BUILD_SOURCEBRANCH: 'refs/tags/v1.2.3',
+ BUILD_SOURCEVERSION: 'the-revision',
+ };
+ const meta = createMeta_1.default('someTool', '1.2.3', envDict, ciDict_json_1.default);
+ assert_1.default.deepStrictEqual(meta.ci, messages_1.messages.Meta.CI.create({
+ name: 'Azure Pipelines',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: undefined,
+ revision: 'the-revision',
+ tag: 'v1.2.3',
+ },
+ }));
+ });
+});
+//# sourceMappingURL=createMetaTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js.map b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js.map
new file mode 100644
index 0000000..ec151c9
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/createMetaTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"createMetaTest.js","sourceRoot":"","sources":["../../test/createMetaTest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts
new file mode 100644
index 0000000..e0ae584
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=removeUserInfoFromUrlTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts.map b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts.map
new file mode 100644
index 0000000..de7fbe6
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"removeUserInfoFromUrlTest.d.ts","sourceRoot":"","sources":["../../test/removeUserInfoFromUrlTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js
new file mode 100644
index 0000000..a5cd250
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js
@@ -0,0 +1,33 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const createMeta_1 = require("../src/createMeta");
+const assert_1 = __importDefault(require("assert"));
+describe('removeUserInfoFromUrl', () => {
+ it('returns undefined for undefined', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl(undefined), undefined);
+ });
+ it('returns null for null', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl(null), null);
+ });
+ it('returns empty string for empty string', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl(null), null);
+ });
+ it('leaves the data intact when no sensitive information is detected', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl('pretty safe'), 'pretty safe');
+ });
+ context('with URLs', () => {
+ it('leaves intact when no password is found', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl('https://example.com/git/repo.git'), 'https://example.com/git/repo.git');
+ });
+ it('removes credentials when found', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl('http://login@example.com/git/repo.git'), 'http://example.com/git/repo.git');
+ });
+ it('removes credentials and passwords when found', () => {
+ assert_1.default.strictEqual(createMeta_1.removeUserInfoFromUrl('ssh://login:password@example.com/git/repo.git'), 'ssh://example.com/git/repo.git');
+ });
+ });
+});
+//# sourceMappingURL=removeUserInfoFromUrlTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js.map b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js.map
new file mode 100644
index 0000000..9c6310d
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/test/removeUserInfoFromUrlTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"removeUserInfoFromUrlTest.js","sourceRoot":"","sources":["../../test/removeUserInfoFromUrlTest.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyD;AACzD,oDAA2B;AAE3B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,gBAAM,CAAC,WAAW,CAAC,kCAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,gBAAM,CAAC,WAAW,CAAC,kCAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,gBAAM,CAAC,WAAW,CAAC,kCAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,gBAAM,CAAC,WAAW,CAAC,kCAAqB,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,gBAAM,CAAC,WAAW,CAChB,kCAAqB,CAAC,kCAAkC,CAAC,EACzD,kCAAkC,CACnC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,gBAAM,CAAC,WAAW,CAChB,kCAAqB,CAAC,uCAAuC,CAAC,EAC9D,iCAAiC,CAClC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,gBAAM,CAAC,WAAW,CAChB,kCAAqB,CAAC,+CAA+C,CAAC,EACtE,gCAAgC,CACjC,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/dist/tsconfig.build.tsbuildinfo b/node_modules/@cucumber/create-meta/dist/tsconfig.build.tsbuildinfo
new file mode 100644
index 0000000..5792ca8
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/dist/tsconfig.build.tsbuildinfo
@@ -0,0 +1,2012 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "signature": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "signature": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "signature": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "signature": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "signature": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/protobufjs/index.d.ts": {
+ "version": "2d00c5da183a0a701d9a242f775a23606d98ea789bb94303d48e272201204d85",
+ "signature": "2d00c5da183a0a701d9a242f775a23606d98ea789bb94303d48e272201204d85",
+ "affectsGlobalScope": false
+ },
+ "../../../messages/javascript/dist/src/messages.d.ts": {
+ "version": "e6a18330f26eaadadef4ed82407aa6e0494d34066ac34c18a34991568e673262",
+ "signature": "e6a18330f26eaadadef4ed82407aa6e0494d34066ac34c18a34991568e673262",
+ "affectsGlobalScope": false
+ },
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts": {
+ "version": "95e76dd56ef22401de51fda46140f8677a6672a6c2262ced27fb5882b70cfa54",
+ "signature": "95e76dd56ef22401de51fda46140f8677a6672a6c2262ced27fb5882b70cfa54",
+ "affectsGlobalScope": false
+ },
+ "../../../messages/javascript/dist/src/IdGenerator.d.ts": {
+ "version": "67c50537d02e09de9593718e820326dcc559b93fd910d976a65b0a8edc1b400a",
+ "signature": "67c50537d02e09de9593718e820326dcc559b93fd910d976a65b0a8edc1b400a",
+ "affectsGlobalScope": false
+ },
+ "../../../messages/javascript/dist/package.json": {
+ "version": "10ac44dbc90475d8f619d683ccd240976173961b15fdc48845fe0350ec965a09",
+ "affectsGlobalScope": true
+ },
+ "../../../messages/javascript/dist/src/index.d.ts": {
+ "version": "41ba7d2fc377e5a4aa096958dd7c68bff9371b8ca53571ff1a1a7b80c3c1e439",
+ "signature": "41ba7d2fc377e5a4aa096958dd7c68bff9371b8ca53571ff1a1a7b80c3c1e439",
+ "affectsGlobalScope": false
+ },
+ "../src/ciDict.json": {
+ "version": "521e50f33c0c8236b044b8f02a65e5f5fe79d25ccdb3d8b2499a87a5d8194e49",
+ "affectsGlobalScope": true
+ },
+ "../src/createMeta.ts": {
+ "version": "e3dbc4fec9cb563d825f61d51ea19b81b97c73c1c008295193ec677f03f91d2a",
+ "signature": "5f87c67bc7f949c110a90bc2146d70eba65a43a0ac22c6d9c2986873ba02a411",
+ "affectsGlobalScope": false
+ },
+ "../src/index.ts": {
+ "version": "4a866b7a85fd7513afa7c0846bdcb13bff45fd129c894d7ecce159260e3fb4eb",
+ "signature": "5b6b722e53bfd9e4f4a0ecfebee45b02d5597ea9e24627fb2c3583a96e0406ff",
+ "affectsGlobalScope": false
+ },
+ "../src/printMeta.ts": {
+ "version": "01732a72a66870cbaeffdbafc523bb0bdd24441978bf53e96643ef39c4e58aa9",
+ "signature": "c3565960d6924abac58fcbb57394c7831362d29e958a29c136bf4fa7c3fe1636",
+ "affectsGlobalScope": false
+ },
+ "../test/createMetaTest.ts": {
+ "version": "f337af5e277b722d0baf2d5a83c3bbb5e6e2d724bc0a6fcc822b6bd4b1f6138f",
+ "signature": "c0d7ef2026faa33de2eac7ac811c4ffbdba2cd390b55c94748a1ceae59231d2b",
+ "affectsGlobalScope": false
+ },
+ "../test/removeUserInfoFromUrlTest.ts": {
+ "version": "15fed79f50febe32acc9307223365e636d81ff929150949c91461ec05334f772",
+ "signature": "c695180602dd5d049ca70dc7b1a149dae4bdea29ef9af808ed22597095b794ba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/anymatch/index.d.ts": {
+ "version": "48b52264fa193879a074197839dbb4796fa07e86350ff888e5361e06aa46df76",
+ "signature": "48b52264fa193879a074197839dbb4796fa07e86350ff888e5361e06aa46df76",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/braces/index.d.ts": {
+ "version": "cfb42d1c8aa66607ef3b1e2cee85d28148358ba62dc5e5146b317dae7bfd9a96",
+ "signature": "cfb42d1c8aa66607ef3b1e2cee85d28148358ba62dc5e5146b317dae7bfd9a96",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/chai/index.d.ts": {
+ "version": "267813ae499a9c070ea61bca2d235e31e785181d967e4461719cbcc78a35abfe",
+ "signature": "267813ae499a9c070ea61bca2d235e31e785181d967e4461719cbcc78a35abfe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/color-name/index.d.ts": {
+ "version": "f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e",
+ "signature": "f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/conversions.d.ts": {
+ "version": "92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69",
+ "signature": "92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/route.d.ts": {
+ "version": "8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012",
+ "signature": "8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/index.d.ts": {
+ "version": "92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9",
+ "signature": "92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color/index.d.ts": {
+ "version": "ac502bda446da2b897b8fb9373199f08e111a82c19ea0f9a1debf49ed34b6970",
+ "signature": "ac502bda446da2b897b8fb9373199f08e111a82c19ea0f9a1debf49ed34b6970",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/cucumber/index.d.ts": {
+ "version": "24669889f4a64d832f53c0408dac30ef08ed4134e92393055d51dcf36a922ae3",
+ "signature": "24669889f4a64d832f53c0408dac30ef08ed4134e92393055d51dcf36a922ae3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/elasticlunr/index.d.ts": {
+ "version": "e148d28b0f7479b39ee4e26a249a97f9d9a4f81a6da227a04bfbc57e2807f577",
+ "signature": "e148d28b0f7479b39ee4e26a249a97f9d9a4f81a6da227a04bfbc57e2807f577",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint/helpers.d.ts": {
+ "version": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "signature": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/json-schema/index.d.ts": {
+ "version": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "signature": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/estree/index.d.ts": {
+ "version": "745a853d60bf782583a58584f59e202cae5c7a898b0c92696442602a3ef17a87",
+ "signature": "745a853d60bf782583a58584f59e202cae5c7a898b0c92696442602a3ef17a87",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint/index.d.ts": {
+ "version": "ffa048767a32a0f6354e611b15d8b53d882da1a9a35455c35c3f6811f2416d17",
+ "signature": "ffa048767a32a0f6354e611b15d8b53d882da1a9a35455c35c3f6811f2416d17",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint-scope/index.d.ts": {
+ "version": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "signature": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.d.ts": {
+ "version": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "signature": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "signature": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "signature": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "signature": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "signature": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/console.d.ts": {
+ "version": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "signature": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/constants.d.ts": {
+ "version": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "signature": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "signature": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "signature": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dns.d.ts": {
+ "version": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "signature": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/domain.d.ts": {
+ "version": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "signature": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/events.d.ts": {
+ "version": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "signature": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/fs.d.ts": {
+ "version": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "signature": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "signature": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http.d.ts": {
+ "version": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "signature": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http2.d.ts": {
+ "version": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "signature": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/https.d.ts": {
+ "version": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "signature": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "signature": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/module.d.ts": {
+ "version": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "signature": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/net.d.ts": {
+ "version": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "signature": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/os.d.ts": {
+ "version": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "signature": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/path.d.ts": {
+ "version": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "signature": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "signature": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/process.d.ts": {
+ "version": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "signature": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "signature": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "signature": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/readline.d.ts": {
+ "version": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "signature": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/repl.d.ts": {
+ "version": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "signature": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/stream.d.ts": {
+ "version": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "signature": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "signature": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/timers.d.ts": {
+ "version": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "signature": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tls.d.ts": {
+ "version": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "signature": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "signature": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "signature": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/url.d.ts": {
+ "version": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "signature": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/util.d.ts": {
+ "version": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "signature": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/v8.d.ts": {
+ "version": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "signature": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/vm.d.ts": {
+ "version": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "signature": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "signature": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "signature": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "signature": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "signature": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/assert.d.ts": {
+ "version": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "signature": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/index.d.ts": {
+ "version": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "signature": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/glob-base/index.d.ts": {
+ "version": "d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775",
+ "signature": "d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/graceful-fs/index.d.ts": {
+ "version": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "signature": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/unist/index.d.ts": {
+ "version": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "signature": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/hast/index.d.ts": {
+ "version": "b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f",
+ "signature": "b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts": {
+ "version": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "signature": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/is-function/index.d.ts": {
+ "version": "11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139",
+ "signature": "11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts": {
+ "version": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "signature": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": {
+ "version": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "signature": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": {
+ "version": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "signature": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/js-yaml/index.d.ts": {
+ "version": "914dc265139513b2a984498b0c969c177493cc7ae436375dbc102307a7f8ab07",
+ "signature": "914dc265139513b2a984498b0c969c177493cc7ae436375dbc102307a7f8ab07",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": {
+ "version": "fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377",
+ "signature": "fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse5/index.d.ts": {
+ "version": "a7dbf3a9c06327c5329cd020982b0649e8369200cdf8ec4571b93a1ba074a5d2",
+ "signature": "a7dbf3a9c06327c5329cd020982b0649e8369200cdf8ec4571b93a1ba074a5d2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/tough-cookie/index.d.ts": {
+ "version": "a6c4cc913246a4f40423d0c6e618239072d7662bd54f6d8b8be59aec55d59873",
+ "signature": "a6c4cc913246a4f40423d0c6e618239072d7662bd54f6d8b8be59aec55d59873",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": {
+ "version": "7c7bffe8dc52cffdd34f5402f18d69305c82138cab1312cce58f470285103b0f",
+ "signature": "7c7bffe8dc52cffdd34f5402f18d69305c82138cab1312cce58f470285103b0f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/index.d.ts": {
+ "version": "2337b79db6888645933d152006ceecbc8663f956eb8cbed0b2e4287a23a71cda",
+ "signature": "2337b79db6888645933d152006ceecbc8663f956eb8cbed0b2e4287a23a71cda",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/json5/index.d.ts": {
+ "version": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "signature": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/long/index.d.ts": {
+ "version": "e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b",
+ "signature": "e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/global.d.ts": {
+ "version": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "signature": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts": {
+ "version": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "signature": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/prop-types/index.d.ts": {
+ "version": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "signature": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/scheduler/tracing.d.ts": {
+ "version": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "signature": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/index.d.ts": {
+ "version": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "signature": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": {
+ "version": "9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5",
+ "signature": "9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mdast/index.d.ts": {
+ "version": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "signature": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/micromatch/index.d.ts": {
+ "version": "9c36d6df17ca69a65a2a654d9bbd86d74c6d6055e566429cd0a1de82827680eb",
+ "signature": "9c36d6df17ca69a65a2a654d9bbd86d74c6d6055e566429cd0a1de82827680eb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "0359800d3b440f8515001431cde1500944e156040577425eb3f7b80af0846612",
+ "signature": "0359800d3b440f8515001431cde1500944e156040577425eb3f7b80af0846612",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": {
+ "version": "736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50",
+ "signature": "736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node-fetch/externals.d.ts": {
+ "version": "972f1e91dab93b182624a17eeed02f683b8cb3fefbda7b689cc84570029d5f73",
+ "signature": "972f1e91dab93b182624a17eeed02f683b8cb3fefbda7b689cc84570029d5f73",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node-fetch/index.d.ts": {
+ "version": "9895aad6ad1d505e2b03c8e41c8643b60a813ad130eb68f843b736b2db7d42e1",
+ "signature": "9895aad6ad1d505e2b03c8e41c8643b60a813ad130eb68f843b736b2db7d42e1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/npmlog/index.d.ts": {
+ "version": "0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d",
+ "signature": "0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts": {
+ "version": "1502b874bbaafdb762b3907945740f787058a6aabff5e27377f9b45e4bb08ff3",
+ "signature": "1502b874bbaafdb762b3907945740f787058a6aabff5e27377f9b45e4bb08ff3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts": {
+ "version": "b91aaad5f9c3f5dca5e8245d5f6464bdc63a77ba4453bb3e2d0c93959cddb13c",
+ "signature": "b91aaad5f9c3f5dca5e8245d5f6464bdc63a77ba4453bb3e2d0c93959cddb13c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/qs/index.d.ts": {
+ "version": "98437d5a640b67c41534f0de2dcb64c75433dcdff54ff8f8432e613663619a2e",
+ "signature": "98437d5a640b67c41534f0de2dcb64c75433dcdff54ff8f8432e613663619a2e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/reach__router/index.d.ts": {
+ "version": "3b280b52be6f8727fbdae05a2ad2c053dac5be97c42a5caa1740e64a2321e935",
+ "signature": "3b280b52be6f8727fbdae05a2ad2c053dac5be97c42a5caa1740e64a2321e935",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react-dom/index.d.ts": {
+ "version": "ee7266c6f312a6bf9612691b7fff1dfde32a609d150521c1f20d3f7972bc7586",
+ "signature": "ee7266c6f312a6bf9612691b7fff1dfde32a609d150521c1f20d3f7972bc7586",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": {
+ "version": "cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8",
+ "signature": "cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/scheduler/index.d.ts": {
+ "version": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "signature": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts": {
+ "version": "558a9770503071d5a6fc6c596f7230bb79f2d034ced4a205bd1ebcad3b5879ec",
+ "signature": "558a9770503071d5a6fc6c596f7230bb79f2d034ced4a205bd1ebcad3b5879ec",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinon/index.d.ts": {
+ "version": "9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73",
+ "signature": "9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinon-chai/index.d.ts": {
+ "version": "b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03",
+ "signature": "b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/source-list-map/index.d.ts": {
+ "version": "67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae",
+ "signature": "67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/stack-utils/index.d.ts": {
+ "version": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "signature": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/stream-buffers/index.d.ts": {
+ "version": "bbebca3b08d774325e29007bf354fbb9bc027b4990e89911efdd66d244f7bfd9",
+ "signature": "bbebca3b08d774325e29007bf354fbb9bc027b4990e89911efdd66d244f7bfd9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/tapable/index.d.ts": {
+ "version": "d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579",
+ "signature": "d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts": {
+ "version": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "signature": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uglify-js/index.d.ts": {
+ "version": "bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956",
+ "signature": "bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uuid/index.d.ts": {
+ "version": "96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292",
+ "signature": "96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/anymatch/index.d.ts": {
+ "version": "4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349",
+ "signature": "4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts": {
+ "version": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "signature": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts": {
+ "version": "b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9",
+ "signature": "b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": {
+ "version": "8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d",
+ "signature": "8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": {
+ "version": "ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5",
+ "signature": "ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": {
+ "version": "083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9",
+ "signature": "083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": {
+ "version": "274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517",
+ "signature": "274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": {
+ "version": "6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad",
+ "signature": "6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": {
+ "version": "5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106",
+ "signature": "5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": {
+ "version": "f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c",
+ "signature": "f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": {
+ "version": "0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f",
+ "signature": "0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": {
+ "version": "8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb",
+ "signature": "8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": {
+ "version": "9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1",
+ "signature": "9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": {
+ "version": "d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0",
+ "signature": "d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/index.d.ts": {
+ "version": "89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b",
+ "signature": "89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack/index.d.ts": {
+ "version": "f7391eb1cb10ab561aa3ce7c610ea97aa4ab33fc709ee5e2adde541defde882f",
+ "signature": "f7391eb1cb10ab561aa3ce7c610ea97aa4ab33fc709ee5e2adde541defde882f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-env/index.d.ts": {
+ "version": "5b3e6ce357a7a1a07c858432a3d2002750058725874db09a03a0a9e899d861f5",
+ "signature": "5b3e6ce357a7a1a07c858432a3d2002750058725874db09a03a0a9e899d861f5",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/yargs-parser/index.d.ts": {
+ "version": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "signature": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yargs/index.d.ts": {
+ "version": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "signature": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yauzl/index.d.ts": {
+ "version": "3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26",
+ "signature": "3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "target": 2,
+ "lib": [
+ "lib.es2019.d.ts",
+ "lib.dom.d.ts"
+ ],
+ "sourceMap": true,
+ "allowJs": false,
+ "jsx": 2,
+ "resolveJsonModule": true,
+ "module": 1,
+ "esModuleInterop": true,
+ "noImplicitAny": true,
+ "moduleResolution": 2,
+ "outDir": "./",
+ "downlevelIteration": true,
+ "skipLibCheck": true,
+ "composite": true,
+ "declarationMap": true,
+ "rootDir": "..",
+ "configFilePath": "../tsconfig.build.json"
+ },
+ "referencedMap": {
+ "../src/createMeta.ts": [
+ "../../../messages/javascript/dist/src/index.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../src/ciDict.json"
+ ],
+ "../src/index.ts": [
+ "../src/createMeta.ts"
+ ],
+ "../src/printMeta.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../src/ciDict.json",
+ "../src/createMeta.ts"
+ ],
+ "../test/createMetaTest.ts": [
+ "../../../messages/javascript/dist/src/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/ciDict.json",
+ "../src/createMeta.ts"
+ ],
+ "../test/removeUserInfoFromUrlTest.ts": [
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/createMeta.ts"
+ ],
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts": [
+ "../../../messages/javascript/dist/src/messages.d.ts"
+ ],
+ "../../../messages/javascript/dist/src/index.d.ts": [
+ "../../../messages/javascript/dist/package.json",
+ "../../../messages/javascript/dist/src/IdGenerator.d.ts",
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts",
+ "../../../messages/javascript/dist/src/messages.d.ts"
+ ],
+ "../../../messages/javascript/dist/src/messages.d.ts": [
+ "../../../node_modules/protobufjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/conversions.d.ts": [
+ "../../../node_modules/@types/color-name/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/index.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/route.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts"
+ ],
+ "../../../node_modules/@types/color/index.d.ts": [
+ "../../../node_modules/@types/color-convert/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/index.d.ts": [
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/hast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts"
+ ],
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/micromatch/index.d.ts": [
+ "../../../node_modules/@types/braces/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/index.d.ts": [
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/npmlog/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/index.d.ts": [
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": [
+ "../../../node_modules/@types/parse5/index.d.ts"
+ ],
+ "../../../node_modules/@types/reach__router/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-dom/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": [
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts"
+ ],
+ "../../../node_modules/@types/sinon-chai/index.d.ts": [
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon/index.d.ts": [
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts"
+ ],
+ "../../../node_modules/@types/stream-buffers/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/index.d.ts": [
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": [
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": [
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/index.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/@types/yauzl/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../src/createMeta.ts": [
+ "../../../messages/javascript/dist/src/index.d.ts"
+ ],
+ "../src/index.ts": [
+ "../src/createMeta.ts"
+ ],
+ "../src/printMeta.ts": [
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts": [
+ "../../../messages/javascript/dist/src/messages.d.ts"
+ ],
+ "../../../messages/javascript/dist/src/index.d.ts": [
+ "../../../messages/javascript/dist/package.json",
+ "../../../messages/javascript/dist/src/IdGenerator.d.ts",
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts",
+ "../../../messages/javascript/dist/src/messages.d.ts"
+ ],
+ "../../../messages/javascript/dist/src/messages.d.ts": [
+ "../../../node_modules/protobufjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/conversions.d.ts": [
+ "../../../node_modules/@types/color-name/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/index.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/route.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts"
+ ],
+ "../../../node_modules/@types/color/index.d.ts": [
+ "../../../node_modules/@types/color-convert/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/index.d.ts": [
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/hast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts"
+ ],
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/micromatch/index.d.ts": [
+ "../../../node_modules/@types/braces/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/index.d.ts": [
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/npmlog/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/index.d.ts": [
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": [
+ "../../../node_modules/@types/parse5/index.d.ts"
+ ],
+ "../../../node_modules/@types/reach__router/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-dom/index.d.ts": [
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": [
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts"
+ ],
+ "../../../node_modules/@types/sinon-chai/index.d.ts": [
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon/index.d.ts": [
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts"
+ ],
+ "../../../node_modules/@types/stream-buffers/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/index.d.ts": [
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": [
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": [
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": [
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/index.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/@types/yauzl/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../src/ciDict.json",
+ "../src/createMeta.ts",
+ "../src/index.ts",
+ "../src/printMeta.ts",
+ "../test/createMetaTest.ts",
+ "../test/removeUserInfoFromUrlTest.ts",
+ "../../../messages/javascript/dist/package.json",
+ "../../../messages/javascript/dist/src/IdGenerator.d.ts",
+ "../../../messages/javascript/dist/src/TimeConversion.d.ts",
+ "../../../messages/javascript/dist/src/index.d.ts",
+ "../../../messages/javascript/dist/src/messages.d.ts",
+ "../../../node_modules/@types/anymatch/index.d.ts",
+ "../../../node_modules/@types/braces/index.d.ts",
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/index.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts",
+ "../../../node_modules/@types/color-name/index.d.ts",
+ "../../../node_modules/@types/color/index.d.ts",
+ "../../../node_modules/@types/cucumber/index.d.ts",
+ "../../../node_modules/@types/elasticlunr/index.d.ts",
+ "../../../node_modules/@types/eslint-scope/index.d.ts",
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/glob-base/index.d.ts",
+ "../../../node_modules/@types/glob/index.d.ts",
+ "../../../node_modules/@types/graceful-fs/index.d.ts",
+ "../../../node_modules/@types/hast/index.d.ts",
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts",
+ "../../../node_modules/@types/is-function/index.d.ts",
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts",
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts",
+ "../../../node_modules/@types/istanbul-reports/index.d.ts",
+ "../../../node_modules/@types/js-yaml/index.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts",
+ "../../../node_modules/@types/json5/index.d.ts",
+ "../../../node_modules/@types/long/index.d.ts",
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts",
+ "../../../node_modules/@types/mdast/index.d.ts",
+ "../../../node_modules/@types/micromatch/index.d.ts",
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/mocha/index.d.ts",
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/index.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/base.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts",
+ "../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../node_modules/@types/npmlog/index.d.ts",
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts",
+ "../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts",
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts",
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/qs/index.d.ts",
+ "../../../node_modules/@types/reach__router/index.d.ts",
+ "../../../node_modules/@types/react-dom/index.d.ts",
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/index.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts",
+ "../../../node_modules/@types/sinon-chai/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts",
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/stack-utils/index.d.ts",
+ "../../../node_modules/@types/stream-buffers/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts",
+ "../../../node_modules/@types/uuid/index.d.ts",
+ "../../../node_modules/@types/webpack-env/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack/index.d.ts",
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/yargs-parser/index.d.ts",
+ "../../../node_modules/@types/yargs/index.d.ts",
+ "../../../node_modules/@types/yauzl/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts",
+ "../../../node_modules/protobufjs/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts"
+ ]
+ },
+ "version": "4.2.3"
+}
\ No newline at end of file
diff --git a/node_modules/@cucumber/create-meta/package.json b/node_modules/@cucumber/create-meta/package.json
new file mode 100644
index 0000000..9aeed44
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/package.json
@@ -0,0 +1,69 @@
+{
+ "_from": "@cucumber/create-meta@4.0.0",
+ "_id": "@cucumber/create-meta@4.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-I2GWC9PoIGmpc0w/vz2YYeGl/eog1oFogYKUjgflDjhECo1mpD/WQjMRPNOsZnd859S8fPgVByKzGQAWjfjGyQ==",
+ "_location": "/@cucumber/create-meta",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "@cucumber/create-meta@4.0.0",
+ "name": "@cucumber/create-meta",
+ "escapedName": "@cucumber%2fcreate-meta",
+ "scope": "@cucumber",
+ "rawSpec": "4.0.0",
+ "saveSpec": null,
+ "fetchSpec": "4.0.0"
+ },
+ "_requiredBy": [
+ "/@cucumber/cucumber"
+ ],
+ "_resolved": "https://registry.npmjs.org/@cucumber/create-meta/-/create-meta-4.0.0.tgz",
+ "_shasum": "ef97070640475e6e1480be93dc1042d361516ea6",
+ "_spec": "@cucumber/create-meta@4.0.0",
+ "_where": "/Users/ania/Projects/jan-molak/cucumber-js-1646/node_modules/@cucumber/cucumber",
+ "author": {
+ "name": "Cucumber Limited",
+ "email": "cukes@googlegroups.com"
+ },
+ "bugs": {
+ "url": "https://github.com/cucumber/cucumber/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "@cucumber/messages": "^15.0.0"
+ },
+ "deprecated": false,
+ "description": "Produce the meta message for Cucumber JavaScript",
+ "devDependencies": {
+ "@types/glob": "^7.1.3",
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.37",
+ "mocha": "^8.3.2",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^9.1.1",
+ "typescript": "^4.2.3"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "homepage": "https://github.com/cucumber/cucumber",
+ "keywords": [
+ "cucumber"
+ ],
+ "license": "MIT",
+ "main": "dist/src/index.js",
+ "name": "@cucumber/create-meta",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/cucumber/cucumber.git"
+ },
+ "scripts": {
+ "prepublishOnly": "tsc --build tsconfig.build.json",
+ "print-meta": "ts-node --require tsconfig-paths/register ./src/printMeta.ts",
+ "test": "mocha"
+ },
+ "types": "dist/src/index.d.ts",
+ "version": "4.0.0"
+}
diff --git a/node_modules/@cucumber/create-meta/src/ciDict.json b/node_modules/@cucumber/create-meta/src/ciDict.json
new file mode 100644
index 0000000..11d81d7
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/src/ciDict.json
@@ -0,0 +1,110 @@
+{
+ "Azure Pipelines": {
+ "url": "${BUILD_URI}",
+ "git": {
+ "remote": "${BUILD_REPOSITORY_URI}",
+ "revision": "${BUILD_SOURCEVERSION}",
+ "branch": "${refbranch BUILD_SOURCEBRANCH}",
+ "tag": "${reftag BUILD_SOURCEBRANCH}"
+ }
+ },
+ "Bamboo": {
+ "url": "${bamboo.buildResultsUrl}",
+ "git": {
+ "remote": "${bamboo.planRepository.1.repositoryUrl}",
+ "revision": "${bamboo.planRepository.1.revision}",
+ "branch": "${bamboo.planRepository.1.branch}",
+ "tag": null
+ }
+ },
+ "Buddy": {
+ "url": "${BUDDY_EXECUTION_URL}",
+ "git": {
+ "remote": "${BUDDY_SCM_URL}",
+ "revision": "${BUDDY_EXECUTION_REVISION}",
+ "branch": "${BUDDY_EXECUTION_BRANCH}",
+ "tag": "${BUDDY_EXECUTION_TAG}"
+ }
+ },
+ "CircleCI": {
+ "url": "${CIRCLE_BUILD_URL}",
+ "git": {
+ "remote": "${CIRCLE_REPOSITORY_URL}",
+ "revision": "${CIRCLE_SHA1}",
+ "branch": "${CIRCLE_BRANCH}",
+ "tag": "${CIRCLE_TAG}"
+ }
+ },
+ "CodeShip": {
+ "url": "${CF_BUILD_URL}",
+ "git": {
+ "remote": "${CF_COMMIT_URL}",
+ "revision": "${CF_REVISION}",
+ "branch": "${CF_BRANCH}",
+ "tag": null
+ }
+ },
+ "GitHub Actions": {
+ "url": "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}",
+ "git": {
+ "remote": "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git",
+ "revision": "${GITHUB_SHA}",
+ "branch": "${refbranch GITHUB_REF}",
+ "tag": "${reftag GITHUB_REF}"
+ }
+ },
+ "GitLab": {
+ "url": "${CI_JOB_URL}",
+ "git": {
+ "remote": "${CI_REPOSITORY_URL}",
+ "revision": "${CI_COMMIT_SHA}",
+ "branch": "${CI_COMMIT_BRANCH}",
+ "tag": "${CI_COMMIT_TAG}"
+ }
+ },
+ "GoCD": {
+ "url": "${GO_SERVER_URL}/???",
+ "git": {
+ "remote": null,
+ "revision": "${GO_REVISION}",
+ "branch": null,
+ "tag": null
+ }
+ },
+ "Semaphore": {
+ "url": "${SEMAPHORE_ORGANIZATION_URL}/${}",
+ "git": {
+ "remote": "${SEMAPHORE_GIT_URL}",
+ "revision": "${SEMAPHORE_GIT_SHA}",
+ "branch": "${SEMAPHORE_GIT_BRANCH}",
+ "tag": "${SEMAPHORE_GIT_TAG_NAME}"
+ }
+ },
+ "TeamCity": {
+ "url": "${teamcity.serverUrl}/app/rest/builds/id:${teamcity.build.id}",
+ "git": {
+ "remote": null,
+ "revision": "${build.vcs.number}",
+ "branch": "${teamcity.build.branch}",
+ "tag": null
+ }
+ },
+ "Travis CI": {
+ "url": "${TRAVIS_BUILD_WEB_URL}",
+ "git": {
+ "remote": "https://github.com/${TRAVIS_REPO_SLUG}.git",
+ "revision": "${TRAVIS_COMMIT}",
+ "branch": "${TRAVIS_BRANCH}",
+ "tag": "${TRAVIS_TAG}"
+ }
+ },
+ "Wercker": {
+ "url": "${WERCKER_RUN_URL}",
+ "git": {
+ "remote": "https://${WERCKER_GIT_DOMAIN}/${WERCKER_GIT_OWNER}/${WERCKER_GIT_REPOSITORY}.git",
+ "revision": "${WERCKER_GIT_COMMIT}",
+ "branch": "${WERCKER_GIT_BRANCH}",
+ "tag": null
+ }
+ }
+}
diff --git a/node_modules/@cucumber/create-meta/src/createMeta.ts b/node_modules/@cucumber/create-meta/src/createMeta.ts
new file mode 100644
index 0000000..aed38bd
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/src/createMeta.ts
@@ -0,0 +1,137 @@
+import os from 'os'
+import { parse as parseUrl, format as formatUrl } from 'url'
+import { messages, version as protocolVersion } from '@cucumber/messages'
+import defaultCiDict from './ciDict.json'
+
+export type CiDict = { [name: string]: CiSystem }
+export type EnvDict = { [name: string]: string | undefined }
+
+export interface CiSystem {
+ url: string
+ git: {
+ remote: string | undefined
+ branch: string | undefined
+ revision: string | undefined
+ tag: string | undefined
+ }
+}
+
+export default function createMeta(
+ toolName: string,
+ toolVersion: string,
+ envDict: EnvDict,
+ ciDict?: CiDict
+): messages.Meta {
+ if (ciDict === undefined) {
+ ciDict = defaultCiDict
+ }
+ return new messages.Meta({
+ protocolVersion,
+ implementation: new messages.Meta.Product({
+ name: toolName,
+ version: toolVersion,
+ }),
+ cpu: new messages.Meta.Product({
+ name: os.arch(),
+ }),
+ os: new messages.Meta.Product({
+ name: os.platform(),
+ version: os.release(),
+ }),
+ runtime: new messages.Meta.Product({
+ name: 'node.js',
+ version: process.versions.node,
+ }),
+ ci: detectCI(ciDict, envDict),
+ })
+}
+
+export function detectCI(ciDict: CiDict, envDict: EnvDict): messages.Meta.CI | undefined {
+ const detected: messages.Meta.CI[] = []
+ for (const [ciName, ciSystem] of Object.entries(ciDict)) {
+ const ci = createCi(ciName, ciSystem, envDict)
+ if (ci) {
+ detected.push(ci)
+ }
+ }
+ if (detected.length !== 1) {
+ return undefined
+ }
+ return detected[0]
+}
+
+export function removeUserInfoFromUrl(value: string): string {
+ if (!value) return value
+ const url = parseUrl(value)
+ if (url.auth === null) return value
+ url.auth = null
+ return formatUrl(url)
+}
+
+function createCi(
+ ciName: string,
+ ciSystem: CiSystem,
+ envDict: EnvDict
+): messages.Meta.CI | undefined {
+ const url = evaluate(ciSystem.url, envDict)
+ if (url === undefined) {
+ // The url is what consumers will use as the primary key for a build
+ // If this cannot be determined, we return nothing.
+ return undefined
+ }
+
+ return messages.Meta.CI.create({
+ url,
+ name: ciName,
+ git: {
+ remote: removeUserInfoFromUrl(evaluate(ciSystem.git.remote, envDict)),
+ revision: evaluate(ciSystem.git.revision, envDict),
+ branch: evaluate(ciSystem.git.branch, envDict),
+ tag: evaluate(ciSystem.git.tag, envDict),
+ },
+ })
+}
+
+/**
+ * Evaluates a simple template
+ *
+ * @param template - the template from the ciDict.json file
+ * @param envDict - variables
+ * @return the evaluated template, or undefined if a variable was undefined
+ */
+function evaluate(template: string, envDict: EnvDict): string | undefined {
+ if (template === undefined) {
+ return undefined
+ }
+ try {
+ return template.replace(
+ /\${((refbranch|reftag)\s+)?([^\s}]+)(\s+\|\s+([^}]+))?}/g,
+ (substring: string, ...args: any[]): string => {
+ const func = args[1]
+ const variable = args[2]
+ const defaultValue = args[4]
+ const value = envDict[variable] || defaultValue
+ if (value === undefined) {
+ throw new Error(`Undefined variable: ${variable}`)
+ }
+ switch (func) {
+ case 'refbranch':
+ return group1(value, /^refs\/heads\/(.*)/)
+ case 'reftag':
+ return group1(value, /^refs\/tags\/(.*)/)
+ default:
+ return value
+ }
+ }
+ )
+ } catch (err) {
+ // There was an undefined variable
+ return undefined
+ }
+}
+
+function group1(value: string, regexp: RegExp): string {
+ const match = value.match(regexp)
+ if (match === null) throw new Error('No match')
+ return match[1]
+}
diff --git a/node_modules/@cucumber/create-meta/src/index.ts b/node_modules/@cucumber/create-meta/src/index.ts
new file mode 100644
index 0000000..af1626e
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/src/index.ts
@@ -0,0 +1,3 @@
+import createMeta from './createMeta'
+
+export default createMeta
diff --git a/node_modules/@cucumber/create-meta/src/printMeta.ts b/node_modules/@cucumber/create-meta/src/printMeta.ts
new file mode 100644
index 0000000..a586c71
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/src/printMeta.ts
@@ -0,0 +1,13 @@
+import { promises as fs } from 'fs'
+import { detectCI } from './createMeta'
+import ciDict from './ciDict.json'
+import { Writable } from 'stream'
+
+export async function main(envPath: string, stdout: Writable) {
+ const envData = await fs.readFile(envPath, 'utf-8')
+ const entries = envData.split('\n').map((line) => line.split('='))
+ const env = Object.fromEntries(entries)
+ const ci = detectCI(ciDict, env)
+ stdout.write(JSON.stringify(ci.toJSON(), null, 2) + '\n')
+}
+main(process.argv[2], process.stdout).catch((err) => console.error(err.backtrace))
diff --git a/node_modules/@cucumber/create-meta/test/createMetaTest.ts b/node_modules/@cucumber/create-meta/test/createMetaTest.ts
new file mode 100644
index 0000000..d158556
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/test/createMetaTest.ts
@@ -0,0 +1,136 @@
+import createMeta from '../src/createMeta'
+import assert from 'assert'
+import ciDict from '../src/ciDict.json'
+import { messages } from '@cucumber/messages'
+
+describe('createMeta', () => {
+ it('defines the implementation product', () => {
+ const meta = createMeta('someTool', '1.2.3', {}, {})
+
+ assert.strictEqual(meta.implementation.name, 'someTool')
+ assert.strictEqual(meta.implementation.version, '1.2.3')
+ })
+
+ it('detects CircleCI', () => {
+ const envDict = {
+ CIRCLE_BUILD_URL: 'the-url',
+ CIRCLE_REPOSITORY_URL: 'the-remote',
+ CIRCLE_BRANCH: 'the-branch',
+ CIRCLE_SHA1: 'the-revision',
+ CIRCLE_TAG: 'the-tag',
+ }
+
+ const meta = createMeta('someTool', '1.2.3', envDict, ciDict)
+ assert.deepStrictEqual(
+ meta.ci,
+ messages.Meta.CI.create({
+ name: 'CircleCI',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: 'the-branch',
+ revision: 'the-revision',
+ tag: 'the-tag',
+ },
+ })
+ )
+ })
+
+ it('detects GitHub Actions', () => {
+ const envDict = {
+ GITHUB_SERVER_URL: 'https://github.com',
+ GITHUB_REPOSITORY: 'cucumber/cucumber-ruby',
+ GITHUB_RUN_ID: '140170388',
+ GITHUB_SHA: 'the-revision',
+ GITHUB_REF: 'refs/tags/the-tag',
+ }
+
+ const meta = createMeta('someTool', '1.2.3', envDict, ciDict)
+ assert.deepStrictEqual(
+ meta.ci,
+ messages.Meta.CI.create({
+ name: 'GitHub Actions',
+ url: 'https://github.com/cucumber/cucumber-ruby/actions/runs/140170388',
+ git: {
+ remote: 'https://github.com/cucumber/cucumber-ruby.git',
+ branch: undefined,
+ revision: 'the-revision',
+ tag: 'the-tag',
+ },
+ })
+ )
+ })
+
+ it('detects GitHub Actions with custom base url', () => {
+ const envDict = {
+ GITHUB_SERVER_URL: 'https://github.company.com',
+ GITHUB_REPOSITORY: 'cucumber/cucumber-ruby',
+ GITHUB_RUN_ID: '140170388',
+ GITHUB_SHA: 'the-revision',
+ GITHUB_REF: 'refs/heads/the-branch',
+ }
+
+ const meta = createMeta('someTool', '1.2.3', envDict, ciDict)
+ assert.deepStrictEqual(
+ meta.ci,
+ messages.Meta.CI.create({
+ name: 'GitHub Actions',
+ url: 'https://github.company.com/cucumber/cucumber-ruby/actions/runs/140170388',
+ git: {
+ remote: 'https://github.company.com/cucumber/cucumber-ruby.git',
+ branch: 'the-branch',
+ revision: 'the-revision',
+ tag: undefined,
+ },
+ })
+ )
+ })
+
+ it('post-processes git refs to branch', () => {
+ const envDict = {
+ BUILD_URI: 'the-url',
+ BUILD_REPOSITORY_URI: 'the-remote',
+ BUILD_SOURCEBRANCH: 'refs/heads/main',
+ BUILD_SOURCEVERSION: 'the-revision',
+ }
+
+ const meta = createMeta('someTool', '1.2.3', envDict, ciDict)
+ assert.deepStrictEqual(
+ meta.ci,
+ messages.Meta.CI.create({
+ name: 'Azure Pipelines',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: 'main',
+ revision: 'the-revision',
+ tag: undefined,
+ },
+ })
+ )
+ })
+
+ it('post-processes git refs to tag', () => {
+ const envDict = {
+ BUILD_URI: 'the-url',
+ BUILD_REPOSITORY_URI: 'the-remote',
+ BUILD_SOURCEBRANCH: 'refs/tags/v1.2.3',
+ BUILD_SOURCEVERSION: 'the-revision',
+ }
+
+ const meta = createMeta('someTool', '1.2.3', envDict, ciDict)
+ assert.deepStrictEqual(
+ meta.ci,
+ messages.Meta.CI.create({
+ name: 'Azure Pipelines',
+ url: 'the-url',
+ git: {
+ remote: 'the-remote',
+ branch: undefined,
+ revision: 'the-revision',
+ tag: 'v1.2.3',
+ },
+ })
+ )
+ })
+})
diff --git a/node_modules/@cucumber/create-meta/test/removeUserInfoFromUrlTest.ts b/node_modules/@cucumber/create-meta/test/removeUserInfoFromUrlTest.ts
new file mode 100644
index 0000000..9d1bae7
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/test/removeUserInfoFromUrlTest.ts
@@ -0,0 +1,43 @@
+import { removeUserInfoFromUrl } from '../src/createMeta'
+import assert from 'assert'
+
+describe('removeUserInfoFromUrl', () => {
+ it('returns undefined for undefined', () => {
+ assert.strictEqual(removeUserInfoFromUrl(undefined), undefined)
+ })
+
+ it('returns null for null', () => {
+ assert.strictEqual(removeUserInfoFromUrl(null), null)
+ })
+
+ it('returns empty string for empty string', () => {
+ assert.strictEqual(removeUserInfoFromUrl(null), null)
+ })
+
+ it('leaves the data intact when no sensitive information is detected', () => {
+ assert.strictEqual(removeUserInfoFromUrl('pretty safe'), 'pretty safe')
+ })
+
+ context('with URLs', () => {
+ it('leaves intact when no password is found', () => {
+ assert.strictEqual(
+ removeUserInfoFromUrl('https://example.com/git/repo.git'),
+ 'https://example.com/git/repo.git'
+ )
+ })
+
+ it('removes credentials when found', () => {
+ assert.strictEqual(
+ removeUserInfoFromUrl('http://login@example.com/git/repo.git'),
+ 'http://example.com/git/repo.git'
+ )
+ })
+
+ it('removes credentials and passwords when found', () => {
+ assert.strictEqual(
+ removeUserInfoFromUrl('ssh://login:password@example.com/git/repo.git'),
+ 'ssh://example.com/git/repo.git'
+ )
+ })
+ })
+})
diff --git a/node_modules/@cucumber/create-meta/tsconfig.build.json b/node_modules/@cucumber/create-meta/tsconfig.build.json
new file mode 100644
index 0000000..7d2f4e0
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/tsconfig.build.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "rootDir": ".",
+ "outDir": "dist"
+ },
+ "include": [
+ "src/ciDict.json",
+ "src",
+ "test"
+ ]
+}
diff --git a/node_modules/@cucumber/create-meta/tsconfig.json b/node_modules/@cucumber/create-meta/tsconfig.json
new file mode 100644
index 0000000..4082f16
--- /dev/null
+++ b/node_modules/@cucumber/create-meta/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/.github/ISSUE_TEMPLATE.md b/node_modules/@cucumber/cucumber-expressions/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..fac9619
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,5 @@
+PLEASE DO NOT CREATE ISSUES IN THIS REPO.
+THIS REPO IS A READ-ONLY MIRROR.
+
+Create your issue in the Cucumber monorepo instead:
+https://github.com/cucumber/cucumber/issues
diff --git a/node_modules/@cucumber/cucumber-expressions/.github/PULL_REQUEST_TEMPLATE.md b/node_modules/@cucumber/cucumber-expressions/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..2c0c878
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,5 @@
+PLEASE DO NOT CREATE PULL REAUESTS IN THIS REPO.
+THIS REPO IS A READ-ONLY MIRROR.
+
+Create your pull request in the Cucumber monorepo instead:
+https://github.com/cucumber/cucumber/pulls
diff --git a/node_modules/@cucumber/cucumber-expressions/.mocharc.json b/node_modules/@cucumber/cucumber-expressions/.mocharc.json
new file mode 100644
index 0000000..d5055eb
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/.mocharc.json
@@ -0,0 +1,6 @@
+{
+ "require": ["tsconfig-paths/register", "ts-node/register", "source-map-support/register"],
+ "extension": ["ts", "tsx"],
+ "recursive": true,
+ "timeout": 10000
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/.rsync b/node_modules/@cucumber/cucumber-expressions/.rsync
new file mode 100644
index 0000000..998c00c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/.rsync
@@ -0,0 +1,5 @@
+../../LICENSE LICENSE
+../../.templates/github/ .github/
+../../.templates/javascript/ .
+../examples.txt examples.txt
+../testdata .
diff --git a/node_modules/@cucumber/cucumber-expressions/.subrepo b/node_modules/@cucumber/cucumber-expressions/.subrepo
new file mode 100644
index 0000000..373066f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/.subrepo
@@ -0,0 +1 @@
+cucumber/cucumber-expressions-javascript
diff --git a/node_modules/@cucumber/cucumber-expressions/LICENSE b/node_modules/@cucumber/cucumber-expressions/LICENSE
new file mode 100644
index 0000000..725ba9f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Cucumber Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@cucumber/cucumber-expressions/Makefile b/node_modules/@cucumber/cucumber-expressions/Makefile
new file mode 100644
index 0000000..551e68e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/Makefile
@@ -0,0 +1 @@
+include default.mk
diff --git a/node_modules/@cucumber/cucumber-expressions/README.md b/node_modules/@cucumber/cucumber-expressions/README.md
new file mode 100644
index 0000000..7086fc6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/README.md
@@ -0,0 +1,3 @@
+# Cucumber Expressions for JavaScript
+
+[The docs are here](https://cucumber.io/docs/cucumber/cucumber-expressions/).
diff --git a/node_modules/@cucumber/cucumber-expressions/default.mk b/node_modules/@cucumber/cucumber-expressions/default.mk
new file mode 100644
index 0000000..2d7aafb
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/default.mk
@@ -0,0 +1,69 @@
+SHELL := /usr/bin/env bash
+# https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
+rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
+TYPESCRIPT_SOURCE_FILES = $(sort $(call rwildcard,src test,*.ts *.tsx))
+PRIVATE = $(shell node -e "console.log(require('./package.json').private)")
+IS_TESTDATA = $(findstring -testdata,${CURDIR})
+NPM_MODULE = $(shell cat package.json | jq .name --raw-output)
+
+default: .tested
+.PHONY: default
+
+.codegen:
+ touch $@
+
+.tested: .tested-npm
+
+.tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
+ npm run test
+ touch $@
+
+pre-release: clean update-version update-dependencies default
+.PHONY: pre-release
+
+update-dependencies:
+ ../../node_modules/.bin/npm-check-updates --upgrade && \
+ pushd ../.. && \
+ npm install && \
+ npm run build && \
+ popd
+.PHONY: update-dependencies
+
+update-version:
+ifeq ($(IS_TESTDATA),-testdata)
+ # no-op
+else
+ifdef NEW_VERSION
+ npm --no-git-tag-version --allow-same-version version "$(NEW_VERSION)"
+ # Update all npm packages that depend on us
+ pushd ../.. && \
+ ./scripts/npm-each update_npm_dependency_if_exists package.json "$(NPM_MODULE)" "^$(NEW_VERSION)"
+ # npm install
+else
+ @echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
+ exit 1
+endif
+endif
+.PHONY: update-version
+
+publish: .codegen
+ifeq ($(IS_TESTDATA),-testdata)
+ # no-op
+else
+ifneq (true,$(PRIVATE))
+ npm publish --access public
+else
+ @echo "Not publishing private npm module"
+endif
+endif
+.PHONY: publish
+
+post-release:
+.PHONY: post-release
+
+clean: clean-javascript
+.PHONY: clean
+
+clean-javascript:
+ rm -rf .deps .codegen .tested* node_modules coverage dist acceptance
+.PHONY: clean-javascript
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/package.json b/node_modules/@cucumber/cucumber-expressions/dist/package.json
new file mode 100644
index 0000000..5afb42f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@cucumber/cucumber-expressions",
+ "version": "12.0.1",
+ "description": "Cucumber Expressions - a simpler alternative to Regular Expressions",
+ "main": "dist/src/index.js",
+ "types": "dist/src/index.d.ts",
+ "scripts": {
+ "test": "mocha",
+ "prepublishOnly": "tsc --build tsconfig.build.json"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/cucumber/cucumber-expressions-javascript.git"
+ },
+ "keywords": [
+ "cucumber",
+ "steps",
+ "regexp",
+ "regex"
+ ],
+ "author": "Cucumber Limited ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/cucumber/cucumber-expressions-javascript/issues"
+ },
+ "homepage": "https://github.com/cucumber/cucumber-expressions-javascript#readme",
+ "devDependencies": {
+ "@types/js-yaml": "^4.0.0",
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.37",
+ "js-yaml": "^4.0.0",
+ "mocha": "^8.3.2",
+ "ts-node": "^9.1.1",
+ "typescript": "^4.2.3"
+ },
+ "dependencies": {
+ "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.4.0"
+ },
+ "directories": {
+ "test": "test"
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts
new file mode 100644
index 0000000..74fa7f5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts
@@ -0,0 +1,17 @@
+import TreeRegexp from './TreeRegexp';
+import ParameterType from './ParameterType';
+import Group from './Group';
+export default class Argument {
+ readonly group: Group;
+ readonly parameterType: ParameterType;
+ static build(treeRegexp: TreeRegexp, text: string, parameterTypes: ReadonlyArray>): ReadonlyArray>;
+ constructor(group: Group, parameterType: ParameterType);
+ /**
+ * Get the value returned by the parameter type's transformer function.
+ *
+ * @param thisObj the object in which the transformer function is applied.
+ */
+ getValue(thisObj: any): T;
+ getParameterType(): ParameterType;
+}
+//# sourceMappingURL=Argument.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts.map
new file mode 100644
index 0000000..55dbfd8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Argument.d.ts","sourceRoot":"","sources":["../../src/Argument.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,SAAS,CAAA;AAG3B,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC;aA0BD,KAAK,EAAE,KAAK;aAAkB,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;WAzB3E,KAAK,CACjB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAChD,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAqBH,KAAK,EAAE,KAAK,EAAkB,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAKzF;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;IAKzB,gBAAgB;CAGxB"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js
new file mode 100644
index 0000000..99bf4a5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js
@@ -0,0 +1,40 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const CucumberExpressionError_1 = __importDefault(require("./CucumberExpressionError"));
+class Argument {
+ constructor(group, parameterType) {
+ this.group = group;
+ this.parameterType = parameterType;
+ this.group = group;
+ this.parameterType = parameterType;
+ }
+ static build(treeRegexp, text, parameterTypes) {
+ const group = treeRegexp.match(text);
+ if (!group) {
+ return null;
+ }
+ const argGroups = group.children;
+ if (argGroups.length !== parameterTypes.length) {
+ throw new CucumberExpressionError_1.default(`Expression ${treeRegexp.regexp} has ${argGroups.length} capture groups (${argGroups.map((g) => g.value)}), but there were ${parameterTypes.length} parameter types (${parameterTypes.map((p) => p.name)})`);
+ }
+ return parameterTypes.map((parameterType, i) => new Argument(argGroups[i], parameterType));
+ }
+ /**
+ * Get the value returned by the parameter type's transformer function.
+ *
+ * @param thisObj the object in which the transformer function is applied.
+ */
+ getValue(thisObj) {
+ const groupValues = this.group ? this.group.values : null;
+ return this.parameterType.transform(thisObj, groupValues);
+ }
+ getParameterType() {
+ return this.parameterType;
+ }
+}
+exports.default = Argument;
+module.exports = Argument;
+//# sourceMappingURL=Argument.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js.map
new file mode 100644
index 0000000..304d8d8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Argument.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Argument.js","sourceRoot":"","sources":["../../src/Argument.ts"],"names":[],"mappings":";;;;;AAGA,wFAA+D;AAE/D,MAAqB,QAAQ;IA0B3B,YAA4B,KAAY,EAAkB,aAA+B;QAA7D,UAAK,GAAL,KAAK,CAAO;QAAkB,kBAAa,GAAb,aAAa,CAAkB;QACvF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;IA5BM,MAAM,CAAC,KAAK,CACjB,UAAsB,EACtB,IAAY,EACZ,cAAiD;QAEjD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;QAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;YAC9C,MAAM,IAAI,iCAAuB,CAC/B,cAAc,UAAU,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,oBAAoB,SAAS,CAAC,GAAG,CACtF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CACf,qBAAqB,cAAc,CAAC,MAAM,qBAAqB,cAAc,CAAC,GAAG,CAChF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACd,GAAG,CACL,CAAA;SACF;QAED,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;IAC5F,CAAC;IAOD;;;;OAIG;IACI,QAAQ,CAAC,OAAY;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3D,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;CACF;AA5CD,2BA4CC;AAED,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts
new file mode 100644
index 0000000..69f9e4d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts
@@ -0,0 +1,45 @@
+export declare function symbolOf(token: TokenType): string;
+export declare function purposeOf(token: TokenType): string;
+export interface Located {
+ readonly start: number;
+ readonly end: number;
+}
+export declare class Node {
+ readonly type: NodeType;
+ readonly nodes?: ReadonlyArray | undefined;
+ readonly token?: string | undefined;
+ readonly start: number;
+ readonly end: number;
+ constructor(type: NodeType, nodes: ReadonlyArray, token: string, start: number, end: number);
+ text(): string;
+}
+export declare enum NodeType {
+ text = "TEXT_NODE",
+ optional = "OPTIONAL_NODE",
+ alternation = "ALTERNATION_NODE",
+ alternative = "ALTERNATIVE_NODE",
+ parameter = "PARAMETER_NODE",
+ expression = "EXPRESSION_NODE"
+}
+export declare class Token {
+ readonly type: TokenType;
+ readonly text: string;
+ readonly start: number;
+ readonly end: number;
+ constructor(type: TokenType, text: string, start: number, end: number);
+ static isEscapeCharacter(codePoint: string): boolean;
+ static canEscape(codePoint: string): boolean;
+ static typeOf(codePoint: string): TokenType;
+}
+export declare enum TokenType {
+ startOfLine = "START_OF_LINE",
+ endOfLine = "END_OF_LINE",
+ whiteSpace = "WHITE_SPACE",
+ beginOptional = "BEGIN_OPTIONAL",
+ endOptional = "END_OPTIONAL",
+ beginParameter = "BEGIN_PARAMETER",
+ endParameter = "END_PARAMETER",
+ alternation = "ALTERNATION",
+ text = "TEXT"
+}
+//# sourceMappingURL=Ast.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts.map
new file mode 100644
index 0000000..4f00b05
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Ast.d.ts","sourceRoot":"","sources":["../../src/Ast.ts"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAcjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYlD;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,qBAAa,IAAI;IACf,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;gBAGlB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAa,EACtC,KAAK,EAAE,MAAkB,EACzB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM;IAeb,IAAI,IAAI,MAAM;CAMf;AAED,oBAAY,QAAQ;IAClB,IAAI,cAAc;IAClB,QAAQ,kBAAkB;IAC1B,WAAW,qBAAqB;IAChC,WAAW,qBAAqB;IAChC,SAAS,mBAAmB;IAC5B,UAAU,oBAAoB;CAC/B;AAED,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;gBAER,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAOrE,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAsB5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;CAmB5C;AAED,oBAAY,SAAS;IACnB,WAAW,kBAAkB;IAC7B,SAAS,gBAAgB;IACzB,UAAU,gBAAgB;IAC1B,aAAa,mBAAmB;IAChC,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;IAC9B,WAAW,gBAAgB;IAC3B,IAAI,SAAS;CACd"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js
new file mode 100644
index 0000000..491a512
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js
@@ -0,0 +1,135 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TokenType = exports.Token = exports.NodeType = exports.Node = exports.purposeOf = exports.symbolOf = void 0;
+const escapeCharacter = '\\';
+const alternationCharacter = '/';
+const beginParameterCharacter = '{';
+const endParameterCharacter = '}';
+const beginOptionalCharacter = '(';
+const endOptionalCharacter = ')';
+function symbolOf(token) {
+ switch (token) {
+ case TokenType.beginOptional:
+ return beginOptionalCharacter;
+ case TokenType.endOptional:
+ return endOptionalCharacter;
+ case TokenType.beginParameter:
+ return beginParameterCharacter;
+ case TokenType.endParameter:
+ return endParameterCharacter;
+ case TokenType.alternation:
+ return alternationCharacter;
+ }
+ return '';
+}
+exports.symbolOf = symbolOf;
+function purposeOf(token) {
+ switch (token) {
+ case TokenType.beginOptional:
+ case TokenType.endOptional:
+ return 'optional text';
+ case TokenType.beginParameter:
+ case TokenType.endParameter:
+ return 'a parameter';
+ case TokenType.alternation:
+ return 'alternation';
+ }
+ return '';
+}
+exports.purposeOf = purposeOf;
+class Node {
+ constructor(type, nodes = undefined, token = undefined, start, end) {
+ if (nodes === undefined && token === undefined) {
+ throw new Error('Either nodes or token must be defined');
+ }
+ if (nodes === null || token === null) {
+ throw new Error('Either nodes or token may not be null');
+ }
+ this.type = type;
+ this.nodes = nodes;
+ this.token = token;
+ this.start = start;
+ this.end = end;
+ }
+ text() {
+ if (this.nodes) {
+ return this.nodes.map((value) => value.text()).join('');
+ }
+ return this.token;
+ }
+}
+exports.Node = Node;
+var NodeType;
+(function (NodeType) {
+ NodeType["text"] = "TEXT_NODE";
+ NodeType["optional"] = "OPTIONAL_NODE";
+ NodeType["alternation"] = "ALTERNATION_NODE";
+ NodeType["alternative"] = "ALTERNATIVE_NODE";
+ NodeType["parameter"] = "PARAMETER_NODE";
+ NodeType["expression"] = "EXPRESSION_NODE";
+})(NodeType = exports.NodeType || (exports.NodeType = {}));
+class Token {
+ constructor(type, text, start, end) {
+ this.type = type;
+ this.text = text;
+ this.start = start;
+ this.end = end;
+ }
+ static isEscapeCharacter(codePoint) {
+ return codePoint == escapeCharacter;
+ }
+ static canEscape(codePoint) {
+ if (codePoint == ' ') {
+ // TODO: Unicode whitespace?
+ return true;
+ }
+ switch (codePoint) {
+ case escapeCharacter:
+ return true;
+ case alternationCharacter:
+ return true;
+ case beginParameterCharacter:
+ return true;
+ case endParameterCharacter:
+ return true;
+ case beginOptionalCharacter:
+ return true;
+ case endOptionalCharacter:
+ return true;
+ }
+ return false;
+ }
+ static typeOf(codePoint) {
+ if (codePoint == ' ') {
+ // TODO: Unicode whitespace?
+ return TokenType.whiteSpace;
+ }
+ switch (codePoint) {
+ case alternationCharacter:
+ return TokenType.alternation;
+ case beginParameterCharacter:
+ return TokenType.beginParameter;
+ case endParameterCharacter:
+ return TokenType.endParameter;
+ case beginOptionalCharacter:
+ return TokenType.beginOptional;
+ case endOptionalCharacter:
+ return TokenType.endOptional;
+ }
+ return TokenType.text;
+ }
+}
+exports.Token = Token;
+var TokenType;
+(function (TokenType) {
+ TokenType["startOfLine"] = "START_OF_LINE";
+ TokenType["endOfLine"] = "END_OF_LINE";
+ TokenType["whiteSpace"] = "WHITE_SPACE";
+ TokenType["beginOptional"] = "BEGIN_OPTIONAL";
+ TokenType["endOptional"] = "END_OPTIONAL";
+ TokenType["beginParameter"] = "BEGIN_PARAMETER";
+ TokenType["endParameter"] = "END_PARAMETER";
+ TokenType["alternation"] = "ALTERNATION";
+ TokenType["text"] = "TEXT";
+})(TokenType = exports.TokenType || (exports.TokenType = {}));
+//# sourceMappingURL=Ast.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js.map
new file mode 100644
index 0000000..bdbf322
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Ast.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Ast.js","sourceRoot":"","sources":["../../src/Ast.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts
new file mode 100644
index 0000000..090a890
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts
@@ -0,0 +1,10 @@
+import GeneratedExpression from './GeneratedExpression';
+import ParameterType from './ParameterType';
+export default class CombinatorialGeneratedExpressionFactory {
+ private readonly expressionTemplate;
+ private readonly parameterTypeCombinations;
+ constructor(expressionTemplate: string, parameterTypeCombinations: Array>>);
+ generateExpressions(): ReadonlyArray;
+ private generatePermutations;
+}
+//# sourceMappingURL=CombinatorialGeneratedExpressionFactory.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts.map
new file mode 100644
index 0000000..5b2f4b1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CombinatorialGeneratedExpressionFactory.d.ts","sourceRoot":"","sources":["../../src/CombinatorialGeneratedExpressionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAK3C,MAAM,CAAC,OAAO,OAAO,uCAAuC;IAExD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;gBADzB,kBAAkB,EAAE,MAAM,EAC1B,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAKvE,mBAAmB,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAMhE,OAAO,CAAC,oBAAoB;CA4B7B"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js
new file mode 100644
index 0000000..7cb8c7f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js
@@ -0,0 +1,41 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const GeneratedExpression_1 = __importDefault(require("./GeneratedExpression"));
+// 256 generated expressions ought to be enough for anybody
+const MAX_EXPRESSIONS = 256;
+class CombinatorialGeneratedExpressionFactory {
+ constructor(expressionTemplate, parameterTypeCombinations) {
+ this.expressionTemplate = expressionTemplate;
+ this.parameterTypeCombinations = parameterTypeCombinations;
+ this.expressionTemplate = expressionTemplate;
+ }
+ generateExpressions() {
+ const generatedExpressions = [];
+ this.generatePermutations(generatedExpressions, 0, []);
+ return generatedExpressions;
+ }
+ generatePermutations(generatedExpressions, depth, currentParameterTypes) {
+ if (generatedExpressions.length >= MAX_EXPRESSIONS) {
+ return;
+ }
+ if (depth === this.parameterTypeCombinations.length) {
+ generatedExpressions.push(new GeneratedExpression_1.default(this.expressionTemplate, currentParameterTypes));
+ return;
+ }
+ // tslint:disable-next-line:prefer-for-of
+ for (let i = 0; i < this.parameterTypeCombinations[depth].length; ++i) {
+ // Avoid recursion if no elements can be added.
+ if (generatedExpressions.length >= MAX_EXPRESSIONS) {
+ return;
+ }
+ const newCurrentParameterTypes = currentParameterTypes.slice(); // clone
+ newCurrentParameterTypes.push(this.parameterTypeCombinations[depth][i]);
+ this.generatePermutations(generatedExpressions, depth + 1, newCurrentParameterTypes);
+ }
+ }
+}
+exports.default = CombinatorialGeneratedExpressionFactory;
+//# sourceMappingURL=CombinatorialGeneratedExpressionFactory.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js.map
new file mode 100644
index 0000000..c950f1b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CombinatorialGeneratedExpressionFactory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CombinatorialGeneratedExpressionFactory.js","sourceRoot":"","sources":["../../src/CombinatorialGeneratedExpressionFactory.ts"],"names":[],"mappings":";;;;;AAAA,gFAAuD;AAGvD,2DAA2D;AAC3D,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B,MAAqB,uCAAuC;IAC1D,YACmB,kBAA0B,EAC1B,yBAA2D;QAD3D,uBAAkB,GAAlB,kBAAkB,CAAQ;QAC1B,8BAAyB,GAAzB,yBAAyB,CAAkC;QAE5E,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;IAC9C,CAAC;IAEM,mBAAmB;QACxB,MAAM,oBAAoB,GAA0B,EAAE,CAAA;QACtD,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACtD,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAEO,oBAAoB,CAC1B,oBAA2C,EAC3C,KAAa,EACb,qBAAgD;QAEhD,IAAI,oBAAoB,CAAC,MAAM,IAAI,eAAe,EAAE;YAClD,OAAM;SACP;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE;YACnD,oBAAoB,CAAC,IAAI,CACvB,IAAI,6BAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CACxE,CAAA;YACD,OAAM;SACP;QAED,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACrE,+CAA+C;YAC/C,IAAI,oBAAoB,CAAC,MAAM,IAAI,eAAe,EAAE;gBAClD,OAAM;aACP;YAED,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAA,CAAC,QAAQ;YACvE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACvE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAA;SACrF;IACH,CAAC;CACF;AA1CD,0DA0CC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts
new file mode 100644
index 0000000..70853ff
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts
@@ -0,0 +1,28 @@
+import ParameterTypeRegistry from './ParameterTypeRegistry';
+import Argument from './Argument';
+import Expression from './Expression';
+export default class CucumberExpression implements Expression {
+ private readonly expression;
+ private readonly parameterTypeRegistry;
+ private readonly parameterTypes;
+ private readonly treeRegexp;
+ /**
+ * @param expression
+ * @param parameterTypeRegistry
+ */
+ constructor(expression: string, parameterTypeRegistry: ParameterTypeRegistry);
+ private rewriteToRegex;
+ private static escapeRegex;
+ private rewriteOptional;
+ private rewriteAlternation;
+ private rewriteAlternative;
+ private rewriteParameter;
+ private rewriteExpression;
+ private assertNotEmpty;
+ private assertNoParameters;
+ private assertNoOptionals;
+ match(text: string): ReadonlyArray>;
+ get regexp(): RegExp;
+ get source(): string;
+}
+//# sourceMappingURL=CucumberExpression.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts.map
new file mode 100644
index 0000000..bfa121e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpression.d.ts","sourceRoot":"","sources":["../../src/CucumberExpression.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAG3D,OAAO,QAAQ,MAAM,YAAY,CAAA;AASjC,OAAO,UAAU,MAAM,cAAc,CAAA;AAOrC,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,UAAU;IASzD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IATxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;OAGG;gBAEgB,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,qBAAqB;IAQ/D,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IAUlB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAIxD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js
new file mode 100644
index 0000000..4dfb544
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js
@@ -0,0 +1,115 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const TreeRegexp_1 = __importDefault(require("./TreeRegexp"));
+const Argument_1 = __importDefault(require("./Argument"));
+const Errors_1 = require("./Errors");
+const CucumberExpressionParser_1 = __importDefault(require("./CucumberExpressionParser"));
+const Ast_1 = require("./Ast");
+const ESCAPE_PATTERN = () => /([\\^[({$.|?*+})\]])/g;
+class CucumberExpression {
+ /**
+ * @param expression
+ * @param parameterTypeRegistry
+ */
+ constructor(expression, parameterTypeRegistry) {
+ this.expression = expression;
+ this.parameterTypeRegistry = parameterTypeRegistry;
+ this.parameterTypes = [];
+ const parser = new CucumberExpressionParser_1.default();
+ const ast = parser.parse(expression);
+ const pattern = this.rewriteToRegex(ast);
+ this.treeRegexp = new TreeRegexp_1.default(pattern);
+ }
+ rewriteToRegex(node) {
+ switch (node.type) {
+ case Ast_1.NodeType.text:
+ return CucumberExpression.escapeRegex(node.text());
+ case Ast_1.NodeType.optional:
+ return this.rewriteOptional(node);
+ case Ast_1.NodeType.alternation:
+ return this.rewriteAlternation(node);
+ case Ast_1.NodeType.alternative:
+ return this.rewriteAlternative(node);
+ case Ast_1.NodeType.parameter:
+ return this.rewriteParameter(node);
+ case Ast_1.NodeType.expression:
+ return this.rewriteExpression(node);
+ default:
+ // Can't happen as long as the switch case is exhaustive
+ throw new Error(node.type);
+ }
+ }
+ static escapeRegex(expression) {
+ return expression.replace(ESCAPE_PATTERN(), '\\$1');
+ }
+ rewriteOptional(node) {
+ this.assertNoParameters(node, (astNode) => Errors_1.createParameterIsNotAllowedInOptional(astNode, this.expression));
+ this.assertNoOptionals(node, (astNode) => Errors_1.createOptionalIsNotAllowedInOptional(astNode, this.expression));
+ this.assertNotEmpty(node, (astNode) => Errors_1.createOptionalMayNotBeEmpty(astNode, this.expression));
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('');
+ return `(?:${regex})?`;
+ }
+ rewriteAlternation(node) {
+ // Make sure the alternative parts aren't empty and don't contain parameter types
+ node.nodes.forEach((alternative) => {
+ if (alternative.nodes.length == 0) {
+ throw Errors_1.createAlternativeMayNotBeEmpty(alternative, this.expression);
+ }
+ this.assertNotEmpty(alternative, (astNode) => Errors_1.createAlternativeMayNotExclusivelyContainOptionals(astNode, this.expression));
+ });
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('|');
+ return `(?:${regex})`;
+ }
+ rewriteAlternative(node) {
+ return node.nodes.map((lastNode) => this.rewriteToRegex(lastNode)).join('');
+ }
+ rewriteParameter(node) {
+ const name = node.text();
+ const parameterType = this.parameterTypeRegistry.lookupByTypeName(name);
+ if (!parameterType) {
+ throw Errors_1.createUndefinedParameterType(node, this.expression, name);
+ }
+ this.parameterTypes.push(parameterType);
+ const regexps = parameterType.regexpStrings;
+ if (regexps.length == 1) {
+ return `(${regexps[0]})`;
+ }
+ return `((?:${regexps.join(')|(?:')}))`;
+ }
+ rewriteExpression(node) {
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('');
+ return `^${regex}$`;
+ }
+ assertNotEmpty(node, createNodeWasNotEmptyException) {
+ const textNodes = node.nodes.filter((astNode) => Ast_1.NodeType.text == astNode.type);
+ if (textNodes.length == 0) {
+ throw createNodeWasNotEmptyException(node);
+ }
+ }
+ assertNoParameters(node, createNodeContainedAParameterError) {
+ const parameterNodes = node.nodes.filter((astNode) => Ast_1.NodeType.parameter == astNode.type);
+ if (parameterNodes.length > 0) {
+ throw createNodeContainedAParameterError(parameterNodes[0]);
+ }
+ }
+ assertNoOptionals(node, createNodeContainedAnOptionalError) {
+ const parameterNodes = node.nodes.filter((astNode) => Ast_1.NodeType.optional == astNode.type);
+ if (parameterNodes.length > 0) {
+ throw createNodeContainedAnOptionalError(parameterNodes[0]);
+ }
+ }
+ match(text) {
+ return Argument_1.default.build(this.treeRegexp, text, this.parameterTypes);
+ }
+ get regexp() {
+ return this.treeRegexp.regexp;
+ }
+ get source() {
+ return this.expression;
+ }
+}
+exports.default = CucumberExpression;
+//# sourceMappingURL=CucumberExpression.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js.map
new file mode 100644
index 0000000..592c655
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpression.js","sourceRoot":"","sources":["../../src/CucumberExpression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts
new file mode 100644
index 0000000..aab8693
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts
@@ -0,0 +1,3 @@
+export default class CucumberExpressionError extends Error {
+}
+//# sourceMappingURL=CucumberExpressionError.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts.map
new file mode 100644
index 0000000..0cba36e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionError.d.ts","sourceRoot":"","sources":["../../src/CucumberExpressionError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,KAAK;CAAG"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js
new file mode 100644
index 0000000..8e05987
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js
@@ -0,0 +1,6 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class CucumberExpressionError extends Error {
+}
+exports.default = CucumberExpressionError;
+//# sourceMappingURL=CucumberExpressionError.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js.map
new file mode 100644
index 0000000..211acf2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionError.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionError.js","sourceRoot":"","sources":["../../src/CucumberExpressionError.ts"],"names":[],"mappings":";;AAAA,MAAqB,uBAAwB,SAAQ,KAAK;CAAG;AAA7D,0CAA6D"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts
new file mode 100644
index 0000000..40fff96
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts
@@ -0,0 +1,14 @@
+import ParameterType from './ParameterType';
+import GeneratedExpression from './GeneratedExpression';
+export default class CucumberExpressionGenerator {
+ private readonly parameterTypes;
+ constructor(parameterTypes: () => Iterable>);
+ generateExpressions(text: string): ReadonlyArray;
+ /**
+ * @deprecated
+ */
+ generateExpression(text: string): GeneratedExpression;
+ private createParameterTypeMatchers;
+ private static createParameterTypeMatchers2;
+}
+//# sourceMappingURL=CucumberExpressionGenerator.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts.map
new file mode 100644
index 0000000..edceea3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionGenerator.d.ts","sourceRoot":"","sources":["../../src/CucumberExpressionGenerator.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAI3C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAExE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAgE5E;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAO5D,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,MAAM,CAAC,4BAA4B;CAW5C"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js
new file mode 100644
index 0000000..256e48a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js
@@ -0,0 +1,94 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const ParameterTypeMatcher_1 = __importDefault(require("./ParameterTypeMatcher"));
+const ParameterType_1 = __importDefault(require("./ParameterType"));
+const util_1 = __importDefault(require("util"));
+const CombinatorialGeneratedExpressionFactory_1 = __importDefault(require("./CombinatorialGeneratedExpressionFactory"));
+class CucumberExpressionGenerator {
+ constructor(parameterTypes) {
+ this.parameterTypes = parameterTypes;
+ }
+ generateExpressions(text) {
+ const parameterTypeCombinations = [];
+ const parameterTypeMatchers = this.createParameterTypeMatchers(text);
+ let expressionTemplate = '';
+ let pos = 0;
+ // eslint-disable-next-line no-constant-condition
+ while (true) {
+ let matchingParameterTypeMatchers = [];
+ for (const parameterTypeMatcher of parameterTypeMatchers) {
+ const advancedParameterTypeMatcher = parameterTypeMatcher.advanceTo(pos);
+ if (advancedParameterTypeMatcher.find) {
+ matchingParameterTypeMatchers.push(advancedParameterTypeMatcher);
+ }
+ }
+ if (matchingParameterTypeMatchers.length > 0) {
+ matchingParameterTypeMatchers = matchingParameterTypeMatchers.sort(ParameterTypeMatcher_1.default.compare);
+ // Find all the best parameter type matchers, they are all candidates.
+ const bestParameterTypeMatcher = matchingParameterTypeMatchers[0];
+ const bestParameterTypeMatchers = matchingParameterTypeMatchers.filter((m) => ParameterTypeMatcher_1.default.compare(m, bestParameterTypeMatcher) === 0);
+ // Build a list of parameter types without duplicates. The reason there
+ // might be duplicates is that some parameter types have more than one regexp,
+ // which means multiple ParameterTypeMatcher objects will have a reference to the
+ // same ParameterType.
+ // We're sorting the list so preferential parameter types are listed first.
+ // Users are most likely to want these, so they should be listed at the top.
+ let parameterTypes = [];
+ for (const parameterTypeMatcher of bestParameterTypeMatchers) {
+ if (parameterTypes.indexOf(parameterTypeMatcher.parameterType) === -1) {
+ parameterTypes.push(parameterTypeMatcher.parameterType);
+ }
+ }
+ parameterTypes = parameterTypes.sort(ParameterType_1.default.compare);
+ parameterTypeCombinations.push(parameterTypes);
+ expressionTemplate += escape(text.slice(pos, bestParameterTypeMatcher.start));
+ expressionTemplate += '{%s}';
+ pos = bestParameterTypeMatcher.start + bestParameterTypeMatcher.group.length;
+ }
+ else {
+ break;
+ }
+ if (pos >= text.length) {
+ break;
+ }
+ }
+ expressionTemplate += escape(text.slice(pos));
+ return new CombinatorialGeneratedExpressionFactory_1.default(expressionTemplate, parameterTypeCombinations).generateExpressions();
+ }
+ /**
+ * @deprecated
+ */
+ generateExpression(text) {
+ return util_1.default.deprecate(() => this.generateExpressions(text)[0], 'CucumberExpressionGenerator.generateExpression: Use CucumberExpressionGenerator.generateExpressions instead')();
+ }
+ createParameterTypeMatchers(text) {
+ let parameterMatchers = [];
+ for (const parameterType of this.parameterTypes()) {
+ if (parameterType.useForSnippets) {
+ parameterMatchers = parameterMatchers.concat(CucumberExpressionGenerator.createParameterTypeMatchers2(parameterType, text));
+ }
+ }
+ return parameterMatchers;
+ }
+ static createParameterTypeMatchers2(parameterType, text) {
+ // TODO: [].map
+ const result = [];
+ for (const regexp of parameterType.regexpStrings) {
+ result.push(new ParameterTypeMatcher_1.default(parameterType, regexp, text));
+ }
+ return result;
+ }
+}
+exports.default = CucumberExpressionGenerator;
+function escape(s) {
+ return s
+ .replace(/%/g, '%%') // for util.format
+ .replace(/\(/g, '\\(')
+ .replace(/{/g, '\\{')
+ .replace(/\//g, '\\/');
+}
+module.exports = CucumberExpressionGenerator;
+//# sourceMappingURL=CucumberExpressionGenerator.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js.map
new file mode 100644
index 0000000..2c4f001
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionGenerator.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionGenerator.js","sourceRoot":"","sources":["../../src/CucumberExpressionGenerator.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts
new file mode 100644
index 0000000..33624ef
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts
@@ -0,0 +1,5 @@
+import { Node } from './Ast';
+export default class CucumberExpressionParser {
+ parse(expression: string): Node;
+}
+//# sourceMappingURL=CucumberExpressionParser.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts.map
new file mode 100644
index 0000000..2da22fa
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionParser.d.ts","sourceRoot":"","sources":["../../src/CucumberExpressionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA8B,MAAM,OAAO,CAAA;AAmKxD,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAC3C,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAMhC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js
new file mode 100644
index 0000000..43d42c5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js
@@ -0,0 +1,240 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const Ast_1 = require("./Ast");
+const CucumberExpressionTokenizer_1 = __importDefault(require("./CucumberExpressionTokenizer"));
+const Errors_1 = require("./Errors");
+/*
+ * text := whitespace | ')' | '}' | .
+ */
+function parseText(expression, tokens, current) {
+ const token = tokens[current];
+ switch (token.type) {
+ case Ast_1.TokenType.whiteSpace:
+ case Ast_1.TokenType.text:
+ case Ast_1.TokenType.endParameter:
+ case Ast_1.TokenType.endOptional:
+ return {
+ consumed: 1,
+ ast: [new Ast_1.Node(Ast_1.NodeType.text, undefined, token.text, token.start, token.end)],
+ };
+ case Ast_1.TokenType.alternation:
+ throw Errors_1.createAlternationNotAllowedInOptional(expression, token);
+ case Ast_1.TokenType.startOfLine:
+ case Ast_1.TokenType.endOfLine:
+ case Ast_1.TokenType.beginOptional:
+ case Ast_1.TokenType.beginParameter:
+ default:
+ // If configured correctly this will never happen
+ return { consumed: 0 };
+ }
+}
+/*
+ * parameter := '{' + name* + '}'
+ */
+function parseName(expression, tokens, current) {
+ const token = tokens[current];
+ switch (token.type) {
+ case Ast_1.TokenType.whiteSpace:
+ case Ast_1.TokenType.text:
+ return {
+ consumed: 1,
+ ast: [new Ast_1.Node(Ast_1.NodeType.text, undefined, token.text, token.start, token.end)],
+ };
+ case Ast_1.TokenType.beginOptional:
+ case Ast_1.TokenType.endOptional:
+ case Ast_1.TokenType.beginParameter:
+ case Ast_1.TokenType.endParameter:
+ case Ast_1.TokenType.alternation:
+ throw Errors_1.createInvalidParameterTypeNameInNode(token, expression);
+ case Ast_1.TokenType.startOfLine:
+ case Ast_1.TokenType.endOfLine:
+ default:
+ // If configured correctly this will never happen
+ return { consumed: 0 };
+ }
+}
+/*
+ * parameter := '{' + text* + '}'
+ */
+const parseParameter = parseBetween(Ast_1.NodeType.parameter, Ast_1.TokenType.beginParameter, Ast_1.TokenType.endParameter, [parseName]);
+/*
+ * optional := '(' + option* + ')'
+ * option := optional | parameter | text
+ */
+const optionalSubParsers = [];
+const parseOptional = parseBetween(Ast_1.NodeType.optional, Ast_1.TokenType.beginOptional, Ast_1.TokenType.endOptional, optionalSubParsers);
+optionalSubParsers.push(parseOptional, parseParameter, parseText);
+/*
+ * alternation := alternative* + ( '/' + alternative* )+
+ */
+function parseAlternativeSeparator(expression, tokens, current) {
+ if (!lookingAt(tokens, current, Ast_1.TokenType.alternation)) {
+ return { consumed: 0 };
+ }
+ const token = tokens[current];
+ return {
+ consumed: 1,
+ ast: [new Ast_1.Node(Ast_1.NodeType.alternative, undefined, token.text, token.start, token.end)],
+ };
+}
+const alternativeParsers = [
+ parseAlternativeSeparator,
+ parseOptional,
+ parseParameter,
+ parseText,
+];
+/*
+ * alternation := (?<=left-boundary) + alternative* + ( '/' + alternative* )+ + (?=right-boundary)
+ * left-boundary := whitespace | } | ^
+ * right-boundary := whitespace | { | $
+ * alternative: = optional | parameter | text
+ */
+const parseAlternation = (expression, tokens, current) => {
+ const previous = current - 1;
+ if (!lookingAtAny(tokens, previous, [
+ Ast_1.TokenType.startOfLine,
+ Ast_1.TokenType.whiteSpace,
+ Ast_1.TokenType.endParameter,
+ ])) {
+ return { consumed: 0 };
+ }
+ const result = parseTokensUntil(expression, alternativeParsers, tokens, current, [
+ Ast_1.TokenType.whiteSpace,
+ Ast_1.TokenType.endOfLine,
+ Ast_1.TokenType.beginParameter,
+ ]);
+ const subCurrent = current + result.consumed;
+ if (!result.ast.some((astNode) => astNode.type == Ast_1.NodeType.alternative)) {
+ return { consumed: 0 };
+ }
+ const start = tokens[current].start;
+ const end = tokens[subCurrent].start;
+ // Does not consume right hand boundary token
+ return {
+ consumed: result.consumed,
+ ast: [
+ new Ast_1.Node(Ast_1.NodeType.alternation, splitAlternatives(start, end, result.ast), undefined, start, end),
+ ],
+ };
+};
+/*
+ * cucumber-expression := ( alternation | optional | parameter | text )*
+ */
+const parseCucumberExpression = parseBetween(Ast_1.NodeType.expression, Ast_1.TokenType.startOfLine, Ast_1.TokenType.endOfLine, [parseAlternation, parseOptional, parseParameter, parseText]);
+class CucumberExpressionParser {
+ parse(expression) {
+ const tokenizer = new CucumberExpressionTokenizer_1.default();
+ const tokens = tokenizer.tokenize(expression);
+ const result = parseCucumberExpression(expression, tokens, 0);
+ return result.ast[0];
+ }
+}
+exports.default = CucumberExpressionParser;
+function parseBetween(type, beginToken, endToken, parsers) {
+ return (expression, tokens, current) => {
+ if (!lookingAt(tokens, current, beginToken)) {
+ return { consumed: 0 };
+ }
+ let subCurrent = current + 1;
+ const result = parseTokensUntil(expression, parsers, tokens, subCurrent, [
+ endToken,
+ Ast_1.TokenType.endOfLine,
+ ]);
+ subCurrent += result.consumed;
+ // endToken not found
+ if (!lookingAt(tokens, subCurrent, endToken)) {
+ throw Errors_1.createMissingEndToken(expression, beginToken, endToken, tokens[current]);
+ }
+ // consumes endToken
+ const start = tokens[current].start;
+ const end = tokens[subCurrent].end;
+ const consumed = subCurrent + 1 - current;
+ const ast = [new Ast_1.Node(type, result.ast, undefined, start, end)];
+ return { consumed, ast };
+ };
+}
+function parseToken(expression, parsers, tokens, startAt) {
+ for (let i = 0; i < parsers.length; i++) {
+ const parse = parsers[i];
+ const result = parse(expression, tokens, startAt);
+ if (result.consumed != 0) {
+ return result;
+ }
+ }
+ // If configured correctly this will never happen
+ throw new Error('No eligible parsers for ' + tokens);
+}
+function parseTokensUntil(expression, parsers, tokens, startAt, endTokens) {
+ let current = startAt;
+ const size = tokens.length;
+ const ast = [];
+ while (current < size) {
+ if (lookingAtAny(tokens, current, endTokens)) {
+ break;
+ }
+ const result = parseToken(expression, parsers, tokens, current);
+ if (result.consumed == 0) {
+ // If configured correctly this will never happen
+ // Keep to avoid infinite loops
+ throw new Error('No eligible parsers for ' + tokens);
+ }
+ current += result.consumed;
+ ast.push(...result.ast);
+ }
+ return { consumed: current - startAt, ast };
+}
+function lookingAtAny(tokens, at, tokenTypes) {
+ return tokenTypes.some((tokenType) => lookingAt(tokens, at, tokenType));
+}
+function lookingAt(tokens, at, token) {
+ if (at < 0) {
+ // If configured correctly this will never happen
+ // Keep for completeness
+ return token == Ast_1.TokenType.startOfLine;
+ }
+ if (at >= tokens.length) {
+ return token == Ast_1.TokenType.endOfLine;
+ }
+ return tokens[at].type == token;
+}
+function splitAlternatives(start, end, alternation) {
+ const separators = [];
+ const alternatives = [];
+ let alternative = [];
+ alternation.forEach((n) => {
+ if (Ast_1.NodeType.alternative == n.type) {
+ separators.push(n);
+ alternatives.push(alternative);
+ alternative = [];
+ }
+ else {
+ alternative.push(n);
+ }
+ });
+ alternatives.push(alternative);
+ return createAlternativeNodes(start, end, separators, alternatives);
+}
+function createAlternativeNodes(start, end, separators, alternatives) {
+ const nodes = [];
+ for (let i = 0; i < alternatives.length; i++) {
+ const n = alternatives[i];
+ if (i == 0) {
+ const rightSeparator = separators[i];
+ nodes.push(new Ast_1.Node(Ast_1.NodeType.alternative, n, undefined, start, rightSeparator.start));
+ }
+ else if (i == alternatives.length - 1) {
+ const leftSeparator = separators[i - 1];
+ nodes.push(new Ast_1.Node(Ast_1.NodeType.alternative, n, undefined, leftSeparator.end, end));
+ }
+ else {
+ const leftSeparator = separators[i - 1];
+ const rightSeparator = separators[i];
+ nodes.push(new Ast_1.Node(Ast_1.NodeType.alternative, n, undefined, leftSeparator.end, rightSeparator.start));
+ }
+ }
+ return nodes;
+}
+//# sourceMappingURL=CucumberExpressionParser.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js.map
new file mode 100644
index 0000000..b2e15b8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionParser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionParser.js","sourceRoot":"","sources":["../../src/CucumberExpressionParser.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts
new file mode 100644
index 0000000..1f445be
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts
@@ -0,0 +1,5 @@
+import { Token } from './Ast';
+export default class CucumberExpressionTokenizer {
+ tokenize(expression: string): ReadonlyArray;
+}
+//# sourceMappingURL=CucumberExpressionTokenizer.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts.map
new file mode 100644
index 0000000..effec1c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTokenizer.d.ts","sourceRoot":"","sources":["../../src/CucumberExpressionTokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,OAAO,CAAA;AAGxC,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;CA4EnD"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js
new file mode 100644
index 0000000..77621cb
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js
@@ -0,0 +1,75 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const Ast_1 = require("./Ast");
+const Errors_1 = require("./Errors");
+class CucumberExpressionTokenizer {
+ tokenize(expression) {
+ const codePoints = Array.from(expression);
+ const tokens = [];
+ let buffer = [];
+ let previousTokenType = Ast_1.TokenType.startOfLine;
+ let treatAsText = false;
+ let escaped = 0;
+ let bufferStartIndex = 0;
+ function convertBufferToToken(tokenType) {
+ let escapeTokens = 0;
+ if (tokenType == Ast_1.TokenType.text) {
+ escapeTokens = escaped;
+ escaped = 0;
+ }
+ const consumedIndex = bufferStartIndex + buffer.length + escapeTokens;
+ const t = new Ast_1.Token(tokenType, buffer.join(''), bufferStartIndex, consumedIndex);
+ buffer = [];
+ bufferStartIndex = consumedIndex;
+ return t;
+ }
+ function tokenTypeOf(codePoint, treatAsText) {
+ if (!treatAsText) {
+ return Ast_1.Token.typeOf(codePoint);
+ }
+ if (Ast_1.Token.canEscape(codePoint)) {
+ return Ast_1.TokenType.text;
+ }
+ throw Errors_1.createCantEscaped(expression, bufferStartIndex + buffer.length + escaped);
+ }
+ function shouldCreateNewToken(previousTokenType, currentTokenType) {
+ if (currentTokenType != previousTokenType) {
+ return true;
+ }
+ return currentTokenType != Ast_1.TokenType.whiteSpace && currentTokenType != Ast_1.TokenType.text;
+ }
+ if (codePoints.length == 0) {
+ tokens.push(new Ast_1.Token(Ast_1.TokenType.startOfLine, '', 0, 0));
+ }
+ codePoints.forEach((codePoint) => {
+ if (!treatAsText && Ast_1.Token.isEscapeCharacter(codePoint)) {
+ escaped++;
+ treatAsText = true;
+ return;
+ }
+ const currentTokenType = tokenTypeOf(codePoint, treatAsText);
+ treatAsText = false;
+ if (shouldCreateNewToken(previousTokenType, currentTokenType)) {
+ const token = convertBufferToToken(previousTokenType);
+ previousTokenType = currentTokenType;
+ buffer.push(codePoint);
+ tokens.push(token);
+ }
+ else {
+ previousTokenType = currentTokenType;
+ buffer.push(codePoint);
+ }
+ });
+ if (buffer.length > 0) {
+ const token = convertBufferToToken(previousTokenType);
+ tokens.push(token);
+ }
+ if (treatAsText) {
+ throw Errors_1.createTheEndOfLIneCanNotBeEscaped(expression);
+ }
+ tokens.push(new Ast_1.Token(Ast_1.TokenType.endOfLine, '', codePoints.length, codePoints.length));
+ return tokens;
+ }
+}
+exports.default = CucumberExpressionTokenizer;
+//# sourceMappingURL=CucumberExpressionTokenizer.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js.map
new file mode 100644
index 0000000..c8c57a5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/CucumberExpressionTokenizer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTokenizer.js","sourceRoot":"","sources":["../../src/CucumberExpressionTokenizer.ts"],"names":[],"mappings":";;AAAA,+BAAwC;AACxC,qCAA+E;AAE/E,MAAqB,2BAA2B;IAC9C,QAAQ,CAAC,UAAkB;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,MAAM,MAAM,GAAiB,EAAE,CAAA;QAC/B,IAAI,MAAM,GAAkB,EAAE,CAAA;QAC9B,IAAI,iBAAiB,GAAG,eAAS,CAAC,WAAW,CAAA;QAC7C,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,gBAAgB,GAAG,CAAC,CAAA;QAExB,SAAS,oBAAoB,CAAC,SAAoB;YAChD,IAAI,YAAY,GAAG,CAAC,CAAA;YACpB,IAAI,SAAS,IAAI,eAAS,CAAC,IAAI,EAAE;gBAC/B,YAAY,GAAG,OAAO,CAAA;gBACtB,OAAO,GAAG,CAAC,CAAA;aACZ;YAED,MAAM,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,YAAY,CAAA;YACrE,MAAM,CAAC,GAAG,IAAI,WAAK,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;YAChF,MAAM,GAAG,EAAE,CAAA;YACX,gBAAgB,GAAG,aAAa,CAAA;YAChC,OAAO,CAAC,CAAA;QACV,CAAC;QAED,SAAS,WAAW,CAAC,SAAiB,EAAE,WAAoB;YAC1D,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,WAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC/B;YACD,IAAI,WAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAC9B,OAAO,eAAS,CAAC,IAAI,CAAA;aACtB;YACD,MAAM,0BAAiB,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;QACjF,CAAC;QAED,SAAS,oBAAoB,CAAC,iBAA4B,EAAE,gBAA2B;YACrF,IAAI,gBAAgB,IAAI,iBAAiB,EAAE;gBACzC,OAAO,IAAI,CAAA;aACZ;YACD,OAAO,gBAAgB,IAAI,eAAS,CAAC,UAAU,IAAI,gBAAgB,IAAI,eAAS,CAAC,IAAI,CAAA;QACvF,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,WAAK,CAAC,eAAS,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SACxD;QAED,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,IAAI,CAAC,WAAW,IAAI,WAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;gBACtD,OAAO,EAAE,CAAA;gBACT,WAAW,GAAG,IAAI,CAAA;gBAClB,OAAM;aACP;YACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YAC5D,WAAW,GAAG,KAAK,CAAA;YAEnB,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE;gBAC7D,MAAM,KAAK,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;gBACrD,iBAAiB,GAAG,gBAAgB,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACnB;iBAAM;gBACL,iBAAiB,GAAG,gBAAgB,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,KAAK,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SACnB;QAED,IAAI,WAAW,EAAE;YACf,MAAM,0CAAiC,CAAC,UAAU,CAAC,CAAA;SACpD;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,WAAK,CAAC,eAAS,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACrF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA7ED,8CA6EC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts
new file mode 100644
index 0000000..ec9e106
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts
@@ -0,0 +1,26 @@
+import ParameterType from './ParameterType';
+import GeneratedExpression from './GeneratedExpression';
+import { Node, Token, TokenType } from './Ast';
+import CucumberExpressionError from './CucumberExpressionError';
+export declare function createAlternativeMayNotExclusivelyContainOptionals(node: Node, expression: string): CucumberExpressionError;
+export declare function createAlternativeMayNotBeEmpty(node: Node, expression: string): CucumberExpressionError;
+export declare function createOptionalMayNotBeEmpty(node: Node, expression: string): CucumberExpressionError;
+export declare function createParameterIsNotAllowedInOptional(node: Node, expression: string): CucumberExpressionError;
+export declare function createOptionalIsNotAllowedInOptional(node: Node, expression: string): CucumberExpressionError;
+export declare function createTheEndOfLIneCanNotBeEscaped(expression: string): CucumberExpressionError;
+export declare function createMissingEndToken(expression: string, beginToken: TokenType, endToken: TokenType, current: Token): CucumberExpressionError;
+export declare function createAlternationNotAllowedInOptional(expression: string, current: Token): CucumberExpressionError;
+export declare function createCantEscaped(expression: string, index: number): CucumberExpressionError;
+export declare function createInvalidParameterTypeNameInNode(token: Token, expression: string): CucumberExpressionError;
+export declare class AmbiguousParameterTypeError extends CucumberExpressionError {
+ static forConstructor(keyName: string, keyValue: string, parameterTypes: ReadonlyArray>, generatedExpressions: ReadonlyArray): AmbiguousParameterTypeError;
+ static forRegExp(parameterTypeRegexp: string, expressionRegexp: RegExp, parameterTypes: ReadonlyArray>, generatedExpressions: ReadonlyArray): AmbiguousParameterTypeError;
+ static _parameterTypeNames(parameterTypes: ReadonlyArray>): string;
+ static _expressions(generatedExpressions: ReadonlyArray): string;
+}
+export declare class UndefinedParameterTypeError extends CucumberExpressionError {
+ readonly undefinedParameterTypeName: string;
+ constructor(undefinedParameterTypeName: string, message: string);
+}
+export declare function createUndefinedParameterType(node: Node, expression: string, undefinedParameterTypeName: string): UndefinedParameterTypeError;
+//# sourceMappingURL=Errors.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts.map
new file mode 100644
index 0000000..14a26a3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../src/Errors.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAW,IAAI,EAAuB,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5E,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAE/D,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAUzB;AACD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAUzB;AACD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAUzB;AACD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAUzB;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAUzB;AAED,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB,CAW7F;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,KAAK,2BAcf;AAED,wBAAgB,qCAAqC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,2BAUvF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,2BAUlE;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAUpF;AAqCD,qBAAa,2BAA4B,SAAQ,uBAAuB;WACxD,cAAc,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EACjD,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC;WAO5C,SAAS,CACrB,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EACjD,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC;WAiB5C,mBAAmB,CAAC,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;WAIrE,YAAY,CAAC,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC;CAGpF;AAED,qBAAa,2BAA4B,SAAQ,uBAAuB;aAC1C,0BAA0B,EAAE,MAAM;gBAAlC,0BAA0B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGhF;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,0BAA0B,EAAE,MAAM,+BAYnC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js
new file mode 100644
index 0000000..8fea306
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js
@@ -0,0 +1,115 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createUndefinedParameterType = exports.UndefinedParameterTypeError = exports.AmbiguousParameterTypeError = exports.createInvalidParameterTypeNameInNode = exports.createCantEscaped = exports.createAlternationNotAllowedInOptional = exports.createMissingEndToken = exports.createTheEndOfLIneCanNotBeEscaped = exports.createOptionalIsNotAllowedInOptional = exports.createParameterIsNotAllowedInOptional = exports.createOptionalMayNotBeEmpty = exports.createAlternativeMayNotBeEmpty = exports.createAlternativeMayNotExclusivelyContainOptionals = void 0;
+const Ast_1 = require("./Ast");
+const CucumberExpressionError_1 = __importDefault(require("./CucumberExpressionError"));
+function createAlternativeMayNotExclusivelyContainOptionals(node, expression) {
+ return new CucumberExpressionError_1.default(message(node.start, expression, pointAtLocated(node), 'An alternative may not exclusively contain optionals', "If you did not mean to use an optional you can use '\\(' to escape the the '('"));
+}
+exports.createAlternativeMayNotExclusivelyContainOptionals = createAlternativeMayNotExclusivelyContainOptionals;
+function createAlternativeMayNotBeEmpty(node, expression) {
+ return new CucumberExpressionError_1.default(message(node.start, expression, pointAtLocated(node), 'Alternative may not be empty', "If you did not mean to use an alternative you can use '\\/' to escape the the '/'"));
+}
+exports.createAlternativeMayNotBeEmpty = createAlternativeMayNotBeEmpty;
+function createOptionalMayNotBeEmpty(node, expression) {
+ return new CucumberExpressionError_1.default(message(node.start, expression, pointAtLocated(node), 'An optional must contain some text', "If you did not mean to use an optional you can use '\\(' to escape the the '('"));
+}
+exports.createOptionalMayNotBeEmpty = createOptionalMayNotBeEmpty;
+function createParameterIsNotAllowedInOptional(node, expression) {
+ return new CucumberExpressionError_1.default(message(node.start, expression, pointAtLocated(node), 'An optional may not contain a parameter type', "If you did not mean to use an parameter type you can use '\\{' to escape the the '{'"));
+}
+exports.createParameterIsNotAllowedInOptional = createParameterIsNotAllowedInOptional;
+function createOptionalIsNotAllowedInOptional(node, expression) {
+ return new CucumberExpressionError_1.default(message(node.start, expression, pointAtLocated(node), 'An optional may not contain an other optional', "If you did not mean to use an optional type you can use '\\(' to escape the the '('. For more complicated expressions consider using a regular expression instead."));
+}
+exports.createOptionalIsNotAllowedInOptional = createOptionalIsNotAllowedInOptional;
+function createTheEndOfLIneCanNotBeEscaped(expression) {
+ const index = Array.from(expression).length - 1;
+ return new CucumberExpressionError_1.default(message(index, expression, pointAt(index), 'The end of line can not be escaped', "You can use '\\\\' to escape the the '\\'"));
+}
+exports.createTheEndOfLIneCanNotBeEscaped = createTheEndOfLIneCanNotBeEscaped;
+function createMissingEndToken(expression, beginToken, endToken, current) {
+ const beginSymbol = Ast_1.symbolOf(beginToken);
+ const endSymbol = Ast_1.symbolOf(endToken);
+ const purpose = Ast_1.purposeOf(beginToken);
+ return new CucumberExpressionError_1.default(message(current.start, expression, pointAtLocated(current), `The '${beginSymbol}' does not have a matching '${endSymbol}'`, `If you did not intend to use ${purpose} you can use '\\${beginSymbol}' to escape the ${purpose}`));
+}
+exports.createMissingEndToken = createMissingEndToken;
+function createAlternationNotAllowedInOptional(expression, current) {
+ return new CucumberExpressionError_1.default(message(current.start, expression, pointAtLocated(current), 'An alternation can not be used inside an optional', "You can use '\\/' to escape the the '/'"));
+}
+exports.createAlternationNotAllowedInOptional = createAlternationNotAllowedInOptional;
+function createCantEscaped(expression, index) {
+ return new CucumberExpressionError_1.default(message(index, expression, pointAt(index), "Only the characters '{', '}', '(', ')', '\\', '/' and whitespace can be escaped", "If you did mean to use an '\\' you can use '\\\\' to escape it"));
+}
+exports.createCantEscaped = createCantEscaped;
+function createInvalidParameterTypeNameInNode(token, expression) {
+ return new CucumberExpressionError_1.default(message(token.start, expression, pointAtLocated(token), "Parameter names may not contain '{', '}', '(', ')', '\\' or '/'", 'Did you mean to use a regular expression?'));
+}
+exports.createInvalidParameterTypeNameInNode = createInvalidParameterTypeNameInNode;
+function message(index, expression, pointer, problem, solution) {
+ return `This Cucumber Expression has a problem at column ${index + 1}:
+
+${expression}
+${pointer}
+${problem}.
+${solution}`;
+}
+function pointAt(index) {
+ const pointer = [];
+ for (let i = 0; i < index; i++) {
+ pointer.push(' ');
+ }
+ pointer.push('^');
+ return pointer.join('');
+}
+function pointAtLocated(node) {
+ const pointer = [pointAt(node.start)];
+ if (node.start + 1 < node.end) {
+ for (let i = node.start + 1; i < node.end - 1; i++) {
+ pointer.push('-');
+ }
+ pointer.push('^');
+ }
+ return pointer.join('');
+}
+class AmbiguousParameterTypeError extends CucumberExpressionError_1.default {
+ static forConstructor(keyName, keyValue, parameterTypes, generatedExpressions) {
+ return new this(`parameter type with ${keyName}=${keyValue} is used by several parameter types: ${parameterTypes}, ${generatedExpressions}`);
+ }
+ static forRegExp(parameterTypeRegexp, expressionRegexp, parameterTypes, generatedExpressions) {
+ return new this(`Your Regular Expression ${expressionRegexp}
+matches multiple parameter types with regexp ${parameterTypeRegexp}:
+ ${this._parameterTypeNames(parameterTypes)}
+
+I couldn't decide which one to use. You have two options:
+
+1) Use a Cucumber Expression instead of a Regular Expression. Try one of these:
+ ${this._expressions(generatedExpressions)}
+
+2) Make one of the parameter types preferential and continue to use a Regular Expression.
+`);
+ }
+ static _parameterTypeNames(parameterTypes) {
+ return parameterTypes.map((p) => `{${p.name}}`).join('\n ');
+ }
+ static _expressions(generatedExpressions) {
+ return generatedExpressions.map((e) => e.source).join('\n ');
+ }
+}
+exports.AmbiguousParameterTypeError = AmbiguousParameterTypeError;
+class UndefinedParameterTypeError extends CucumberExpressionError_1.default {
+ constructor(undefinedParameterTypeName, message) {
+ super(message);
+ this.undefinedParameterTypeName = undefinedParameterTypeName;
+ }
+}
+exports.UndefinedParameterTypeError = UndefinedParameterTypeError;
+function createUndefinedParameterType(node, expression, undefinedParameterTypeName) {
+ return new UndefinedParameterTypeError(undefinedParameterTypeName, message(node.start, expression, pointAtLocated(node), `Undefined parameter type '${undefinedParameterTypeName}'`, `Please register a ParameterType for '${undefinedParameterTypeName}'`));
+}
+exports.createUndefinedParameterType = createUndefinedParameterType;
+//# sourceMappingURL=Errors.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js.map
new file mode 100644
index 0000000..6dc14d3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Errors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Errors.js","sourceRoot":"","sources":["../../src/Errors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts
new file mode 100644
index 0000000..15349ab
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts
@@ -0,0 +1,6 @@
+import Argument from './Argument';
+export default interface Expression {
+ readonly source: string;
+ match(text: string): ReadonlyArray>;
+}
+//# sourceMappingURL=Expression.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts.map
new file mode 100644
index 0000000..0c4feaf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../src/Expression.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAA;AAEjC,MAAM,CAAC,OAAO,WAAW,UAAU;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;CAClD"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js
new file mode 100644
index 0000000..c50f625
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=Expression.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js.map
new file mode 100644
index 0000000..9a24dbc
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Expression.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../src/Expression.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts
new file mode 100644
index 0000000..bf011a9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts
@@ -0,0 +1,8 @@
+import Expression from './Expression';
+import ParameterTypeRegistry from './ParameterTypeRegistry';
+export default class ExpressionFactory {
+ private readonly parameterTypeRegistry;
+ constructor(parameterTypeRegistry: ParameterTypeRegistry);
+ createExpression(expression: string | RegExp): Expression;
+}
+//# sourceMappingURL=ExpressionFactory.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts.map
new file mode 100644
index 0000000..dee94fe
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionFactory.d.ts","sourceRoot":"","sources":["../../src/ExpressionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAA;AAGrC,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACjB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAEzE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU;CAKjE"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js
new file mode 100644
index 0000000..62eb572
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js
@@ -0,0 +1,19 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const CucumberExpression_1 = __importDefault(require("./CucumberExpression"));
+const RegularExpression_1 = __importDefault(require("./RegularExpression"));
+class ExpressionFactory {
+ constructor(parameterTypeRegistry) {
+ this.parameterTypeRegistry = parameterTypeRegistry;
+ }
+ createExpression(expression) {
+ return typeof expression === 'string'
+ ? new CucumberExpression_1.default(expression, this.parameterTypeRegistry)
+ : new RegularExpression_1.default(expression, this.parameterTypeRegistry);
+ }
+}
+exports.default = ExpressionFactory;
+//# sourceMappingURL=ExpressionFactory.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js.map
new file mode 100644
index 0000000..7dd5b86
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ExpressionFactory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionFactory.js","sourceRoot":"","sources":["../../src/ExpressionFactory.ts"],"names":[],"mappings":";;;;;AACA,8EAAqD;AACrD,4EAAmD;AAGnD,MAAqB,iBAAiB;IACpC,YAAoC,qBAA4C;QAA5C,0BAAqB,GAArB,qBAAqB,CAAuB;IAAG,CAAC;IAE7E,gBAAgB,CAAC,UAA2B;QACjD,OAAO,OAAO,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,4BAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAChE,CAAC,CAAC,IAAI,2BAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACnE,CAAC;CACF;AARD,oCAQC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts
new file mode 100644
index 0000000..18f8502
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts
@@ -0,0 +1,14 @@
+import ParameterType from './ParameterType';
+export default class GeneratedExpression {
+ private readonly expressionTemplate;
+ readonly parameterTypes: ReadonlyArray>;
+ constructor(expressionTemplate: string, parameterTypes: ReadonlyArray>);
+ get source(): string;
+ /**
+ * Returns an array of parameter names to use in generated function/method signatures
+ *
+ * @returns {ReadonlyArray.}
+ */
+ get parameterNames(): ReadonlyArray;
+}
+//# sourceMappingURL=GeneratedExpression.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts.map
new file mode 100644
index 0000000..7624b38
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"GeneratedExpression.d.ts","sourceRoot":"","sources":["../../src/GeneratedExpression.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;aACnB,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBADhD,kBAAkB,EAAE,MAAM,EAC3B,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAGnE,IAAI,MAAM,WAET;IAED;;;;OAIG;IACH,IAAI,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC,CAG1C;CACF"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js
new file mode 100644
index 0000000..71514b7
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js
@@ -0,0 +1,32 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const util_1 = __importDefault(require("util"));
+class GeneratedExpression {
+ constructor(expressionTemplate, parameterTypes) {
+ this.expressionTemplate = expressionTemplate;
+ this.parameterTypes = parameterTypes;
+ }
+ get source() {
+ return util_1.default.format(this.expressionTemplate, ...this.parameterTypes.map((t) => t.name));
+ }
+ /**
+ * Returns an array of parameter names to use in generated function/method signatures
+ *
+ * @returns {ReadonlyArray.}
+ */
+ get parameterNames() {
+ const usageByTypeName = {};
+ return this.parameterTypes.map((t) => getParameterName(t.name, usageByTypeName));
+ }
+}
+exports.default = GeneratedExpression;
+function getParameterName(typeName, usageByTypeName) {
+ let count = usageByTypeName[typeName];
+ count = count ? count + 1 : 1;
+ usageByTypeName[typeName] = count;
+ return count === 1 ? typeName : `${typeName}${count}`;
+}
+//# sourceMappingURL=GeneratedExpression.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js.map
new file mode 100644
index 0000000..764bc3a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GeneratedExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GeneratedExpression.js","sourceRoot":"","sources":["../../src/GeneratedExpression.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AAGvB,MAAqB,mBAAmB;IACtC,YACmB,kBAA0B,EAC3B,cAAiD;QADhD,uBAAkB,GAAlB,kBAAkB,CAAQ;QAC3B,mBAAc,GAAd,cAAc,CAAmC;IAChE,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO,cAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACxF,CAAC;IAED;;;;OAIG;IACH,IAAI,cAAc;QAChB,MAAM,eAAe,GAA8B,EAAE,CAAA;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAClF,CAAC;CACF;AAnBD,sCAmBC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,eAA0C;IACpF,IAAI,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,eAAe,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;IAEjC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAA;AACvD,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts
new file mode 100644
index 0000000..8d0ed85
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts
@@ -0,0 +1,9 @@
+export default class Group {
+ readonly value: string | undefined;
+ readonly start: number;
+ readonly end: number;
+ readonly children: ReadonlyArray;
+ constructor(value: string | undefined, start: number, end: number, children: ReadonlyArray);
+ get values(): string[];
+}
+//# sourceMappingURL=Group.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts.map
new file mode 100644
index 0000000..967b5c6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../src/Group.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;aAEN,KAAK,EAAE,MAAM,GAAG,SAAS;aACzB,KAAK,EAAE,MAAM;aACb,GAAG,EAAE,MAAM;aACX,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;gBAH9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;IAGhD,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;CACF"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js
new file mode 100644
index 0000000..e92ee44
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class Group {
+ constructor(value, start, end, children) {
+ this.value = value;
+ this.start = start;
+ this.end = end;
+ this.children = children;
+ }
+ get values() {
+ return (this.children.length === 0 ? [this] : this.children).map((g) => g.value);
+ }
+}
+exports.default = Group;
+//# sourceMappingURL=Group.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js.map
new file mode 100644
index 0000000..9570136
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/Group.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Group.js","sourceRoot":"","sources":["../../src/Group.ts"],"names":[],"mappings":";;AAAA,MAAqB,KAAK;IACxB,YACkB,KAAyB,EACzB,KAAa,EACb,GAAW,EACX,QAA8B;QAH9B,UAAK,GAAL,KAAK,CAAoB;QACzB,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAsB;IAC7C,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClF,CAAC;CACF;AAXD,wBAWC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts
new file mode 100644
index 0000000..beb7a67
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts
@@ -0,0 +1,13 @@
+import Group from './Group';
+import RegexExecArray from './RegexExecArray';
+export default class GroupBuilder {
+ source: string;
+ capturing: boolean;
+ private readonly groupBuilders;
+ add(groupBuilder: GroupBuilder): void;
+ build(match: RegexExecArray, nextGroupIndex: () => number): Group;
+ setNonCapturing(): void;
+ get children(): GroupBuilder[];
+ moveChildrenTo(groupBuilder: GroupBuilder): void;
+}
+//# sourceMappingURL=GroupBuilder.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts.map
new file mode 100644
index 0000000..1bd548e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupBuilder.d.ts","sourceRoot":"","sources":["../../src/GroupBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,OAAO,YAAY;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,UAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAE5C,GAAG,CAAC,YAAY,EAAE,YAAY;IAI9B,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,MAAM,GAAG,KAAK;IAWjE,eAAe;IAItB,IAAI,QAAQ,mBAEX;IAEM,cAAc,CAAC,YAAY,EAAE,YAAY;CAGjD"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js
new file mode 100644
index 0000000..3abd879
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js
@@ -0,0 +1,31 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const Group_1 = __importDefault(require("./Group"));
+class GroupBuilder {
+ constructor() {
+ this.capturing = true;
+ this.groupBuilders = [];
+ }
+ add(groupBuilder) {
+ this.groupBuilders.push(groupBuilder);
+ }
+ build(match, nextGroupIndex) {
+ const groupIndex = nextGroupIndex();
+ const children = this.groupBuilders.map((gb) => gb.build(match, nextGroupIndex));
+ return new Group_1.default(match[groupIndex] || undefined, match.index[groupIndex], match.index[groupIndex] + (match[groupIndex] || '').length, children);
+ }
+ setNonCapturing() {
+ this.capturing = false;
+ }
+ get children() {
+ return this.groupBuilders;
+ }
+ moveChildrenTo(groupBuilder) {
+ this.groupBuilders.forEach((child) => groupBuilder.add(child));
+ }
+}
+exports.default = GroupBuilder;
+//# sourceMappingURL=GroupBuilder.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js.map
new file mode 100644
index 0000000..6274545
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/GroupBuilder.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupBuilder.js","sourceRoot":"","sources":["../../src/GroupBuilder.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAG3B,MAAqB,YAAY;IAAjC;QAES,cAAS,GAAG,IAAI,CAAA;QACN,kBAAa,GAAmB,EAAE,CAAA;IA4BrD,CAAC;IA1BQ,GAAG,CAAC,YAA0B;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,KAAqB,EAAE,cAA4B;QAC9D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAA;QAChF,OAAO,IAAI,eAAK,CACd,KAAK,CAAC,UAAU,CAAC,IAAI,SAAS,EAC9B,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EACvB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAC1D,QAAQ,CACT,CAAA;IACH,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAEM,cAAc,CAAC,YAA0B;QAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC;CACF;AA/BD,+BA+BC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts
new file mode 100644
index 0000000..8423ac5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts
@@ -0,0 +1,22 @@
+export default class ParameterType {
+ readonly name: string;
+ private readonly type;
+ readonly useForSnippets: boolean;
+ readonly preferForRegexpMatch: boolean;
+ private transformFn;
+ static compare(pt1: ParameterType, pt2: ParameterType): number;
+ static checkParameterTypeName(typeName: string): void;
+ static isValidParameterTypeName(typeName: string): boolean;
+ regexpStrings: ReadonlyArray;
+ /**
+ * @param name {String} the name of the type
+ * @param regexps {Array.,RegExp,Array.,String} that matches the type
+ * @param type {Function} the prototype (constructor) of the type. May be null.
+ * @param transform {Function} function transforming string to another type. May be null.
+ * @param useForSnippets {boolean} true if this should be used for snippets. Defaults to true.
+ * @param preferForRegexpMatch {boolean} true if this is a preferential type. Defaults to false.
+ */
+ constructor(name: string, regexps: ReadonlyArray | ReadonlyArray | RegExp | string, type: any, transform: (...match: string[]) => T, useForSnippets: boolean, preferForRegexpMatch: boolean);
+ transform(thisObj: any, groupValues: string[]): any;
+}
+//# sourceMappingURL=ParameterType.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts.map
new file mode 100644
index 0000000..a42e306
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterType.d.ts","sourceRoot":"","sources":["../../src/ParameterType.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC;aAqChB,IAAI,EAAE,MAAM;IAE5B,OAAO,CAAC,QAAQ,CAAC,IAAI;aAEL,cAAc,EAAE,OAAO;aACvB,oBAAoB,EAAE,OAAO;IAzC/C,OAAO,CAAC,WAAW,CAAoC;WAEzC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;WAUxD,sBAAsB,CAAC,QAAQ,EAAE,MAAM;WAQvC,wBAAwB,CAAC,QAAQ,EAAE,MAAM;IAKhD,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAE3C;;;;;;;OAOG;gBAEe,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,EACvD,IAAI,EAAE,GAAG,EAC1B,SAAS,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACpB,cAAc,EAAE,OAAO,EACvB,oBAAoB,EAAE,OAAO;IAoBxC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE;CAGrD"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js
new file mode 100644
index 0000000..55564e9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js
@@ -0,0 +1,93 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const CucumberExpressionError_1 = __importDefault(require("./CucumberExpressionError"));
+const ILLEGAL_PARAMETER_NAME_PATTERN = /([[\]()$.|?*+])/;
+const UNESCAPE_PATTERN = () => /(\\([[$.|?*+\]]))/g;
+class ParameterType {
+ /**
+ * @param name {String} the name of the type
+ * @param regexps {Array.,RegExp,Array.,String} that matches the type
+ * @param type {Function} the prototype (constructor) of the type. May be null.
+ * @param transform {Function} function transforming string to another type. May be null.
+ * @param useForSnippets {boolean} true if this should be used for snippets. Defaults to true.
+ * @param preferForRegexpMatch {boolean} true if this is a preferential type. Defaults to false.
+ */
+ constructor(name, regexps, type, transform, useForSnippets, preferForRegexpMatch) {
+ this.name = name;
+ this.type = type;
+ this.useForSnippets = useForSnippets;
+ this.preferForRegexpMatch = preferForRegexpMatch;
+ if (transform === undefined) {
+ transform = (s) => s;
+ }
+ if (useForSnippets === undefined) {
+ this.useForSnippets = true;
+ }
+ if (preferForRegexpMatch === undefined) {
+ this.preferForRegexpMatch = false;
+ }
+ if (name) {
+ ParameterType.checkParameterTypeName(name);
+ }
+ this.regexpStrings = stringArray(regexps);
+ this.transformFn = transform;
+ }
+ static compare(pt1, pt2) {
+ if (pt1.preferForRegexpMatch && !pt2.preferForRegexpMatch) {
+ return -1;
+ }
+ if (pt2.preferForRegexpMatch && !pt1.preferForRegexpMatch) {
+ return 1;
+ }
+ return pt1.name.localeCompare(pt2.name);
+ }
+ static checkParameterTypeName(typeName) {
+ if (!this.isValidParameterTypeName(typeName)) {
+ throw new CucumberExpressionError_1.default(`Illegal character in parameter name {${typeName}}. Parameter names may not contain '{', '}', '(', ')', '\\' or '/'`);
+ }
+ }
+ static isValidParameterTypeName(typeName) {
+ const unescapedTypeName = typeName.replace(UNESCAPE_PATTERN(), '$2');
+ return !unescapedTypeName.match(ILLEGAL_PARAMETER_NAME_PATTERN);
+ }
+ transform(thisObj, groupValues) {
+ return this.transformFn.apply(thisObj, groupValues);
+ }
+}
+exports.default = ParameterType;
+function stringArray(regexps) {
+ // @ts-ignore
+ const array = Array.isArray(regexps) ? regexps : [regexps];
+ return array.map((r) => (r instanceof RegExp ? regexpSource(r) : r));
+}
+function regexpSource(regexp) {
+ const flags = regexpFlags(regexp);
+ for (const flag of ['g', 'i', 'm', 'y']) {
+ if (flags.indexOf(flag) !== -1) {
+ throw new CucumberExpressionError_1.default(`ParameterType Regexps can't use flag '${flag}'`);
+ }
+ }
+ return regexp.source;
+}
+// Backport RegExp.flags for Node 4.x
+// https://github.com/nodejs/node/issues/8390
+function regexpFlags(regexp) {
+ let flags = regexp.flags;
+ if (flags === undefined) {
+ flags = '';
+ if (regexp.ignoreCase) {
+ flags += 'i';
+ }
+ if (regexp.global) {
+ flags += 'g';
+ }
+ if (regexp.multiline) {
+ flags += 'm';
+ }
+ }
+ return flags;
+}
+//# sourceMappingURL=ParameterType.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js.map
new file mode 100644
index 0000000..c8f1b34
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterType.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterType.js","sourceRoot":"","sources":["../../src/ParameterType.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts
new file mode 100644
index 0000000..d3e5ecd
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts
@@ -0,0 +1,18 @@
+import ParameterType from './ParameterType';
+export default class ParameterTypeMatcher {
+ readonly parameterType: ParameterType;
+ private readonly regexpString;
+ private readonly text;
+ private matchPosition;
+ private readonly match;
+ constructor(parameterType: ParameterType, regexpString: string, text: string, matchPosition?: number);
+ advanceTo(newMatchPosition: number): ParameterTypeMatcher;
+ get find(): boolean | RegExpMatchArray;
+ get start(): number;
+ get fullWord(): boolean | RegExpMatchArray;
+ get matchStartWord(): true | RegExpMatchArray;
+ get matchEndWord(): true | RegExpMatchArray;
+ get group(): string;
+ static compare(a: ParameterTypeMatcher, b: ParameterTypeMatcher): number;
+}
+//# sourceMappingURL=ParameterTypeMatcher.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts.map
new file mode 100644
index 0000000..89cb540
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeMatcher.d.ts","sourceRoot":"","sources":["../../src/ParameterTypeMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,OAAO,OAAO,oBAAoB;aAIrB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAGrB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,EAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACrB,aAAa,GAAE,MAAU;IAM5B,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAsBzC,IAAI,IAAI,+BAEP;IAED,IAAI,KAAK,WAER;IAED,IAAI,QAAQ,+BAEX;IAED,IAAI,cAAc,4BAEjB;IAED,IAAI,YAAY,4BAMf;IAED,IAAI,KAAK,WAER;WAEa,OAAO,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,oBAAoB;CAWvE"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js
new file mode 100644
index 0000000..1403ee8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js
@@ -0,0 +1,55 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class ParameterTypeMatcher {
+ constructor(parameterType, regexpString, text, matchPosition = 0) {
+ this.parameterType = parameterType;
+ this.regexpString = regexpString;
+ this.text = text;
+ this.matchPosition = matchPosition;
+ const captureGroupRegexp = new RegExp(`(${regexpString})`);
+ this.match = captureGroupRegexp.exec(text.slice(this.matchPosition));
+ }
+ advanceTo(newMatchPosition) {
+ for (let advancedPos = newMatchPosition; advancedPos < this.text.length; advancedPos++) {
+ const matcher = new ParameterTypeMatcher(this.parameterType, this.regexpString, this.text, advancedPos);
+ if (matcher.find) {
+ return matcher;
+ }
+ }
+ return new ParameterTypeMatcher(this.parameterType, this.regexpString, this.text, this.text.length);
+ }
+ get find() {
+ return this.match && this.group !== '' && this.fullWord;
+ }
+ get start() {
+ return this.matchPosition + this.match.index;
+ }
+ get fullWord() {
+ return this.matchStartWord && this.matchEndWord;
+ }
+ get matchStartWord() {
+ return this.start === 0 || this.text[this.start - 1].match(/\p{Z}|\p{P}|\p{S}/u);
+ }
+ get matchEndWord() {
+ const nextCharacterIndex = this.start + this.group.length;
+ return (nextCharacterIndex === this.text.length ||
+ this.text[nextCharacterIndex].match(/\p{Z}|\p{P}|\p{S}/u));
+ }
+ get group() {
+ return this.match[0];
+ }
+ static compare(a, b) {
+ const posComparison = a.start - b.start;
+ if (posComparison !== 0) {
+ return posComparison;
+ }
+ const lengthComparison = b.group.length - a.group.length;
+ if (lengthComparison !== 0) {
+ return lengthComparison;
+ }
+ return 0;
+ }
+}
+exports.default = ParameterTypeMatcher;
+module.exports = ParameterTypeMatcher;
+//# sourceMappingURL=ParameterTypeMatcher.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js.map
new file mode 100644
index 0000000..172587d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeMatcher.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeMatcher.js","sourceRoot":"","sources":["../../src/ParameterTypeMatcher.ts"],"names":[],"mappings":";;AAEA,MAAqB,oBAAoB;IAGvC,YACkB,aAAiC,EAChC,YAAoB,EACpB,IAAY,EACrB,gBAAwB,CAAC;QAHjB,kBAAa,GAAb,aAAa,CAAoB;QAChC,iBAAY,GAAZ,YAAY,CAAQ;QACpB,SAAI,GAAJ,IAAI,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAAY;QAEjC,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IACtE,CAAC;IAEM,SAAS,CAAC,gBAAwB;QACvC,KAAK,IAAI,WAAW,GAAG,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YACtF,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,EACT,WAAW,CACZ,CAAA;YAED,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,OAAO,CAAA;aACf;SACF;QAED,OAAO,IAAI,oBAAoB,CAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,MAAM,CACjB,CAAA;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAA;IACzD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAA;IACjD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,YAAY;QACd,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QACzD,OAAO,CACL,kBAAkB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YACvC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAC1D,CAAA;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,CAAuB,EAAE,CAAuB;QACpE,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;QACvC,IAAI,aAAa,KAAK,CAAC,EAAE;YACvB,OAAO,aAAa,CAAA;SACrB;QACD,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;QACxD,IAAI,gBAAgB,KAAK,CAAC,EAAE;YAC1B,OAAO,gBAAgB,CAAA;SACxB;QACD,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AA1ED,uCA0EC;AAED,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts
new file mode 100644
index 0000000..5654996
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts
@@ -0,0 +1,16 @@
+import ParameterType from './ParameterType';
+export default class ParameterTypeRegistry {
+ static readonly INTEGER_REGEXPS: RegExp[];
+ static readonly FLOAT_REGEXP: RegExp;
+ static readonly WORD_REGEXP: RegExp;
+ static readonly STRING_REGEXP: RegExp;
+ static readonly ANONYMOUS_REGEXP: RegExp;
+ private readonly parameterTypeByName;
+ private readonly parameterTypesByRegexp;
+ constructor();
+ get parameterTypes(): IterableIterator>;
+ lookupByTypeName(typeName: string): ParameterType;
+ lookupByRegexp(parameterTypeRegexp: string, expressionRegexp: RegExp, text: string): ParameterType;
+ defineParameterType(parameterType: ParameterType): void;
+}
+//# sourceMappingURL=ParameterTypeRegistry.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts.map
new file mode 100644
index 0000000..829a078
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeRegistry.d.ts","sourceRoot":"","sources":["../../src/ParameterTypeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAM3C,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,gBAAuB,eAAe,WAAmB;IACzD,gBAAuB,YAAY,SAA4D;IAC/F,gBAAuB,WAAW,SAAW;IAC7C,gBAAuB,aAAa,SAAsD;IAC1F,gBAAuB,gBAAgB,SAAO;IAE9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA+C;;IAyCtF,IAAI,cAAc,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAEzD;IAEM,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAIjC,cAAc,CACnB,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,GACX,aAAa,CAAC,GAAG,CAAC;IAsBd,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC;CAqC7D"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js
new file mode 100644
index 0000000..e2792ba
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js
@@ -0,0 +1,78 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const ParameterType_1 = __importDefault(require("./ParameterType"));
+const CucumberExpressionGenerator_1 = __importDefault(require("./CucumberExpressionGenerator"));
+const Errors_1 = require("./Errors");
+const CucumberExpressionError_1 = __importDefault(require("./CucumberExpressionError"));
+class ParameterTypeRegistry {
+ constructor() {
+ this.parameterTypeByName = new Map();
+ this.parameterTypesByRegexp = new Map();
+ this.defineParameterType(new ParameterType_1.default('int', ParameterTypeRegistry.INTEGER_REGEXPS, Number, (s) => (s === undefined ? null : Number(s)), true, true));
+ this.defineParameterType(new ParameterType_1.default('float', ParameterTypeRegistry.FLOAT_REGEXP, Number, (s) => (s === undefined ? null : parseFloat(s)), true, false));
+ this.defineParameterType(new ParameterType_1.default('word', ParameterTypeRegistry.WORD_REGEXP, String, (s) => s, false, false));
+ this.defineParameterType(new ParameterType_1.default('string', ParameterTypeRegistry.STRING_REGEXP, String, (s1, s2) => (s1 || s2 || '').replace(/\\"/g, '"').replace(/\\'/g, "'"), true, false));
+ this.defineParameterType(new ParameterType_1.default('', ParameterTypeRegistry.ANONYMOUS_REGEXP, String, (s) => s, false, true));
+ }
+ get parameterTypes() {
+ return this.parameterTypeByName.values();
+ }
+ lookupByTypeName(typeName) {
+ return this.parameterTypeByName.get(typeName);
+ }
+ lookupByRegexp(parameterTypeRegexp, expressionRegexp, text) {
+ const parameterTypes = this.parameterTypesByRegexp.get(parameterTypeRegexp);
+ if (!parameterTypes) {
+ return null;
+ }
+ if (parameterTypes.length > 1 && !parameterTypes[0].preferForRegexpMatch) {
+ // We don't do this check on insertion because we only want to restrict
+ // ambiguity when we look up by Regexp. Users of CucumberExpression should
+ // not be restricted.
+ const generatedExpressions = new CucumberExpressionGenerator_1.default(() => this.parameterTypes).generateExpressions(text);
+ throw Errors_1.AmbiguousParameterTypeError.forRegExp(parameterTypeRegexp, expressionRegexp, parameterTypes, generatedExpressions);
+ }
+ return parameterTypes[0];
+ }
+ defineParameterType(parameterType) {
+ if (parameterType.name !== undefined) {
+ if (this.parameterTypeByName.has(parameterType.name)) {
+ if (parameterType.name.length === 0) {
+ throw new Error(`The anonymous parameter type has already been defined`);
+ }
+ else {
+ throw new Error(`There is already a parameter type with name ${parameterType.name}`);
+ }
+ }
+ this.parameterTypeByName.set(parameterType.name, parameterType);
+ }
+ for (const parameterTypeRegexp of parameterType.regexpStrings) {
+ if (!this.parameterTypesByRegexp.has(parameterTypeRegexp)) {
+ this.parameterTypesByRegexp.set(parameterTypeRegexp, []);
+ }
+ const parameterTypes = this.parameterTypesByRegexp.get(parameterTypeRegexp);
+ const existingParameterType = parameterTypes[0];
+ if (parameterTypes.length > 0 &&
+ existingParameterType.preferForRegexpMatch &&
+ parameterType.preferForRegexpMatch) {
+ throw new CucumberExpressionError_1.default('There can only be one preferential parameter type per regexp. ' +
+ `The regexp /${parameterTypeRegexp}/ is used for two preferential parameter types, {${existingParameterType.name}} and {${parameterType.name}}`);
+ }
+ if (parameterTypes.indexOf(parameterType) === -1) {
+ parameterTypes.push(parameterType);
+ this.parameterTypesByRegexp.set(parameterTypeRegexp, parameterTypes.sort(ParameterType_1.default.compare));
+ }
+ }
+ }
+}
+exports.default = ParameterTypeRegistry;
+ParameterTypeRegistry.INTEGER_REGEXPS = [/-?\d+/, /\d+/];
+ParameterTypeRegistry.FLOAT_REGEXP = /(?=.*\d.*)[-+]?\d*(?:\.(?=\d.*))?\d*(?:\d+[E][+-]?\d+)?/;
+ParameterTypeRegistry.WORD_REGEXP = /[^\s]+/;
+ParameterTypeRegistry.STRING_REGEXP = /"([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'/;
+ParameterTypeRegistry.ANONYMOUS_REGEXP = /.*/;
+module.exports = ParameterTypeRegistry;
+//# sourceMappingURL=ParameterTypeRegistry.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js.map
new file mode 100644
index 0000000..25c71b9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/ParameterTypeRegistry.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeRegistry.js","sourceRoot":"","sources":["../../src/ParameterTypeRegistry.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts
new file mode 100644
index 0000000..e92067a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts
@@ -0,0 +1,5 @@
+export default interface RegexExecArray extends ReadonlyArray {
+ index: ReadonlyArray;
+ input: string;
+}
+//# sourceMappingURL=RegexExecArray.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts.map
new file mode 100644
index 0000000..5a2723b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegexExecArray.d.ts","sourceRoot":"","sources":["../../src/RegexExecArray.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,cAAe,SAAQ,aAAa,CAAC,MAAM,CAAC;IACnE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;CACd"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js
new file mode 100644
index 0000000..32211a3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=RegexExecArray.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js.map
new file mode 100644
index 0000000..858f520
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegexExecArray.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegexExecArray.js","sourceRoot":"","sources":["../../src/RegexExecArray.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts
new file mode 100644
index 0000000..8937341
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts
@@ -0,0 +1,12 @@
+import Argument from './Argument';
+import ParameterTypeRegistry from './ParameterTypeRegistry';
+import Expression from './Expression';
+export default class RegularExpression implements Expression {
+ readonly regexp: RegExp;
+ private readonly parameterTypeRegistry;
+ private readonly treeRegexp;
+ constructor(regexp: RegExp, parameterTypeRegistry: ParameterTypeRegistry);
+ match(text: string): ReadonlyArray>;
+ get source(): string;
+}
+//# sourceMappingURL=RegularExpression.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts.map
new file mode 100644
index 0000000..75cd279
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegularExpression.d.ts","sourceRoot":"","sources":["../../src/RegularExpression.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAA;AAGjC,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,UAAU;aAIxC,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAJxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAGrB,MAAM,EAAE,MAAM,EACb,qBAAqB,EAAE,qBAAqB;IAKxD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAoBxD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js
new file mode 100644
index 0000000..dfe95f2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js
@@ -0,0 +1,28 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const Argument_1 = __importDefault(require("./Argument"));
+const TreeRegexp_1 = __importDefault(require("./TreeRegexp"));
+const ParameterType_1 = __importDefault(require("./ParameterType"));
+class RegularExpression {
+ constructor(regexp, parameterTypeRegistry) {
+ this.regexp = regexp;
+ this.parameterTypeRegistry = parameterTypeRegistry;
+ this.treeRegexp = new TreeRegexp_1.default(regexp);
+ }
+ match(text) {
+ const parameterTypes = this.treeRegexp.groupBuilder.children.map((groupBuilder) => {
+ const parameterTypeRegexp = groupBuilder.source;
+ return (this.parameterTypeRegistry.lookupByRegexp(parameterTypeRegexp, this.regexp, text) ||
+ new ParameterType_1.default(null, parameterTypeRegexp, String, (s) => (s === undefined ? null : s), false, false));
+ });
+ return Argument_1.default.build(this.treeRegexp, text, parameterTypes);
+ }
+ get source() {
+ return this.regexp.source;
+ }
+}
+exports.default = RegularExpression;
+//# sourceMappingURL=RegularExpression.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js.map
new file mode 100644
index 0000000..363542c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/RegularExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegularExpression.js","sourceRoot":"","sources":["../../src/RegularExpression.ts"],"names":[],"mappings":";;;;;AAAA,0DAAiC;AACjC,8DAAqC;AACrC,oEAA2C;AAI3C,MAAqB,iBAAiB;IAGpC,YACkB,MAAc,EACb,qBAA4C;QAD7C,WAAM,GAAN,MAAM,CAAQ;QACb,0BAAqB,GAArB,qBAAqB,CAAuB;QAE7D,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAEM,KAAK,CAAC,IAAY;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YAChF,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAA;YAE/C,OAAO,CACL,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;gBACjF,IAAI,uBAAa,CACf,IAAI,EACJ,mBAAmB,EACnB,MAAM,EACN,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,KAAK,EACL,KAAK,CACN,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,kBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;CACF;AAjCD,oCAiCC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts
new file mode 100644
index 0000000..0532a6c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts
@@ -0,0 +1,12 @@
+import GroupBuilder from './GroupBuilder';
+import Group from './Group';
+export default class TreeRegexp {
+ regexp: RegExp;
+ private regex;
+ groupBuilder: GroupBuilder;
+ constructor(regexp: RegExp | string);
+ private static createGroupBuilder;
+ private static isNonCapturing;
+ match(s: string): Group | null;
+}
+//# sourceMappingURL=TreeRegexp.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts.map
new file mode 100644
index 0000000..0b33173
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TreeRegexp.d.ts","sourceRoot":"","sources":["../../src/TreeRegexp.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAIzC,OAAO,KAAK,MAAM,SAAS,CAAA;AAE3B,MAAM,CAAC,OAAO,OAAO,UAAU;IACtB,MAAM,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,KAAK,CAAK;IACX,YAAY,EAAE,YAAY,CAAA;gBAErB,MAAM,EAAE,MAAM,GAAG,MAAM;IAMnC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAoCjC,OAAO,CAAC,MAAM,CAAC,cAAc;IAgBtB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;CAStC"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js
new file mode 100644
index 0000000..f67b37b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js
@@ -0,0 +1,79 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const GroupBuilder_1 = __importDefault(require("./GroupBuilder"));
+// @ts-ignore
+const becke_ch__regex__s0_0_v1__base__pl__lib_1 = __importDefault(require("becke-ch--regex--s0-0-v1--base--pl--lib"));
+class TreeRegexp {
+ constructor(regexp) {
+ this.regexp = 'string' === typeof regexp ? new RegExp(regexp) : regexp;
+ this.regex = new becke_ch__regex__s0_0_v1__base__pl__lib_1.default(this.regexp.source, this.regexp.flags);
+ this.groupBuilder = TreeRegexp.createGroupBuilder(this.regex);
+ }
+ static createGroupBuilder(regexp) {
+ const source = regexp.source;
+ const stack = [new GroupBuilder_1.default()];
+ const groupStartStack = [];
+ let escaping = false;
+ let charClass = false;
+ for (let i = 0; i < source.length; i++) {
+ const c = source[i];
+ if (c === '[' && !escaping) {
+ charClass = true;
+ }
+ else if (c === ']' && !escaping) {
+ charClass = false;
+ }
+ else if (c === '(' && !escaping && !charClass) {
+ groupStartStack.push(i);
+ const nonCapturing = TreeRegexp.isNonCapturing(source, i);
+ const groupBuilder = new GroupBuilder_1.default();
+ if (nonCapturing) {
+ groupBuilder.setNonCapturing();
+ }
+ stack.push(groupBuilder);
+ }
+ else if (c === ')' && !escaping && !charClass) {
+ const gb = stack.pop();
+ const groupStart = groupStartStack.pop();
+ if (gb.capturing) {
+ gb.source = source.substring(groupStart + 1, i);
+ stack[stack.length - 1].add(gb);
+ }
+ else {
+ gb.moveChildrenTo(stack[stack.length - 1]);
+ }
+ }
+ escaping = c === '\\' && !escaping;
+ }
+ return stack.pop();
+ }
+ static isNonCapturing(source, i) {
+ // Regex is valid. Bounds check not required.
+ if (source[i + 1] != '?') {
+ // (X)
+ return false;
+ }
+ if (source[i + 2] != '<') {
+ // (?:X)
+ // (?=X)
+ // (?!X)
+ return true;
+ }
+ // (?<=X) or (?X)
+ return source[i + 3] == '=' || source[i + 3] == '!';
+ }
+ match(s) {
+ const match = this.regex.exec(s);
+ if (!match) {
+ return null;
+ }
+ let groupIndex = 0;
+ const nextGroupIndex = () => groupIndex++;
+ return this.groupBuilder.build(match, nextGroupIndex);
+ }
+}
+exports.default = TreeRegexp;
+//# sourceMappingURL=TreeRegexp.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js.map
new file mode 100644
index 0000000..9742421
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/TreeRegexp.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TreeRegexp.js","sourceRoot":"","sources":["../../src/TreeRegexp.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts
new file mode 100644
index 0000000..1f8a1c4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts
@@ -0,0 +1,12 @@
+import Argument from './Argument';
+import Expression from './Expression';
+import CucumberExpression from './CucumberExpression';
+import RegularExpression from './RegularExpression';
+import Group from './Group';
+import ExpressionFactory from './ExpressionFactory';
+import CucumberExpressionGenerator from './CucumberExpressionGenerator';
+import ParameterTypeRegistry from './ParameterTypeRegistry';
+import ParameterType from './ParameterType';
+import GeneratedExpression from './GeneratedExpression';
+export { Argument, Group, Expression, CucumberExpression, RegularExpression, ExpressionFactory, CucumberExpressionGenerator, GeneratedExpression, ParameterTypeRegistry, ParameterType, };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts.map
new file mode 100644
index 0000000..d2540ec
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,kBAAkB,MAAM,sBAAsB,CAAA;AACrD,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,2BAA2B,MAAM,+BAA+B,CAAA;AACvE,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EACL,QAAQ,EACR,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GACd,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/index.js b/node_modules/@cucumber/cucumber-expressions/dist/src/index.js
new file mode 100644
index 0000000..f661b2b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/index.js
@@ -0,0 +1,25 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ParameterType = exports.ParameterTypeRegistry = exports.GeneratedExpression = exports.CucumberExpressionGenerator = exports.ExpressionFactory = exports.RegularExpression = exports.CucumberExpression = exports.Group = exports.Argument = void 0;
+const Argument_1 = __importDefault(require("./Argument"));
+exports.Argument = Argument_1.default;
+const CucumberExpression_1 = __importDefault(require("./CucumberExpression"));
+exports.CucumberExpression = CucumberExpression_1.default;
+const RegularExpression_1 = __importDefault(require("./RegularExpression"));
+exports.RegularExpression = RegularExpression_1.default;
+const Group_1 = __importDefault(require("./Group"));
+exports.Group = Group_1.default;
+const ExpressionFactory_1 = __importDefault(require("./ExpressionFactory"));
+exports.ExpressionFactory = ExpressionFactory_1.default;
+const CucumberExpressionGenerator_1 = __importDefault(require("./CucumberExpressionGenerator"));
+exports.CucumberExpressionGenerator = CucumberExpressionGenerator_1.default;
+const ParameterTypeRegistry_1 = __importDefault(require("./ParameterTypeRegistry"));
+exports.ParameterTypeRegistry = ParameterTypeRegistry_1.default;
+const ParameterType_1 = __importDefault(require("./ParameterType"));
+exports.ParameterType = ParameterType_1.default;
+const GeneratedExpression_1 = __importDefault(require("./GeneratedExpression"));
+exports.GeneratedExpression = GeneratedExpression_1.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/index.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/index.js.map
new file mode 100644
index 0000000..930c2a0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAiC;AAY/B,mBAZK,kBAAQ,CAYL;AAVV,8EAAqD;AAanD,6BAbK,4BAAkB,CAaL;AAZpB,4EAAmD;AAajD,4BAbK,2BAAiB,CAaL;AAZnB,oDAA2B;AASzB,gBATK,eAAK,CASL;AARP,4EAAmD;AAYjD,4BAZK,2BAAiB,CAYL;AAXnB,gGAAuE;AAYrE,sCAZK,qCAA2B,CAYL;AAX7B,oFAA2D;AAazD,gCAbK,+BAAqB,CAaL;AAZvB,oEAA2C;AAazC,wBAbK,uBAAa,CAaL;AAZf,gFAAuD;AAUrD,8BAVK,6BAAmB,CAUL"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts
new file mode 100644
index 0000000..a0b0097
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=web.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts.map
new file mode 100644
index 0000000..c322a37
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/web.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/web.js b/node_modules/@cucumber/cucumber-expressions/dist/src/web.js
new file mode 100644
index 0000000..b194b9e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/web.js
@@ -0,0 +1,25 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const CucumberExpressions = __importStar(require("./index"));
+// @ts-ignore
+window.CucumberExpressions = CucumberExpressions;
+//# sourceMappingURL=web.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/src/web.js.map b/node_modules/@cucumber/cucumber-expressions/dist/src/web.js.map
new file mode 100644
index 0000000..bf05af9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/src/web.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAE9C,aAAa;AACb,MAAM,CAAC,mBAAmB,GAAG,mBAAmB,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts
new file mode 100644
index 0000000..713608c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=ArgumentTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts.map
new file mode 100644
index 0000000..caad73f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ArgumentTest.d.ts","sourceRoot":"","sources":["../../test/ArgumentTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js
new file mode 100644
index 0000000..91904df
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js
@@ -0,0 +1,40 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const TreeRegexp_1 = __importDefault(require("../src/TreeRegexp"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+const Argument_1 = __importDefault(require("../src/Argument"));
+const assert = __importStar(require("assert"));
+describe('Argument', () => {
+ it('exposes getParameterTypeName()', () => {
+ const treeRegexp = new TreeRegexp_1.default('three (.*) mice');
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ const args = Argument_1.default.build(treeRegexp, 'three blind mice', [
+ parameterTypeRegistry.lookupByTypeName('string'),
+ ]);
+ const argument = args[0];
+ assert.strictEqual(argument.getParameterType().name, 'string');
+ });
+});
+//# sourceMappingURL=ArgumentTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js.map
new file mode 100644
index 0000000..9918227
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ArgumentTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ArgumentTest.js","sourceRoot":"","sources":["../../test/ArgumentTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA0C;AAC1C,yFAAgE;AAChE,+DAAsC;AACtC,+CAAgC;AAEhC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,iBAAiB,CAAC,CAAA;QACpD,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;QACzD,MAAM,IAAI,GAAG,kBAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE;YAC1D,qBAAqB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts
new file mode 100644
index 0000000..a906692
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CombinatorialGeneratedExpressionFactoryTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts.map
new file mode 100644
index 0000000..d724d24
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CombinatorialGeneratedExpressionFactoryTest.d.ts","sourceRoot":"","sources":["../../test/CombinatorialGeneratedExpressionFactoryTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js
new file mode 100644
index 0000000..8d923e1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js
@@ -0,0 +1,34 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+const CombinatorialGeneratedExpressionFactory_1 = __importDefault(require("../src/CombinatorialGeneratedExpressionFactory"));
+describe('CucumberExpressionGenerator', () => {
+ it('generates multiple expressions', () => {
+ const parameterTypeCombinations = [
+ [
+ new ParameterType_1.default('color', /red|blue|yellow/, null, (s) => s, false, true),
+ new ParameterType_1.default('csscolor', /red|blue|yellow/, null, (s) => s, false, true),
+ ],
+ [
+ new ParameterType_1.default('date', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ new ParameterType_1.default('datetime', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ new ParameterType_1.default('timestamp', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ ],
+ ];
+ const factory = new CombinatorialGeneratedExpressionFactory_1.default('I bought a {%s} ball on {%s}', parameterTypeCombinations);
+ const expressions = factory.generateExpressions().map((ge) => ge.source);
+ assert_1.default.deepStrictEqual(expressions, [
+ 'I bought a {color} ball on {date}',
+ 'I bought a {color} ball on {datetime}',
+ 'I bought a {color} ball on {timestamp}',
+ 'I bought a {csscolor} ball on {date}',
+ 'I bought a {csscolor} ball on {datetime}',
+ 'I bought a {csscolor} ball on {timestamp}',
+ ]);
+ });
+});
+//# sourceMappingURL=CombinatorialGeneratedExpressionFactoryTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js.map
new file mode 100644
index 0000000..8509277
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CombinatorialGeneratedExpressionFactoryTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CombinatorialGeneratedExpressionFactoryTest.js","sourceRoot":"","sources":["../../test/CombinatorialGeneratedExpressionFactoryTest.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,yEAAgD;AAChD,6HAAoG;AAEpG,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,yBAAyB,GAAG;YAChC;gBACE,IAAI,uBAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;gBAC1E,IAAI,uBAAa,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;aAC9E;YACD;gBACE,IAAI,uBAAa,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;gBAC3E,IAAI,uBAAa,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;gBAC/E,IAAI,uBAAa,CAAC,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;aACjF;SACF,CAAA;QAED,MAAM,OAAO,GAAG,IAAI,iDAAuC,CACzD,8BAA8B,EAC9B,yBAAyB,CAC1B,CAAA;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QACxE,gBAAM,CAAC,eAAe,CAAC,WAAW,EAAE;YAClC,mCAAmC;YACnC,uCAAuC;YACvC,wCAAwC;YACxC,sCAAsC;YACtC,0CAA0C;YAC1C,2CAA2C;SAC5C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts
new file mode 100644
index 0000000..f959dbd
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CucumberExpressionGeneratorTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts.map
new file mode 100644
index 0000000..44317c1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionGeneratorTest.d.ts","sourceRoot":"","sources":["../../test/CucumberExpressionGeneratorTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js
new file mode 100644
index 0000000..a337a07
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js
@@ -0,0 +1,158 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpressionGenerator_1 = __importDefault(require("../src/CucumberExpressionGenerator"));
+const CucumberExpression_1 = __importDefault(require("../src/CucumberExpression"));
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+class Currency {
+ constructor(s) {
+ this.s = s;
+ }
+}
+describe('CucumberExpressionGenerator', () => {
+ let parameterTypeRegistry;
+ let generator;
+ function assertExpression(expectedExpression, expectedArgumentNames, text) {
+ const generatedExpression = generator.generateExpressions(text)[0];
+ assert_1.default.deepStrictEqual(generatedExpression.parameterNames, expectedArgumentNames);
+ assert_1.default.strictEqual(generatedExpression.source, expectedExpression);
+ const cucumberExpression = new CucumberExpression_1.default(generatedExpression.source, parameterTypeRegistry);
+ const match = cucumberExpression.match(text);
+ if (match === null) {
+ assert_1.default.fail(`Expected text '${text}' to match generated expression '${generatedExpression.source}'`);
+ }
+ assert_1.default.strictEqual(match.length, expectedArgumentNames.length);
+ }
+ beforeEach(() => {
+ parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ generator = new CucumberExpressionGenerator_1.default(() => parameterTypeRegistry.parameterTypes);
+ });
+ it('documents expression generation', () => {
+ parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ generator = new CucumberExpressionGenerator_1.default(() => parameterTypeRegistry.parameterTypes);
+ const undefinedStepText = 'I have 2 cucumbers and 1.5 tomato';
+ const generatedExpression = generator.generateExpressions(undefinedStepText)[0];
+ assert_1.default.strictEqual(generatedExpression.source, 'I have {int} cucumbers and {float} tomato');
+ assert_1.default.strictEqual(generatedExpression.parameterNames[0], 'int');
+ assert_1.default.strictEqual(generatedExpression.parameterTypes[1].name, 'float');
+ });
+ it('generates expression for no args', () => {
+ assertExpression('hello', [], 'hello');
+ });
+ it('generates expression with escaped left parenthesis', () => {
+ assertExpression('\\(iii)', [], '(iii)');
+ });
+ it('generates expression with escaped left curly brace', () => {
+ assertExpression('\\{iii}', [], '{iii}');
+ });
+ it('generates expression with escaped slashes', () => {
+ assertExpression('The {int}\\/{int}\\/{int} hey', ['int', 'int2', 'int3'], 'The 1814/05/17 hey');
+ });
+ it('generates expression for int float arg', () => {
+ assertExpression('I have {int} cukes and {float} euro', ['int', 'float'], 'I have 2 cukes and 1.5 euro');
+ });
+ it('generates expression for strings', () => {
+ assertExpression('I like {string} and {string}', ['string', 'string2'], 'I like "bangers" and \'mash\'');
+ });
+ it('generates expression with % sign', () => {
+ assertExpression('I am {int}%% foobar', ['int'], 'I am 20%% foobar');
+ });
+ it('generates expression for just int', () => {
+ assertExpression('{int}', ['int'], '99999');
+ });
+ it('numbers only second argument when builtin type is not reserved keyword', () => {
+ assertExpression('I have {float} cukes and {float} euro', ['float', 'float2'], 'I have 2.5 cukes and 1.5 euro');
+ });
+ it('generates expression for custom type', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('currency', /[A-Z]{3}/, Currency, (s) => new Currency(s), true, false));
+ assertExpression('I have a {currency} account', ['currency'], 'I have a EUR account');
+ });
+ it('prefers leftmost match when there is overlap', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('currency', /c d/, Currency, (s) => new Currency(s), true, false));
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('date', /b c/, Date, (s) => new Date(s), true, false));
+ assertExpression('a {date} d e f g', ['date'], 'a b c d e f g');
+ });
+ // TODO: prefers widest match
+ it('generates all combinations of expressions when several parameter types match', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('currency', /x/, null, (s) => new Currency(s), true, false));
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('date', /x/, null, (s) => new Date(s), true, false));
+ const generatedExpressions = generator.generateExpressions('I have x and x and another x');
+ const expressions = generatedExpressions.map((e) => e.source);
+ assert_1.default.deepStrictEqual(expressions, [
+ 'I have {currency} and {currency} and another {currency}',
+ 'I have {currency} and {currency} and another {date}',
+ 'I have {currency} and {date} and another {currency}',
+ 'I have {currency} and {date} and another {date}',
+ 'I have {date} and {currency} and another {currency}',
+ 'I have {date} and {currency} and another {date}',
+ 'I have {date} and {date} and another {currency}',
+ 'I have {date} and {date} and another {date}',
+ ]);
+ });
+ it('exposes parameter type names in generated expression', () => {
+ const expression = generator.generateExpressions('I have 2 cukes and 1.5 euro')[0];
+ const typeNames = expression.parameterTypes.map((parameter) => parameter.name);
+ assert_1.default.deepStrictEqual(typeNames, ['int', 'float']);
+ });
+ it('matches parameter types with optional capture groups', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('optional-flight', /(1st flight)?/, null, (s) => s, true, false));
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('optional-hotel', /(1 hotel)?/, null, (s) => s, true, false));
+ const expression = generator.generateExpressions('I reach Stage 4: 1st flight -1 hotel')[0];
+ // While you would expect this to be `I reach Stage {int}: {optional-flight} -{optional-hotel}` the `-1` causes
+ // {int} to match just before {optional-hotel}.
+ assert_1.default.strictEqual(expression.source, 'I reach Stage {int}: {optional-flight} {int} hotel');
+ });
+ it('generates at most 256 expressions', () => {
+ for (let i = 0; i < 4; i++) {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('my-type-' + i, /([a-z] )*?[a-z]/, null, (s) => s, true, false));
+ }
+ // This would otherwise generate 4^11=419430 expressions and consume just shy of 1.5GB.
+ const expressions = generator.generateExpressions('a s i m p l e s t e p');
+ assert_1.default.strictEqual(expressions.length, 256);
+ });
+ it('prefers expression with longest non empty match', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('zero-or-more', /[a-z]*/, null, (s) => s, true, false));
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('exactly-one', /[a-z]/, null, (s) => s, true, false));
+ const expressions = generator.generateExpressions('a simple step');
+ assert_1.default.strictEqual(expressions.length, 2);
+ assert_1.default.strictEqual(expressions[0].source, '{exactly-one} {zero-or-more} {zero-or-more}');
+ assert_1.default.strictEqual(expressions[1].source, '{zero-or-more} {zero-or-more} {zero-or-more}');
+ });
+ it('does not suggest parameter included at the beginning of a word', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('direction', /(up|down)/, null, (s) => s, true, false));
+ const expressions = generator.generateExpressions('I download a picture');
+ assert_1.default.strictEqual(expressions.length, 1);
+ assert_1.default.notStrictEqual(expressions[0].source, 'I {direction}load a picture');
+ assert_1.default.strictEqual(expressions[0].source, 'I download a picture');
+ });
+ it('does not suggest parameter included inside a word', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('direction', /(up|down)/, null, (s) => s, true, false));
+ const expressions = generator.generateExpressions('I watch the muppet show');
+ assert_1.default.strictEqual(expressions.length, 1);
+ assert_1.default.notStrictEqual(expressions[0].source, 'I watch the m{direction}pet show');
+ assert_1.default.strictEqual(expressions[0].source, 'I watch the muppet show');
+ });
+ it('does not suggest parameter at the end of a word', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('direction', /(up|down)/, null, (s) => s, true, false));
+ const expressions = generator.generateExpressions('I create a group');
+ assert_1.default.strictEqual(expressions.length, 1);
+ assert_1.default.notStrictEqual(expressions[0].source, 'I create a gro{direction}');
+ assert_1.default.strictEqual(expressions[0].source, 'I create a group');
+ });
+ it('does suggest parameter that are a full word', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('direction', /(up|down)/, null, (s) => s, true, false));
+ assert_1.default.strictEqual(generator.generateExpressions('When I go down the road')[0].source, 'When I go {direction} the road');
+ assert_1.default.strictEqual(generator.generateExpressions('When I walk up the hill')[0].source, 'When I walk {direction} the hill');
+ assert_1.default.strictEqual(generator.generateExpressions('up the hill, the road goes down')[0].source, '{direction} the hill, the road goes {direction}');
+ });
+ it('does not consider punctuation as being part of a word', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('direction', /(up|down)/, null, (s) => s, true, false));
+ assert_1.default.strictEqual(generator.generateExpressions('direction is:down')[0].source, 'direction is:{direction}');
+ assert_1.default.strictEqual(generator.generateExpressions('direction is down.')[0].source, 'direction is {direction}.');
+ });
+});
+//# sourceMappingURL=CucumberExpressionGeneratorTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js.map
new file mode 100644
index 0000000..5e33960
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionGeneratorTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionGeneratorTest.js","sourceRoot":"","sources":["../../test/CucumberExpressionGeneratorTest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts
new file mode 100644
index 0000000..7d0e84e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CucumberExpressionParserTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts.map
new file mode 100644
index 0000000..062ba48
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionParserTest.d.ts","sourceRoot":"","sources":["../../test/CucumberExpressionParserTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js
new file mode 100644
index 0000000..b89813a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js
@@ -0,0 +1,30 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = __importDefault(require("fs"));
+const js_yaml_1 = __importDefault(require("js-yaml"));
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpressionParser_1 = __importDefault(require("../src/CucumberExpressionParser"));
+const CucumberExpressionError_1 = __importDefault(require("../src/CucumberExpressionError"));
+describe('Cucumber expression parser', () => {
+ fs_1.default.readdirSync('testdata/ast').forEach((testcase) => {
+ const testCaseData = fs_1.default.readFileSync(`testdata/ast/${testcase}`, 'utf-8');
+ const expectation = js_yaml_1.default.load(testCaseData);
+ it(`${testcase}`, () => {
+ const parser = new CucumberExpressionParser_1.default();
+ if (expectation.exception == undefined) {
+ const node = parser.parse(expectation.expression);
+ assert_1.default.deepStrictEqual(JSON.parse(JSON.stringify(node)), // Removes type information.
+ JSON.parse(expectation.expected));
+ }
+ else {
+ assert_1.default.throws(() => {
+ parser.parse(expectation.expression);
+ }, new CucumberExpressionError_1.default(expectation.exception));
+ }
+ });
+ });
+});
+//# sourceMappingURL=CucumberExpressionParserTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js.map
new file mode 100644
index 0000000..360ef60
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionParserTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionParserTest.js","sourceRoot":"","sources":["../../test/CucumberExpressionParserTest.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,sDAA0B;AAC1B,oDAA2B;AAC3B,+FAAsE;AACtE,6FAAoE;AAQpE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,YAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAClD,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,gBAAgB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QACzE,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAgB,CAAA;QAC1D,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,GAAG,EAAE;YACrB,MAAM,MAAM,GAAG,IAAI,kCAAwB,EAAE,CAAA;YAC7C,IAAI,WAAW,CAAC,SAAS,IAAI,SAAS,EAAE;gBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBACjD,gBAAM,CAAC,eAAe,CACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,4BAA4B;gBAC9D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CACjC,CAAA;aACF;iBAAM;gBACL,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBACtC,CAAC,EAAE,IAAI,iCAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;aACvD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts
new file mode 100644
index 0000000..ed6984c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CucumberExpressionTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts.map
new file mode 100644
index 0000000..a6affb4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTest.d.ts","sourceRoot":"","sources":["../../test/CucumberExpressionTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js
new file mode 100644
index 0000000..1cc4eba
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js
@@ -0,0 +1,124 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpression_1 = __importDefault(require("../src/CucumberExpression"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+const fs_1 = __importDefault(require("fs"));
+const js_yaml_1 = __importDefault(require("js-yaml"));
+const CucumberExpressionError_1 = __importDefault(require("../src/CucumberExpressionError"));
+describe('CucumberExpression', () => {
+ fs_1.default.readdirSync('testdata/expression').forEach((testcase) => {
+ const testCaseData = fs_1.default.readFileSync(`testdata/expression/${testcase}`, 'utf-8');
+ const expectation = js_yaml_1.default.load(testCaseData);
+ it(`${testcase}`, () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ if (expectation.exception == undefined) {
+ const expression = new CucumberExpression_1.default(expectation.expression, parameterTypeRegistry);
+ const matches = expression.match(expectation.text);
+ assert_1.default.deepStrictEqual(JSON.parse(JSON.stringify(matches ? matches.map((value) => value.getValue(null)) : null)), // Removes type information.
+ JSON.parse(expectation.expected));
+ }
+ else {
+ assert_1.default.throws(() => {
+ const expression = new CucumberExpression_1.default(expectation.expression, parameterTypeRegistry);
+ expression.match(expectation.text);
+ }, new CucumberExpressionError_1.default(expectation.exception));
+ }
+ });
+ });
+ fs_1.default.readdirSync('testdata/regex').forEach((testcase) => {
+ const testCaseData = fs_1.default.readFileSync(`testdata/regex/${testcase}`, 'utf-8');
+ const expectation = js_yaml_1.default.load(testCaseData);
+ it(`${testcase}`, () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ const expression = new CucumberExpression_1.default(expectation.expression, parameterTypeRegistry);
+ assert_1.default.deepStrictEqual(expression.regexp.source, expectation.expected);
+ });
+ });
+ it('documents match arguments', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ /// [capture-match-arguments]
+ const expr = 'I have {int} cuke(s)';
+ const expression = new CucumberExpression_1.default(expr, parameterTypeRegistry);
+ const args = expression.match('I have 7 cukes');
+ assert_1.default.strictEqual(7, args[0].getValue(null));
+ /// [capture-match-arguments]
+ });
+ it('matches float', () => {
+ assert_1.default.deepStrictEqual(match('{float}', ''), null);
+ assert_1.default.deepStrictEqual(match('{float}', '.'), null);
+ assert_1.default.deepStrictEqual(match('{float}', ','), null);
+ assert_1.default.deepStrictEqual(match('{float}', '-'), null);
+ assert_1.default.deepStrictEqual(match('{float}', 'E'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,'), null);
+ assert_1.default.deepStrictEqual(match('{float}', ',1'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1.'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1'), [1]);
+ assert_1.default.deepStrictEqual(match('{float}', '-1'), [-1]);
+ assert_1.default.deepStrictEqual(match('{float}', '1.1'), [1.1]);
+ assert_1.default.deepStrictEqual(match('{float}', '1,000'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,000,0'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,000.1'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,000,10'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,0.1'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '1,000,000.1'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '-1.1'), [-1.1]);
+ assert_1.default.deepStrictEqual(match('{float}', '.1'), [0.1]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1'), [-0.1]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.10000001'), [-0.10000001]);
+ assert_1.default.deepStrictEqual(match('{float}', '1E1'), [1e1]); // precision 1 with scale -1, can not be expressed as a decimal
+ assert_1.default.deepStrictEqual(match('{float}', '.1E1'), [1]);
+ assert_1.default.deepStrictEqual(match('{float}', 'E1'), null);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1E-1'), [-0.01]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1E-2'), [-0.001]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1E+1'), [-1]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1E+2'), [-10]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.1E1'), [-1]);
+ assert_1.default.deepStrictEqual(match('{float}', '-.10E2'), [-10]);
+ });
+ it('matches float with zero', () => {
+ assert_1.default.deepEqual(match('{float}', '0'), [0]);
+ });
+ it('exposes source', () => {
+ const expr = 'I have {int} cuke(s)';
+ assert_1.default.strictEqual(new CucumberExpression_1.default(expr, new ParameterTypeRegistry_1.default()).source, expr);
+ });
+ it('unmatched optional groups have undefined values', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('textAndOrNumber', /([A-Z]+)?(?: )?([0-9]+)?/, null, function (s1, s2) {
+ return [s1, s2];
+ }, false, true));
+ const expression = new CucumberExpression_1.default('{textAndOrNumber}', parameterTypeRegistry);
+ const world = {};
+ assert_1.default.deepStrictEqual(expression.match(`TLA`)[0].getValue(world), ['TLA', undefined]);
+ assert_1.default.deepStrictEqual(expression.match(`123`)[0].getValue(world), [undefined, '123']);
+ });
+ // JavaScript-specific
+ it('delegates transform to custom object', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('widget', /\w+/, null, function (s) {
+ return this.createWidget(s);
+ }, false, true));
+ const expression = new CucumberExpression_1.default('I have a {widget}', parameterTypeRegistry);
+ const world = {
+ createWidget(s) {
+ return `widget:${s}`;
+ },
+ };
+ const args = expression.match(`I have a bolt`);
+ assert_1.default.strictEqual(args[0].getValue(world), 'widget:bolt');
+ });
+});
+const match = (expression, text) => {
+ const cucumberExpression = new CucumberExpression_1.default(expression, new ParameterTypeRegistry_1.default());
+ const args = cucumberExpression.match(text);
+ if (!args) {
+ return null;
+ }
+ return args.map((arg) => arg.getValue(null));
+};
+//# sourceMappingURL=CucumberExpressionTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js.map
new file mode 100644
index 0000000..e8932f5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTest.js","sourceRoot":"","sources":["../../test/CucumberExpressionTest.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,mFAA0D;AAC1D,yFAAgE;AAChE,yEAAgD;AAChD,4CAAmB;AACnB,sDAA0B;AAC1B,6FAAoE;AASpE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,YAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,uBAAuB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QAChF,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAgB,CAAA;QAC1D,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,GAAG,EAAE;YACrB,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;YACzD,IAAI,WAAW,CAAC,SAAS,IAAI,SAAS,EAAE;gBACtC,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;gBACxF,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClD,gBAAM,CAAC,eAAe,CACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,4BAA4B;gBACvH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CACjC,CAAA;aACF;iBAAM;gBACL,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjB,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;oBACxF,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBACpC,CAAC,EAAE,IAAI,iCAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;aACvD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,YAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpD,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,kBAAkB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QAC3E,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAgB,CAAA;QAC1D,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,GAAG,EAAE;YACrB,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;YACzD,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;YACxF,gBAAM,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;QAEzD,6BAA6B;QAC7B,MAAM,IAAI,GAAG,sBAAsB,CAAA;QACnC,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAC/C,gBAAM,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,6BAA6B;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAClD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACnD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACnD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACnD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACnD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACpD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACpD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QAEpD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACtD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;QACvD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QACzD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QACzD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1D,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;QACvD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;QAC7D,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAExD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACrD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QACrE,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,+DAA+D;QACtH,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACpD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5D,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACzD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvD,gBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,gBAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,IAAI,GAAG,sBAAsB,CAAA;QACnC,gBAAM,CAAC,WAAW,CAAC,IAAI,4BAAkB,CAAC,IAAI,EAAE,IAAI,+BAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;QACzD,qBAAqB,CAAC,mBAAmB,CACvC,IAAI,uBAAa,CACf,iBAAiB,EACjB,0BAA0B,EAC1B,IAAI,EACJ,UAAU,EAAE,EAAE,EAAE;YACd,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACjB,CAAC,EACD,KAAK,EACL,IAAI,CACL,CACF,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAA;QAErF,MAAM,KAAK,GAAG,EAAE,CAAA;QAEhB,gBAAM,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;QACtF,gBAAM,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,sBAAsB;IAEtB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,qBAAqB,GAAG,IAAI,+BAAqB,EAAE,CAAA;QACzD,qBAAqB,CAAC,mBAAmB,CACvC,IAAI,uBAAa,CACf,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,CAAS;YACjB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC,EACD,KAAK,EACL,IAAI,CACL,CACF,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAA;QAErF,MAAM,KAAK,GAAG;YACZ,YAAY,CAAC,CAAS;gBACpB,OAAO,UAAU,CAAC,EAAE,CAAA;YACtB,CAAC;SACF,CAAA;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC9C,gBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,KAAK,GAAG,CAAC,UAAkB,EAAE,IAAY,EAAE,EAAE;IACjD,MAAM,kBAAkB,GAAG,IAAI,4BAAkB,CAAC,UAAU,EAAE,IAAI,+BAAqB,EAAE,CAAC,CAAA;IAC1F,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts
new file mode 100644
index 0000000..6df46a1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CucumberExpressionTokenizerTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts.map
new file mode 100644
index 0000000..30819ee
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTokenizerTest.d.ts","sourceRoot":"","sources":["../../test/CucumberExpressionTokenizerTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js
new file mode 100644
index 0000000..ff3260e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js
@@ -0,0 +1,30 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = __importDefault(require("fs"));
+const js_yaml_1 = __importDefault(require("js-yaml"));
+const CucumberExpressionTokenizer_1 = __importDefault(require("../src/CucumberExpressionTokenizer"));
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpressionError_1 = __importDefault(require("../src/CucumberExpressionError"));
+describe('Cucumber expression tokenizer', () => {
+ fs_1.default.readdirSync('testdata/tokens').forEach((testcase) => {
+ const testCaseData = fs_1.default.readFileSync(`testdata/tokens/${testcase}`, 'utf-8');
+ const expectation = js_yaml_1.default.load(testCaseData);
+ it(`${testcase}`, () => {
+ const tokenizer = new CucumberExpressionTokenizer_1.default();
+ if (expectation.exception == undefined) {
+ const tokens = tokenizer.tokenize(expectation.expression);
+ assert_1.default.deepStrictEqual(JSON.parse(JSON.stringify(tokens)), // Removes type information.
+ JSON.parse(expectation.expected));
+ }
+ else {
+ assert_1.default.throws(() => {
+ tokenizer.tokenize(expectation.expression);
+ }, new CucumberExpressionError_1.default(expectation.exception));
+ }
+ });
+ });
+});
+//# sourceMappingURL=CucumberExpressionTokenizerTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js.map
new file mode 100644
index 0000000..1cad741
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CucumberExpressionTokenizerTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CucumberExpressionTokenizerTest.js","sourceRoot":"","sources":["../../test/CucumberExpressionTokenizerTest.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,sDAA0B;AAC1B,qGAA4E;AAC5E,oDAA2B;AAC3B,6FAAoE;AAQpE,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,YAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,mBAAmB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QAC5E,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAgB,CAAA;QAC1D,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,GAAG,EAAE;YACrB,MAAM,SAAS,GAAG,IAAI,qCAA2B,EAAE,CAAA;YACnD,IAAI,WAAW,CAAC,SAAS,IAAI,SAAS,EAAE;gBACtC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBACzD,gBAAM,CAAC,eAAe,CACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,4BAA4B;gBAChE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CACjC,CAAA;aACF;iBAAM;gBACL,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjB,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC5C,CAAC,EAAE,IAAI,iCAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;aACvD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts
new file mode 100644
index 0000000..f68fbc2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=CustomParameterTypeTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts.map
new file mode 100644
index 0000000..4f01d43
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CustomParameterTypeTest.d.ts","sourceRoot":"","sources":["../../test/CustomParameterTypeTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js
new file mode 100644
index 0000000..6cf74f2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js
@@ -0,0 +1,142 @@
+'use strict';
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpression_1 = __importDefault(require("../src/CucumberExpression"));
+const RegularExpression_1 = __importDefault(require("../src/RegularExpression"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+class Color {
+ /// [color-constructor]
+ constructor(name) {
+ this.name = name;
+ }
+}
+class CssColor {
+ constructor(name) {
+ this.name = name;
+ }
+}
+describe('Custom parameter type', () => {
+ let parameterTypeRegistry;
+ beforeEach(() => {
+ parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ /* eslint-disable prettier/prettier */
+ /// [add-color-parameter-type]
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('color', // name
+ /red|blue|yellow/, // regexp
+ Color, // type
+ // type
+ s => new Color(s), // transformer
+ false, // useForSnippets
+ true // preferForRegexpMatch
+ ));
+ /// [add-color-parameter-type]
+ /* eslint-enable prettier/prettier */
+ });
+ describe('CucumberExpression', () => {
+ it('throws exception for illegal character in parameter name', () => {
+ assert_1.default.throws(() => new ParameterType_1.default('[string]', /.*/, String, (s) => s, false, true), {
+ message: "Illegal character in parameter name {[string]}. Parameter names may not contain '{', '}', '(', ')', '\\' or '/'",
+ });
+ });
+ it('matches parameters with custom parameter type', () => {
+ const expression = new CucumberExpression_1.default('I have a {color} ball', parameterTypeRegistry);
+ const value = expression.match('I have a red ball')[0].getValue(null);
+ assert_1.default.strictEqual(value.name, 'red');
+ });
+ it('matches parameters with multiple capture groups', () => {
+ class Coordinate {
+ constructor(x, y, z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+ }
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('coordinate', /(\d+),\s*(\d+),\s*(\d+)/, Coordinate, (x, y, z) => new Coordinate(Number(x), Number(y), Number(z)), true, true));
+ const expression = new CucumberExpression_1.default('A {int} thick line from {coordinate} to {coordinate}', parameterTypeRegistry);
+ const args = expression.match('A 5 thick line from 10,20,30 to 40,50,60');
+ const thick = args[0].getValue(null);
+ assert_1.default.strictEqual(thick, 5);
+ const from = args[1].getValue(null);
+ assert_1.default.strictEqual(from.x, 10);
+ assert_1.default.strictEqual(from.y, 20);
+ assert_1.default.strictEqual(from.z, 30);
+ const to = args[2].getValue(null);
+ assert_1.default.strictEqual(to.x, 40);
+ assert_1.default.strictEqual(to.y, 50);
+ assert_1.default.strictEqual(to.z, 60);
+ });
+ it('matches parameters with custom parameter type using optional capture group', () => {
+ parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('color', [/red|blue|yellow/, /(?:dark|light) (?:red|blue|yellow)/], Color, (s) => new Color(s), false, true));
+ const expression = new CucumberExpression_1.default('I have a {color} ball', parameterTypeRegistry);
+ const value = expression.match('I have a dark red ball')[0].getValue(null);
+ assert_1.default.strictEqual(value.name, 'dark red');
+ });
+ it('defers transformation until queried from argument', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('throwing', /bad/, null, (s) => {
+ throw new Error(`Can't transform [${s}]`);
+ }, false, true));
+ const expression = new CucumberExpression_1.default('I have a {throwing} parameter', parameterTypeRegistry);
+ const args = expression.match('I have a bad parameter');
+ assert_1.default.throws(() => args[0].getValue(null), {
+ message: "Can't transform [bad]",
+ });
+ });
+ describe('conflicting parameter type', () => {
+ it('is detected for type name', () => {
+ assert_1.default.throws(() => parameterTypeRegistry.defineParameterType(new ParameterType_1.default('color', /.*/, CssColor, (s) => new CssColor(s), false, true)), { message: 'There is already a parameter type with name color' });
+ });
+ it('is not detected for type', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('whatever', /.*/, Color, (s) => new Color(s), false, false));
+ });
+ it('is not detected for regexp', () => {
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('css-color', /red|blue|yellow/, CssColor, (s) => new CssColor(s), true, false));
+ assert_1.default.strictEqual(new CucumberExpression_1.default('I have a {css-color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).constructor, CssColor);
+ assert_1.default.strictEqual(new CucumberExpression_1.default('I have a {css-color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).name, 'blue');
+ assert_1.default.strictEqual(new CucumberExpression_1.default('I have a {color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).constructor, Color);
+ assert_1.default.strictEqual(new CucumberExpression_1.default('I have a {color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).name, 'blue');
+ });
+ });
+ // JavaScript-specific
+ it('creates arguments using async transform', () => __awaiter(void 0, void 0, void 0, function* () {
+ parameterTypeRegistry = new ParameterTypeRegistry_1.default();
+ /// [add-async-parameter-type]
+ parameterTypeRegistry.defineParameterType(new ParameterType_1.default('asyncColor', /red|blue|yellow/, Color, (s) => __awaiter(void 0, void 0, void 0, function* () { return new Color(s); }), false, true));
+ /// [add-async-parameter-type]
+ const expression = new CucumberExpression_1.default('I have a {asyncColor} ball', parameterTypeRegistry);
+ const args = yield expression.match('I have a red ball');
+ const value = yield args[0].getValue(null);
+ assert_1.default.strictEqual(value.name, 'red');
+ }));
+ });
+ describe('RegularExpression', () => {
+ it('matches arguments with custom parameter type', () => {
+ const expression = new RegularExpression_1.default(/I have a (red|blue|yellow) ball/, parameterTypeRegistry);
+ const value = expression.match('I have a red ball')[0].getValue(null);
+ assert_1.default.strictEqual(value.constructor, Color);
+ assert_1.default.strictEqual(value.name, 'red');
+ });
+ });
+});
+//# sourceMappingURL=CustomParameterTypeTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js.map
new file mode 100644
index 0000000..04a0eed
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/CustomParameterTypeTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CustomParameterTypeTest.js","sourceRoot":"","sources":["../../test/CustomParameterTypeTest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts
new file mode 100644
index 0000000..07caa7e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=ExpressionExamplesTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts.map
new file mode 100644
index 0000000..d6aa690
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionExamplesTest.d.ts","sourceRoot":"","sources":["../../test/ExpressionExamplesTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js
new file mode 100644
index 0000000..dce52d8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js
@@ -0,0 +1,32 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = __importDefault(require("fs"));
+const assert_1 = __importDefault(require("assert"));
+const CucumberExpression_1 = __importDefault(require("../src/CucumberExpression"));
+const RegularExpression_1 = __importDefault(require("../src/RegularExpression"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+describe('examples.txt', () => {
+ const match = (expressionText, text) => {
+ const m = /^\/(.*)\/$/.exec(expressionText);
+ const expression = m
+ ? new RegularExpression_1.default(new RegExp(m[1]), new ParameterTypeRegistry_1.default())
+ : new CucumberExpression_1.default(expressionText, new ParameterTypeRegistry_1.default());
+ const args = expression.match(text);
+ if (!args) {
+ return null;
+ }
+ return args.map((arg) => arg.getValue(null));
+ };
+ const examples = fs_1.default.readFileSync('examples.txt', 'utf-8');
+ const chunks = examples.split(/^---/m);
+ for (const chunk of chunks) {
+ const [expressionText, text, expectedArgs] = chunk.trim().split(/\n/m);
+ it(`Works with: ${expressionText}`, () => {
+ assert_1.default.deepStrictEqual(JSON.stringify(match(expressionText, text)), expectedArgs);
+ });
+ }
+});
+//# sourceMappingURL=ExpressionExamplesTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js.map
new file mode 100644
index 0000000..dc9810a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionExamplesTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionExamplesTest.js","sourceRoot":"","sources":["../../test/ExpressionExamplesTest.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,oDAA2B;AAC3B,mFAA0D;AAC1D,iFAAwD;AACxD,yFAAgE;AAEhE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,KAAK,GAAG,CAAC,cAAsB,EAAE,IAAY,EAAE,EAAE;QACrD,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3C,MAAM,UAAU,GAAG,CAAC;YAClB,CAAC,CAAC,IAAI,2BAAiB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,+BAAqB,EAAE,CAAC;YACtE,CAAC,CAAC,IAAI,4BAAkB,CAAC,cAAc,EAAE,IAAI,+BAAqB,EAAE,CAAC,CAAA;QACvE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtE,EAAE,CAAC,eAAe,cAAc,EAAE,EAAE,GAAG,EAAE;YACvC,gBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts
new file mode 100644
index 0000000..e96f5c0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=ExpressionFactoryTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts.map
new file mode 100644
index 0000000..4acaff9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionFactoryTest.d.ts","sourceRoot":"","sources":["../../test/ExpressionFactoryTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js
new file mode 100644
index 0000000..ba8240b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js
@@ -0,0 +1,42 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert = __importStar(require("assert"));
+const ExpressionFactory_1 = __importDefault(require("../src/ExpressionFactory"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+const RegularExpression_1 = __importDefault(require("../src/RegularExpression"));
+const CucumberExpression_1 = __importDefault(require("../src/CucumberExpression"));
+describe('ExpressionFactory', () => {
+ let expressionFactory;
+ beforeEach(() => {
+ expressionFactory = new ExpressionFactory_1.default(new ParameterTypeRegistry_1.default());
+ });
+ it('creates a RegularExpression', () => {
+ assert.equal(expressionFactory.createExpression(/x/).constructor, RegularExpression_1.default);
+ });
+ it('creates a CucumberExpression', () => {
+ assert.equal(expressionFactory.createExpression('x').constructor, CucumberExpression_1.default);
+ });
+});
+//# sourceMappingURL=ExpressionFactoryTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js.map
new file mode 100644
index 0000000..79645e7
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ExpressionFactoryTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ExpressionFactoryTest.js","sourceRoot":"","sources":["../../test/ExpressionFactoryTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAgC;AAChC,iFAAwD;AACxD,yFAAgE;AAChE,iFAAwD;AACxD,mFAA0D;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,iBAAoC,CAAA;IACxC,UAAU,CAAC,GAAG,EAAE;QACd,iBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,+BAAqB,EAAE,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,2BAAiB,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,4BAAkB,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts
new file mode 100644
index 0000000..5cd0c9c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=ParameterTypeRegistryTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts.map
new file mode 100644
index 0000000..14ece9b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeRegistryTest.d.ts","sourceRoot":"","sources":["../../test/ParameterTypeRegistryTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js
new file mode 100644
index 0000000..d993ff7
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js
@@ -0,0 +1,51 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+class Name {
+ constructor(name) {
+ this.name = name;
+ }
+}
+class Person {
+ constructor(name) {
+ this.name = name;
+ }
+}
+class Place {
+ constructor(name) {
+ this.name = name;
+ }
+}
+const CAPITALISED_WORD = /[A-Z]+\w+/;
+describe('ParameterTypeRegistry', () => {
+ let registry;
+ beforeEach(() => {
+ registry = new ParameterTypeRegistry_1.default();
+ });
+ it('does not allow more than one preferential parameter type for each regexp', () => {
+ registry.defineParameterType(new ParameterType_1.default('name', CAPITALISED_WORD, Name, (s) => new Name(s), true, true));
+ registry.defineParameterType(new ParameterType_1.default('person', CAPITALISED_WORD, Person, (s) => new Person(s), true, false));
+ try {
+ registry.defineParameterType(new ParameterType_1.default('place', CAPITALISED_WORD, Place, (s) => new Place(s), true, true));
+ throw new Error('Should have failed');
+ }
+ catch (err) {
+ assert_1.default.strictEqual(err.message, `There can only be one preferential parameter type per regexp. The regexp ${CAPITALISED_WORD} is used for two preferential parameter types, {name} and {place}`);
+ }
+ });
+ it('looks up preferential parameter type by regexp', () => {
+ const name = new ParameterType_1.default('name', /[A-Z]+\w+/, null, (s) => new Name(s), true, false);
+ const person = new ParameterType_1.default('person', /[A-Z]+\w+/, null, (s) => new Person(s), true, true);
+ const place = new ParameterType_1.default('place', /[A-Z]+\w+/, null, (s) => new Place(s), true, false);
+ registry.defineParameterType(name);
+ registry.defineParameterType(person);
+ registry.defineParameterType(place);
+ assert_1.default.strictEqual(registry.lookupByRegexp('[A-Z]+\\w+', /([A-Z]+\w+) and ([A-Z]+\w+)/, 'Lisa and Bob'), person);
+ });
+});
+//# sourceMappingURL=ParameterTypeRegistryTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js.map
new file mode 100644
index 0000000..b5bc71b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeRegistryTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeRegistryTest.js","sourceRoot":"","sources":["../../test/ParameterTypeRegistryTest.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,yFAAgE;AAChE,yEAAgD;AAEhD,MAAM,IAAI;IACR,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AACD,MAAM,MAAM;IACV,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AACD,MAAM,KAAK;IACT,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAEpC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,QAA+B,CAAA;IACnC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,+BAAqB,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,QAAQ,CAAC,mBAAmB,CAC1B,IAAI,uBAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAClF,CAAA;QACD,QAAQ,CAAC,mBAAmB,CAC1B,IAAI,uBAAa,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CACzF,CAAA;QACD,IAAI;YACF,QAAQ,CAAC,mBAAmB,CAC1B,IAAI,uBAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CACrF,CAAA;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;SACtC;QAAC,OAAO,GAAG,EAAE;YACZ,gBAAM,CAAC,WAAW,CAChB,GAAG,CAAC,OAAO,EACX,4EAA4E,gBAAgB,mEAAmE,CAChK,CAAA;SACF;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,IAAI,uBAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAC1F,MAAM,MAAM,GAAG,IAAI,uBAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC/F,MAAM,KAAK,GAAG,IAAI,uBAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAE7F,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAClC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QACpC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEnC,gBAAM,CAAC,WAAW,CAChB,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,6BAA6B,EAAE,cAAc,CAAC,EACpF,MAAM,CACP,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts
new file mode 100644
index 0000000..1d9d221
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=ParameterTypeTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts.map
new file mode 100644
index 0000000..5347e64
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeTest.d.ts","sourceRoot":"","sources":["../../test/ParameterTypeTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js
new file mode 100644
index 0000000..2b9c35b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js
@@ -0,0 +1,32 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const ParameterType_1 = __importDefault(require("../src/ParameterType"));
+const assert = __importStar(require("assert"));
+describe('ParameterType', () => {
+ it('does not allow ignore flag on regexp', () => {
+ assert.throws(() => new ParameterType_1.default('case-insensitive', /[a-z]+/i, String, (s) => s, true, true), { message: "ParameterType Regexps can't use flag 'i'" });
+ });
+});
+//# sourceMappingURL=ParameterTypeTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js.map
new file mode 100644
index 0000000..45d02f6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/ParameterTypeTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParameterTypeTest.js","sourceRoot":"","sources":["../../test/ParameterTypeTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAgD;AAChD,+CAAgC;AAEhC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,IAAI,uBAAa,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EACpF,EAAE,OAAO,EAAE,0CAA0C,EAAE,CACxD,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts
new file mode 100644
index 0000000..92e9ce8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=RegularExpressionTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts.map
new file mode 100644
index 0000000..a4b1d7e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegularExpressionTest.d.ts","sourceRoot":"","sources":["../../test/RegularExpressionTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js
new file mode 100644
index 0000000..2ec89d9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js
@@ -0,0 +1,85 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const RegularExpression_1 = __importDefault(require("../src/RegularExpression"));
+const ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
+describe('RegularExpression', () => {
+ it('documents match arguments', () => {
+ const parameterRegistry = new ParameterTypeRegistry_1.default();
+ /// [capture-match-arguments]
+ const expr = /I have (\d+) cukes? in my (\w+) now/;
+ const expression = new RegularExpression_1.default(expr, parameterRegistry);
+ const args = expression.match('I have 7 cukes in my belly now');
+ assert_1.default.strictEqual(7, args[0].getValue(null));
+ assert_1.default.strictEqual('belly', args[1].getValue(null));
+ /// [capture-match-arguments]
+ });
+ it('does no transform by default', () => {
+ assert_1.default.deepStrictEqual(match(/(\d\d)/, '22')[0], '22');
+ });
+ it('does not transform anonymous', () => {
+ assert_1.default.deepStrictEqual(match(/(.*)/, '22')[0], '22');
+ });
+ it('transforms negative int', () => {
+ assert_1.default.deepStrictEqual(match(/(-?\d+)/, '-22')[0], -22);
+ });
+ it('transforms positive int', () => {
+ assert_1.default.deepStrictEqual(match(/(\d+)/, '22')[0], 22);
+ });
+ it('transforms float without integer part', () => {
+ assert_1.default.deepStrictEqual(match(new RegExp(`(${ParameterTypeRegistry_1.default.FLOAT_REGEXP.source})`), '.22')[0], 0.22);
+ });
+ it('transforms float with sign', () => {
+ assert_1.default.deepStrictEqual(match(new RegExp(`(${ParameterTypeRegistry_1.default.FLOAT_REGEXP.source})`), '-1.22')[0], -1.22);
+ });
+ it('returns null when there is no match', () => {
+ assert_1.default.strictEqual(match(/hello/, 'world'), null);
+ });
+ it('matches nested capture group without match', () => {
+ assert_1.default.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user'), [null]);
+ });
+ it('matches nested capture group with match', () => {
+ assert_1.default.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user named "Charlie"'), [
+ 'Charlie',
+ ]);
+ });
+ it('matches capture group nested in optional one', () => {
+ const regexp = /^a (pre-commercial transaction |pre buyer fee model )?purchase(?: for \$(\d+))?$/;
+ assert_1.default.deepStrictEqual(match(regexp, 'a purchase'), [null, null]);
+ assert_1.default.deepStrictEqual(match(regexp, 'a purchase for $33'), [null, 33]);
+ assert_1.default.deepStrictEqual(match(regexp, 'a pre buyer fee model purchase'), [
+ 'pre buyer fee model ',
+ null,
+ ]);
+ });
+ it('ignores non capturing groups', () => {
+ assert_1.default.deepStrictEqual(match(/(\S+) ?(can|cannot)? (?:delete|cancel) the (\d+)(?:st|nd|rd|th) (attachment|slide) ?(?:upload)?/, 'I can cancel the 1st slide upload'), ['I', 'can', 1, 'slide']);
+ });
+ it('works with escaped parenthesis', () => {
+ assert_1.default.deepStrictEqual(match(/Across the line\(s\)/, 'Across the line(s)'), []);
+ });
+ it('exposes regexp and source', () => {
+ const regexp = /I have (\d+) cukes? in my (.+) now/;
+ const expression = new RegularExpression_1.default(regexp, new ParameterTypeRegistry_1.default());
+ assert_1.default.deepStrictEqual(expression.regexp, regexp);
+ assert_1.default.deepStrictEqual(expression.source, regexp.source);
+ });
+ it('does not take consider parenthesis in character class as group', function () {
+ const expression = new RegularExpression_1.default(/^drawings: ([A-Z_, ()]+)$/, new ParameterTypeRegistry_1.default());
+ const args = expression.match('drawings: ONE, TWO(ABC)');
+ assert_1.default.strictEqual(args[0].getValue(this), 'ONE, TWO(ABC)');
+ });
+});
+const match = (regexp, text) => {
+ const parameterRegistry = new ParameterTypeRegistry_1.default();
+ const regularExpression = new RegularExpression_1.default(regexp, parameterRegistry);
+ const args = regularExpression.match(text);
+ if (!args) {
+ return null;
+ }
+ return args.map((arg) => arg.getValue(null));
+};
+//# sourceMappingURL=RegularExpressionTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js.map
new file mode 100644
index 0000000..901cd5d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/RegularExpressionTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"RegularExpressionTest.js","sourceRoot":"","sources":["../../test/RegularExpressionTest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts
new file mode 100644
index 0000000..396124a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=TreeRegexpTest.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts.map b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts.map
new file mode 100644
index 0000000..3bc1306
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TreeRegexpTest.d.ts","sourceRoot":"","sources":["../../test/TreeRegexpTest.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js
new file mode 100644
index 0000000..e2e425b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js
@@ -0,0 +1,133 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const TreeRegexp_1 = __importDefault(require("../src/TreeRegexp"));
+describe('TreeRegexp', () => {
+ it('exposes group source', () => {
+ const tr = new TreeRegexp_1.default(/(a(?:b)?)(c)/);
+ assert_1.default.deepStrictEqual(tr.groupBuilder.children.map((gb) => gb.source), ['a(?:b)?', 'c']);
+ });
+ it('builds tree', () => {
+ const tr = new TreeRegexp_1.default(/(a(?:b)?)(c)/);
+ const group = tr.match('ac');
+ assert_1.default.strictEqual(group.value, 'ac');
+ assert_1.default.strictEqual(group.children[0].value, 'a');
+ assert_1.default.deepStrictEqual(group.children[0].children, []);
+ assert_1.default.strictEqual(group.children[1].value, 'c');
+ });
+ it('ignores `?:` as a non-capturing group', () => {
+ const tr = new TreeRegexp_1.default(/a(?:b)(c)/);
+ const group = tr.match('abc');
+ assert_1.default.strictEqual(group.value, 'abc');
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('ignores `?!` as a non-capturing group', () => {
+ const tr = new TreeRegexp_1.default(/a(?!b)(.+)/);
+ const group = tr.match('aBc');
+ assert_1.default.strictEqual(group.value, 'aBc');
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('ignores `?=` as a non-capturing group', () => {
+ const tr = new TreeRegexp_1.default(/a(?=[b])(.+)/);
+ const group = tr.match('abc');
+ assert_1.default.strictEqual(group.value, 'abc');
+ assert_1.default.strictEqual(group.children.length, 1);
+ assert_1.default.strictEqual(group.children[0].value, 'bc');
+ });
+ it('ignores `?<=` as a non-capturing group', () => {
+ const tr = new TreeRegexp_1.default(/a(.+)(?<=c)$/);
+ const group = tr.match('abc');
+ assert_1.default.strictEqual(group.value, 'abc');
+ assert_1.default.strictEqual(group.children.length, 1);
+ assert_1.default.strictEqual(group.children[0].value, 'bc');
+ });
+ it('ignores `? {
+ const tr = new TreeRegexp_1.default(/a(.+?)(? {
+ const tr = new TreeRegexp_1.default(/a(?b)c/);
+ const group = tr.match('abc');
+ assert_1.default.strictEqual(group.value, 'abc');
+ assert_1.default.strictEqual(group.children.length, 1);
+ assert_1.default.strictEqual(group.children[0].value, 'b');
+ });
+ it('matches optional group', () => {
+ const tr = new TreeRegexp_1.default(/^Something( with an optional argument)?/);
+ const group = tr.match('Something');
+ assert_1.default.strictEqual(group.children[0].value, undefined);
+ });
+ it('matches nested groups', () => {
+ const tr = new TreeRegexp_1.default(/^A (\d+) thick line from ((\d+),\s*(\d+),\s*(\d+)) to ((\d+),\s*(\d+),\s*(\d+))/);
+ const group = tr.match('A 5 thick line from 10,20,30 to 40,50,60');
+ assert_1.default.strictEqual(group.children[0].value, '5');
+ assert_1.default.strictEqual(group.children[1].value, '10,20,30');
+ assert_1.default.strictEqual(group.children[1].children[0].value, '10');
+ assert_1.default.strictEqual(group.children[1].children[1].value, '20');
+ assert_1.default.strictEqual(group.children[1].children[2].value, '30');
+ assert_1.default.strictEqual(group.children[2].value, '40,50,60');
+ assert_1.default.strictEqual(group.children[2].children[0].value, '40');
+ assert_1.default.strictEqual(group.children[2].children[1].value, '50');
+ assert_1.default.strictEqual(group.children[2].children[2].value, '60');
+ });
+ it('detects multiple non capturing groups', () => {
+ const tr = new TreeRegexp_1.default(/(?:a)(:b)(\?c)(d)/);
+ const group = tr.match('a:b?cd');
+ assert_1.default.strictEqual(group.children.length, 3);
+ });
+ it('works with escaped backslash', () => {
+ const tr = new TreeRegexp_1.default(/foo\\(bar|baz)/);
+ const group = tr.match('foo\\bar');
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('works with escaped slash', () => {
+ const tr = new TreeRegexp_1.default(/^I go to '\/(.+)'$/);
+ const group = tr.match("I go to '/hello'");
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('works with digit and word', () => {
+ const tr = new TreeRegexp_1.default(/^(\d) (\w+)$/);
+ const group = tr.match('2 you');
+ assert_1.default.strictEqual(group.children.length, 2);
+ });
+ it('captures non capturing groups with capturing groups inside', () => {
+ const tr = new TreeRegexp_1.default('the stdout(?: from "(.*?)")?');
+ const group = tr.match('the stdout');
+ assert_1.default.strictEqual(group.value, 'the stdout');
+ assert_1.default.strictEqual(group.children[0].value, undefined);
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('works with flags', () => {
+ const tr = new TreeRegexp_1.default(/HELLO/i);
+ const group = tr.match('hello');
+ assert_1.default.strictEqual(group.value, 'hello');
+ });
+ it('empty capturing group', () => {
+ const tr = new TreeRegexp_1.default(/()/);
+ const group = tr.match('');
+ // TODO: Would expect the empty string here
+ assert_1.default.strictEqual(group.value, undefined);
+ assert_1.default.strictEqual(group.children.length, 1);
+ });
+ it('empty look ahead', () => {
+ const tr = new TreeRegexp_1.default(/(?<=)/);
+ const group = tr.match('');
+ // TODO: Would expect the empty string here
+ assert_1.default.strictEqual(group.value, undefined);
+ assert_1.default.strictEqual(group.children.length, 0);
+ });
+ it('does not consider parenthesis in character class as group', () => {
+ const tr = new TreeRegexp_1.default(/^drawings: ([A-Z, ()]+)$/);
+ const group = tr.match('drawings: ONE(TWO)');
+ assert_1.default.strictEqual(group.value, 'drawings: ONE(TWO)');
+ assert_1.default.strictEqual(group.children.length, 1);
+ assert_1.default.strictEqual(group.children[0].value, 'ONE(TWO)');
+ });
+});
+//# sourceMappingURL=TreeRegexpTest.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js.map b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js.map
new file mode 100644
index 0000000..2cc2785
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/test/TreeRegexpTest.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TreeRegexpTest.js","sourceRoot":"","sources":["../../test/TreeRegexpTest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/dist/tsconfig.build.tsbuildinfo b/node_modules/@cucumber/cucumber-expressions/dist/tsconfig.build.tsbuildinfo
new file mode 100644
index 0000000..add516a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/dist/tsconfig.build.tsbuildinfo
@@ -0,0 +1,4155 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "signature": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "signature": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "signature": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "signature": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "signature": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "affectsGlobalScope": true
+ },
+ "../src/Group.ts": {
+ "version": "842b8b4b0c7069514ca8ec30a8f7eca83e92b17f50971780dfc2c584b1499a1f",
+ "signature": "ad1d9410679ee06b3abc283c49898a4e8665e9e79f6b4bfeb4049fd5092ead30",
+ "affectsGlobalScope": false
+ },
+ "../src/RegexExecArray.ts": {
+ "version": "ec04490af65b8fa0702ea909e7ea4098304a83f105ea84caa30eefd0cb77f769",
+ "signature": "9d79706145e8c73cd73e32ac5865996d6488219898ee6df3ed45a7e800eb09ca",
+ "affectsGlobalScope": false
+ },
+ "../src/GroupBuilder.ts": {
+ "version": "16285299a6cc780c604b45cb01347f9c16fa3898962d5ae3b7edb9cf29d88569",
+ "signature": "5e2fb733341864e191c63b407894d11c85a63b3ef3c8c829e7c380e9705e7da4",
+ "affectsGlobalScope": false
+ },
+ "../src/TreeRegexp.ts": {
+ "version": "54ae4b4a4032f8148ab52d9f76c6f207a90d5aad0c426a73b43e5eab517ff55d",
+ "signature": "9cb50361e1bb9f90b2782e19525a4becb4439c92d7498fa419366585a0b3de06",
+ "affectsGlobalScope": false
+ },
+ "../src/CucumberExpressionError.ts": {
+ "version": "06da0313a696d2e58f6a6addb168a1faa1407045975ff672d492b233e0d03d18",
+ "signature": "f74bd655e2aaf72a8298810b20176026a9b12e4d3b3d6f9c7ccf651876d19b88",
+ "affectsGlobalScope": false
+ },
+ "../src/ParameterType.ts": {
+ "version": "26d969226d458c0bac8cc1c5c7d823ce7616c05d467491cbcb1c928a6d081575",
+ "signature": "4d4fc4612c914cd3d4d1380a2e6021d6c643e4cff13bbb7578e4f33d32f6506e",
+ "affectsGlobalScope": false
+ },
+ "../src/Argument.ts": {
+ "version": "7b0deb912161f1f0a36cbac123ef910f90a075734d1d718d985677e4f1857a42",
+ "signature": "b1f21216d15b6e44bc4ff7ad457ab2546c50d6a3b19f8e23ff54f4ee7177db2d",
+ "affectsGlobalScope": false
+ },
+ "../src/Ast.ts": {
+ "version": "ef898392b19ebf12816d5007c058ded7caeb0fb2ef17548c70f4f1e4d45b4b8a",
+ "signature": "13e3ed22f1867bf678c49e1ad935d8342f3553714bc607aa3d3c8da2d2bf10e0",
+ "affectsGlobalScope": false
+ },
+ "../src/GeneratedExpression.ts": {
+ "version": "12424731cf848bb69dadfb6d2b3bb0d06f65397234d83923be7203d774be19f2",
+ "signature": "737041635899dece79c3ebc8ab5e01749a88c1a3fe882432f5f3a81ded3a95d7",
+ "affectsGlobalScope": false
+ },
+ "../src/CombinatorialGeneratedExpressionFactory.ts": {
+ "version": "148e21cc36b2404145e06231bc15040def176000950d0dd59faae9a60b64cb7b",
+ "signature": "957f2fdf9ace0973eb4f5af4893fb1e6bd06dd447b1c0688924e623466f2bd7f",
+ "affectsGlobalScope": false
+ },
+ "../src/ParameterTypeMatcher.ts": {
+ "version": "38b1fcb7ed8a8637719cc56914add019f9be42393de4038a6e656a409e6f3e2f",
+ "signature": "ca56df0f30f20b3f46b0e1744074e9b059ad9a1ca9c12eaa7d6120750ce15b25",
+ "affectsGlobalScope": false
+ },
+ "../src/CucumberExpressionGenerator.ts": {
+ "version": "d4c1913128fee6bf9966511e83141acf39ecc1780aa40ee8282c0cea13beb976",
+ "signature": "ff5a4a41fbee12294a1cfc20ee8c84514abb4598168eda5a7536544300fb4f43",
+ "affectsGlobalScope": false
+ },
+ "../src/Errors.ts": {
+ "version": "a086ff175fa80fd036657886ed8d28a0d379bc555a5cdf8d2efdd281c7731ab5",
+ "signature": "208ca1963bdeb79e30aaf61ded4655c2258fc74a9ea2c12078d0f0a374857671",
+ "affectsGlobalScope": false
+ },
+ "../src/ParameterTypeRegistry.ts": {
+ "version": "013559d8d86f0a02361110234d9f22ebae813553bd9be0de309aa5a77b5ef50a",
+ "signature": "3f061fc340c103d40d2fa90ae4f0f44a79c053e910efa45e342fee6d7244d91b",
+ "affectsGlobalScope": false
+ },
+ "../src/Expression.ts": {
+ "version": "521dda018b62738dac89edd45820361c016736d5a57ff0dde8e8125be2f703da",
+ "signature": "c61f55f3feea7b97d24714866909b7ac27747cbf541bf6c0a71a4ca0eb17e884",
+ "affectsGlobalScope": false
+ },
+ "../src/CucumberExpressionTokenizer.ts": {
+ "version": "268869ee12955d6a67b9307c4c05ccf6531e42e130801fe9aca9f78eb7798633",
+ "signature": "3fcf6f7e779856604ceb46ca9bee468667d74cf294d55ce28c3edbba094ec4b7",
+ "affectsGlobalScope": false
+ },
+ "../src/CucumberExpressionParser.ts": {
+ "version": "ab7a4451b54cba84ffd1d9e58da0b79106f405769a7cd17c33a416316b33166b",
+ "signature": "5376e6d0f0c36a69972575e06c7d2196475f62b104f7c2b521696b1edaff3870",
+ "affectsGlobalScope": false
+ },
+ "../src/CucumberExpression.ts": {
+ "version": "7eb814fb9f19f1cd0dd461a9ca28149f5e2f3f70905e5fd82990bac7230828d6",
+ "signature": "38d5a275d081255edc4f2a63b71ea38b402a465f0c2f578abf3606903b85c66f",
+ "affectsGlobalScope": false
+ },
+ "../src/RegularExpression.ts": {
+ "version": "143c0ecb55737f16d2b5471fa23e36ab5593722ac3d7a080e989c69812d20e73",
+ "signature": "f5082aa8b3cc2f76aeffc198365bc75a67f19f9f36c3bd1c3efa41c02f59fe8c",
+ "affectsGlobalScope": false
+ },
+ "../src/ExpressionFactory.ts": {
+ "version": "5f38b6980e6507677773c611fd9400a7f8456993df1538e1ca719c09a0272d0b",
+ "signature": "9970544df4f253d99a60fd28ed22627e5f74637578a8235f585bd3c570c27335",
+ "affectsGlobalScope": false
+ },
+ "../src/index.ts": {
+ "version": "36800dcdb91ebe75e3b23e6f49130559e98865754031a7cfae977ea7ee9b18d2",
+ "signature": "16ba81b135a5c487bc60d8ea5dda7fa3976266ca7c963926a8cf11d14546e981",
+ "affectsGlobalScope": false
+ },
+ "../src/web.ts": {
+ "version": "726daeb8572b5cd9e18f6623b72bb205cf9b7bc5e2ec9651acd965aa307c0414",
+ "signature": "640b0486f79c3f2bd45f28441cac8372f81c13055a909fe492cf7dbfdd8b4ab2",
+ "affectsGlobalScope": false
+ },
+ "../test/ArgumentTest.ts": {
+ "version": "6f80a97f1421228267760cb294810315b49c904a6ba8eff1ac33b52fd09c171b",
+ "signature": "f015db73a2ae27a0f1e7b5245241f35ee1b76dcbdde5a8d054e67538fb8c2097",
+ "affectsGlobalScope": false
+ },
+ "../test/CombinatorialGeneratedExpressionFactoryTest.ts": {
+ "version": "ceeec10fcd496216c52e9ce420ec5fdfe4fe52250c7af81639ff5f1ff5b4a991",
+ "signature": "67f87b6c3ed94e0639a3b34cc953512705ae8924101d52f830f74666904cc6c3",
+ "affectsGlobalScope": false
+ },
+ "../test/CucumberExpressionGeneratorTest.ts": {
+ "version": "14b600202669a03f0d71e873cd8ff12e5df80c64d61c3994aac176647c11e4dd",
+ "signature": "80ffa161ec8b8aaa7188f3af8f43a43084ef3be162641694fe50b9069b6e26fc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/js-yaml/index.d.ts": {
+ "version": "914dc265139513b2a984498b0c969c177493cc7ae436375dbc102307a7f8ab07",
+ "signature": "914dc265139513b2a984498b0c969c177493cc7ae436375dbc102307a7f8ab07",
+ "affectsGlobalScope": false
+ },
+ "../test/CucumberExpressionParserTest.ts": {
+ "version": "82f04bbbe430abf4caf8bb72801d9a62167dce2f8b8259e018b3019a64891797",
+ "signature": "dca5d40aac4b8ee4bbf45575572bb3e5a62fb28df68476053b6689b59fe46bb4",
+ "affectsGlobalScope": false
+ },
+ "../test/CucumberExpressionTest.ts": {
+ "version": "326671ad99ba19bd3c7aa3a01861e21234eeceef70fe67ee8889b9ca4075c670",
+ "signature": "935ab6e126a7515476e6cde377033beea116204862ecdf472310bebf1cfab279",
+ "affectsGlobalScope": false
+ },
+ "../test/CucumberExpressionTokenizerTest.ts": {
+ "version": "5cae9df57c7829d19154e54fb4439b3e3f0f31af99ab938676b3b7882873157c",
+ "signature": "aa09e0ba14b4161b14835fb633d465ae28924f87654bdbc7f8c0eff44bd8186c",
+ "affectsGlobalScope": false
+ },
+ "../test/CustomParameterTypeTest.ts": {
+ "version": "9fa52f27f73f3a9f6a62a81c4f0b3f1d034358b130cafe6eba10a5ffc4d92c0e",
+ "signature": "23b21dceccc95c729baa52fe018407d361df305c5a7ade83f638b6246dce1cd2",
+ "affectsGlobalScope": false
+ },
+ "../test/ExpressionExamplesTest.ts": {
+ "version": "7a21da673ead966a589e860bcd706480884b260e4242f6e543c06fca2fba6738",
+ "signature": "341e802c4700be31124140ac80e306259193289c7edaa36c33c9c14bf900ceb1",
+ "affectsGlobalScope": false
+ },
+ "../test/ExpressionFactoryTest.ts": {
+ "version": "87b58cad5e7f0b8ea62dfe4d55a0c1b6eaff2e0aa94bb490ef8c5e1accf4468b",
+ "signature": "80004471818448dccd0c0bf8c11d8a4034add63ff8192348cbf353c67b69bef6",
+ "affectsGlobalScope": false
+ },
+ "../test/ParameterTypeRegistryTest.ts": {
+ "version": "5ac43ffcb6edb61a2e253c9b0332166c5764141e791e2944d24ca8aa72174a66",
+ "signature": "290735b8f331660b0ad34121d60c0ae55c3fbbf2a995933b2611aa51c27d75fb",
+ "affectsGlobalScope": false
+ },
+ "../test/ParameterTypeTest.ts": {
+ "version": "0371ded162d24f95b0adabbe418ab03bf86bff399695e36a3919b341ad715932",
+ "signature": "4773bbf0f398ee2e7a20d2b3d12be2126f1ae9a6be3c58090b2d6347e58995b1",
+ "affectsGlobalScope": false
+ },
+ "../test/RegularExpressionTest.ts": {
+ "version": "080e62e0a02c796c7da6fea87c5a28c7bdacbb3b307fbbdb5653de56c268c3fd",
+ "signature": "e6bf9417f1a1bb8d82a2be61c0548d9937633d5915efd6ef9f390abe174f4c21",
+ "affectsGlobalScope": false
+ },
+ "../test/TreeRegexpTest.ts": {
+ "version": "25efae1d5feb3e057ba5bcacefbff6071edf37850f64e8882d269063934af175",
+ "signature": "22e06a90f1ad2a03962178c21306a36dad866107bb81913cd45bf3335feada41",
+ "affectsGlobalScope": false
+ },
+ "../package.json": {
+ "version": "6be09de917dd737f23129e0df7894d22f01d0d09c23b0fba0df006413f61499f",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/anymatch/index.d.ts": {
+ "version": "48b52264fa193879a074197839dbb4796fa07e86350ff888e5361e06aa46df76",
+ "signature": "48b52264fa193879a074197839dbb4796fa07e86350ff888e5361e06aa46df76",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/braces/index.d.ts": {
+ "version": "cfb42d1c8aa66607ef3b1e2cee85d28148358ba62dc5e5146b317dae7bfd9a96",
+ "signature": "cfb42d1c8aa66607ef3b1e2cee85d28148358ba62dc5e5146b317dae7bfd9a96",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/chai/index.d.ts": {
+ "version": "267813ae499a9c070ea61bca2d235e31e785181d967e4461719cbcc78a35abfe",
+ "signature": "267813ae499a9c070ea61bca2d235e31e785181d967e4461719cbcc78a35abfe",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/color-name/index.d.ts": {
+ "version": "f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e",
+ "signature": "f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/conversions.d.ts": {
+ "version": "92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69",
+ "signature": "92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/route.d.ts": {
+ "version": "8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012",
+ "signature": "8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color-convert/index.d.ts": {
+ "version": "92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9",
+ "signature": "92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/color/index.d.ts": {
+ "version": "ac502bda446da2b897b8fb9373199f08e111a82c19ea0f9a1debf49ed34b6970",
+ "signature": "ac502bda446da2b897b8fb9373199f08e111a82c19ea0f9a1debf49ed34b6970",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/cucumber/index.d.ts": {
+ "version": "24669889f4a64d832f53c0408dac30ef08ed4134e92393055d51dcf36a922ae3",
+ "signature": "24669889f4a64d832f53c0408dac30ef08ed4134e92393055d51dcf36a922ae3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/elasticlunr/index.d.ts": {
+ "version": "e148d28b0f7479b39ee4e26a249a97f9d9a4f81a6da227a04bfbc57e2807f577",
+ "signature": "e148d28b0f7479b39ee4e26a249a97f9d9a4f81a6da227a04bfbc57e2807f577",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint/helpers.d.ts": {
+ "version": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "signature": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/json-schema/index.d.ts": {
+ "version": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "signature": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/estree/index.d.ts": {
+ "version": "745a853d60bf782583a58584f59e202cae5c7a898b0c92696442602a3ef17a87",
+ "signature": "745a853d60bf782583a58584f59e202cae5c7a898b0c92696442602a3ef17a87",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint/index.d.ts": {
+ "version": "ffa048767a32a0f6354e611b15d8b53d882da1a9a35455c35c3f6811f2416d17",
+ "signature": "ffa048767a32a0f6354e611b15d8b53d882da1a9a35455c35c3f6811f2416d17",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/eslint-scope/index.d.ts": {
+ "version": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "signature": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.d.ts": {
+ "version": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "signature": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "signature": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "signature": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "signature": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "signature": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/console.d.ts": {
+ "version": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "signature": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/constants.d.ts": {
+ "version": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "signature": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "signature": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "signature": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dns.d.ts": {
+ "version": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "signature": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/domain.d.ts": {
+ "version": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "signature": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/events.d.ts": {
+ "version": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "signature": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/fs.d.ts": {
+ "version": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "signature": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "signature": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http.d.ts": {
+ "version": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "signature": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http2.d.ts": {
+ "version": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "signature": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/https.d.ts": {
+ "version": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "signature": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "signature": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/module.d.ts": {
+ "version": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "signature": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/net.d.ts": {
+ "version": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "signature": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/os.d.ts": {
+ "version": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "signature": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/path.d.ts": {
+ "version": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "signature": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "signature": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/process.d.ts": {
+ "version": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "signature": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "signature": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "signature": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/readline.d.ts": {
+ "version": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "signature": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/repl.d.ts": {
+ "version": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "signature": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/stream.d.ts": {
+ "version": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "signature": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "signature": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/timers.d.ts": {
+ "version": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "signature": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tls.d.ts": {
+ "version": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "signature": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "signature": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "signature": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/url.d.ts": {
+ "version": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "signature": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/util.d.ts": {
+ "version": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "signature": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/v8.d.ts": {
+ "version": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "signature": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/vm.d.ts": {
+ "version": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "signature": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "signature": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "signature": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "signature": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "signature": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/assert.d.ts": {
+ "version": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "signature": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/index.d.ts": {
+ "version": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "signature": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/glob-base/index.d.ts": {
+ "version": "d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775",
+ "signature": "d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/graceful-fs/index.d.ts": {
+ "version": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "signature": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/unist/index.d.ts": {
+ "version": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "signature": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/hast/index.d.ts": {
+ "version": "b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f",
+ "signature": "b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts": {
+ "version": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "signature": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/is-function/index.d.ts": {
+ "version": "11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139",
+ "signature": "11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts": {
+ "version": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "signature": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": {
+ "version": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "signature": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": {
+ "version": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "signature": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": {
+ "version": "fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377",
+ "signature": "fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse5/index.d.ts": {
+ "version": "a7dbf3a9c06327c5329cd020982b0649e8369200cdf8ec4571b93a1ba074a5d2",
+ "signature": "a7dbf3a9c06327c5329cd020982b0649e8369200cdf8ec4571b93a1ba074a5d2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/tough-cookie/index.d.ts": {
+ "version": "a6c4cc913246a4f40423d0c6e618239072d7662bd54f6d8b8be59aec55d59873",
+ "signature": "a6c4cc913246a4f40423d0c6e618239072d7662bd54f6d8b8be59aec55d59873",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/base.d.ts": {
+ "version": "9043d7218978e67a80cfa23df30a5a4cadc9417acf15291b44c410c25dfc985d",
+ "signature": "9043d7218978e67a80cfa23df30a5a4cadc9417acf15291b44c410c25dfc985d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": {
+ "version": "dc3b81d55f30042dade669e7c75f1b0daa1f3ae1c5f23373a0c438db4a5d1154",
+ "signature": "dc3b81d55f30042dade669e7c75f1b0daa1f3ae1c5f23373a0c438db4a5d1154",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts": {
+ "version": "f067ec24caccb928fb97297e0318ed21b5998c0b6ca3e68fb988ae69fff0c2c3",
+ "signature": "f067ec24caccb928fb97297e0318ed21b5998c0b6ca3e68fb988ae69fff0c2c3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jsdom/index.d.ts": {
+ "version": "d4c4fe14b23180acf25e4a68dc3bb9e5c38233dd3de12a4ab9569e636090ac9b",
+ "signature": "d4c4fe14b23180acf25e4a68dc3bb9e5c38233dd3de12a4ab9569e636090ac9b",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/json5/index.d.ts": {
+ "version": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "signature": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/long/index.d.ts": {
+ "version": "e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b",
+ "signature": "e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/global.d.ts": {
+ "version": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "signature": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts": {
+ "version": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "signature": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/prop-types/index.d.ts": {
+ "version": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "signature": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/scheduler/tracing.d.ts": {
+ "version": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "signature": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/index.d.ts": {
+ "version": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "signature": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": {
+ "version": "9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5",
+ "signature": "9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mdast/index.d.ts": {
+ "version": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "signature": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/micromatch/index.d.ts": {
+ "version": "9c36d6df17ca69a65a2a654d9bbd86d74c6d6055e566429cd0a1de82827680eb",
+ "signature": "9c36d6df17ca69a65a2a654d9bbd86d74c6d6055e566429cd0a1de82827680eb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "0359800d3b440f8515001431cde1500944e156040577425eb3f7b80af0846612",
+ "signature": "0359800d3b440f8515001431cde1500944e156040577425eb3f7b80af0846612",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": {
+ "version": "736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50",
+ "signature": "736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node-fetch/externals.d.ts": {
+ "version": "972f1e91dab93b182624a17eeed02f683b8cb3fefbda7b689cc84570029d5f73",
+ "signature": "972f1e91dab93b182624a17eeed02f683b8cb3fefbda7b689cc84570029d5f73",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node-fetch/index.d.ts": {
+ "version": "e0014889f31fee76a572b6b15e74b2174cbcf6346ae8ab5c69eb553a10e5c944",
+ "signature": "e0014889f31fee76a572b6b15e74b2174cbcf6346ae8ab5c69eb553a10e5c944",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/npmlog/index.d.ts": {
+ "version": "0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d",
+ "signature": "0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts": {
+ "version": "1502b874bbaafdb762b3907945740f787058a6aabff5e27377f9b45e4bb08ff3",
+ "signature": "1502b874bbaafdb762b3907945740f787058a6aabff5e27377f9b45e4bb08ff3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts": {
+ "version": "b91aaad5f9c3f5dca5e8245d5f6464bdc63a77ba4453bb3e2d0c93959cddb13c",
+ "signature": "b91aaad5f9c3f5dca5e8245d5f6464bdc63a77ba4453bb3e2d0c93959cddb13c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/qs/index.d.ts": {
+ "version": "98437d5a640b67c41534f0de2dcb64c75433dcdff54ff8f8432e613663619a2e",
+ "signature": "98437d5a640b67c41534f0de2dcb64c75433dcdff54ff8f8432e613663619a2e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/reach__router/index.d.ts": {
+ "version": "3b280b52be6f8727fbdae05a2ad2c053dac5be97c42a5caa1740e64a2321e935",
+ "signature": "3b280b52be6f8727fbdae05a2ad2c053dac5be97c42a5caa1740e64a2321e935",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react-dom/index.d.ts": {
+ "version": "ee7266c6f312a6bf9612691b7fff1dfde32a609d150521c1f20d3f7972bc7586",
+ "signature": "ee7266c6f312a6bf9612691b7fff1dfde32a609d150521c1f20d3f7972bc7586",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": {
+ "version": "cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8",
+ "signature": "cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/scheduler/index.d.ts": {
+ "version": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "signature": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts": {
+ "version": "558a9770503071d5a6fc6c596f7230bb79f2d034ced4a205bd1ebcad3b5879ec",
+ "signature": "558a9770503071d5a6fc6c596f7230bb79f2d034ced4a205bd1ebcad3b5879ec",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinon/index.d.ts": {
+ "version": "9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73",
+ "signature": "9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sinon-chai/index.d.ts": {
+ "version": "b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03",
+ "signature": "b98f6185455945922c7cfdad772ec1c46e5c169a2d71aca6530e041f77665f03",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/source-list-map/index.d.ts": {
+ "version": "67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae",
+ "signature": "67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/stack-utils/index.d.ts": {
+ "version": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "signature": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/stream-buffers/index.d.ts": {
+ "version": "bbebca3b08d774325e29007bf354fbb9bc027b4990e89911efdd66d244f7bfd9",
+ "signature": "bbebca3b08d774325e29007bf354fbb9bc027b4990e89911efdd66d244f7bfd9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/tapable/index.d.ts": {
+ "version": "d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579",
+ "signature": "d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts": {
+ "version": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "signature": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uglify-js/index.d.ts": {
+ "version": "bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956",
+ "signature": "bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uuid/index.d.ts": {
+ "version": "96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292",
+ "signature": "96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/anymatch/index.d.ts": {
+ "version": "4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349",
+ "signature": "4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts": {
+ "version": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "signature": "2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts": {
+ "version": "b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9",
+ "signature": "b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": {
+ "version": "8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d",
+ "signature": "8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": {
+ "version": "ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5",
+ "signature": "ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": {
+ "version": "083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9",
+ "signature": "083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": {
+ "version": "274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517",
+ "signature": "274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": {
+ "version": "6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad",
+ "signature": "6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": {
+ "version": "5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106",
+ "signature": "5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": {
+ "version": "f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c",
+ "signature": "f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": {
+ "version": "0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f",
+ "signature": "0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": {
+ "version": "8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb",
+ "signature": "8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": {
+ "version": "9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1",
+ "signature": "9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": {
+ "version": "d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0",
+ "signature": "d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-sources/index.d.ts": {
+ "version": "89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b",
+ "signature": "89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack/index.d.ts": {
+ "version": "ef0b707624f7d984f07db02e61589a6e2f2474a55d6b666ab04d2b0722708a83",
+ "signature": "ef0b707624f7d984f07db02e61589a6e2f2474a55d6b666ab04d2b0722708a83",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/webpack-env/index.d.ts": {
+ "version": "5b3e6ce357a7a1a07c858432a3d2002750058725874db09a03a0a9e899d861f5",
+ "signature": "5b3e6ce357a7a1a07c858432a3d2002750058725874db09a03a0a9e899d861f5",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/yargs-parser/index.d.ts": {
+ "version": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "signature": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yargs/index.d.ts": {
+ "version": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "signature": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yauzl/index.d.ts": {
+ "version": "3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26",
+ "signature": "3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "target": 2,
+ "lib": [
+ "lib.es2019.d.ts",
+ "lib.dom.d.ts"
+ ],
+ "sourceMap": true,
+ "allowJs": false,
+ "jsx": 2,
+ "resolveJsonModule": true,
+ "module": 1,
+ "esModuleInterop": true,
+ "noImplicitAny": true,
+ "moduleResolution": 2,
+ "outDir": "./",
+ "downlevelIteration": true,
+ "skipLibCheck": true,
+ "composite": true,
+ "declarationMap": true,
+ "rootDir": "..",
+ "configFilePath": "../tsconfig.build.json"
+ },
+ "referencedMap": {
+ "../package.json": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../src/Argument.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/Group.ts",
+ "../src/ParameterType.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../src/Ast.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../src/CombinatorialGeneratedExpressionFactory.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/CucumberExpression.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Argument.ts",
+ "../src/Ast.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/CucumberExpressionParser.ts",
+ "../src/Errors.ts",
+ "../src/Expression.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../src/CucumberExpressionError.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../src/CucumberExpressionGenerator.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../src/CombinatorialGeneratedExpressionFactory.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeMatcher.ts"
+ ],
+ "../src/CucumberExpressionParser.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Ast.ts",
+ "../src/CucumberExpressionTokenizer.ts",
+ "../src/Errors.ts"
+ ],
+ "../src/CucumberExpressionTokenizer.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Ast.ts",
+ "../src/Errors.ts"
+ ],
+ "../src/Errors.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Ast.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/Expression.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Argument.ts"
+ ],
+ "../src/ExpressionFactory.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/Expression.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../src/GeneratedExpression.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/Group.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../src/GroupBuilder.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Group.ts",
+ "../src/RegexExecArray.ts"
+ ],
+ "../src/ParameterType.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/CucumberExpressionError.ts"
+ ],
+ "../src/ParameterTypeMatcher.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/ParameterTypeRegistry.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/CucumberExpressionGenerator.ts",
+ "../src/Errors.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/RegexExecArray.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../src/RegularExpression.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Argument.ts",
+ "../src/Expression.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../src/TreeRegexp.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Group.ts",
+ "../src/GroupBuilder.ts",
+ "../src/RegexExecArray.ts"
+ ],
+ "../src/index.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/Argument.ts",
+ "../src/CucumberExpression.ts",
+ "../src/CucumberExpressionGenerator.ts",
+ "../src/Expression.ts",
+ "../src/ExpressionFactory.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/Group.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../src/web.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../src/index.ts"
+ ],
+ "../test/ArgumentTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/Argument.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../test/CombinatorialGeneratedExpressionFactoryTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/CombinatorialGeneratedExpressionFactory.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../test/CucumberExpressionGeneratorTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/CucumberExpressionGenerator.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../test/CucumberExpressionParserTest.ts": [
+ "../../../node_modules/@types/js-yaml/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/CucumberExpressionParser.ts"
+ ],
+ "../test/CucumberExpressionTest.ts": [
+ "../../../node_modules/@types/js-yaml/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../test/CucumberExpressionTokenizerTest.ts": [
+ "../../../node_modules/@types/js-yaml/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/CucumberExpressionTokenizer.ts"
+ ],
+ "../test/CustomParameterTypeTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../test/ExpressionExamplesTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../test/ExpressionFactoryTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/CucumberExpression.ts",
+ "../src/ExpressionFactory.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../test/ParameterTypeRegistryTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../test/ParameterTypeTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../test/RegularExpressionTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../test/TreeRegexpTest.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../../../node_modules/@types/anymatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/braces/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/chai/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/conversions.d.ts": [
+ "../../../node_modules/@types/color-name/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/index.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/route.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-name/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color/index.d.ts": [
+ "../../../node_modules/@types/color-convert/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/cucumber/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/elasticlunr/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/helpers.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/index.d.ts": [
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../../node_modules/@types/estree/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob-base/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/hast/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/is-function/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/js-yaml/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/base.d.ts": [
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts"
+ ],
+ "../../../node_modules/@types/json-schema/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/json5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/long/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/micromatch/index.d.ts": [
+ "../../../node_modules/@types/braces/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/minimatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/mocha/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/externals.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/globals.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node/globals.global.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/normalize-package-data/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/npmlog/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/parse-json/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts"
+ ],
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/prop-types/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/qs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/reach__router/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-dom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/global.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts"
+ ],
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/scheduler/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/scheduler/tracing.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon-chai/index.d.ts": [
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/source-list-map/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/stack-utils/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/stream-buffers/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/tapable/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/tough-cookie/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/unist/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/uuid/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-env/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs-parser/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/@types/yauzl/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/anymatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../src/Argument.ts": [
+ "../src/Group.ts",
+ "../src/ParameterType.ts",
+ "../src/TreeRegexp.ts"
+ ],
+ "../src/CombinatorialGeneratedExpressionFactory.ts": [
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/CucumberExpression.ts": [
+ "../src/Argument.ts",
+ "../src/Expression.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../src/CucumberExpressionGenerator.ts": [
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/CucumberExpressionParser.ts": [
+ "../src/Ast.ts"
+ ],
+ "../src/CucumberExpressionTokenizer.ts": [
+ "../src/Ast.ts"
+ ],
+ "../src/Errors.ts": [
+ "../src/Ast.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/ParameterType.ts"
+ ],
+ "../src/Expression.ts": [
+ "../src/Argument.ts"
+ ],
+ "../src/ExpressionFactory.ts": [
+ "../src/Expression.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../src/GeneratedExpression.ts": [
+ "../src/ParameterType.ts"
+ ],
+ "../src/GroupBuilder.ts": [
+ "../src/Group.ts",
+ "../src/RegexExecArray.ts"
+ ],
+ "../src/ParameterTypeMatcher.ts": [
+ "../src/ParameterType.ts"
+ ],
+ "../src/ParameterTypeRegistry.ts": [
+ "../src/ParameterType.ts"
+ ],
+ "../src/RegularExpression.ts": [
+ "../src/Argument.ts",
+ "../src/Expression.ts",
+ "../src/ParameterTypeRegistry.ts"
+ ],
+ "../src/TreeRegexp.ts": [
+ "../src/Group.ts",
+ "../src/GroupBuilder.ts"
+ ],
+ "../src/index.ts": [
+ "../src/Argument.ts",
+ "../src/CucumberExpression.ts",
+ "../src/CucumberExpressionGenerator.ts",
+ "../src/Expression.ts",
+ "../src/ExpressionFactory.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/Group.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegularExpression.ts"
+ ],
+ "../../../node_modules/@types/anymatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/braces/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/chai/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/conversions.d.ts": [
+ "../../../node_modules/@types/color-name/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/index.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-convert/route.d.ts": [
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color-name/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/color/index.d.ts": [
+ "../../../node_modules/@types/color-convert/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/cucumber/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/elasticlunr/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/helpers.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/eslint/index.d.ts": [
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../../node_modules/@types/estree/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob-base/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/hast/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/is-function/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/js-yaml/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/base.d.ts": [
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts"
+ ],
+ "../../../node_modules/@types/json-schema/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/json5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/long/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/micromatch/index.d.ts": [
+ "../../../node_modules/@types/braces/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/minimatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/mocha/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/externals.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/globals.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node/globals.global.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/normalize-package-data/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/npmlog/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/parse-json/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts"
+ ],
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts"
+ ],
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/prop-types/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/qs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/reach__router/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-dom/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/global.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts"
+ ],
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/scheduler/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/scheduler/tracing.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon-chai/index.d.ts": [
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinon/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts"
+ ],
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/source-list-map/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/stack-utils/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/stream-buffers/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/tapable/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/tough-cookie/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/unist/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/uuid/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-env/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts"
+ ],
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts"
+ ],
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs-parser/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/@types/yauzl/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/anymatch/index.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ],
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": [
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../package.json",
+ "../src/Argument.ts",
+ "../src/Ast.ts",
+ "../src/CombinatorialGeneratedExpressionFactory.ts",
+ "../src/CucumberExpression.ts",
+ "../src/CucumberExpressionError.ts",
+ "../src/CucumberExpressionGenerator.ts",
+ "../src/CucumberExpressionParser.ts",
+ "../src/CucumberExpressionTokenizer.ts",
+ "../src/Errors.ts",
+ "../src/Expression.ts",
+ "../src/ExpressionFactory.ts",
+ "../src/GeneratedExpression.ts",
+ "../src/Group.ts",
+ "../src/GroupBuilder.ts",
+ "../src/ParameterType.ts",
+ "../src/ParameterTypeMatcher.ts",
+ "../src/ParameterTypeRegistry.ts",
+ "../src/RegexExecArray.ts",
+ "../src/RegularExpression.ts",
+ "../src/TreeRegexp.ts",
+ "../src/index.ts",
+ "../src/web.ts",
+ "../test/ArgumentTest.ts",
+ "../test/CombinatorialGeneratedExpressionFactoryTest.ts",
+ "../test/CucumberExpressionGeneratorTest.ts",
+ "../test/CucumberExpressionParserTest.ts",
+ "../test/CucumberExpressionTest.ts",
+ "../test/CucumberExpressionTokenizerTest.ts",
+ "../test/CustomParameterTypeTest.ts",
+ "../test/ExpressionExamplesTest.ts",
+ "../test/ExpressionFactoryTest.ts",
+ "../test/ParameterTypeRegistryTest.ts",
+ "../test/ParameterTypeTest.ts",
+ "../test/RegularExpressionTest.ts",
+ "../test/TreeRegexpTest.ts",
+ "../../../node_modules/@types/anymatch/index.d.ts",
+ "../../../node_modules/@types/braces/index.d.ts",
+ "../../../node_modules/@types/chai/index.d.ts",
+ "../../../node_modules/@types/color-convert/conversions.d.ts",
+ "../../../node_modules/@types/color-convert/index.d.ts",
+ "../../../node_modules/@types/color-convert/route.d.ts",
+ "../../../node_modules/@types/color-name/index.d.ts",
+ "../../../node_modules/@types/color/index.d.ts",
+ "../../../node_modules/@types/cucumber/index.d.ts",
+ "../../../node_modules/@types/elasticlunr/index.d.ts",
+ "../../../node_modules/@types/eslint-scope/index.d.ts",
+ "../../../node_modules/@types/eslint/helpers.d.ts",
+ "../../../node_modules/@types/eslint/index.d.ts",
+ "../../../node_modules/@types/estree/index.d.ts",
+ "../../../node_modules/@types/glob-base/index.d.ts",
+ "../../../node_modules/@types/glob/index.d.ts",
+ "../../../node_modules/@types/graceful-fs/index.d.ts",
+ "../../../node_modules/@types/hast/index.d.ts",
+ "../../../node_modules/@types/html-minifier-terser/index.d.ts",
+ "../../../node_modules/@types/is-function/index.d.ts",
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts",
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts",
+ "../../../node_modules/@types/istanbul-reports/index.d.ts",
+ "../../../node_modules/@types/js-yaml/index.d.ts",
+ "../../../node_modules/@types/jsdom/base.d.ts",
+ "../../../node_modules/@types/jsdom/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts3.5/index.d.ts",
+ "../../../node_modules/@types/jsdom/ts4.0/index.d.ts",
+ "../../../node_modules/@types/json-schema/index.d.ts",
+ "../../../node_modules/@types/json5/index.d.ts",
+ "../../../node_modules/@types/long/index.d.ts",
+ "../../../node_modules/@types/markdown-to-jsx/index.d.ts",
+ "../../../node_modules/@types/mdast/index.d.ts",
+ "../../../node_modules/@types/micromatch/index.d.ts",
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/mocha/index.d.ts",
+ "../../../node_modules/@types/node-fetch/externals.d.ts",
+ "../../../node_modules/@types/node-fetch/index.d.ts",
+ "../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/base.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts",
+ "../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../node_modules/@types/npmlog/index.d.ts",
+ "../../../node_modules/@types/overlayscrollbars/index.d.ts",
+ "../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../node_modules/@types/parse5/index.d.ts",
+ "../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts",
+ "../../../node_modules/@types/pretty-hrtime/index.d.ts",
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/qs/index.d.ts",
+ "../../../node_modules/@types/reach__router/index.d.ts",
+ "../../../node_modules/@types/react-dom/index.d.ts",
+ "../../../node_modules/@types/react-syntax-highlighter/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/index.d.ts",
+ "../../../node_modules/@types/react/node_modules/csstype/index.d.ts",
+ "../../../node_modules/@types/scheduler/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts",
+ "../../../node_modules/@types/sinon-chai/index.d.ts",
+ "../../../node_modules/@types/sinon/index.d.ts",
+ "../../../node_modules/@types/sinonjs__fake-timers/index.d.ts",
+ "../../../node_modules/@types/source-list-map/index.d.ts",
+ "../../../node_modules/@types/stack-utils/index.d.ts",
+ "../../../node_modules/@types/stream-buffers/index.d.ts",
+ "../../../node_modules/@types/tapable/index.d.ts",
+ "../../../node_modules/@types/tough-cookie/index.d.ts",
+ "../../../node_modules/@types/uglify-js/index.d.ts",
+ "../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts",
+ "../../../node_modules/@types/uuid/index.d.ts",
+ "../../../node_modules/@types/webpack-env/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/Source.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts",
+ "../../../node_modules/@types/webpack-sources/lib/index.d.ts",
+ "../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/webpack/index.d.ts",
+ "../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts",
+ "../../../node_modules/@types/yargs-parser/index.d.ts",
+ "../../../node_modules/@types/yargs/index.d.ts",
+ "../../../node_modules/@types/yauzl/index.d.ts",
+ "../../../node_modules/anymatch/index.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts"
+ ]
+ },
+ "version": "4.2.3"
+}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber-expressions/examples.txt b/node_modules/@cucumber/cucumber-expressions/examples.txt
new file mode 100644
index 0000000..3a8288d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/examples.txt
@@ -0,0 +1,43 @@
+I have {int} cuke(s)
+I have 22 cukes
+[22]
+---
+I have {int} cuke(s) and some \\[]^$.|?*+
+I have 1 cuke and some \[]^$.|?*+
+[1]
+---
+/I have (\d+) cukes? in my (\w+) now/
+I have 22 cukes in my belly now
+[22,"belly"]
+---
+/I have (-?\d+) cukes? in my (.*) now/
+I have 1 cuke in my belly now
+[1,"belly"]
+---
+/^Something( with an optional argument)?$/
+Something
+[null]
+---
+Привет, {word}!
+Привет, Мир!
+["Мир"]
+---
+/I have (.*) cukes? in my (.*) now/
+I have 22 cukes in my belly now
+["22","belly"]
+---
+I have {} cuke(s) in my {} now
+I have 22 cukes in my belly now
+["22","belly"]
+---
+/^a (pre-commercial transaction |pre buyer fee model )?purchase(?: for \$(\d+))?$/
+a purchase for $33
+[null,33]
+---
+Some ${float} of cukes at {int}° Celsius
+Some $3.50 of cukes at 42° Celsius
+[3.5,42]
+---
+I select the {int}st/nd/rd/th Cucumber
+I select the 3rd Cucumber
+[3]
diff --git a/node_modules/@cucumber/cucumber-expressions/mocha b/node_modules/@cucumber/cucumber-expressions/mocha
new file mode 100755
index 0000000..a95378c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/mocha
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+node_modules/.bin/mocha "$@"
diff --git a/node_modules/@cucumber/cucumber-expressions/package.json b/node_modules/@cucumber/cucumber-expressions/package.json
new file mode 100644
index 0000000..ca0beea
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/package.json
@@ -0,0 +1,71 @@
+{
+ "_from": "@cucumber/cucumber-expressions@12.0.1",
+ "_id": "@cucumber/cucumber-expressions@12.0.1",
+ "_inBundle": false,
+ "_integrity": "sha512-ANzu80Mw9GzTQ5ImuLdBtHnQfG8MghVvvtud4GHBvlQ4Wzu1SvkUj3RsdtW9w3p7mATSw8SiSFj6Jel3cEWN6Q==",
+ "_location": "/@cucumber/cucumber-expressions",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "@cucumber/cucumber-expressions@12.0.1",
+ "name": "@cucumber/cucumber-expressions",
+ "escapedName": "@cucumber%2fcucumber-expressions",
+ "scope": "@cucumber",
+ "rawSpec": "12.0.1",
+ "saveSpec": null,
+ "fetchSpec": "12.0.1"
+ },
+ "_requiredBy": [
+ "/@cucumber/cucumber"
+ ],
+ "_resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-12.0.1.tgz",
+ "_shasum": "7ab8936adb82d2bb45b86baa494e4e6e3dc9839f",
+ "_spec": "@cucumber/cucumber-expressions@12.0.1",
+ "_where": "/Users/ania/Projects/jan-molak/cucumber-js-1646/node_modules/@cucumber/cucumber",
+ "author": {
+ "name": "Cucumber Limited",
+ "email": "cukes@googlegroups.com"
+ },
+ "bugs": {
+ "url": "https://github.com/cucumber/cucumber-expressions-javascript/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.4.0"
+ },
+ "deprecated": false,
+ "description": "Cucumber Expressions - a simpler alternative to Regular Expressions",
+ "devDependencies": {
+ "@types/js-yaml": "^4.0.0",
+ "@types/mocha": "^8.2.2",
+ "@types/node": "^14.14.37",
+ "js-yaml": "^4.0.0",
+ "mocha": "^8.3.2",
+ "ts-node": "^9.1.1",
+ "typescript": "^4.2.3"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "homepage": "https://github.com/cucumber/cucumber-expressions-javascript#readme",
+ "keywords": [
+ "cucumber",
+ "steps",
+ "regexp",
+ "regex"
+ ],
+ "license": "MIT",
+ "main": "dist/src/index.js",
+ "name": "@cucumber/cucumber-expressions",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/cucumber/cucumber-expressions-javascript.git"
+ },
+ "scripts": {
+ "prepublishOnly": "tsc --build tsconfig.build.json",
+ "test": "mocha"
+ },
+ "types": "dist/src/index.d.ts",
+ "version": "12.0.1"
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/Argument.ts b/node_modules/@cucumber/cucumber-expressions/src/Argument.ts
new file mode 100644
index 0000000..2f2fda4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/Argument.ts
@@ -0,0 +1,52 @@
+import TreeRegexp from './TreeRegexp'
+import ParameterType from './ParameterType'
+import Group from './Group'
+import CucumberExpressionError from './CucumberExpressionError'
+
+export default class Argument {
+ public static build(
+ treeRegexp: TreeRegexp,
+ text: string,
+ parameterTypes: ReadonlyArray>
+ ): ReadonlyArray> {
+ const group = treeRegexp.match(text)
+ if (!group) {
+ return null
+ }
+
+ const argGroups = group.children
+
+ if (argGroups.length !== parameterTypes.length) {
+ throw new CucumberExpressionError(
+ `Expression ${treeRegexp.regexp} has ${argGroups.length} capture groups (${argGroups.map(
+ (g) => g.value
+ )}), but there were ${parameterTypes.length} parameter types (${parameterTypes.map(
+ (p) => p.name
+ )})`
+ )
+ }
+
+ return parameterTypes.map((parameterType, i) => new Argument(argGroups[i], parameterType))
+ }
+
+ constructor(public readonly group: Group, public readonly parameterType: ParameterType) {
+ this.group = group
+ this.parameterType = parameterType
+ }
+
+ /**
+ * Get the value returned by the parameter type's transformer function.
+ *
+ * @param thisObj the object in which the transformer function is applied.
+ */
+ public getValue(thisObj: any): T {
+ const groupValues = this.group ? this.group.values : null
+ return this.parameterType.transform(thisObj, groupValues)
+ }
+
+ public getParameterType() {
+ return this.parameterType
+ }
+}
+
+module.exports = Argument
diff --git a/node_modules/@cucumber/cucumber-expressions/src/Ast.ts b/node_modules/@cucumber/cucumber-expressions/src/Ast.ts
new file mode 100644
index 0000000..07d4b51
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/Ast.ts
@@ -0,0 +1,157 @@
+const escapeCharacter = '\\'
+const alternationCharacter = '/'
+const beginParameterCharacter = '{'
+const endParameterCharacter = '}'
+const beginOptionalCharacter = '('
+const endOptionalCharacter = ')'
+
+export function symbolOf(token: TokenType): string {
+ switch (token) {
+ case TokenType.beginOptional:
+ return beginOptionalCharacter
+ case TokenType.endOptional:
+ return endOptionalCharacter
+ case TokenType.beginParameter:
+ return beginParameterCharacter
+ case TokenType.endParameter:
+ return endParameterCharacter
+ case TokenType.alternation:
+ return alternationCharacter
+ }
+ return ''
+}
+
+export function purposeOf(token: TokenType): string {
+ switch (token) {
+ case TokenType.beginOptional:
+ case TokenType.endOptional:
+ return 'optional text'
+ case TokenType.beginParameter:
+ case TokenType.endParameter:
+ return 'a parameter'
+ case TokenType.alternation:
+ return 'alternation'
+ }
+ return ''
+}
+
+export interface Located {
+ readonly start: number
+ readonly end: number
+}
+
+export class Node {
+ readonly type: NodeType
+ readonly nodes?: ReadonlyArray | undefined
+ readonly token?: string | undefined
+ readonly start: number
+ readonly end: number
+
+ constructor(
+ type: NodeType,
+ nodes: ReadonlyArray = undefined,
+ token: string = undefined,
+ start: number,
+ end: number
+ ) {
+ if (nodes === undefined && token === undefined) {
+ throw new Error('Either nodes or token must be defined')
+ }
+ if (nodes === null || token === null) {
+ throw new Error('Either nodes or token may not be null')
+ }
+ this.type = type
+ this.nodes = nodes
+ this.token = token
+ this.start = start
+ this.end = end
+ }
+
+ text(): string {
+ if (this.nodes) {
+ return this.nodes.map((value) => value.text()).join('')
+ }
+ return this.token
+ }
+}
+
+export enum NodeType {
+ text = 'TEXT_NODE',
+ optional = 'OPTIONAL_NODE',
+ alternation = 'ALTERNATION_NODE',
+ alternative = 'ALTERNATIVE_NODE',
+ parameter = 'PARAMETER_NODE',
+ expression = 'EXPRESSION_NODE',
+}
+
+export class Token {
+ readonly type: TokenType
+ readonly text: string
+ readonly start: number
+ readonly end: number
+
+ constructor(type: TokenType, text: string, start: number, end: number) {
+ this.type = type
+ this.text = text
+ this.start = start
+ this.end = end
+ }
+
+ static isEscapeCharacter(codePoint: string): boolean {
+ return codePoint == escapeCharacter
+ }
+
+ static canEscape(codePoint: string): boolean {
+ if (codePoint == ' ') {
+ // TODO: Unicode whitespace?
+ return true
+ }
+ switch (codePoint) {
+ case escapeCharacter:
+ return true
+ case alternationCharacter:
+ return true
+ case beginParameterCharacter:
+ return true
+ case endParameterCharacter:
+ return true
+ case beginOptionalCharacter:
+ return true
+ case endOptionalCharacter:
+ return true
+ }
+ return false
+ }
+
+ static typeOf(codePoint: string): TokenType {
+ if (codePoint == ' ') {
+ // TODO: Unicode whitespace?
+ return TokenType.whiteSpace
+ }
+ switch (codePoint) {
+ case alternationCharacter:
+ return TokenType.alternation
+ case beginParameterCharacter:
+ return TokenType.beginParameter
+ case endParameterCharacter:
+ return TokenType.endParameter
+ case beginOptionalCharacter:
+ return TokenType.beginOptional
+ case endOptionalCharacter:
+ return TokenType.endOptional
+ }
+ return TokenType.text
+ }
+}
+
+export enum TokenType {
+ startOfLine = 'START_OF_LINE',
+ endOfLine = 'END_OF_LINE',
+ whiteSpace = 'WHITE_SPACE',
+ beginOptional = 'BEGIN_OPTIONAL',
+ endOptional = 'END_OPTIONAL',
+ beginParameter = 'BEGIN_PARAMETER',
+ endParameter = 'END_PARAMETER',
+ alternation = 'ALTERNATION',
+ text = 'TEXT',
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CombinatorialGeneratedExpressionFactory.ts b/node_modules/@cucumber/cucumber-expressions/src/CombinatorialGeneratedExpressionFactory.ts
new file mode 100644
index 0000000..2cfdd51
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CombinatorialGeneratedExpressionFactory.ts
@@ -0,0 +1,49 @@
+import GeneratedExpression from './GeneratedExpression'
+import ParameterType from './ParameterType'
+
+// 256 generated expressions ought to be enough for anybody
+const MAX_EXPRESSIONS = 256
+
+export default class CombinatorialGeneratedExpressionFactory {
+ constructor(
+ private readonly expressionTemplate: string,
+ private readonly parameterTypeCombinations: Array>>
+ ) {
+ this.expressionTemplate = expressionTemplate
+ }
+
+ public generateExpressions(): ReadonlyArray {
+ const generatedExpressions: GeneratedExpression[] = []
+ this.generatePermutations(generatedExpressions, 0, [])
+ return generatedExpressions
+ }
+
+ private generatePermutations(
+ generatedExpressions: GeneratedExpression[],
+ depth: number,
+ currentParameterTypes: Array>
+ ) {
+ if (generatedExpressions.length >= MAX_EXPRESSIONS) {
+ return
+ }
+
+ if (depth === this.parameterTypeCombinations.length) {
+ generatedExpressions.push(
+ new GeneratedExpression(this.expressionTemplate, currentParameterTypes)
+ )
+ return
+ }
+
+ // tslint:disable-next-line:prefer-for-of
+ for (let i = 0; i < this.parameterTypeCombinations[depth].length; ++i) {
+ // Avoid recursion if no elements can be added.
+ if (generatedExpressions.length >= MAX_EXPRESSIONS) {
+ return
+ }
+
+ const newCurrentParameterTypes = currentParameterTypes.slice() // clone
+ newCurrentParameterTypes.push(this.parameterTypeCombinations[depth][i])
+ this.generatePermutations(generatedExpressions, depth + 1, newCurrentParameterTypes)
+ }
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CucumberExpression.ts b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpression.ts
new file mode 100644
index 0000000..bcd99f9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpression.ts
@@ -0,0 +1,153 @@
+import ParameterTypeRegistry from './ParameterTypeRegistry'
+import ParameterType from './ParameterType'
+import TreeRegexp from './TreeRegexp'
+import Argument from './Argument'
+import {
+ createAlternativeMayNotBeEmpty,
+ createAlternativeMayNotExclusivelyContainOptionals,
+ createOptionalIsNotAllowedInOptional,
+ createOptionalMayNotBeEmpty,
+ createParameterIsNotAllowedInOptional,
+ createUndefinedParameterType,
+} from './Errors'
+import Expression from './Expression'
+import CucumberExpressionParser from './CucumberExpressionParser'
+import { Node, NodeType } from './Ast'
+import CucumberExpressionError from './CucumberExpressionError'
+
+const ESCAPE_PATTERN = () => /([\\^[({$.|?*+})\]])/g
+
+export default class CucumberExpression implements Expression {
+ private readonly parameterTypes: Array> = []
+ private readonly treeRegexp: TreeRegexp
+
+ /**
+ * @param expression
+ * @param parameterTypeRegistry
+ */
+ constructor(
+ private readonly expression: string,
+ private readonly parameterTypeRegistry: ParameterTypeRegistry
+ ) {
+ const parser = new CucumberExpressionParser()
+ const ast = parser.parse(expression)
+ const pattern = this.rewriteToRegex(ast)
+ this.treeRegexp = new TreeRegexp(pattern)
+ }
+
+ private rewriteToRegex(node: Node): string {
+ switch (node.type) {
+ case NodeType.text:
+ return CucumberExpression.escapeRegex(node.text())
+ case NodeType.optional:
+ return this.rewriteOptional(node)
+ case NodeType.alternation:
+ return this.rewriteAlternation(node)
+ case NodeType.alternative:
+ return this.rewriteAlternative(node)
+ case NodeType.parameter:
+ return this.rewriteParameter(node)
+ case NodeType.expression:
+ return this.rewriteExpression(node)
+ default:
+ // Can't happen as long as the switch case is exhaustive
+ throw new Error(node.type)
+ }
+ }
+
+ private static escapeRegex(expression: string) {
+ return expression.replace(ESCAPE_PATTERN(), '\\$1')
+ }
+
+ private rewriteOptional(node: Node): string {
+ this.assertNoParameters(node, (astNode) =>
+ createParameterIsNotAllowedInOptional(astNode, this.expression)
+ )
+ this.assertNoOptionals(node, (astNode) =>
+ createOptionalIsNotAllowedInOptional(astNode, this.expression)
+ )
+ this.assertNotEmpty(node, (astNode) => createOptionalMayNotBeEmpty(astNode, this.expression))
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('')
+ return `(?:${regex})?`
+ }
+
+ private rewriteAlternation(node: Node) {
+ // Make sure the alternative parts aren't empty and don't contain parameter types
+ node.nodes.forEach((alternative) => {
+ if (alternative.nodes.length == 0) {
+ throw createAlternativeMayNotBeEmpty(alternative, this.expression)
+ }
+ this.assertNotEmpty(alternative, (astNode) =>
+ createAlternativeMayNotExclusivelyContainOptionals(astNode, this.expression)
+ )
+ })
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('|')
+ return `(?:${regex})`
+ }
+
+ private rewriteAlternative(node: Node) {
+ return node.nodes.map((lastNode) => this.rewriteToRegex(lastNode)).join('')
+ }
+
+ private rewriteParameter(node: Node) {
+ const name = node.text()
+ const parameterType = this.parameterTypeRegistry.lookupByTypeName(name)
+ if (!parameterType) {
+ throw createUndefinedParameterType(node, this.expression, name)
+ }
+ this.parameterTypes.push(parameterType)
+ const regexps = parameterType.regexpStrings
+ if (regexps.length == 1) {
+ return `(${regexps[0]})`
+ }
+ return `((?:${regexps.join(')|(?:')}))`
+ }
+
+ private rewriteExpression(node: Node) {
+ const regex = node.nodes.map((node) => this.rewriteToRegex(node)).join('')
+ return `^${regex}$`
+ }
+
+ private assertNotEmpty(
+ node: Node,
+ createNodeWasNotEmptyException: (astNode: Node) => CucumberExpressionError
+ ) {
+ const textNodes = node.nodes.filter((astNode) => NodeType.text == astNode.type)
+
+ if (textNodes.length == 0) {
+ throw createNodeWasNotEmptyException(node)
+ }
+ }
+
+ private assertNoParameters(
+ node: Node,
+ createNodeContainedAParameterError: (astNode: Node) => CucumberExpressionError
+ ) {
+ const parameterNodes = node.nodes.filter((astNode) => NodeType.parameter == astNode.type)
+ if (parameterNodes.length > 0) {
+ throw createNodeContainedAParameterError(parameterNodes[0])
+ }
+ }
+
+ private assertNoOptionals(
+ node: Node,
+ createNodeContainedAnOptionalError: (astNode: Node) => CucumberExpressionError
+ ) {
+ const parameterNodes = node.nodes.filter((astNode) => NodeType.optional == astNode.type)
+ if (parameterNodes.length > 0) {
+ throw createNodeContainedAnOptionalError(parameterNodes[0])
+ }
+ }
+
+ public match(text: string): ReadonlyArray> {
+ return Argument.build(this.treeRegexp, text, this.parameterTypes)
+ }
+
+ get regexp(): RegExp {
+ return this.treeRegexp.regexp
+ }
+
+ get source(): string {
+ return this.expression
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionError.ts b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionError.ts
new file mode 100644
index 0000000..5fc12cf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionError.ts
@@ -0,0 +1 @@
+export default class CucumberExpressionError extends Error {}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionGenerator.ts b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionGenerator.ts
new file mode 100644
index 0000000..ee894d7
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionGenerator.ts
@@ -0,0 +1,118 @@
+import ParameterTypeMatcher from './ParameterTypeMatcher'
+import ParameterType from './ParameterType'
+
+import util from 'util'
+import CombinatorialGeneratedExpressionFactory from './CombinatorialGeneratedExpressionFactory'
+import GeneratedExpression from './GeneratedExpression'
+
+export default class CucumberExpressionGenerator {
+ constructor(private readonly parameterTypes: () => Iterable>) {}
+
+ public generateExpressions(text: string): ReadonlyArray {
+ const parameterTypeCombinations: Array>> = []
+ const parameterTypeMatchers = this.createParameterTypeMatchers(text)
+ let expressionTemplate = ''
+ let pos = 0
+
+ // eslint-disable-next-line no-constant-condition
+ while (true) {
+ let matchingParameterTypeMatchers = []
+
+ for (const parameterTypeMatcher of parameterTypeMatchers) {
+ const advancedParameterTypeMatcher = parameterTypeMatcher.advanceTo(pos)
+ if (advancedParameterTypeMatcher.find) {
+ matchingParameterTypeMatchers.push(advancedParameterTypeMatcher)
+ }
+ }
+
+ if (matchingParameterTypeMatchers.length > 0) {
+ matchingParameterTypeMatchers = matchingParameterTypeMatchers.sort(
+ ParameterTypeMatcher.compare
+ )
+
+ // Find all the best parameter type matchers, they are all candidates.
+ const bestParameterTypeMatcher = matchingParameterTypeMatchers[0]
+ const bestParameterTypeMatchers = matchingParameterTypeMatchers.filter(
+ (m) => ParameterTypeMatcher.compare(m, bestParameterTypeMatcher) === 0
+ )
+
+ // Build a list of parameter types without duplicates. The reason there
+ // might be duplicates is that some parameter types have more than one regexp,
+ // which means multiple ParameterTypeMatcher objects will have a reference to the
+ // same ParameterType.
+ // We're sorting the list so preferential parameter types are listed first.
+ // Users are most likely to want these, so they should be listed at the top.
+ let parameterTypes = []
+ for (const parameterTypeMatcher of bestParameterTypeMatchers) {
+ if (parameterTypes.indexOf(parameterTypeMatcher.parameterType) === -1) {
+ parameterTypes.push(parameterTypeMatcher.parameterType)
+ }
+ }
+ parameterTypes = parameterTypes.sort(ParameterType.compare)
+
+ parameterTypeCombinations.push(parameterTypes)
+
+ expressionTemplate += escape(text.slice(pos, bestParameterTypeMatcher.start))
+ expressionTemplate += '{%s}'
+
+ pos = bestParameterTypeMatcher.start + bestParameterTypeMatcher.group.length
+ } else {
+ break
+ }
+
+ if (pos >= text.length) {
+ break
+ }
+ }
+
+ expressionTemplate += escape(text.slice(pos))
+ return new CombinatorialGeneratedExpressionFactory(
+ expressionTemplate,
+ parameterTypeCombinations
+ ).generateExpressions()
+ }
+
+ /**
+ * @deprecated
+ */
+ public generateExpression(text: string): GeneratedExpression {
+ return util.deprecate(
+ () => this.generateExpressions(text)[0],
+ 'CucumberExpressionGenerator.generateExpression: Use CucumberExpressionGenerator.generateExpressions instead'
+ )()
+ }
+
+ private createParameterTypeMatchers(text: string): ParameterTypeMatcher[] {
+ let parameterMatchers: ParameterTypeMatcher[] = []
+ for (const parameterType of this.parameterTypes()) {
+ if (parameterType.useForSnippets) {
+ parameterMatchers = parameterMatchers.concat(
+ CucumberExpressionGenerator.createParameterTypeMatchers2(parameterType, text)
+ )
+ }
+ }
+ return parameterMatchers
+ }
+
+ private static createParameterTypeMatchers2(
+ parameterType: ParameterType,
+ text: string
+ ): ParameterTypeMatcher[] {
+ // TODO: [].map
+ const result = []
+ for (const regexp of parameterType.regexpStrings) {
+ result.push(new ParameterTypeMatcher(parameterType, regexp, text))
+ }
+ return result
+ }
+}
+
+function escape(s: string): string {
+ return s
+ .replace(/%/g, '%%') // for util.format
+ .replace(/\(/g, '\\(')
+ .replace(/{/g, '\\{')
+ .replace(/\//g, '\\/')
+}
+
+module.exports = CucumberExpressionGenerator
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionParser.ts b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionParser.ts
new file mode 100644
index 0000000..1f7760d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionParser.ts
@@ -0,0 +1,321 @@
+import { Node, NodeType, Token, TokenType } from './Ast'
+import CucumberExpressionTokenizer from './CucumberExpressionTokenizer'
+import {
+ createAlternationNotAllowedInOptional,
+ createInvalidParameterTypeNameInNode,
+ createMissingEndToken,
+} from './Errors'
+
+/*
+ * text := whitespace | ')' | '}' | .
+ */
+function parseText(expression: string, tokens: ReadonlyArray, current: number) {
+ const token = tokens[current]
+ switch (token.type) {
+ case TokenType.whiteSpace:
+ case TokenType.text:
+ case TokenType.endParameter:
+ case TokenType.endOptional:
+ return {
+ consumed: 1,
+ ast: [new Node(NodeType.text, undefined, token.text, token.start, token.end)],
+ }
+ case TokenType.alternation:
+ throw createAlternationNotAllowedInOptional(expression, token)
+ case TokenType.startOfLine:
+ case TokenType.endOfLine:
+ case TokenType.beginOptional:
+ case TokenType.beginParameter:
+ default:
+ // If configured correctly this will never happen
+ return { consumed: 0 }
+ }
+}
+
+/*
+ * parameter := '{' + name* + '}'
+ */
+function parseName(expression: string, tokens: ReadonlyArray, current: number) {
+ const token = tokens[current]
+ switch (token.type) {
+ case TokenType.whiteSpace:
+ case TokenType.text:
+ return {
+ consumed: 1,
+ ast: [new Node(NodeType.text, undefined, token.text, token.start, token.end)],
+ }
+ case TokenType.beginOptional:
+ case TokenType.endOptional:
+ case TokenType.beginParameter:
+ case TokenType.endParameter:
+ case TokenType.alternation:
+ throw createInvalidParameterTypeNameInNode(token, expression)
+ case TokenType.startOfLine:
+ case TokenType.endOfLine:
+ default:
+ // If configured correctly this will never happen
+ return { consumed: 0 }
+ }
+}
+
+/*
+ * parameter := '{' + text* + '}'
+ */
+const parseParameter = parseBetween(
+ NodeType.parameter,
+ TokenType.beginParameter,
+ TokenType.endParameter,
+ [parseName]
+)
+
+/*
+ * optional := '(' + option* + ')'
+ * option := optional | parameter | text
+ */
+const optionalSubParsers: Array = []
+const parseOptional = parseBetween(
+ NodeType.optional,
+ TokenType.beginOptional,
+ TokenType.endOptional,
+ optionalSubParsers
+)
+optionalSubParsers.push(parseOptional, parseParameter, parseText)
+
+/*
+ * alternation := alternative* + ( '/' + alternative* )+
+ */
+function parseAlternativeSeparator(
+ expression: string,
+ tokens: ReadonlyArray,
+ current: number
+) {
+ if (!lookingAt(tokens, current, TokenType.alternation)) {
+ return { consumed: 0 }
+ }
+ const token = tokens[current]
+ return {
+ consumed: 1,
+ ast: [new Node(NodeType.alternative, undefined, token.text, token.start, token.end)],
+ }
+}
+
+const alternativeParsers: ReadonlyArray = [
+ parseAlternativeSeparator,
+ parseOptional,
+ parseParameter,
+ parseText,
+]
+
+/*
+ * alternation := (?<=left-boundary) + alternative* + ( '/' + alternative* )+ + (?=right-boundary)
+ * left-boundary := whitespace | } | ^
+ * right-boundary := whitespace | { | $
+ * alternative: = optional | parameter | text
+ */
+const parseAlternation: Parser = (expression, tokens, current) => {
+ const previous = current - 1
+ if (
+ !lookingAtAny(tokens, previous, [
+ TokenType.startOfLine,
+ TokenType.whiteSpace,
+ TokenType.endParameter,
+ ])
+ ) {
+ return { consumed: 0 }
+ }
+
+ const result = parseTokensUntil(expression, alternativeParsers, tokens, current, [
+ TokenType.whiteSpace,
+ TokenType.endOfLine,
+ TokenType.beginParameter,
+ ])
+ const subCurrent = current + result.consumed
+ if (!result.ast.some((astNode) => astNode.type == NodeType.alternative)) {
+ return { consumed: 0 }
+ }
+
+ const start = tokens[current].start
+ const end = tokens[subCurrent].start
+ // Does not consume right hand boundary token
+ return {
+ consumed: result.consumed,
+ ast: [
+ new Node(
+ NodeType.alternation,
+ splitAlternatives(start, end, result.ast),
+ undefined,
+ start,
+ end
+ ),
+ ],
+ }
+}
+
+/*
+ * cucumber-expression := ( alternation | optional | parameter | text )*
+ */
+const parseCucumberExpression = parseBetween(
+ NodeType.expression,
+ TokenType.startOfLine,
+ TokenType.endOfLine,
+ [parseAlternation, parseOptional, parseParameter, parseText]
+)
+
+export default class CucumberExpressionParser {
+ parse(expression: string): Node {
+ const tokenizer = new CucumberExpressionTokenizer()
+ const tokens = tokenizer.tokenize(expression)
+ const result = parseCucumberExpression(expression, tokens, 0)
+ return result.ast[0]
+ }
+}
+
+interface Parser {
+ (expression: string, tokens: ReadonlyArray, current: number): Result
+}
+
+interface Result {
+ readonly consumed: number
+ readonly ast?: ReadonlyArray
+}
+
+function parseBetween(
+ type: NodeType,
+ beginToken: TokenType,
+ endToken: TokenType,
+ parsers: Array
+): Parser {
+ return (expression, tokens, current) => {
+ if (!lookingAt(tokens, current, beginToken)) {
+ return { consumed: 0 }
+ }
+ let subCurrent = current + 1
+ const result = parseTokensUntil(expression, parsers, tokens, subCurrent, [
+ endToken,
+ TokenType.endOfLine,
+ ])
+ subCurrent += result.consumed
+
+ // endToken not found
+ if (!lookingAt(tokens, subCurrent, endToken)) {
+ throw createMissingEndToken(expression, beginToken, endToken, tokens[current])
+ }
+ // consumes endToken
+ const start = tokens[current].start
+ const end = tokens[subCurrent].end
+ const consumed = subCurrent + 1 - current
+ const ast = [new Node(type, result.ast, undefined, start, end)]
+ return { consumed, ast }
+ }
+}
+
+function parseToken(
+ expression: string,
+ parsers: ReadonlyArray,
+ tokens: ReadonlyArray,
+ startAt: number
+): Result {
+ for (let i = 0; i < parsers.length; i++) {
+ const parse = parsers[i]
+ const result = parse(expression, tokens, startAt)
+ if (result.consumed != 0) {
+ return result
+ }
+ }
+ // If configured correctly this will never happen
+ throw new Error('No eligible parsers for ' + tokens)
+}
+
+function parseTokensUntil(
+ expression: string,
+ parsers: ReadonlyArray,
+ tokens: ReadonlyArray,
+ startAt: number,
+ endTokens: ReadonlyArray
+): Result {
+ let current = startAt
+ const size = tokens.length
+ const ast: Node[] = []
+ while (current < size) {
+ if (lookingAtAny(tokens, current, endTokens)) {
+ break
+ }
+ const result = parseToken(expression, parsers, tokens, current)
+ if (result.consumed == 0) {
+ // If configured correctly this will never happen
+ // Keep to avoid infinite loops
+ throw new Error('No eligible parsers for ' + tokens)
+ }
+ current += result.consumed
+ ast.push(...result.ast)
+ }
+ return { consumed: current - startAt, ast }
+}
+
+function lookingAtAny(
+ tokens: ReadonlyArray,
+ at: number,
+ tokenTypes: ReadonlyArray
+): boolean {
+ return tokenTypes.some((tokenType) => lookingAt(tokens, at, tokenType))
+}
+
+function lookingAt(tokens: ReadonlyArray, at: number, token: TokenType): boolean {
+ if (at < 0) {
+ // If configured correctly this will never happen
+ // Keep for completeness
+ return token == TokenType.startOfLine
+ }
+ if (at >= tokens.length) {
+ return token == TokenType.endOfLine
+ }
+ return tokens[at].type == token
+}
+
+function splitAlternatives(
+ start: number,
+ end: number,
+ alternation: ReadonlyArray
+): ReadonlyArray {
+ const separators: Node[] = []
+ const alternatives: Node[][] = []
+ let alternative: Node[] = []
+ alternation.forEach((n) => {
+ if (NodeType.alternative == n.type) {
+ separators.push(n)
+ alternatives.push(alternative)
+ alternative = []
+ } else {
+ alternative.push(n)
+ }
+ })
+ alternatives.push(alternative)
+ return createAlternativeNodes(start, end, separators, alternatives)
+}
+
+function createAlternativeNodes(
+ start: number,
+ end: number,
+ separators: ReadonlyArray,
+ alternatives: ReadonlyArray>
+): ReadonlyArray {
+ const nodes: Node[] = []
+
+ for (let i = 0; i < alternatives.length; i++) {
+ const n = alternatives[i]
+ if (i == 0) {
+ const rightSeparator = separators[i]
+ nodes.push(new Node(NodeType.alternative, n, undefined, start, rightSeparator.start))
+ } else if (i == alternatives.length - 1) {
+ const leftSeparator = separators[i - 1]
+ nodes.push(new Node(NodeType.alternative, n, undefined, leftSeparator.end, end))
+ } else {
+ const leftSeparator = separators[i - 1]
+ const rightSeparator = separators[i]
+ nodes.push(
+ new Node(NodeType.alternative, n, undefined, leftSeparator.end, rightSeparator.start)
+ )
+ }
+ }
+ return nodes
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionTokenizer.ts b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionTokenizer.ts
new file mode 100644
index 0000000..993e0e6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/CucumberExpressionTokenizer.ts
@@ -0,0 +1,81 @@
+import { Token, TokenType } from './Ast'
+import { createCantEscaped, createTheEndOfLIneCanNotBeEscaped } from './Errors'
+
+export default class CucumberExpressionTokenizer {
+ tokenize(expression: string): ReadonlyArray {
+ const codePoints = Array.from(expression)
+ const tokens: Array = []
+ let buffer: Array = []
+ let previousTokenType = TokenType.startOfLine
+ let treatAsText = false
+ let escaped = 0
+ let bufferStartIndex = 0
+
+ function convertBufferToToken(tokenType: TokenType): Token {
+ let escapeTokens = 0
+ if (tokenType == TokenType.text) {
+ escapeTokens = escaped
+ escaped = 0
+ }
+
+ const consumedIndex = bufferStartIndex + buffer.length + escapeTokens
+ const t = new Token(tokenType, buffer.join(''), bufferStartIndex, consumedIndex)
+ buffer = []
+ bufferStartIndex = consumedIndex
+ return t
+ }
+
+ function tokenTypeOf(codePoint: string, treatAsText: boolean): TokenType {
+ if (!treatAsText) {
+ return Token.typeOf(codePoint)
+ }
+ if (Token.canEscape(codePoint)) {
+ return TokenType.text
+ }
+ throw createCantEscaped(expression, bufferStartIndex + buffer.length + escaped)
+ }
+
+ function shouldCreateNewToken(previousTokenType: TokenType, currentTokenType: TokenType) {
+ if (currentTokenType != previousTokenType) {
+ return true
+ }
+ return currentTokenType != TokenType.whiteSpace && currentTokenType != TokenType.text
+ }
+
+ if (codePoints.length == 0) {
+ tokens.push(new Token(TokenType.startOfLine, '', 0, 0))
+ }
+
+ codePoints.forEach((codePoint) => {
+ if (!treatAsText && Token.isEscapeCharacter(codePoint)) {
+ escaped++
+ treatAsText = true
+ return
+ }
+ const currentTokenType = tokenTypeOf(codePoint, treatAsText)
+ treatAsText = false
+
+ if (shouldCreateNewToken(previousTokenType, currentTokenType)) {
+ const token = convertBufferToToken(previousTokenType)
+ previousTokenType = currentTokenType
+ buffer.push(codePoint)
+ tokens.push(token)
+ } else {
+ previousTokenType = currentTokenType
+ buffer.push(codePoint)
+ }
+ })
+
+ if (buffer.length > 0) {
+ const token = convertBufferToToken(previousTokenType)
+ tokens.push(token)
+ }
+
+ if (treatAsText) {
+ throw createTheEndOfLIneCanNotBeEscaped(expression)
+ }
+
+ tokens.push(new Token(TokenType.endOfLine, '', codePoints.length, codePoints.length))
+ return tokens
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/Errors.ts b/node_modules/@cucumber/cucumber-expressions/src/Errors.ts
new file mode 100644
index 0000000..c74795b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/Errors.ts
@@ -0,0 +1,245 @@
+import ParameterType from './ParameterType'
+import GeneratedExpression from './GeneratedExpression'
+import { Located, Node, purposeOf, symbolOf, Token, TokenType } from './Ast'
+import CucumberExpressionError from './CucumberExpressionError'
+
+export function createAlternativeMayNotExclusivelyContainOptionals(
+ node: Node,
+ expression: string
+): CucumberExpressionError {
+ return new CucumberExpressionError(
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ 'An alternative may not exclusively contain optionals',
+ "If you did not mean to use an optional you can use '\\(' to escape the the '('"
+ )
+ )
+}
+export function createAlternativeMayNotBeEmpty(
+ node: Node,
+ expression: string
+): CucumberExpressionError {
+ return new CucumberExpressionError(
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ 'Alternative may not be empty',
+ "If you did not mean to use an alternative you can use '\\/' to escape the the '/'"
+ )
+ )
+}
+export function createOptionalMayNotBeEmpty(
+ node: Node,
+ expression: string
+): CucumberExpressionError {
+ return new CucumberExpressionError(
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ 'An optional must contain some text',
+ "If you did not mean to use an optional you can use '\\(' to escape the the '('"
+ )
+ )
+}
+export function createParameterIsNotAllowedInOptional(
+ node: Node,
+ expression: string
+): CucumberExpressionError {
+ return new CucumberExpressionError(
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ 'An optional may not contain a parameter type',
+ "If you did not mean to use an parameter type you can use '\\{' to escape the the '{'"
+ )
+ )
+}
+
+export function createOptionalIsNotAllowedInOptional(
+ node: Node,
+ expression: string
+): CucumberExpressionError {
+ return new CucumberExpressionError(
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ 'An optional may not contain an other optional',
+ "If you did not mean to use an optional type you can use '\\(' to escape the the '('. For more complicated expressions consider using a regular expression instead."
+ )
+ )
+}
+
+export function createTheEndOfLIneCanNotBeEscaped(expression: string): CucumberExpressionError {
+ const index = Array.from(expression).length - 1
+ return new CucumberExpressionError(
+ message(
+ index,
+ expression,
+ pointAt(index),
+ 'The end of line can not be escaped',
+ "You can use '\\\\' to escape the the '\\'"
+ )
+ )
+}
+
+export function createMissingEndToken(
+ expression: string,
+ beginToken: TokenType,
+ endToken: TokenType,
+ current: Token
+) {
+ const beginSymbol = symbolOf(beginToken)
+ const endSymbol = symbolOf(endToken)
+ const purpose = purposeOf(beginToken)
+ return new CucumberExpressionError(
+ message(
+ current.start,
+ expression,
+ pointAtLocated(current),
+ `The '${beginSymbol}' does not have a matching '${endSymbol}'`,
+ `If you did not intend to use ${purpose} you can use '\\${beginSymbol}' to escape the ${purpose}`
+ )
+ )
+}
+
+export function createAlternationNotAllowedInOptional(expression: string, current: Token) {
+ return new CucumberExpressionError(
+ message(
+ current.start,
+ expression,
+ pointAtLocated(current),
+ 'An alternation can not be used inside an optional',
+ "You can use '\\/' to escape the the '/'"
+ )
+ )
+}
+
+export function createCantEscaped(expression: string, index: number) {
+ return new CucumberExpressionError(
+ message(
+ index,
+ expression,
+ pointAt(index),
+ "Only the characters '{', '}', '(', ')', '\\', '/' and whitespace can be escaped",
+ "If you did mean to use an '\\' you can use '\\\\' to escape it"
+ )
+ )
+}
+
+export function createInvalidParameterTypeNameInNode(token: Token, expression: string) {
+ return new CucumberExpressionError(
+ message(
+ token.start,
+ expression,
+ pointAtLocated(token),
+ "Parameter names may not contain '{', '}', '(', ')', '\\' or '/'",
+ 'Did you mean to use a regular expression?'
+ )
+ )
+}
+
+function message(
+ index: number,
+ expression: string,
+ pointer: any,
+ problem: string,
+ solution: string
+): string {
+ return `This Cucumber Expression has a problem at column ${index + 1}:
+
+${expression}
+${pointer}
+${problem}.
+${solution}`
+}
+
+function pointAt(index: number): string {
+ const pointer: Array = []
+ for (let i = 0; i < index; i++) {
+ pointer.push(' ')
+ }
+ pointer.push('^')
+ return pointer.join('')
+}
+
+function pointAtLocated(node: Located): string {
+ const pointer = [pointAt(node.start)]
+ if (node.start + 1 < node.end) {
+ for (let i = node.start + 1; i < node.end - 1; i++) {
+ pointer.push('-')
+ }
+ pointer.push('^')
+ }
+ return pointer.join('')
+}
+
+export class AmbiguousParameterTypeError extends CucumberExpressionError {
+ public static forConstructor(
+ keyName: string,
+ keyValue: string,
+ parameterTypes: ReadonlyArray>,
+ generatedExpressions: ReadonlyArray
+ ) {
+ return new this(
+ `parameter type with ${keyName}=${keyValue} is used by several parameter types: ${parameterTypes}, ${generatedExpressions}`
+ )
+ }
+
+ public static forRegExp(
+ parameterTypeRegexp: string,
+ expressionRegexp: RegExp,
+ parameterTypes: ReadonlyArray>,
+ generatedExpressions: ReadonlyArray
+ ) {
+ return new this(
+ `Your Regular Expression ${expressionRegexp}
+matches multiple parameter types with regexp ${parameterTypeRegexp}:
+ ${this._parameterTypeNames(parameterTypes)}
+
+I couldn't decide which one to use. You have two options:
+
+1) Use a Cucumber Expression instead of a Regular Expression. Try one of these:
+ ${this._expressions(generatedExpressions)}
+
+2) Make one of the parameter types preferential and continue to use a Regular Expression.
+`
+ )
+ }
+
+ public static _parameterTypeNames(parameterTypes: ReadonlyArray>) {
+ return parameterTypes.map((p) => `{${p.name}}`).join('\n ')
+ }
+
+ public static _expressions(generatedExpressions: ReadonlyArray) {
+ return generatedExpressions.map((e) => e.source).join('\n ')
+ }
+}
+
+export class UndefinedParameterTypeError extends CucumberExpressionError {
+ constructor(public readonly undefinedParameterTypeName: string, message: string) {
+ super(message)
+ }
+}
+
+export function createUndefinedParameterType(
+ node: Node,
+ expression: string,
+ undefinedParameterTypeName: string
+) {
+ return new UndefinedParameterTypeError(
+ undefinedParameterTypeName,
+ message(
+ node.start,
+ expression,
+ pointAtLocated(node),
+ `Undefined parameter type '${undefinedParameterTypeName}'`,
+ `Please register a ParameterType for '${undefinedParameterTypeName}'`
+ )
+ )
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/Expression.ts b/node_modules/@cucumber/cucumber-expressions/src/Expression.ts
new file mode 100644
index 0000000..44d974f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/Expression.ts
@@ -0,0 +1,6 @@
+import Argument from './Argument'
+
+export default interface Expression {
+ readonly source: string
+ match(text: string): ReadonlyArray>
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/ExpressionFactory.ts b/node_modules/@cucumber/cucumber-expressions/src/ExpressionFactory.ts
new file mode 100644
index 0000000..04e53e5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/ExpressionFactory.ts
@@ -0,0 +1,14 @@
+import Expression from './Expression'
+import CucumberExpression from './CucumberExpression'
+import RegularExpression from './RegularExpression'
+import ParameterTypeRegistry from './ParameterTypeRegistry'
+
+export default class ExpressionFactory {
+ public constructor(private readonly parameterTypeRegistry: ParameterTypeRegistry) {}
+
+ public createExpression(expression: string | RegExp): Expression {
+ return typeof expression === 'string'
+ ? new CucumberExpression(expression, this.parameterTypeRegistry)
+ : new RegularExpression(expression, this.parameterTypeRegistry)
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/GeneratedExpression.ts b/node_modules/@cucumber/cucumber-expressions/src/GeneratedExpression.ts
new file mode 100644
index 0000000..3a2054f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/GeneratedExpression.ts
@@ -0,0 +1,31 @@
+import util from 'util'
+import ParameterType from './ParameterType'
+
+export default class GeneratedExpression {
+ constructor(
+ private readonly expressionTemplate: string,
+ public readonly parameterTypes: ReadonlyArray>
+ ) {}
+
+ get source() {
+ return util.format(this.expressionTemplate, ...this.parameterTypes.map((t) => t.name))
+ }
+
+ /**
+ * Returns an array of parameter names to use in generated function/method signatures
+ *
+ * @returns {ReadonlyArray.}
+ */
+ get parameterNames(): ReadonlyArray {
+ const usageByTypeName: { [key: string]: number } = {}
+ return this.parameterTypes.map((t) => getParameterName(t.name, usageByTypeName))
+ }
+}
+
+function getParameterName(typeName: string, usageByTypeName: { [key: string]: number }) {
+ let count = usageByTypeName[typeName]
+ count = count ? count + 1 : 1
+ usageByTypeName[typeName] = count
+
+ return count === 1 ? typeName : `${typeName}${count}`
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/Group.ts b/node_modules/@cucumber/cucumber-expressions/src/Group.ts
new file mode 100644
index 0000000..fe641a9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/Group.ts
@@ -0,0 +1,12 @@
+export default class Group {
+ constructor(
+ public readonly value: string | undefined,
+ public readonly start: number,
+ public readonly end: number,
+ public readonly children: ReadonlyArray
+ ) {}
+
+ get values(): string[] {
+ return (this.children.length === 0 ? [this] : this.children).map((g) => g.value)
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/GroupBuilder.ts b/node_modules/@cucumber/cucumber-expressions/src/GroupBuilder.ts
new file mode 100644
index 0000000..75df661
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/GroupBuilder.ts
@@ -0,0 +1,35 @@
+import Group from './Group'
+import RegexExecArray from './RegexExecArray'
+
+export default class GroupBuilder {
+ public source: string
+ public capturing = true
+ private readonly groupBuilders: GroupBuilder[] = []
+
+ public add(groupBuilder: GroupBuilder) {
+ this.groupBuilders.push(groupBuilder)
+ }
+
+ public build(match: RegexExecArray, nextGroupIndex: () => number): Group {
+ const groupIndex = nextGroupIndex()
+ const children = this.groupBuilders.map((gb) => gb.build(match, nextGroupIndex))
+ return new Group(
+ match[groupIndex] || undefined,
+ match.index[groupIndex],
+ match.index[groupIndex] + (match[groupIndex] || '').length,
+ children
+ )
+ }
+
+ public setNonCapturing() {
+ this.capturing = false
+ }
+
+ get children() {
+ return this.groupBuilders
+ }
+
+ public moveChildrenTo(groupBuilder: GroupBuilder) {
+ this.groupBuilders.forEach((child) => groupBuilder.add(child))
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/ParameterType.ts b/node_modules/@cucumber/cucumber-expressions/src/ParameterType.ts
new file mode 100644
index 0000000..129c448
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/ParameterType.ts
@@ -0,0 +1,109 @@
+import CucumberExpressionError from './CucumberExpressionError'
+
+const ILLEGAL_PARAMETER_NAME_PATTERN = /([[\]()$.|?*+])/
+const UNESCAPE_PATTERN = () => /(\\([[$.|?*+\]]))/g
+
+export default class ParameterType {
+ private transformFn: (...match: readonly string[]) => T
+
+ public static compare(pt1: ParameterType, pt2: ParameterType) {
+ if (pt1.preferForRegexpMatch && !pt2.preferForRegexpMatch) {
+ return -1
+ }
+ if (pt2.preferForRegexpMatch && !pt1.preferForRegexpMatch) {
+ return 1
+ }
+ return pt1.name.localeCompare(pt2.name)
+ }
+
+ public static checkParameterTypeName(typeName: string) {
+ if (!this.isValidParameterTypeName(typeName)) {
+ throw new CucumberExpressionError(
+ `Illegal character in parameter name {${typeName}}. Parameter names may not contain '{', '}', '(', ')', '\\' or '/'`
+ )
+ }
+ }
+
+ public static isValidParameterTypeName(typeName: string) {
+ const unescapedTypeName = typeName.replace(UNESCAPE_PATTERN(), '$2')
+ return !unescapedTypeName.match(ILLEGAL_PARAMETER_NAME_PATTERN)
+ }
+
+ public regexpStrings: ReadonlyArray
+
+ /**
+ * @param name {String} the name of the type
+ * @param regexps {Array.,RegExp,Array.,String} that matches the type
+ * @param type {Function} the prototype (constructor) of the type. May be null.
+ * @param transform {Function} function transforming string to another type. May be null.
+ * @param useForSnippets {boolean} true if this should be used for snippets. Defaults to true.
+ * @param preferForRegexpMatch {boolean} true if this is a preferential type. Defaults to false.
+ */
+ constructor(
+ public readonly name: string,
+ regexps: ReadonlyArray | ReadonlyArray | RegExp | string,
+ private readonly type: any,
+ transform: (...match: string[]) => T,
+ public readonly useForSnippets: boolean,
+ public readonly preferForRegexpMatch: boolean
+ ) {
+ if (transform === undefined) {
+ transform = (s) => (s as unknown) as T
+ }
+ if (useForSnippets === undefined) {
+ this.useForSnippets = true
+ }
+ if (preferForRegexpMatch === undefined) {
+ this.preferForRegexpMatch = false
+ }
+
+ if (name) {
+ ParameterType.checkParameterTypeName(name)
+ }
+
+ this.regexpStrings = stringArray(regexps)
+ this.transformFn = transform
+ }
+
+ public transform(thisObj: any, groupValues: string[]) {
+ return this.transformFn.apply(thisObj, groupValues)
+ }
+}
+
+type StringOrRegexp = string | RegExp
+
+function stringArray(regexps: readonly StringOrRegexp[] | StringOrRegexp): string[] {
+ // @ts-ignore
+ const array: StringOrRegexp[] = Array.isArray(regexps) ? regexps : [regexps]
+ return array.map((r) => (r instanceof RegExp ? regexpSource(r) : r))
+}
+
+function regexpSource(regexp: RegExp): string {
+ const flags = regexpFlags(regexp)
+
+ for (const flag of ['g', 'i', 'm', 'y']) {
+ if (flags.indexOf(flag) !== -1) {
+ throw new CucumberExpressionError(`ParameterType Regexps can't use flag '${flag}'`)
+ }
+ }
+ return regexp.source
+}
+
+// Backport RegExp.flags for Node 4.x
+// https://github.com/nodejs/node/issues/8390
+function regexpFlags(regexp: RegExp) {
+ let flags = regexp.flags
+ if (flags === undefined) {
+ flags = ''
+ if (regexp.ignoreCase) {
+ flags += 'i'
+ }
+ if (regexp.global) {
+ flags += 'g'
+ }
+ if (regexp.multiline) {
+ flags += 'm'
+ }
+ }
+ return flags
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeMatcher.ts b/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeMatcher.ts
new file mode 100644
index 0000000..56ea43c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeMatcher.ts
@@ -0,0 +1,79 @@
+import ParameterType from './ParameterType'
+
+export default class ParameterTypeMatcher {
+ private readonly match: RegExpExecArray
+
+ constructor(
+ public readonly parameterType: ParameterType,
+ private readonly regexpString: string,
+ private readonly text: string,
+ private matchPosition: number = 0
+ ) {
+ const captureGroupRegexp = new RegExp(`(${regexpString})`)
+ this.match = captureGroupRegexp.exec(text.slice(this.matchPosition))
+ }
+
+ public advanceTo(newMatchPosition: number) {
+ for (let advancedPos = newMatchPosition; advancedPos < this.text.length; advancedPos++) {
+ const matcher = new ParameterTypeMatcher(
+ this.parameterType,
+ this.regexpString,
+ this.text,
+ advancedPos
+ )
+
+ if (matcher.find) {
+ return matcher
+ }
+ }
+
+ return new ParameterTypeMatcher(
+ this.parameterType,
+ this.regexpString,
+ this.text,
+ this.text.length
+ )
+ }
+
+ get find() {
+ return this.match && this.group !== '' && this.fullWord
+ }
+
+ get start() {
+ return this.matchPosition + this.match.index
+ }
+
+ get fullWord() {
+ return this.matchStartWord && this.matchEndWord
+ }
+
+ get matchStartWord() {
+ return this.start === 0 || this.text[this.start - 1].match(/\p{Z}|\p{P}|\p{S}/u)
+ }
+
+ get matchEndWord() {
+ const nextCharacterIndex = this.start + this.group.length
+ return (
+ nextCharacterIndex === this.text.length ||
+ this.text[nextCharacterIndex].match(/\p{Z}|\p{P}|\p{S}/u)
+ )
+ }
+
+ get group() {
+ return this.match[0]
+ }
+
+ public static compare(a: ParameterTypeMatcher, b: ParameterTypeMatcher) {
+ const posComparison = a.start - b.start
+ if (posComparison !== 0) {
+ return posComparison
+ }
+ const lengthComparison = b.group.length - a.group.length
+ if (lengthComparison !== 0) {
+ return lengthComparison
+ }
+ return 0
+ }
+}
+
+module.exports = ParameterTypeMatcher
diff --git a/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeRegistry.ts b/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeRegistry.ts
new file mode 100644
index 0000000..5bdc5a9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/ParameterTypeRegistry.ts
@@ -0,0 +1,129 @@
+import ParameterType from './ParameterType'
+
+import CucumberExpressionGenerator from './CucumberExpressionGenerator'
+import { AmbiguousParameterTypeError } from './Errors'
+import CucumberExpressionError from './CucumberExpressionError'
+
+export default class ParameterTypeRegistry {
+ public static readonly INTEGER_REGEXPS = [/-?\d+/, /\d+/]
+ public static readonly FLOAT_REGEXP = /(?=.*\d.*)[-+]?\d*(?:\.(?=\d.*))?\d*(?:\d+[E][+-]?\d+)?/
+ public static readonly WORD_REGEXP = /[^\s]+/
+ public static readonly STRING_REGEXP = /"([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'/
+ public static readonly ANONYMOUS_REGEXP = /.*/
+
+ private readonly parameterTypeByName = new Map>()
+ private readonly parameterTypesByRegexp = new Map>>()
+
+ constructor() {
+ this.defineParameterType(
+ new ParameterType(
+ 'int',
+ ParameterTypeRegistry.INTEGER_REGEXPS,
+ Number,
+ (s) => (s === undefined ? null : Number(s)),
+ true,
+ true
+ )
+ )
+ this.defineParameterType(
+ new ParameterType(
+ 'float',
+ ParameterTypeRegistry.FLOAT_REGEXP,
+ Number,
+ (s) => (s === undefined ? null : parseFloat(s)),
+ true,
+ false
+ )
+ )
+ this.defineParameterType(
+ new ParameterType('word', ParameterTypeRegistry.WORD_REGEXP, String, (s) => s, false, false)
+ )
+ this.defineParameterType(
+ new ParameterType(
+ 'string',
+ ParameterTypeRegistry.STRING_REGEXP,
+ String,
+ (s1, s2) => (s1 || s2 || '').replace(/\\"/g, '"').replace(/\\'/g, "'"),
+ true,
+ false
+ )
+ )
+ this.defineParameterType(
+ new ParameterType('', ParameterTypeRegistry.ANONYMOUS_REGEXP, String, (s) => s, false, true)
+ )
+ }
+
+ get parameterTypes(): IterableIterator> {
+ return this.parameterTypeByName.values()
+ }
+
+ public lookupByTypeName(typeName: string) {
+ return this.parameterTypeByName.get(typeName)
+ }
+
+ public lookupByRegexp(
+ parameterTypeRegexp: string,
+ expressionRegexp: RegExp,
+ text: string
+ ): ParameterType {
+ const parameterTypes = this.parameterTypesByRegexp.get(parameterTypeRegexp)
+ if (!parameterTypes) {
+ return null
+ }
+ if (parameterTypes.length > 1 && !parameterTypes[0].preferForRegexpMatch) {
+ // We don't do this check on insertion because we only want to restrict
+ // ambiguity when we look up by Regexp. Users of CucumberExpression should
+ // not be restricted.
+ const generatedExpressions = new CucumberExpressionGenerator(
+ () => this.parameterTypes
+ ).generateExpressions(text)
+ throw AmbiguousParameterTypeError.forRegExp(
+ parameterTypeRegexp,
+ expressionRegexp,
+ parameterTypes,
+ generatedExpressions
+ )
+ }
+ return parameterTypes[0]
+ }
+
+ public defineParameterType(parameterType: ParameterType) {
+ if (parameterType.name !== undefined) {
+ if (this.parameterTypeByName.has(parameterType.name)) {
+ if (parameterType.name.length === 0) {
+ throw new Error(`The anonymous parameter type has already been defined`)
+ } else {
+ throw new Error(`There is already a parameter type with name ${parameterType.name}`)
+ }
+ }
+ this.parameterTypeByName.set(parameterType.name, parameterType)
+ }
+
+ for (const parameterTypeRegexp of parameterType.regexpStrings) {
+ if (!this.parameterTypesByRegexp.has(parameterTypeRegexp)) {
+ this.parameterTypesByRegexp.set(parameterTypeRegexp, [])
+ }
+ const parameterTypes = this.parameterTypesByRegexp.get(parameterTypeRegexp)
+ const existingParameterType = parameterTypes[0]
+ if (
+ parameterTypes.length > 0 &&
+ existingParameterType.preferForRegexpMatch &&
+ parameterType.preferForRegexpMatch
+ ) {
+ throw new CucumberExpressionError(
+ 'There can only be one preferential parameter type per regexp. ' +
+ `The regexp /${parameterTypeRegexp}/ is used for two preferential parameter types, {${existingParameterType.name}} and {${parameterType.name}}`
+ )
+ }
+ if (parameterTypes.indexOf(parameterType) === -1) {
+ parameterTypes.push(parameterType)
+ this.parameterTypesByRegexp.set(
+ parameterTypeRegexp,
+ parameterTypes.sort(ParameterType.compare)
+ )
+ }
+ }
+ }
+}
+
+module.exports = ParameterTypeRegistry
diff --git a/node_modules/@cucumber/cucumber-expressions/src/RegexExecArray.ts b/node_modules/@cucumber/cucumber-expressions/src/RegexExecArray.ts
new file mode 100644
index 0000000..968885f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/RegexExecArray.ts
@@ -0,0 +1,4 @@
+export default interface RegexExecArray extends ReadonlyArray {
+ index: ReadonlyArray
+ input: string
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/RegularExpression.ts b/node_modules/@cucumber/cucumber-expressions/src/RegularExpression.ts
new file mode 100644
index 0000000..687b37e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/RegularExpression.ts
@@ -0,0 +1,40 @@
+import Argument from './Argument'
+import TreeRegexp from './TreeRegexp'
+import ParameterType from './ParameterType'
+import ParameterTypeRegistry from './ParameterTypeRegistry'
+import Expression from './Expression'
+
+export default class RegularExpression implements Expression {
+ private readonly treeRegexp: TreeRegexp
+
+ constructor(
+ public readonly regexp: RegExp,
+ private readonly parameterTypeRegistry: ParameterTypeRegistry
+ ) {
+ this.treeRegexp = new TreeRegexp(regexp)
+ }
+
+ public match(text: string): ReadonlyArray> {
+ const parameterTypes = this.treeRegexp.groupBuilder.children.map((groupBuilder) => {
+ const parameterTypeRegexp = groupBuilder.source
+
+ return (
+ this.parameterTypeRegistry.lookupByRegexp(parameterTypeRegexp, this.regexp, text) ||
+ new ParameterType(
+ null,
+ parameterTypeRegexp,
+ String,
+ (s) => (s === undefined ? null : s),
+ false,
+ false
+ )
+ )
+ })
+
+ return Argument.build(this.treeRegexp, text, parameterTypes)
+ }
+
+ get source(): string {
+ return this.regexp.source
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/TreeRegexp.ts b/node_modules/@cucumber/cucumber-expressions/src/TreeRegexp.ts
new file mode 100644
index 0000000..2cb0c9d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/TreeRegexp.ts
@@ -0,0 +1,79 @@
+import GroupBuilder from './GroupBuilder'
+// @ts-ignore
+import Regex from 'becke-ch--regex--s0-0-v1--base--pl--lib'
+import RegexExecArray from './RegexExecArray'
+import Group from './Group'
+
+export default class TreeRegexp {
+ public regexp: RegExp
+ private regex: any
+ public groupBuilder: GroupBuilder
+
+ constructor(regexp: RegExp | string) {
+ this.regexp = 'string' === typeof regexp ? new RegExp(regexp) : regexp
+ this.regex = new Regex(this.regexp.source, this.regexp.flags)
+ this.groupBuilder = TreeRegexp.createGroupBuilder(this.regex)
+ }
+
+ private static createGroupBuilder(regexp: RegExp) {
+ const source = regexp.source
+ const stack: GroupBuilder[] = [new GroupBuilder()]
+ const groupStartStack: number[] = []
+ let escaping = false
+ let charClass = false
+
+ for (let i = 0; i < source.length; i++) {
+ const c = source[i]
+ if (c === '[' && !escaping) {
+ charClass = true
+ } else if (c === ']' && !escaping) {
+ charClass = false
+ } else if (c === '(' && !escaping && !charClass) {
+ groupStartStack.push(i)
+ const nonCapturing = TreeRegexp.isNonCapturing(source, i)
+ const groupBuilder = new GroupBuilder()
+ if (nonCapturing) {
+ groupBuilder.setNonCapturing()
+ }
+ stack.push(groupBuilder)
+ } else if (c === ')' && !escaping && !charClass) {
+ const gb = stack.pop()
+ const groupStart = groupStartStack.pop()
+ if (gb.capturing) {
+ gb.source = source.substring(groupStart + 1, i)
+ stack[stack.length - 1].add(gb)
+ } else {
+ gb.moveChildrenTo(stack[stack.length - 1])
+ }
+ }
+ escaping = c === '\\' && !escaping
+ }
+ return stack.pop()
+ }
+
+ private static isNonCapturing(source: string, i: number): boolean {
+ // Regex is valid. Bounds check not required.
+ if (source[i + 1] != '?') {
+ // (X)
+ return false
+ }
+ if (source[i + 2] != '<') {
+ // (?:X)
+ // (?=X)
+ // (?!X)
+ return true
+ }
+ // (?<=X) or (?X)
+ return source[i + 3] == '=' || source[i + 3] == '!'
+ }
+
+ public match(s: string): Group | null {
+ const match: RegexExecArray = this.regex.exec(s)
+ if (!match) {
+ return null
+ }
+ let groupIndex = 0
+ const nextGroupIndex = () => groupIndex++
+ return this.groupBuilder.build(match, nextGroupIndex)
+ }
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/index.ts b/node_modules/@cucumber/cucumber-expressions/src/index.ts
new file mode 100644
index 0000000..10175f8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/index.ts
@@ -0,0 +1,23 @@
+import Argument from './Argument'
+import Expression from './Expression'
+import CucumberExpression from './CucumberExpression'
+import RegularExpression from './RegularExpression'
+import Group from './Group'
+import ExpressionFactory from './ExpressionFactory'
+import CucumberExpressionGenerator from './CucumberExpressionGenerator'
+import ParameterTypeRegistry from './ParameterTypeRegistry'
+import ParameterType from './ParameterType'
+import GeneratedExpression from './GeneratedExpression'
+
+export {
+ Argument,
+ Group,
+ Expression,
+ CucumberExpression,
+ RegularExpression,
+ ExpressionFactory,
+ CucumberExpressionGenerator,
+ GeneratedExpression,
+ ParameterTypeRegistry,
+ ParameterType,
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/src/web.ts b/node_modules/@cucumber/cucumber-expressions/src/web.ts
new file mode 100644
index 0000000..4ede3a3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/src/web.ts
@@ -0,0 +1,4 @@
+import * as CucumberExpressions from './index'
+
+// @ts-ignore
+window.CucumberExpressions = CucumberExpressions
diff --git a/node_modules/@cucumber/cucumber-expressions/test/ArgumentTest.ts b/node_modules/@cucumber/cucumber-expressions/test/ArgumentTest.ts
new file mode 100644
index 0000000..3baa61d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/ArgumentTest.ts
@@ -0,0 +1,16 @@
+import TreeRegexp from '../src/TreeRegexp'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+import Argument from '../src/Argument'
+import * as assert from 'assert'
+
+describe('Argument', () => {
+ it('exposes getParameterTypeName()', () => {
+ const treeRegexp = new TreeRegexp('three (.*) mice')
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+ const args = Argument.build(treeRegexp, 'three blind mice', [
+ parameterTypeRegistry.lookupByTypeName('string'),
+ ])
+ const argument = args[0]
+ assert.strictEqual(argument.getParameterType().name, 'string')
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CombinatorialGeneratedExpressionFactoryTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CombinatorialGeneratedExpressionFactoryTest.ts
new file mode 100644
index 0000000..65b18ec
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CombinatorialGeneratedExpressionFactoryTest.ts
@@ -0,0 +1,33 @@
+import assert from 'assert'
+import ParameterType from '../src/ParameterType'
+import CombinatorialGeneratedExpressionFactory from '../src/CombinatorialGeneratedExpressionFactory'
+
+describe('CucumberExpressionGenerator', () => {
+ it('generates multiple expressions', () => {
+ const parameterTypeCombinations = [
+ [
+ new ParameterType('color', /red|blue|yellow/, null, (s) => s, false, true),
+ new ParameterType('csscolor', /red|blue|yellow/, null, (s) => s, false, true),
+ ],
+ [
+ new ParameterType('date', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ new ParameterType('datetime', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ new ParameterType('timestamp', /\d{4}-\d{2}-\d{2}/, null, (s) => s, false, true),
+ ],
+ ]
+
+ const factory = new CombinatorialGeneratedExpressionFactory(
+ 'I bought a {%s} ball on {%s}',
+ parameterTypeCombinations
+ )
+ const expressions = factory.generateExpressions().map((ge) => ge.source)
+ assert.deepStrictEqual(expressions, [
+ 'I bought a {color} ball on {date}',
+ 'I bought a {color} ball on {datetime}',
+ 'I bought a {color} ball on {timestamp}',
+ 'I bought a {csscolor} ball on {date}',
+ 'I bought a {csscolor} ball on {datetime}',
+ 'I bought a {csscolor} ball on {timestamp}',
+ ])
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionGeneratorTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionGeneratorTest.ts
new file mode 100644
index 0000000..6f19d5c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionGeneratorTest.ts
@@ -0,0 +1,257 @@
+import assert from 'assert'
+import CucumberExpressionGenerator from '../src/CucumberExpressionGenerator'
+import CucumberExpression from '../src/CucumberExpression'
+import ParameterType from '../src/ParameterType'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+
+class Currency {
+ constructor(public readonly s: string) {}
+}
+
+describe('CucumberExpressionGenerator', () => {
+ let parameterTypeRegistry: ParameterTypeRegistry
+ let generator: CucumberExpressionGenerator
+
+ function assertExpression(
+ expectedExpression: string,
+ expectedArgumentNames: string[],
+ text: string
+ ) {
+ const generatedExpression = generator.generateExpressions(text)[0]
+ assert.deepStrictEqual(generatedExpression.parameterNames, expectedArgumentNames)
+ assert.strictEqual(generatedExpression.source, expectedExpression)
+
+ const cucumberExpression = new CucumberExpression(
+ generatedExpression.source,
+ parameterTypeRegistry
+ )
+ const match = cucumberExpression.match(text)
+ if (match === null) {
+ assert.fail(
+ `Expected text '${text}' to match generated expression '${generatedExpression.source}'`
+ )
+ }
+ assert.strictEqual(match.length, expectedArgumentNames.length)
+ }
+
+ beforeEach(() => {
+ parameterTypeRegistry = new ParameterTypeRegistry()
+ generator = new CucumberExpressionGenerator(() => parameterTypeRegistry.parameterTypes)
+ })
+
+ it('documents expression generation', () => {
+ parameterTypeRegistry = new ParameterTypeRegistry()
+ generator = new CucumberExpressionGenerator(() => parameterTypeRegistry.parameterTypes)
+ const undefinedStepText = 'I have 2 cucumbers and 1.5 tomato'
+ const generatedExpression = generator.generateExpressions(undefinedStepText)[0]
+ assert.strictEqual(generatedExpression.source, 'I have {int} cucumbers and {float} tomato')
+ assert.strictEqual(generatedExpression.parameterNames[0], 'int')
+ assert.strictEqual(generatedExpression.parameterTypes[1].name, 'float')
+ })
+
+ it('generates expression for no args', () => {
+ assertExpression('hello', [], 'hello')
+ })
+
+ it('generates expression with escaped left parenthesis', () => {
+ assertExpression('\\(iii)', [], '(iii)')
+ })
+
+ it('generates expression with escaped left curly brace', () => {
+ assertExpression('\\{iii}', [], '{iii}')
+ })
+
+ it('generates expression with escaped slashes', () => {
+ assertExpression('The {int}\\/{int}\\/{int} hey', ['int', 'int2', 'int3'], 'The 1814/05/17 hey')
+ })
+
+ it('generates expression for int float arg', () => {
+ assertExpression(
+ 'I have {int} cukes and {float} euro',
+ ['int', 'float'],
+ 'I have 2 cukes and 1.5 euro'
+ )
+ })
+
+ it('generates expression for strings', () => {
+ assertExpression(
+ 'I like {string} and {string}',
+ ['string', 'string2'],
+ 'I like "bangers" and \'mash\''
+ )
+ })
+
+ it('generates expression with % sign', () => {
+ assertExpression('I am {int}%% foobar', ['int'], 'I am 20%% foobar')
+ })
+
+ it('generates expression for just int', () => {
+ assertExpression('{int}', ['int'], '99999')
+ })
+
+ it('numbers only second argument when builtin type is not reserved keyword', () => {
+ assertExpression(
+ 'I have {float} cukes and {float} euro',
+ ['float', 'float2'],
+ 'I have 2.5 cukes and 1.5 euro'
+ )
+ })
+
+ it('generates expression for custom type', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('currency', /[A-Z]{3}/, Currency, (s) => new Currency(s), true, false)
+ )
+
+ assertExpression('I have a {currency} account', ['currency'], 'I have a EUR account')
+ })
+
+ it('prefers leftmost match when there is overlap', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('currency', /c d/, Currency, (s) => new Currency(s), true, false)
+ )
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('date', /b c/, Date, (s) => new Date(s), true, false)
+ )
+
+ assertExpression('a {date} d e f g', ['date'], 'a b c d e f g')
+ })
+
+ // TODO: prefers widest match
+
+ it('generates all combinations of expressions when several parameter types match', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('currency', /x/, null, (s) => new Currency(s), true, false)
+ )
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('date', /x/, null, (s) => new Date(s), true, false)
+ )
+
+ const generatedExpressions = generator.generateExpressions('I have x and x and another x')
+ const expressions = generatedExpressions.map((e) => e.source)
+ assert.deepStrictEqual(expressions, [
+ 'I have {currency} and {currency} and another {currency}',
+ 'I have {currency} and {currency} and another {date}',
+ 'I have {currency} and {date} and another {currency}',
+ 'I have {currency} and {date} and another {date}',
+ 'I have {date} and {currency} and another {currency}',
+ 'I have {date} and {currency} and another {date}',
+ 'I have {date} and {date} and another {currency}',
+ 'I have {date} and {date} and another {date}',
+ ])
+ })
+
+ it('exposes parameter type names in generated expression', () => {
+ const expression = generator.generateExpressions('I have 2 cukes and 1.5 euro')[0]
+ const typeNames = expression.parameterTypes.map((parameter) => parameter.name)
+ assert.deepStrictEqual(typeNames, ['int', 'float'])
+ })
+
+ it('matches parameter types with optional capture groups', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('optional-flight', /(1st flight)?/, null, (s) => s, true, false)
+ )
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('optional-hotel', /(1 hotel)?/, null, (s) => s, true, false)
+ )
+
+ const expression = generator.generateExpressions('I reach Stage 4: 1st flight -1 hotel')[0]
+ // While you would expect this to be `I reach Stage {int}: {optional-flight} -{optional-hotel}` the `-1` causes
+ // {int} to match just before {optional-hotel}.
+ assert.strictEqual(expression.source, 'I reach Stage {int}: {optional-flight} {int} hotel')
+ })
+
+ it('generates at most 256 expressions', () => {
+ for (let i = 0; i < 4; i++) {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('my-type-' + i, /([a-z] )*?[a-z]/, null, (s) => s, true, false)
+ )
+ }
+ // This would otherwise generate 4^11=419430 expressions and consume just shy of 1.5GB.
+ const expressions = generator.generateExpressions('a s i m p l e s t e p')
+ assert.strictEqual(expressions.length, 256)
+ })
+
+ it('prefers expression with longest non empty match', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('zero-or-more', /[a-z]*/, null, (s) => s, true, false)
+ )
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('exactly-one', /[a-z]/, null, (s) => s, true, false)
+ )
+
+ const expressions = generator.generateExpressions('a simple step')
+ assert.strictEqual(expressions.length, 2)
+ assert.strictEqual(expressions[0].source, '{exactly-one} {zero-or-more} {zero-or-more}')
+ assert.strictEqual(expressions[1].source, '{zero-or-more} {zero-or-more} {zero-or-more}')
+ })
+
+ it('does not suggest parameter included at the beginning of a word', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('direction', /(up|down)/, null, (s) => s, true, false)
+ )
+
+ const expressions = generator.generateExpressions('I download a picture')
+ assert.strictEqual(expressions.length, 1)
+ assert.notStrictEqual(expressions[0].source, 'I {direction}load a picture')
+ assert.strictEqual(expressions[0].source, 'I download a picture')
+ })
+
+ it('does not suggest parameter included inside a word', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('direction', /(up|down)/, null, (s) => s, true, false)
+ )
+
+ const expressions = generator.generateExpressions('I watch the muppet show')
+ assert.strictEqual(expressions.length, 1)
+ assert.notStrictEqual(expressions[0].source, 'I watch the m{direction}pet show')
+ assert.strictEqual(expressions[0].source, 'I watch the muppet show')
+ })
+
+ it('does not suggest parameter at the end of a word', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('direction', /(up|down)/, null, (s) => s, true, false)
+ )
+
+ const expressions = generator.generateExpressions('I create a group')
+ assert.strictEqual(expressions.length, 1)
+ assert.notStrictEqual(expressions[0].source, 'I create a gro{direction}')
+ assert.strictEqual(expressions[0].source, 'I create a group')
+ })
+
+ it('does suggest parameter that are a full word', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('direction', /(up|down)/, null, (s) => s, true, false)
+ )
+
+ assert.strictEqual(
+ generator.generateExpressions('When I go down the road')[0].source,
+ 'When I go {direction} the road'
+ )
+
+ assert.strictEqual(
+ generator.generateExpressions('When I walk up the hill')[0].source,
+ 'When I walk {direction} the hill'
+ )
+
+ assert.strictEqual(
+ generator.generateExpressions('up the hill, the road goes down')[0].source,
+ '{direction} the hill, the road goes {direction}'
+ )
+ })
+
+ it('does not consider punctuation as being part of a word', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('direction', /(up|down)/, null, (s) => s, true, false)
+ )
+
+ assert.strictEqual(
+ generator.generateExpressions('direction is:down')[0].source,
+ 'direction is:{direction}'
+ )
+
+ assert.strictEqual(
+ generator.generateExpressions('direction is down.')[0].source,
+ 'direction is {direction}.'
+ )
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionParserTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionParserTest.ts
new file mode 100644
index 0000000..4d3ccfe
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionParserTest.ts
@@ -0,0 +1,32 @@
+import fs from 'fs'
+import yaml from 'js-yaml'
+import assert from 'assert'
+import CucumberExpressionParser from '../src/CucumberExpressionParser'
+import CucumberExpressionError from '../src/CucumberExpressionError'
+
+interface Expectation {
+ expression: string
+ expected?: string
+ exception?: string
+}
+
+describe('Cucumber expression parser', () => {
+ fs.readdirSync('testdata/ast').forEach((testcase) => {
+ const testCaseData = fs.readFileSync(`testdata/ast/${testcase}`, 'utf-8')
+ const expectation = yaml.load(testCaseData) as Expectation
+ it(`${testcase}`, () => {
+ const parser = new CucumberExpressionParser()
+ if (expectation.exception == undefined) {
+ const node = parser.parse(expectation.expression)
+ assert.deepStrictEqual(
+ JSON.parse(JSON.stringify(node)), // Removes type information.
+ JSON.parse(expectation.expected)
+ )
+ } else {
+ assert.throws(() => {
+ parser.parse(expectation.expression)
+ }, new CucumberExpressionError(expectation.exception))
+ }
+ })
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTest.ts
new file mode 100644
index 0000000..0573671
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTest.ts
@@ -0,0 +1,161 @@
+import assert from 'assert'
+import CucumberExpression from '../src/CucumberExpression'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+import ParameterType from '../src/ParameterType'
+import fs from 'fs'
+import yaml from 'js-yaml'
+import CucumberExpressionError from '../src/CucumberExpressionError'
+
+interface Expectation {
+ expression: string
+ text: string
+ expected?: string
+ exception?: string
+}
+
+describe('CucumberExpression', () => {
+ fs.readdirSync('testdata/expression').forEach((testcase) => {
+ const testCaseData = fs.readFileSync(`testdata/expression/${testcase}`, 'utf-8')
+ const expectation = yaml.load(testCaseData) as Expectation
+ it(`${testcase}`, () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+ if (expectation.exception == undefined) {
+ const expression = new CucumberExpression(expectation.expression, parameterTypeRegistry)
+ const matches = expression.match(expectation.text)
+ assert.deepStrictEqual(
+ JSON.parse(JSON.stringify(matches ? matches.map((value) => value.getValue(null)) : null)), // Removes type information.
+ JSON.parse(expectation.expected)
+ )
+ } else {
+ assert.throws(() => {
+ const expression = new CucumberExpression(expectation.expression, parameterTypeRegistry)
+ expression.match(expectation.text)
+ }, new CucumberExpressionError(expectation.exception))
+ }
+ })
+ })
+
+ fs.readdirSync('testdata/regex').forEach((testcase) => {
+ const testCaseData = fs.readFileSync(`testdata/regex/${testcase}`, 'utf-8')
+ const expectation = yaml.load(testCaseData) as Expectation
+ it(`${testcase}`, () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+ const expression = new CucumberExpression(expectation.expression, parameterTypeRegistry)
+ assert.deepStrictEqual(expression.regexp.source, expectation.expected)
+ })
+ })
+
+ it('documents match arguments', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+
+ /// [capture-match-arguments]
+ const expr = 'I have {int} cuke(s)'
+ const expression = new CucumberExpression(expr, parameterTypeRegistry)
+ const args = expression.match('I have 7 cukes')
+ assert.strictEqual(7, args[0].getValue(null))
+ /// [capture-match-arguments]
+ })
+
+ it('matches float', () => {
+ assert.deepStrictEqual(match('{float}', ''), null)
+ assert.deepStrictEqual(match('{float}', '.'), null)
+ assert.deepStrictEqual(match('{float}', ','), null)
+ assert.deepStrictEqual(match('{float}', '-'), null)
+ assert.deepStrictEqual(match('{float}', 'E'), null)
+ assert.deepStrictEqual(match('{float}', '1,'), null)
+ assert.deepStrictEqual(match('{float}', ',1'), null)
+ assert.deepStrictEqual(match('{float}', '1.'), null)
+
+ assert.deepStrictEqual(match('{float}', '1'), [1])
+ assert.deepStrictEqual(match('{float}', '-1'), [-1])
+ assert.deepStrictEqual(match('{float}', '1.1'), [1.1])
+ assert.deepStrictEqual(match('{float}', '1,000'), null)
+ assert.deepStrictEqual(match('{float}', '1,000,0'), null)
+ assert.deepStrictEqual(match('{float}', '1,000.1'), null)
+ assert.deepStrictEqual(match('{float}', '1,000,10'), null)
+ assert.deepStrictEqual(match('{float}', '1,0.1'), null)
+ assert.deepStrictEqual(match('{float}', '1,000,000.1'), null)
+ assert.deepStrictEqual(match('{float}', '-1.1'), [-1.1])
+
+ assert.deepStrictEqual(match('{float}', '.1'), [0.1])
+ assert.deepStrictEqual(match('{float}', '-.1'), [-0.1])
+ assert.deepStrictEqual(match('{float}', '-.10000001'), [-0.10000001])
+ assert.deepStrictEqual(match('{float}', '1E1'), [1e1]) // precision 1 with scale -1, can not be expressed as a decimal
+ assert.deepStrictEqual(match('{float}', '.1E1'), [1])
+ assert.deepStrictEqual(match('{float}', 'E1'), null)
+ assert.deepStrictEqual(match('{float}', '-.1E-1'), [-0.01])
+ assert.deepStrictEqual(match('{float}', '-.1E-2'), [-0.001])
+ assert.deepStrictEqual(match('{float}', '-.1E+1'), [-1])
+ assert.deepStrictEqual(match('{float}', '-.1E+2'), [-10])
+ assert.deepStrictEqual(match('{float}', '-.1E1'), [-1])
+ assert.deepStrictEqual(match('{float}', '-.10E2'), [-10])
+ })
+
+ it('matches float with zero', () => {
+ assert.deepEqual(match('{float}', '0'), [0])
+ })
+
+ it('exposes source', () => {
+ const expr = 'I have {int} cuke(s)'
+ assert.strictEqual(new CucumberExpression(expr, new ParameterTypeRegistry()).source, expr)
+ })
+
+ it('unmatched optional groups have undefined values', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'textAndOrNumber',
+ /([A-Z]+)?(?: )?([0-9]+)?/,
+ null,
+ function (s1, s2) {
+ return [s1, s2]
+ },
+ false,
+ true
+ )
+ )
+ const expression = new CucumberExpression('{textAndOrNumber}', parameterTypeRegistry)
+
+ const world = {}
+
+ assert.deepStrictEqual(expression.match(`TLA`)[0].getValue(world), ['TLA', undefined])
+ assert.deepStrictEqual(expression.match(`123`)[0].getValue(world), [undefined, '123'])
+ })
+
+ // JavaScript-specific
+
+ it('delegates transform to custom object', () => {
+ const parameterTypeRegistry = new ParameterTypeRegistry()
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'widget',
+ /\w+/,
+ null,
+ function (s: string) {
+ return this.createWidget(s)
+ },
+ false,
+ true
+ )
+ )
+ const expression = new CucumberExpression('I have a {widget}', parameterTypeRegistry)
+
+ const world = {
+ createWidget(s: string) {
+ return `widget:${s}`
+ },
+ }
+
+ const args = expression.match(`I have a bolt`)
+ assert.strictEqual(args[0].getValue(world), 'widget:bolt')
+ })
+})
+
+const match = (expression: string, text: string) => {
+ const cucumberExpression = new CucumberExpression(expression, new ParameterTypeRegistry())
+ const args = cucumberExpression.match(text)
+ if (!args) {
+ return null
+ }
+ return args.map((arg) => arg.getValue(null))
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTokenizerTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTokenizerTest.ts
new file mode 100644
index 0000000..7378627
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CucumberExpressionTokenizerTest.ts
@@ -0,0 +1,32 @@
+import fs from 'fs'
+import yaml from 'js-yaml'
+import CucumberExpressionTokenizer from '../src/CucumberExpressionTokenizer'
+import assert from 'assert'
+import CucumberExpressionError from '../src/CucumberExpressionError'
+
+interface Expectation {
+ expression: string
+ expected?: string
+ exception?: string
+}
+
+describe('Cucumber expression tokenizer', () => {
+ fs.readdirSync('testdata/tokens').forEach((testcase) => {
+ const testCaseData = fs.readFileSync(`testdata/tokens/${testcase}`, 'utf-8')
+ const expectation = yaml.load(testCaseData) as Expectation
+ it(`${testcase}`, () => {
+ const tokenizer = new CucumberExpressionTokenizer()
+ if (expectation.exception == undefined) {
+ const tokens = tokenizer.tokenize(expectation.expression)
+ assert.deepStrictEqual(
+ JSON.parse(JSON.stringify(tokens)), // Removes type information.
+ JSON.parse(expectation.expected)
+ )
+ } else {
+ assert.throws(() => {
+ tokenizer.tokenize(expectation.expression)
+ }, new CucumberExpressionError(expectation.exception))
+ }
+ })
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/CustomParameterTypeTest.ts b/node_modules/@cucumber/cucumber-expressions/test/CustomParameterTypeTest.ts
new file mode 100644
index 0000000..686e86f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/CustomParameterTypeTest.ts
@@ -0,0 +1,224 @@
+'use strict'
+
+import assert from 'assert'
+import CucumberExpression from '../src/CucumberExpression'
+import RegularExpression from '../src/RegularExpression'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+import ParameterType from '../src/ParameterType'
+
+class Color {
+ /// [color-constructor]
+ constructor(public readonly name: string) {}
+ /// [color-constructor]
+}
+
+class CssColor {
+ constructor(public readonly name: string) {}
+}
+
+describe('Custom parameter type', () => {
+ let parameterTypeRegistry: ParameterTypeRegistry
+
+ beforeEach(() => {
+ parameterTypeRegistry = new ParameterTypeRegistry()
+ /* eslint-disable prettier/prettier */
+ /// [add-color-parameter-type]
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'color', // name
+ /red|blue|yellow/, // regexp
+ Color, // type
+ s => new Color(s), // transformer
+ false, // useForSnippets
+ true // preferForRegexpMatch
+ )
+ )
+ /// [add-color-parameter-type]
+ /* eslint-enable prettier/prettier */
+ })
+
+ describe('CucumberExpression', () => {
+ it('throws exception for illegal character in parameter name', () => {
+ assert.throws(() => new ParameterType('[string]', /.*/, String, (s) => s, false, true), {
+ message:
+ "Illegal character in parameter name {[string]}. Parameter names may not contain '{', '}', '(', ')', '\\' or '/'",
+ })
+ })
+
+ it('matches parameters with custom parameter type', () => {
+ const expression = new CucumberExpression('I have a {color} ball', parameterTypeRegistry)
+ const value = expression.match('I have a red ball')[0].getValue(null)
+ assert.strictEqual(value.name, 'red')
+ })
+
+ it('matches parameters with multiple capture groups', () => {
+ class Coordinate {
+ constructor(
+ public readonly x: number,
+ public readonly y: number,
+ public readonly z: number
+ ) {}
+ }
+
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'coordinate',
+ /(\d+),\s*(\d+),\s*(\d+)/,
+ Coordinate,
+ (x: string, y: string, z: string) => new Coordinate(Number(x), Number(y), Number(z)),
+ true,
+ true
+ )
+ )
+ const expression = new CucumberExpression(
+ 'A {int} thick line from {coordinate} to {coordinate}',
+ parameterTypeRegistry
+ )
+ const args = expression.match('A 5 thick line from 10,20,30 to 40,50,60')
+
+ const thick = args[0].getValue(null)
+ assert.strictEqual(thick, 5)
+
+ const from = args[1].getValue(null)
+ assert.strictEqual(from.x, 10)
+ assert.strictEqual(from.y, 20)
+ assert.strictEqual(from.z, 30)
+
+ const to = args[2].getValue(null)
+ assert.strictEqual(to.x, 40)
+ assert.strictEqual(to.y, 50)
+ assert.strictEqual(to.z, 60)
+ })
+
+ it('matches parameters with custom parameter type using optional capture group', () => {
+ parameterTypeRegistry = new ParameterTypeRegistry()
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'color',
+ [/red|blue|yellow/, /(?:dark|light) (?:red|blue|yellow)/],
+ Color,
+ (s) => new Color(s),
+ false,
+ true
+ )
+ )
+ const expression = new CucumberExpression('I have a {color} ball', parameterTypeRegistry)
+ const value = expression.match('I have a dark red ball')[0].getValue(null)
+ assert.strictEqual(value.name, 'dark red')
+ })
+
+ it('defers transformation until queried from argument', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'throwing',
+ /bad/,
+ null,
+ (s) => {
+ throw new Error(`Can't transform [${s}]`)
+ },
+ false,
+ true
+ )
+ )
+
+ const expression = new CucumberExpression(
+ 'I have a {throwing} parameter',
+ parameterTypeRegistry
+ )
+ const args = expression.match('I have a bad parameter')
+ assert.throws(() => args[0].getValue(null), {
+ message: "Can't transform [bad]",
+ })
+ })
+
+ describe('conflicting parameter type', () => {
+ it('is detected for type name', () => {
+ assert.throws(
+ () =>
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('color', /.*/, CssColor, (s) => new CssColor(s), false, true)
+ ),
+ { message: 'There is already a parameter type with name color' }
+ )
+ })
+
+ it('is not detected for type', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType('whatever', /.*/, Color, (s) => new Color(s), false, false)
+ )
+ })
+
+ it('is not detected for regexp', () => {
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'css-color',
+ /red|blue|yellow/,
+ CssColor,
+ (s) => new CssColor(s),
+ true,
+ false
+ )
+ )
+
+ assert.strictEqual(
+ new CucumberExpression('I have a {css-color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).constructor,
+ CssColor
+ )
+ assert.strictEqual(
+ new CucumberExpression('I have a {css-color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).name,
+ 'blue'
+ )
+ assert.strictEqual(
+ new CucumberExpression('I have a {color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).constructor,
+ Color
+ )
+ assert.strictEqual(
+ new CucumberExpression('I have a {color} ball', parameterTypeRegistry)
+ .match('I have a blue ball')[0]
+ .getValue(null).name,
+ 'blue'
+ )
+ })
+ })
+
+ // JavaScript-specific
+ it('creates arguments using async transform', async () => {
+ parameterTypeRegistry = new ParameterTypeRegistry()
+ /// [add-async-parameter-type]
+ parameterTypeRegistry.defineParameterType(
+ new ParameterType(
+ 'asyncColor',
+ /red|blue|yellow/,
+ Color,
+ async (s) => new Color(s),
+ false,
+ true
+ )
+ )
+ /// [add-async-parameter-type]
+
+ const expression = new CucumberExpression('I have a {asyncColor} ball', parameterTypeRegistry)
+ const args = await expression.match('I have a red ball')
+ const value = await args[0].getValue(null)
+ assert.strictEqual(value.name, 'red')
+ })
+ })
+
+ describe('RegularExpression', () => {
+ it('matches arguments with custom parameter type', () => {
+ const expression = new RegularExpression(
+ /I have a (red|blue|yellow) ball/,
+ parameterTypeRegistry
+ )
+ const value = expression.match('I have a red ball')[0].getValue(null)
+ assert.strictEqual(value.constructor, Color)
+ assert.strictEqual(value.name, 'red')
+ })
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/ExpressionExamplesTest.ts b/node_modules/@cucumber/cucumber-expressions/test/ExpressionExamplesTest.ts
new file mode 100644
index 0000000..864ac18
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/ExpressionExamplesTest.ts
@@ -0,0 +1,28 @@
+import fs from 'fs'
+import assert from 'assert'
+import CucumberExpression from '../src/CucumberExpression'
+import RegularExpression from '../src/RegularExpression'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+
+describe('examples.txt', () => {
+ const match = (expressionText: string, text: string) => {
+ const m = /^\/(.*)\/$/.exec(expressionText)
+ const expression = m
+ ? new RegularExpression(new RegExp(m[1]), new ParameterTypeRegistry())
+ : new CucumberExpression(expressionText, new ParameterTypeRegistry())
+ const args = expression.match(text)
+ if (!args) {
+ return null
+ }
+ return args.map((arg) => arg.getValue(null))
+ }
+
+ const examples = fs.readFileSync('examples.txt', 'utf-8')
+ const chunks = examples.split(/^---/m)
+ for (const chunk of chunks) {
+ const [expressionText, text, expectedArgs] = chunk.trim().split(/\n/m)
+ it(`Works with: ${expressionText}`, () => {
+ assert.deepStrictEqual(JSON.stringify(match(expressionText, text)), expectedArgs)
+ })
+ }
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/ExpressionFactoryTest.ts b/node_modules/@cucumber/cucumber-expressions/test/ExpressionFactoryTest.ts
new file mode 100644
index 0000000..a370b78
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/ExpressionFactoryTest.ts
@@ -0,0 +1,20 @@
+import * as assert from 'assert'
+import ExpressionFactory from '../src/ExpressionFactory'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+import RegularExpression from '../src/RegularExpression'
+import CucumberExpression from '../src/CucumberExpression'
+
+describe('ExpressionFactory', () => {
+ let expressionFactory: ExpressionFactory
+ beforeEach(() => {
+ expressionFactory = new ExpressionFactory(new ParameterTypeRegistry())
+ })
+
+ it('creates a RegularExpression', () => {
+ assert.equal(expressionFactory.createExpression(/x/).constructor, RegularExpression)
+ })
+
+ it('creates a CucumberExpression', () => {
+ assert.equal(expressionFactory.createExpression('x').constructor, CucumberExpression)
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeRegistryTest.ts b/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeRegistryTest.ts
new file mode 100644
index 0000000..93dce44
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeRegistryTest.ts
@@ -0,0 +1,57 @@
+import assert from 'assert'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+import ParameterType from '../src/ParameterType'
+
+class Name {
+ constructor(public readonly name: string) {}
+}
+class Person {
+ constructor(public readonly name: string) {}
+}
+class Place {
+ constructor(public readonly name: string) {}
+}
+
+const CAPITALISED_WORD = /[A-Z]+\w+/
+
+describe('ParameterTypeRegistry', () => {
+ let registry: ParameterTypeRegistry
+ beforeEach(() => {
+ registry = new ParameterTypeRegistry()
+ })
+
+ it('does not allow more than one preferential parameter type for each regexp', () => {
+ registry.defineParameterType(
+ new ParameterType('name', CAPITALISED_WORD, Name, (s) => new Name(s), true, true)
+ )
+ registry.defineParameterType(
+ new ParameterType('person', CAPITALISED_WORD, Person, (s) => new Person(s), true, false)
+ )
+ try {
+ registry.defineParameterType(
+ new ParameterType('place', CAPITALISED_WORD, Place, (s) => new Place(s), true, true)
+ )
+ throw new Error('Should have failed')
+ } catch (err) {
+ assert.strictEqual(
+ err.message,
+ `There can only be one preferential parameter type per regexp. The regexp ${CAPITALISED_WORD} is used for two preferential parameter types, {name} and {place}`
+ )
+ }
+ })
+
+ it('looks up preferential parameter type by regexp', () => {
+ const name = new ParameterType('name', /[A-Z]+\w+/, null, (s) => new Name(s), true, false)
+ const person = new ParameterType('person', /[A-Z]+\w+/, null, (s) => new Person(s), true, true)
+ const place = new ParameterType('place', /[A-Z]+\w+/, null, (s) => new Place(s), true, false)
+
+ registry.defineParameterType(name)
+ registry.defineParameterType(person)
+ registry.defineParameterType(place)
+
+ assert.strictEqual(
+ registry.lookupByRegexp('[A-Z]+\\w+', /([A-Z]+\w+) and ([A-Z]+\w+)/, 'Lisa and Bob'),
+ person
+ )
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeTest.ts b/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeTest.ts
new file mode 100644
index 0000000..ba0a4d5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/ParameterTypeTest.ts
@@ -0,0 +1,11 @@
+import ParameterType from '../src/ParameterType'
+import * as assert from 'assert'
+
+describe('ParameterType', () => {
+ it('does not allow ignore flag on regexp', () => {
+ assert.throws(
+ () => new ParameterType('case-insensitive', /[a-z]+/i, String, (s) => s, true, true),
+ { message: "ParameterType Regexps can't use flag 'i'" }
+ )
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/test/RegularExpressionTest.ts b/node_modules/@cucumber/cucumber-expressions/test/RegularExpressionTest.ts
new file mode 100644
index 0000000..399700b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/RegularExpressionTest.ts
@@ -0,0 +1,112 @@
+import assert from 'assert'
+import RegularExpression from '../src/RegularExpression'
+import ParameterTypeRegistry from '../src/ParameterTypeRegistry'
+
+describe('RegularExpression', () => {
+ it('documents match arguments', () => {
+ const parameterRegistry = new ParameterTypeRegistry()
+
+ /// [capture-match-arguments]
+ const expr = /I have (\d+) cukes? in my (\w+) now/
+ const expression = new RegularExpression(expr, parameterRegistry)
+ const args = expression.match('I have 7 cukes in my belly now')
+ assert.strictEqual(7, args[0].getValue(null))
+ assert.strictEqual('belly', args[1].getValue(null))
+ /// [capture-match-arguments]
+ })
+
+ it('does no transform by default', () => {
+ assert.deepStrictEqual(match(/(\d\d)/, '22')[0], '22')
+ })
+
+ it('does not transform anonymous', () => {
+ assert.deepStrictEqual(match(/(.*)/, '22')[0], '22')
+ })
+
+ it('transforms negative int', () => {
+ assert.deepStrictEqual(match(/(-?\d+)/, '-22')[0], -22)
+ })
+
+ it('transforms positive int', () => {
+ assert.deepStrictEqual(match(/(\d+)/, '22')[0], 22)
+ })
+
+ it('transforms float without integer part', () => {
+ assert.deepStrictEqual(
+ match(new RegExp(`(${ParameterTypeRegistry.FLOAT_REGEXP.source})`), '.22')[0],
+ 0.22
+ )
+ })
+
+ it('transforms float with sign', () => {
+ assert.deepStrictEqual(
+ match(new RegExp(`(${ParameterTypeRegistry.FLOAT_REGEXP.source})`), '-1.22')[0],
+ -1.22
+ )
+ })
+
+ it('returns null when there is no match', () => {
+ assert.strictEqual(match(/hello/, 'world'), null)
+ })
+
+ it('matches nested capture group without match', () => {
+ assert.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user'), [null])
+ })
+
+ it('matches nested capture group with match', () => {
+ assert.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user named "Charlie"'), [
+ 'Charlie',
+ ])
+ })
+
+ it('matches capture group nested in optional one', () => {
+ const regexp = /^a (pre-commercial transaction |pre buyer fee model )?purchase(?: for \$(\d+))?$/
+ assert.deepStrictEqual(match(regexp, 'a purchase'), [null, null])
+ assert.deepStrictEqual(match(regexp, 'a purchase for $33'), [null, 33])
+ assert.deepStrictEqual(match(regexp, 'a pre buyer fee model purchase'), [
+ 'pre buyer fee model ',
+ null,
+ ])
+ })
+
+ it('ignores non capturing groups', () => {
+ assert.deepStrictEqual(
+ match(
+ /(\S+) ?(can|cannot)? (?:delete|cancel) the (\d+)(?:st|nd|rd|th) (attachment|slide) ?(?:upload)?/,
+ 'I can cancel the 1st slide upload'
+ ),
+ ['I', 'can', 1, 'slide']
+ )
+ })
+
+ it('works with escaped parenthesis', () => {
+ assert.deepStrictEqual(match(/Across the line\(s\)/, 'Across the line(s)'), [])
+ })
+
+ it('exposes regexp and source', () => {
+ const regexp = /I have (\d+) cukes? in my (.+) now/
+ const expression = new RegularExpression(regexp, new ParameterTypeRegistry())
+ assert.deepStrictEqual(expression.regexp, regexp)
+ assert.deepStrictEqual(expression.source, regexp.source)
+ })
+
+ it('does not take consider parenthesis in character class as group', function () {
+ const expression = new RegularExpression(
+ /^drawings: ([A-Z_, ()]+)$/,
+ new ParameterTypeRegistry()
+ )
+ const args = expression.match('drawings: ONE, TWO(ABC)')
+
+ assert.strictEqual(args[0].getValue(this), 'ONE, TWO(ABC)')
+ })
+})
+
+const match = (regexp: RegExp, text: string) => {
+ const parameterRegistry = new ParameterTypeRegistry()
+ const regularExpression = new RegularExpression(regexp, parameterRegistry)
+ const args = regularExpression.match(text)
+ if (!args) {
+ return null
+ }
+ return args.map((arg) => arg.getValue(null))
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/test/TreeRegexpTest.ts b/node_modules/@cucumber/cucumber-expressions/test/TreeRegexpTest.ts
new file mode 100644
index 0000000..5993b86
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/test/TreeRegexpTest.ts
@@ -0,0 +1,152 @@
+import assert from 'assert'
+import TreeRegexp from '../src/TreeRegexp'
+
+describe('TreeRegexp', () => {
+ it('exposes group source', () => {
+ const tr = new TreeRegexp(/(a(?:b)?)(c)/)
+ assert.deepStrictEqual(
+ tr.groupBuilder.children.map((gb) => gb.source),
+ ['a(?:b)?', 'c']
+ )
+ })
+
+ it('builds tree', () => {
+ const tr = new TreeRegexp(/(a(?:b)?)(c)/)
+ const group = tr.match('ac')
+ assert.strictEqual(group.value, 'ac')
+ assert.strictEqual(group.children[0].value, 'a')
+ assert.deepStrictEqual(group.children[0].children, [])
+ assert.strictEqual(group.children[1].value, 'c')
+ })
+
+ it('ignores `?:` as a non-capturing group', () => {
+ const tr = new TreeRegexp(/a(?:b)(c)/)
+ const group = tr.match('abc')
+ assert.strictEqual(group.value, 'abc')
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('ignores `?!` as a non-capturing group', () => {
+ const tr = new TreeRegexp(/a(?!b)(.+)/)
+ const group = tr.match('aBc')
+ assert.strictEqual(group.value, 'aBc')
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('ignores `?=` as a non-capturing group', () => {
+ const tr = new TreeRegexp(/a(?=[b])(.+)/)
+ const group = tr.match('abc')
+ assert.strictEqual(group.value, 'abc')
+ assert.strictEqual(group.children.length, 1)
+ assert.strictEqual(group.children[0].value, 'bc')
+ })
+
+ it('ignores `?<=` as a non-capturing group', () => {
+ const tr = new TreeRegexp(/a(.+)(?<=c)$/)
+ const group = tr.match('abc')
+ assert.strictEqual(group.value, 'abc')
+ assert.strictEqual(group.children.length, 1)
+ assert.strictEqual(group.children[0].value, 'bc')
+ })
+
+ it('ignores `? {
+ const tr = new TreeRegexp(/a(.+?)(? {
+ const tr = new TreeRegexp(/a(?b)c/)
+ const group = tr.match('abc')
+ assert.strictEqual(group.value, 'abc')
+ assert.strictEqual(group.children.length, 1)
+ assert.strictEqual(group.children[0].value, 'b')
+ })
+
+ it('matches optional group', () => {
+ const tr = new TreeRegexp(/^Something( with an optional argument)?/)
+ const group = tr.match('Something')
+ assert.strictEqual(group.children[0].value, undefined)
+ })
+
+ it('matches nested groups', () => {
+ const tr = new TreeRegexp(
+ /^A (\d+) thick line from ((\d+),\s*(\d+),\s*(\d+)) to ((\d+),\s*(\d+),\s*(\d+))/
+ )
+ const group = tr.match('A 5 thick line from 10,20,30 to 40,50,60')
+
+ assert.strictEqual(group.children[0].value, '5')
+ assert.strictEqual(group.children[1].value, '10,20,30')
+ assert.strictEqual(group.children[1].children[0].value, '10')
+ assert.strictEqual(group.children[1].children[1].value, '20')
+ assert.strictEqual(group.children[1].children[2].value, '30')
+ assert.strictEqual(group.children[2].value, '40,50,60')
+ assert.strictEqual(group.children[2].children[0].value, '40')
+ assert.strictEqual(group.children[2].children[1].value, '50')
+ assert.strictEqual(group.children[2].children[2].value, '60')
+ })
+
+ it('detects multiple non capturing groups', () => {
+ const tr = new TreeRegexp(/(?:a)(:b)(\?c)(d)/)
+ const group = tr.match('a:b?cd')
+ assert.strictEqual(group.children.length, 3)
+ })
+
+ it('works with escaped backslash', () => {
+ const tr = new TreeRegexp(/foo\\(bar|baz)/)
+ const group = tr.match('foo\\bar')
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('works with escaped slash', () => {
+ const tr = new TreeRegexp(/^I go to '\/(.+)'$/)
+ const group = tr.match("I go to '/hello'")
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('works with digit and word', () => {
+ const tr = new TreeRegexp(/^(\d) (\w+)$/)
+ const group = tr.match('2 you')
+ assert.strictEqual(group.children.length, 2)
+ })
+
+ it('captures non capturing groups with capturing groups inside', () => {
+ const tr = new TreeRegexp('the stdout(?: from "(.*?)")?')
+ const group = tr.match('the stdout')
+ assert.strictEqual(group.value, 'the stdout')
+ assert.strictEqual(group.children[0].value, undefined)
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('works with flags', () => {
+ const tr = new TreeRegexp(/HELLO/i)
+ const group = tr.match('hello')
+ assert.strictEqual(group.value, 'hello')
+ })
+
+ it('empty capturing group', () => {
+ const tr = new TreeRegexp(/()/)
+ const group = tr.match('')
+ // TODO: Would expect the empty string here
+ assert.strictEqual(group.value, undefined)
+ assert.strictEqual(group.children.length, 1)
+ })
+
+ it('empty look ahead', () => {
+ const tr = new TreeRegexp(/(?<=)/)
+ const group = tr.match('')
+ // TODO: Would expect the empty string here
+ assert.strictEqual(group.value, undefined)
+ assert.strictEqual(group.children.length, 0)
+ })
+
+ it('does not consider parenthesis in character class as group', () => {
+ const tr = new TreeRegexp(/^drawings: ([A-Z, ()]+)$/)
+ const group = tr.match('drawings: ONE(TWO)')
+ assert.strictEqual(group.value, 'drawings: ONE(TWO)')
+ assert.strictEqual(group.children.length, 1)
+ assert.strictEqual(group.children[0].value, 'ONE(TWO)')
+ })
+})
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-followed-by-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-followed-by-optional.yaml
new file mode 100644
index 0000000..0bfb53a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-followed-by-optional.yaml
@@ -0,0 +1,17 @@
+expression: three blind\ rat/cat(s)
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "ALTERNATION_NODE", "start": 6, "end": 23, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 6, "end": 16, "nodes": [
+ {"type": "TEXT_NODE", "start": 6, "end": 16, "token": "blind rat"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 17, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 17, "end": 20, "token": "cat"},
+ {"type": "OPTIONAL_NODE", "start": 20, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 21, "end": 22, "token": "s"}
+ ]}
+ ]}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-phrase.yaml
new file mode 100644
index 0000000..9a24382
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-phrase.yaml
@@ -0,0 +1,16 @@
+expression: three hungry/blind mice
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "ALTERNATION_NODE", "start": 6, "end": 18, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 6, "end": 12, "nodes": [
+ {"type": "TEXT_NODE", "start": 6, "end": 12, "token": "hungry"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 13, "end": 18, "nodes": [
+ {"type": "TEXT_NODE", "start": 13, "end": 18, "token": "blind"}
+ ]}
+ ]},
+ {"type": "TEXT_NODE", "start": 18, "end": 19, "token": " "},
+ {"type": "TEXT_NODE", "start": 19, "end": 23, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-parameter.yaml
new file mode 100644
index 0000000..c5daf32
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-parameter.yaml
@@ -0,0 +1,27 @@
+expression: I select the {int}st/nd/rd/th
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 29, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 1, "token": "I"},
+ {"type": "TEXT_NODE", "start": 1, "end": 2, "token": " "},
+ {"type": "TEXT_NODE", "start": 2, "end": 8, "token": "select"},
+ {"type": "TEXT_NODE", "start": 8, "end": 9, "token": " "},
+ {"type": "TEXT_NODE", "start": 9, "end": 12, "token": "the"},
+ {"type": "TEXT_NODE", "start": 12, "end": 13, "token": " "},
+ {"type": "PARAMETER_NODE", "start": 13, "end": 18, "nodes": [
+ {"type": "TEXT_NODE", "start": 14, "end": 17, "token": "int"}
+ ]},
+ {"type": "ALTERNATION_NODE", "start": 18, "end": 29, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 18, "end": 20, "nodes": [
+ {"type": "TEXT_NODE", "start": 18, "end": 20, "token": "st"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 21, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 21, "end": 23, "token": "nd"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 24, "end": 26, "nodes": [
+ {"type": "TEXT_NODE", "start": 24, "end": 26, "token": "rd"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 27, "end": 29, "nodes": [
+ {"type": "TEXT_NODE", "start": 27, "end": 29, "token": "th"}
+ ]}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-end-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-end-optional.yaml
new file mode 100644
index 0000000..842838b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-end-optional.yaml
@@ -0,0 +1,15 @@
+expression: three )blind\ mice/rats
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "ALTERNATION_NODE", "start": 6, "end": 23, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 6, "end": 18, "nodes": [
+ {"type": "TEXT_NODE", "start": 6, "end": 7, "token": ")"},
+ {"type": "TEXT_NODE", "start": 7, "end": 18, "token": "blind mice"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 19, "end": 23, "nodes": [
+ {"type": "TEXT_NODE", "start": 19, "end": 23, "token": "rats"}
+ ]}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-start-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-start-optional.yaml
new file mode 100644
index 0000000..e2f0584
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-unused-start-optional.yaml
@@ -0,0 +1,8 @@
+expression: three blind\ mice/rats(
+exception: |-
+ This Cucumber Expression has a problem at column 23:
+
+ three blind\ mice/rats(
+ ^
+ The '(' does not have a matching ')'.
+ If you did not intend to use optional text you can use '\(' to escape the optional text
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-white-space.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-white-space.yaml
new file mode 100644
index 0000000..eedd57d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation-with-white-space.yaml
@@ -0,0 +1,12 @@
+expression: '\ three\ hungry/blind\ mice\ '
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 29, "nodes": [
+ {"type": "ALTERNATION_NODE", "start": 0, "end": 29, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 0, "end": 15, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 15, "token": " three hungry"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 16, "end": 29, "nodes": [
+ {"type": "TEXT_NODE", "start": 16, "end": 29, "token": "blind mice "}
+ ]}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation.yaml
new file mode 100644
index 0000000..88df832
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/alternation.yaml
@@ -0,0 +1,12 @@
+expression: mice/rats
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 9, "nodes": [
+ {"type": "ALTERNATION_NODE", "start": 0, "end": 9, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 0, "end": 4, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 4, "token": "mice"}
+ ]},
+ {"type": "ALTERNATIVE_NODE", "start": 5, "end": 9, "nodes": [
+ {"type": "TEXT_NODE", "start": 5, "end": 9, "token": "rats"}
+ ]}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/anonymous-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/anonymous-parameter.yaml
new file mode 100644
index 0000000..2c4d339
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/anonymous-parameter.yaml
@@ -0,0 +1,5 @@
+expression: "{}"
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 2, "nodes": [
+ {"type": "PARAMETER_NODE", "start": 0, "end": 2, "nodes": []}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-brace.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-brace.yaml
new file mode 100644
index 0000000..1bafd9c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-brace.yaml
@@ -0,0 +1,5 @@
+expression: "}"
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 1, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 1, "token": "}"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-parenthesis.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-parenthesis.yaml
new file mode 100644
index 0000000..23daf7b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/closing-parenthesis.yaml
@@ -0,0 +1,5 @@
+expression: )
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 1, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 1, "token": ")"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternation.yaml
new file mode 100644
index 0000000..6d810fc
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternation.yaml
@@ -0,0 +1,8 @@
+expression: /
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 1, "nodes": [
+ {"type": "ALTERNATION_NODE", "start": 0, "end": 1, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 0, "end": 0, "nodes": []},
+ {"type": "ALTERNATIVE_NODE", "start": 1, "end": 1, "nodes": []}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternations.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternations.yaml
new file mode 100644
index 0000000..f8d4dd4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-alternations.yaml
@@ -0,0 +1,9 @@
+expression: '//'
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 2, "nodes": [
+ {"type": "ALTERNATION_NODE", "start": 0, "end": 2, "nodes": [
+ {"type": "ALTERNATIVE_NODE", "start": 0, "end": 0, "nodes": []},
+ {"type": "ALTERNATIVE_NODE", "start": 1, "end": 1, "nodes": []},
+ {"type": "ALTERNATIVE_NODE", "start": 2, "end": 2, "nodes": []}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-string.yaml
new file mode 100644
index 0000000..4d33c2d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/empty-string.yaml
@@ -0,0 +1,3 @@
+expression: ""
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 0, "nodes": []}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-alternation.yaml
new file mode 100644
index 0000000..3ed9c37
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-alternation.yaml
@@ -0,0 +1,5 @@
+expression: 'mice\/rats'
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 10, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 10, "token": "mice/rats"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-backslash.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-backslash.yaml
new file mode 100644
index 0000000..da2d008
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-backslash.yaml
@@ -0,0 +1,5 @@
+expression: '\\'
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 2, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 2, "token": "\\"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-opening-parenthesis.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-opening-parenthesis.yaml
new file mode 100644
index 0000000..afafc59
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-opening-parenthesis.yaml
@@ -0,0 +1,5 @@
+expression: '\('
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 2, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 2, "token": "("}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-followed-by-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-followed-by-optional.yaml
new file mode 100644
index 0000000..1e47462
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-followed-by-optional.yaml
@@ -0,0 +1,15 @@
+expression: three \((very) blind) mice
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 26, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "TEXT_NODE", "start": 6, "end": 8, "token": "("},
+ {"type": "OPTIONAL_NODE", "start": 8, "end": 14, "nodes": [
+ {"type": "TEXT_NODE", "start": 9, "end": 13, "token": "very"}
+ ]},
+ {"type": "TEXT_NODE", "start": 14, "end": 15, "token": " "},
+ {"type": "TEXT_NODE", "start": 15, "end": 20, "token": "blind"},
+ {"type": "TEXT_NODE", "start": 20, "end": 21, "token": ")"},
+ {"type": "TEXT_NODE", "start": 21, "end": 22, "token": " "},
+ {"type": "TEXT_NODE", "start": 22, "end": 26, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-phrase.yaml
new file mode 100644
index 0000000..832249e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional-phrase.yaml
@@ -0,0 +1,10 @@
+expression: three \(blind) mice
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 19, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "TEXT_NODE", "start": 6, "end": 13, "token": "(blind"},
+ {"type": "TEXT_NODE", "start": 13, "end": 14, "token": ")"},
+ {"type": "TEXT_NODE", "start": 14, "end": 15, "token": " "},
+ {"type": "TEXT_NODE", "start": 15, "end": 19, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional.yaml
new file mode 100644
index 0000000..4c2b457
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/escaped-optional.yaml
@@ -0,0 +1,7 @@
+expression: '\(blind)'
+
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 8, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 7, "token": "(blind"},
+ {"type": "TEXT_NODE", "start": 7, "end": 8, "token": ")"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-brace.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-brace.yaml
new file mode 100644
index 0000000..916a674
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-brace.yaml
@@ -0,0 +1,8 @@
+expression: '{'
+exception: |-
+ This Cucumber Expression has a problem at column 1:
+
+ {
+ ^
+ The '{' does not have a matching '}'.
+ If you did not intend to use a parameter you can use '\{' to escape the a parameter
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-parenthesis.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-parenthesis.yaml
new file mode 100644
index 0000000..929d6ae
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/opening-parenthesis.yaml
@@ -0,0 +1,8 @@
+expression: (
+exception: |-
+ This Cucumber Expression has a problem at column 1:
+
+ (
+ ^
+ The '(' does not have a matching ')'.
+ If you did not intend to use optional text you can use '\(' to escape the optional text
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-containing-nested-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-containing-nested-optional.yaml
new file mode 100644
index 0000000..0fdd55d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-containing-nested-optional.yaml
@@ -0,0 +1,15 @@
+expression: three ((very) blind) mice
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 25, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "OPTIONAL_NODE", "start": 6, "end": 20, "nodes": [
+ {"type": "OPTIONAL_NODE", "start": 7, "end": 13, "nodes": [
+ {"type": "TEXT_NODE", "start": 8, "end": 12, "token": "very"}
+ ]},
+ {"type": "TEXT_NODE", "start": 13, "end": 14, "token": " "},
+ {"type": "TEXT_NODE", "start": 14, "end": 19, "token": "blind"}
+ ]},
+ {"type": "TEXT_NODE", "start": 20, "end": 21, "token": " "},
+ {"type": "TEXT_NODE", "start": 21, "end": 25, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-phrase.yaml
new file mode 100644
index 0000000..0ef4fb3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional-phrase.yaml
@@ -0,0 +1,12 @@
+expression: three (blind) mice
+
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 18, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "OPTIONAL_NODE", "start": 6, "end": 13, "nodes": [
+ {"type": "TEXT_NODE", "start": 7, "end": 12, "token": "blind"}
+ ]},
+ {"type": "TEXT_NODE", "start": 13, "end": 14, "token": " "},
+ {"type": "TEXT_NODE", "start": 14, "end": 18, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional.yaml
new file mode 100644
index 0000000..6ce2b63
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/optional.yaml
@@ -0,0 +1,7 @@
+expression: (blind)
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 7, "nodes": [
+ {"type": "OPTIONAL_NODE", "start": 0, "end": 7, "nodes": [
+ {"type": "TEXT_NODE", "start": 1, "end": 6, "token": "blind"}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/parameter.yaml
new file mode 100644
index 0000000..92ac8c1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/parameter.yaml
@@ -0,0 +1,7 @@
+expression: "{string}"
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 8, "nodes": [
+ {"type": "PARAMETER_NODE", "start": 0, "end": 8, "nodes": [
+ {"type": "TEXT_NODE", "start": 1, "end": 7, "token": "string"}
+ ]}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/phrase.yaml
new file mode 100644
index 0000000..ba340d0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/phrase.yaml
@@ -0,0 +1,9 @@
+expression: three blind mice
+expected: |-
+ {"type": "EXPRESSION_NODE", "start": 0, "end": 16, "nodes": [
+ {"type": "TEXT_NODE", "start": 0, "end": 5, "token": "three"},
+ {"type": "TEXT_NODE", "start": 5, "end": 6, "token": " "},
+ {"type": "TEXT_NODE", "start": 6, "end": 11, "token": "blind"},
+ {"type": "TEXT_NODE", "start": 11, "end": 12, "token": " "},
+ {"type": "TEXT_NODE", "start": 12, "end": 16, "token": "mice"}
+ ]}
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/ast/unfinished-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/ast/unfinished-parameter.yaml
new file mode 100644
index 0000000..d02f9b4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/ast/unfinished-parameter.yaml
@@ -0,0 +1,8 @@
+expression: "{string"
+exception: |-
+ This Cucumber Expression has a problem at column 1:
+
+ {string
+ ^
+ The '{' does not have a matching '}'.
+ If you did not intend to use a parameter you can use '\{' to escape the a parameter
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-escaped-optional-parameter-types.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-escaped-optional-parameter-types.yaml
new file mode 100644
index 0000000..a00b45a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-escaped-optional-parameter-types.yaml
@@ -0,0 +1,4 @@
+expression: \({int})
+text: (3)
+expected: |-
+ [3]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-1.yaml
new file mode 100644
index 0000000..bb1a6f2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-1.yaml
@@ -0,0 +1,4 @@
+expression: a/i{int}n/y
+text: i18n
+expected: |-
+ [18]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-2.yaml
new file mode 100644
index 0000000..cdddce7
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/allows-parameter-type-in-alternation-2.yaml
@@ -0,0 +1,4 @@
+expression: a/i{int}n/y
+text: a11y
+expected: |-
+ [11]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml
new file mode 100644
index 0000000..9e2ecdf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int}st/nd/rd/th
+text: 3rd
+expected: |-
+ [3]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-in-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-in-optional.yaml
new file mode 100644
index 0000000..b507e27
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-in-optional.yaml
@@ -0,0 +1,9 @@
+expression: three( brown/black) mice
+text: three brown/black mice
+exception: |-
+ This Cucumber Expression has a problem at column 13:
+
+ three( brown/black) mice
+ ^
+ An alternation can not be used inside an optional.
+ You can use '\/' to escape the the '/'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml
new file mode 100644
index 0000000..b32540a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml
@@ -0,0 +1,10 @@
+expression: |-
+ {int}/x
+text: '3'
+exception: |-
+ This Cucumber Expression has a problem at column 6:
+
+ {int}/x
+ ^
+ Alternative may not be empty.
+ If you did not mean to use an alternative you can use '\/' to escape the the '/'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml
new file mode 100644
index 0000000..a0aab0e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml
@@ -0,0 +1,9 @@
+expression: three (brown)/black mice
+text: three brown mice
+exception: |-
+ This Cucumber Expression has a problem at column 7:
+
+ three (brown)/black mice
+ ^-----^
+ An alternative may not exclusively contain optionals.
+ If you did not mean to use an optional you can use '\(' to escape the the '('
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml
new file mode 100644
index 0000000..50250f0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml
@@ -0,0 +1,9 @@
+expression: x/{int}
+text: '3'
+exception: |-
+ This Cucumber Expression has a problem at column 3:
+
+ x/{int}
+ ^
+ Alternative may not be empty.
+ If you did not mean to use an alternative you can use '\/' to escape the the '/'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml
new file mode 100644
index 0000000..b724cfa
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml
@@ -0,0 +1,9 @@
+expression: three brown//black mice
+text: three brown mice
+exception: |-
+ This Cucumber Expression has a problem at column 13:
+
+ three brown//black mice
+ ^
+ Alternative may not be empty.
+ If you did not mean to use an alternative you can use '\/' to escape the the '/'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-empty-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-empty-optional.yaml
new file mode 100644
index 0000000..00e341a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-empty-optional.yaml
@@ -0,0 +1,9 @@
+expression: three () mice
+text: three brown mice
+exception: |-
+ This Cucumber Expression has a problem at column 7:
+
+ three () mice
+ ^^
+ An optional must contain some text.
+ If you did not mean to use an optional you can use '\(' to escape the the '('
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-nested-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-nested-optional.yaml
new file mode 100644
index 0000000..017c3be
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-nested-optional.yaml
@@ -0,0 +1,8 @@
+expression: "(a(b))"
+exception: |-
+ This Cucumber Expression has a problem at column 3:
+
+ (a(b))
+ ^-^
+ An optional may not contain an other optional.
+ If you did not mean to use an optional type you can use '\(' to escape the the '('. For more complicated expressions consider using a regular expression instead.
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-optional-parameter-types.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-optional-parameter-types.yaml
new file mode 100644
index 0000000..b88061e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-optional-parameter-types.yaml
@@ -0,0 +1,9 @@
+expression: ({int})
+text: '3'
+exception: |-
+ This Cucumber Expression has a problem at column 2:
+
+ ({int})
+ ^---^
+ An optional may not contain a parameter type.
+ If you did not mean to use an parameter type you can use '\{' to escape the the '{'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml
new file mode 100644
index 0000000..d1c8968
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml
@@ -0,0 +1,10 @@
+expression: |-
+ {(string)}
+text: something
+exception: |-
+ This Cucumber Expression has a problem at column 2:
+
+ {(string)}
+ ^
+ Parameter names may not contain '{', '}', '(', ')', '\' or '/'.
+ Did you mean to use a regular expression?
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml
new file mode 100644
index 0000000..e033648
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml
@@ -0,0 +1,8 @@
+expression: three (exceptionally\) {string\} mice
+exception: |-
+ This Cucumber Expression has a problem at column 24:
+
+ three (exceptionally\) {string\} mice
+ ^
+ The '{' does not have a matching '}'.
+ If you did not intend to use a parameter you can use '\{' to escape the a parameter
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml
new file mode 100644
index 0000000..7cb9c6d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml
@@ -0,0 +1,8 @@
+expression: three (exceptionally\) {string} mice
+exception: |-
+ This Cucumber Expression has a problem at column 7:
+
+ three (exceptionally\) {string} mice
+ ^
+ The '(' does not have a matching ')'.
+ If you did not intend to use optional text you can use '\(' to escape the optional text
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml
new file mode 100644
index 0000000..029c4e6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml
@@ -0,0 +1,8 @@
+expression: three ((exceptionally\) strong) mice
+exception: |-
+ This Cucumber Expression has a problem at column 7:
+
+ three ((exceptionally\) strong) mice
+ ^
+ The '(' does not have a matching ')'.
+ If you did not intend to use optional text you can use '\(' to escape the optional text
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-match-misquoted-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-match-misquoted-string.yaml
new file mode 100644
index 0000000..1802318
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/does-not-match-misquoted-string.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three "blind' mice
+expected: |-
+ null
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/doesnt-match-float-as-int.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/doesnt-match-float-as-int.yaml
new file mode 100644
index 0000000..d66b586
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/doesnt-match-float-as-int.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int}
+text: '1.22'
+expected: |-
+ null
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-alternation.yaml
new file mode 100644
index 0000000..20a9b9a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-alternation.yaml
@@ -0,0 +1,4 @@
+expression: mice/rats and rats\/mice
+text: rats and rats/mice
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-anonymous-parameter-type.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-anonymous-parameter-type.yaml
new file mode 100644
index 0000000..fc95496
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-anonymous-parameter-type.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {}
+text: '0.22'
+expected: |-
+ ["0.22"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
new file mode 100644
index 0000000..c3e1962
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
@@ -0,0 +1,4 @@
+expression: three {string} and {string} mice
+text: three "" and "handsome" mice
+expected: |-
+ ["","handsome"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml
new file mode 100644
index 0000000..89315b6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three "" mice
+expected: |-
+ [""]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml
new file mode 100644
index 0000000..fe30a04
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three "bl\"nd" mice
+expected: |-
+ ["bl\"nd"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-single-quotes.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-single-quotes.yaml
new file mode 100644
index 0000000..25fcf30
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string-with-single-quotes.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three "'blind'" mice
+expected: |-
+ ["'blind'"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string.yaml
new file mode 100644
index 0000000..8b0560f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-double-quoted-string.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three "blind" mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-parenthesis.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-parenthesis.yaml
new file mode 100644
index 0000000..902a084
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-parenthesis.yaml
@@ -0,0 +1,4 @@
+expression: three \\(exceptionally) \\{string} mice
+text: three \exceptionally \"blind" mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-1.yaml
new file mode 100644
index 0000000..94e531e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-1.yaml
@@ -0,0 +1,4 @@
+expression: 12\\/2020
+text: 12\
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-2.yaml
new file mode 100644
index 0000000..9c9c735
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-doubly-escaped-slash-2.yaml
@@ -0,0 +1,4 @@
+expression: 12\\/2020
+text: '2020'
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-1.yaml
new file mode 100644
index 0000000..171df89
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-1.yaml
@@ -0,0 +1,4 @@
+expression: three \(exceptionally) \{string} mice
+text: three (exceptionally) {string} mice
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-2.yaml
new file mode 100644
index 0000000..340c63e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-2.yaml
@@ -0,0 +1,4 @@
+expression: three \((exceptionally)) \{{string}} mice
+text: three (exceptionally) {"blind"} mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-3.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-3.yaml
new file mode 100644
index 0000000..340c63e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-parenthesis-3.yaml
@@ -0,0 +1,4 @@
+expression: three \((exceptionally)) \{{string}} mice
+text: three (exceptionally) {"blind"} mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-slash.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-slash.yaml
new file mode 100644
index 0000000..d8b3933
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-escaped-slash.yaml
@@ -0,0 +1,4 @@
+expression: 12\/2020
+text: 12/2020
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-1.yaml
new file mode 100644
index 0000000..fe7e8b1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-1.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {float}
+text: '0.22'
+expected: |-
+ [0.22]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-2.yaml
new file mode 100644
index 0000000..c1e5894
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-float-2.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {float}
+text: '.22'
+expected: |-
+ [0.22]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-int.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-int.yaml
new file mode 100644
index 0000000..bcd3763
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-int.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int}
+text: '22'
+expected: |-
+ [22]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-double-quoted-strings.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-double-quoted-strings.yaml
new file mode 100644
index 0000000..6c74bc2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-double-quoted-strings.yaml
@@ -0,0 +1,4 @@
+expression: three {string} and {string} mice
+text: three "blind" and "crippled" mice
+expected: |-
+ ["blind","crippled"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-single-quoted-strings.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-single-quoted-strings.yaml
new file mode 100644
index 0000000..5037821
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-multiple-single-quoted-strings.yaml
@@ -0,0 +1,4 @@
+expression: three {string} and {string} mice
+text: three 'blind' and 'crippled' mice
+expected: |-
+ ["blind","crippled"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-1.yaml
new file mode 100644
index 0000000..8217767
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-1.yaml
@@ -0,0 +1,4 @@
+expression: three (brown )mice/rats
+text: three brown mice
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-2.yaml
new file mode 100644
index 0000000..71b3a34
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-2.yaml
@@ -0,0 +1,4 @@
+expression: three (brown )mice/rats
+text: three rats
+expected: |-
+ []
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml
new file mode 100644
index 0000000..2632f41
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml
@@ -0,0 +1,4 @@
+expression: I wait {int} second(s)./second(s)?
+text: I wait 2 seconds?
+expected: |-
+ [2]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml
new file mode 100644
index 0000000..7b30f66
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml
@@ -0,0 +1,4 @@
+expression: I wait {int} second(s)./second(s)?
+text: I wait 1 second.
+expected: |-
+ [1]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-1.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-1.yaml
new file mode 100644
index 0000000..6574bb4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-1.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int} rat(s)/mouse/mice
+text: 3 rats
+expected: |-
+ [3]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-2.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-2.yaml
new file mode 100644
index 0000000..4eb0f0e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-2.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int} rat(s)/mouse/mice
+text: 2 mice
+expected: |-
+ [2]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-3.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-3.yaml
new file mode 100644
index 0000000..964fa64
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-optional-in-alternation-3.yaml
@@ -0,0 +1,5 @@
+expression: |-
+ {int} rat(s)/mouse/mice
+text: 1 mouse
+expected: |-
+ [1]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
new file mode 100644
index 0000000..c963dcf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
@@ -0,0 +1,4 @@
+expression: three {string} and {string} mice
+text: three '' and 'handsome' mice
+expected: |-
+ ["","handsome"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml
new file mode 100644
index 0000000..cff2a2d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three '' mice
+expected: |-
+ [""]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-double-quotes.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-double-quotes.yaml
new file mode 100644
index 0000000..eb9ed53
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-double-quotes.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three '"blind"' mice
+expected: |-
+ ["\"blind\""]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml
new file mode 100644
index 0000000..4c2b005
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three 'bl\'nd' mice
+expected: |-
+ ["bl'nd"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string.yaml
new file mode 100644
index 0000000..6c8f465
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-single-quoted-string.yaml
@@ -0,0 +1,4 @@
+expression: three {string} mice
+text: three 'blind' mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-word.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-word.yaml
new file mode 100644
index 0000000..358fd3a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/matches-word.yaml
@@ -0,0 +1,4 @@
+expression: three {word} mice
+text: three blind mice
+expected: |-
+ ["blind"]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/expression/throws-unknown-parameter-type.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/expression/throws-unknown-parameter-type.yaml
new file mode 100644
index 0000000..384e3a4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/expression/throws-unknown-parameter-type.yaml
@@ -0,0 +1,10 @@
+expression: |-
+ {unknown}
+text: something
+exception: |-
+ This Cucumber Expression has a problem at column 1:
+
+ {unknown}
+ ^-------^
+ Undefined parameter type 'unknown'.
+ Please register a ParameterType for 'unknown'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation-with-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation-with-optional.yaml
new file mode 100644
index 0000000..73787b2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation-with-optional.yaml
@@ -0,0 +1,2 @@
+expression: "a/b(c)"
+expected: ^(?:a|b(?:c)?)$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation.yaml
new file mode 100644
index 0000000..1dc293f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/alternation.yaml
@@ -0,0 +1,2 @@
+expression: "a/b c/d/e"
+expected: ^(?:a|b) (?:c|d|e)$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/empty.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/empty.yaml
new file mode 100644
index 0000000..bb9a819
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/empty.yaml
@@ -0,0 +1,2 @@
+expression: ""
+expected: ^$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/escape-regex-characters.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/escape-regex-characters.yaml
new file mode 100644
index 0000000..c8ea8c5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/escape-regex-characters.yaml
@@ -0,0 +1,2 @@
+expression: '^$[]\(\){}\\.|?*+'
+expected: ^\^\$\[\]\(\)(.*)\\\.\|\?\*\+$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/optional.yaml
new file mode 100644
index 0000000..7d6d84c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/optional.yaml
@@ -0,0 +1,2 @@
+expression: "(a)"
+expected: ^(?:a)?$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/parameter.yaml
new file mode 100644
index 0000000..f793b21
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/parameter.yaml
@@ -0,0 +1,2 @@
+expression: "{int}"
+expected: ^((?:-?\d+)|(?:\d+))$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/text.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/text.yaml
new file mode 100644
index 0000000..2af3e41
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/text.yaml
@@ -0,0 +1,2 @@
+expression: "a"
+expected: ^a$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/regex/unicode.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/regex/unicode.yaml
new file mode 100644
index 0000000..f93fe35
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/regex/unicode.yaml
@@ -0,0 +1,2 @@
+expression: "Привет, Мир(ы)!"
+expected: ^Привет, Мир(?:ы)?!$
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation-phrase.yaml
new file mode 100644
index 0000000..48b107f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation-phrase.yaml
@@ -0,0 +1,13 @@
+expression: three blind/cripple mice
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
+ {"type": "TEXT", "start": 6, "end": 11, "text": "blind"},
+ {"type": "ALTERNATION", "start": 11, "end": 12, "text": "/"},
+ {"type": "TEXT", "start": 12, "end": 19, "text": "cripple"},
+ {"type": "WHITE_SPACE", "start": 19, "end": 20, "text": " "},
+ {"type": "TEXT", "start": 20, "end": 24, "text": "mice"},
+ {"type": "END_OF_LINE", "start": 24, "end": 24, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation.yaml
new file mode 100644
index 0000000..a4920f2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/alternation.yaml
@@ -0,0 +1,9 @@
+expression: blind/cripple
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 5, "text": "blind"},
+ {"type": "ALTERNATION", "start": 5, "end": 6, "text": "/"},
+ {"type": "TEXT", "start": 6, "end": 13, "text": "cripple"},
+ {"type": "END_OF_LINE", "start": 13, "end": 13, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/empty-string.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/empty-string.yaml
new file mode 100644
index 0000000..501f752
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/empty-string.yaml
@@ -0,0 +1,6 @@
+expression: ""
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "END_OF_LINE", "start": 0, "end": 0, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escape-non-reserved-character.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escape-non-reserved-character.yaml
new file mode 100644
index 0000000..5e206be
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escape-non-reserved-character.yaml
@@ -0,0 +1,8 @@
+expression: \[
+exception: |-
+ This Cucumber Expression has a problem at column 2:
+
+ \[
+ ^
+ Only the characters '{', '}', '(', ')', '\', '/' and whitespace can be escaped.
+ If you did mean to use an '\' you can use '\\' to escape it
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-alternation.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-alternation.yaml
new file mode 100644
index 0000000..7e21f7a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-alternation.yaml
@@ -0,0 +1,9 @@
+expression: blind\ and\ famished\/cripple mice
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 29, "text": "blind and famished/cripple"},
+ {"type": "WHITE_SPACE", "start": 29, "end": 30, "text": " "},
+ {"type": "TEXT", "start": 30, "end": 34, "text": "mice"},
+ {"type": "END_OF_LINE", "start": 34, "end": 34, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-char-has-start-index-of-text-token.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-char-has-start-index-of-text-token.yaml
new file mode 100644
index 0000000..6375ad5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-char-has-start-index-of-text-token.yaml
@@ -0,0 +1,9 @@
+expression: ' \/ '
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "WHITE_SPACE", "start": 0, "end": 1, "text": " "},
+ {"type": "TEXT", "start": 1, "end": 3, "text": "/"},
+ {"type": "WHITE_SPACE", "start": 3, "end": 4, "text": " "},
+ {"type": "END_OF_LINE", "start": 4, "end": 4, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-end-of-line.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-end-of-line.yaml
new file mode 100644
index 0000000..a1bd00f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-end-of-line.yaml
@@ -0,0 +1,8 @@
+expression: \
+exception: |-
+ This Cucumber Expression has a problem at column 1:
+
+ \
+ ^
+ The end of line can not be escaped.
+ You can use '\\' to escape the the '\'
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-optional.yaml
new file mode 100644
index 0000000..2b365b5
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-optional.yaml
@@ -0,0 +1,7 @@
+expression: \(blind\)
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 9, "text": "(blind)"},
+ {"type": "END_OF_LINE", "start": 9, "end": 9, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-parameter.yaml
new file mode 100644
index 0000000..2cdac4f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-parameter.yaml
@@ -0,0 +1,7 @@
+expression: \{string\}
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 10, "text": "{string}"},
+ {"type": "END_OF_LINE", "start": 10, "end": 10, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-space.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-space.yaml
new file mode 100644
index 0000000..912827a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/escaped-space.yaml
@@ -0,0 +1,7 @@
+expression: '\ '
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 2, "text": " "},
+ {"type": "END_OF_LINE", "start": 2, "end": 2, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional-phrase.yaml
new file mode 100644
index 0000000..2ddc6bb
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional-phrase.yaml
@@ -0,0 +1,13 @@
+expression: three (blind) mice
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
+ {"type": "BEGIN_OPTIONAL", "start": 6, "end": 7, "text": "("},
+ {"type": "TEXT", "start": 7, "end": 12, "text": "blind"},
+ {"type": "END_OPTIONAL", "start": 12, "end": 13, "text": ")"},
+ {"type": "WHITE_SPACE", "start": 13, "end": 14, "text": " "},
+ {"type": "TEXT", "start": 14, "end": 18, "text": "mice"},
+ {"type": "END_OF_LINE", "start": 18, "end": 18, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional.yaml
new file mode 100644
index 0000000..35b1474
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/optional.yaml
@@ -0,0 +1,9 @@
+expression: (blind)
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "BEGIN_OPTIONAL", "start": 0, "end": 1, "text": "("},
+ {"type": "TEXT", "start": 1, "end": 6, "text": "blind"},
+ {"type": "END_OPTIONAL", "start": 6, "end": 7, "text": ")"},
+ {"type": "END_OF_LINE", "start": 7, "end": 7, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter-phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter-phrase.yaml
new file mode 100644
index 0000000..5e98055
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter-phrase.yaml
@@ -0,0 +1,13 @@
+expression: three {string} mice
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
+ {"type": "BEGIN_PARAMETER", "start": 6, "end": 7, "text": "{"},
+ {"type": "TEXT", "start": 7, "end": 13, "text": "string"},
+ {"type": "END_PARAMETER", "start": 13, "end": 14, "text": "}"},
+ {"type": "WHITE_SPACE", "start": 14, "end": 15, "text": " "},
+ {"type": "TEXT", "start": 15, "end": 19, "text": "mice"},
+ {"type": "END_OF_LINE", "start": 19, "end": 19, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter.yaml
new file mode 100644
index 0000000..460363c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/parameter.yaml
@@ -0,0 +1,9 @@
+expression: "{string}"
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "BEGIN_PARAMETER", "start": 0, "end": 1, "text": "{"},
+ {"type": "TEXT", "start": 1, "end": 7, "text": "string"},
+ {"type": "END_PARAMETER", "start": 7, "end": 8, "text": "}"},
+ {"type": "END_OF_LINE", "start": 8, "end": 8, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/testdata/tokens/phrase.yaml b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/phrase.yaml
new file mode 100644
index 0000000..e2cfccf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/testdata/tokens/phrase.yaml
@@ -0,0 +1,11 @@
+expression: three blind mice
+expected: |-
+ [
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
+ {"type": "TEXT", "start": 6, "end": 11, "text": "blind"},
+ {"type": "WHITE_SPACE", "start": 11, "end": 12, "text": " "},
+ {"type": "TEXT", "start": 12, "end": 16, "text": "mice"},
+ {"type": "END_OF_LINE", "start": 16, "end": 16, "text": ""}
+ ]
diff --git a/node_modules/@cucumber/cucumber-expressions/tsconfig.build.json b/node_modules/@cucumber/cucumber-expressions/tsconfig.build.json
new file mode 100644
index 0000000..98f530f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/tsconfig.build.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "rootDir": ".",
+ "outDir": "dist"
+ },
+ "include": [
+ "package.json",
+ "src",
+ "test"
+ ]
+}
diff --git a/node_modules/@cucumber/cucumber-expressions/tsconfig.json b/node_modules/@cucumber/cucumber-expressions/tsconfig.json
new file mode 100644
index 0000000..4082f16
--- /dev/null
+++ b/node_modules/@cucumber/cucumber-expressions/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/node_modules/@cucumber/cucumber/CHANGELOG.md b/node_modules/@cucumber/cucumber/CHANGELOG.md
new file mode 100644
index 0000000..f827f56
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/CHANGELOG.md
@@ -0,0 +1,1874 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/)
+and this project adheres to [Semantic Versioning](http://semver.org/).
+
+Please see [CONTRIBUTING.md](https://github.com/cucumber/cucumber/blob/master/CONTRIBUTING.md) on how to contribute to Cucumber.
+
+----
+## [Unreleased] (In Git)
+
+### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+## [7.2.0] (2021-04-20)
+
+### Added
+
+* Experimental support for native ES modules via the [`--esm` flag](./docs/cli.md#es-modules-experimental-nodejs-12) ([#1589](https://github.com/cucumber/cucumber-js/pull/1589))
+
+## [7.1.0] (2021-04-06)
+
+### Added
+
+- Support attachments that are already base64-encoded via a prefix on the MIME type e.g. `this.attach(base64String, 'base64:image/png')` ([#1552](https://github.com/cucumber/cucumber-js/pull/1552))
+- Support tagged rules ([cucumber#1123](https://github.com/cucumber/cucumber/issues/1123))
+
+### Fixed
+
+* Fix types for hook functions so they can return e.g. `'skipped'` ([#1542](https://github.com/cucumber/cucumber-js/pull/1542))
+* Display the response of the reports server when an error is returned before failing. ([#1608](https://github.com/cucumber/cucumber-js/pull/1608))
+* Remove unnecessary implicit dependency on `long` package ([cucumber#1313](https://github.com/cucumber/cucumber/pull/1313))
+* Remove unnecessary transitive dependencies on `react` etc ([cucumber#1308](https://github.com/cucumber/cucumber/pull/1308))
+
+## [7.0.0] (2020-12-21)
+
+### Added
+
+* Add a built in `html` formatter for rich HTML reports output as a standalone page ([#1432](https://github.com/cucumber/cucumber-js/pull/1432))
+* Add support for `BeforeStep` and `AfterStep` hooks ([#1416](https://github.com/cucumber/cucumber-js/pull/1416))
+* Custom formatters can now be resolved by a module name (as well as by a relative path), enabling use of Yarn PnP ([#1413](https://github.com/cucumber/cucumber-js/pull/1413))
+
+### Removed
+
+* Support for running Cucumber in web browsers has been removed ([#1508](https://github.com/cucumber/cucumber-js/pull/1508)). This feature was increasingly difficult to support and seldom used. Node.js will now be the only support runtime for Cucumber itself; of course as before you can still use tools like WebDriver and Puppeteer to instrument testing of browser-based software. See [the discussion in #1437](https://github.com/cucumber/cucumber-js/issues/1437) for more about why this change is happening.
+
+### Fixed
+
+* Wrong version in meta message [#1439](https://github.com/cucumber/cucumber-js/issues/1439) [#1442](https://github.com/cucumber/cucumber-js/pull/1442)
+
+## [7.0.0-rc.0] (2020-09-14)
+
+See the [migration guide](./docs/migration.md) for details of how to migrate from 6.x.x.
+
+### New Features
+
+* Add `--publish` option to publish reports to [reports.cucumber.io](https://reports.cucumber.io) [#1423](https://github.com/cucumber/cucumber-js/issues/1423), [#1424](https://github.com/cucumber/cucumber-js/pull/1424)
+* Add support for Gherkin's [Rule/Example syntax](https://cucumber.io/docs/gherkin/reference/#rule)
+* Add `transpose` method to [data table interface](docs/support_files/data_table_interface.md)
+* Add `log` function to world, providing a shorthand to log plain text as [attachment(s)](docs/support_files/attachments.md)
+* Now includes [TypeScript](https://www.typescriptlang.org/) type definitions, deprecating the need for `@types/cucumber` in TypeScript projects
+
+### Breaking changes
+
+* The npm module has changed name from `cucumber` to `@cucumber/cucumber` - `require`/`import` statements must be changed from `cucumber` to `@cucumber/cucumber`
+* TypeScript users must rename `TableDefinition` to `DataTable`
+* Drop support for Node.js 8, add support for Node.js 14
+* Formatters
+ * Events are now based on [cucumber-messages](https://github.com/cucumber/cucumber/tree/master/messages)
+ * `event-protocol` formatter has been removed and replaced with `message`
+* Remove long-deprecated `typeName` from options object for `defineParameterType` in favour of `name`
+* Parallel runtime environment variables renamed for inclusivity:
+ * `CUCUMBER_TOTAL_SLAVES` is now `CUCUMBER_TOTAL_WORKERS`
+ * `CUCUMBER_SLAVE_ID` is now `CUCUMBER_WORKER_ID`
+* Custom formatters are now loaded via the regular require paths relative to the current directory, unless it begins with a dot (e.g. `--format=./relpath/to/formatter`). Previously this was always loaded as a file relative to the current directory.
+
+### Deprecations
+
+* `json` formatter is deprecated and will be removed in next major release. Custom formatters should migrate to use the `message` formatter, or the [standalone JSON formatter](https://github.com/cucumber/cucumber/tree/master/json-formatter) as a stopgap.
+
+### Bug fixes
+
+* don't execute BeforeAll and AfterAll hooks when in dry-run
+* support correct case for `--retry-tag-filter` CLI argument
+
+## [6.0.5] (2019-11-13)
+
+### Bug fixes
+
+* json formatter: fix duration to be nanoseconds (was femtoseconds)
+
+## [6.0.4] (2019-11-10)
+
+### Bug fixes
+
+* retry: create a new World instance for every attempt
+
+## [6.0.3] (2019-10-27)
+
+* Revert JSON formatter changes to be backward compatible
+
+## [6.0.2] (2019-10-07)
+
+* Upgrade to cucumber-expressions 8.0.1 to fix failure on multiple installs
+
+## [6.0.1] (2019-10-06)
+
+* Release to fix missing lib
+
+## [6.0.0] (2019-10-06)
+
+### BREAKING CHANGES
+
+* Drop support for Node.js 6
+* JSON formatter has major breaking changes. View some sample outputs [here](/features/fixtures/formatters/). The `*.json.js` files contain the js objects the json parses to. (UPDATE - reverted in 6.0.3)
+* Duration is now in nanoseconds in event-protocol formatter and in events sent to custom formatters
+* Custom formatters: Formatter helpers and EventDataCollector had breaking changes to support retry
+
+### Bug fixes
+
+* Prevent after hooks from updating skipped scenarios to passed
+* Parallel: beforeAll / afterAll errors fail the suite
+* Fix CLI help link
+
+### New features
+
+* Add ability to retry flaky tests
+ * Use `--retry ` and limit what tests will be retried with `--retryTagFilter `
+ * Event-protocol added an `attemptNumber` to test case started, test case finished, and all test step events and a `retried` boolean to the test case result to signify if the test case was retried
+* usage-json formatter: add code and patternType
+* Add support for Node.js 12
+
+## [5.1.0] (2018-12-28)
+
+### Internals
+
+* Upgrade to babel 7
+
+## [5.0.3] (2018-12-03)
+
+### Speed Improvements
+
+* Only create Cucumber Expressions once
+
+## [5.0.2] (2018-10-06)
+
+### Bug Fixes
+
+* Update default of formatters' colors enabled to be true only if the stream is a TTY
+* Allow writing to stdout when running in parallel
+* Skip other before hooks if one returns skipped
+
+## [5.0.1] (2018-04-09)
+
+### Bug Fixes
+
+* Update dependencies to avoid licensing problems
+
+## [5.0.0] (2018-04-09)
+
+### BREAKING CHANGES
+
+* Drop support for Node.js 4
+
+### Bug Fixes
+
+* Update dependencies to avoid licensing problems
+* Provide better error message when trying to attach data after the scenario has finished. This is possible if not waiting for the attach to finish.
+
+### New features
+
+* Add support for Node.js 10
+
+## [4.2.1] (2018-04-09)
+
+### Bug Fixes
+
+* improve the error message for gherkin parse errors
+
+## [4.2.0] (2018-04-03)
+
+* add cli option `--order ` to run scenarios in the specified order. Type should be `defined` or `random`
+
+## [4.1.0] (2018-03-27)
+
+### New Features
+
+* update step timeout error message for each interface ([#1028](https://github.com/cucumber/cucumber-js/pull/1028), Bruce Lindsay)
+* default to synchronous snippets
+* print text step attachments ([#1041](https://github.com/cucumber/cucumber-js/pull/1041), DevSide)
+
+### Bug Fixes
+
+* cucumber-expressions: Upgrade from 5.0.7 to [5.0.13](https://github.com/cucumber/cucumber/blob/master/cucumber-expressions/CHANGELOG.md#5013---2018-01-21)
+* fix error serialization in parallel mode
+
+## [4.0.0] (2018-01-24)
+
+### BREAKING CHANGES
+
+* cucumber now waits for the event loop to drain before exiting. To exit immediately when the tests finish running use `--exit`. Use of this flag is discouraged. See [here](/docs/cli.md#exiting) for more information
+* remove `--compiler` option. See [here](/docs/cli.md#transpilers) for the new way to use transpilers
+* remove binaries `cucumber.js` and `cucumberjs`. Use `cucumber-js`
+
+### New Features
+
+* can now use glob patterns for selecting what features to run
+* update `--require` to support glob patterns
+* add `--require-module ` to require node modules before support code is loaded
+* add snippet interface "async-await"
+* add `--parallel ` option to run tests in parallel. Note this is an experimental feature. See [here](/docs/cli.md#parallel-experimental) for more information
+
+### Bug Fixes
+
+* revert json formatter duration to nanoseconds
+
+### Deprecations
+
+* `defineSupportCode` is deprecated. Require/import the individual methods instead
+ ```js
+ var {defineSupportCode} = require('cucumber');
+
+ defineSupportCode(function({Given}) {
+ Given(/^a step$/, function() {});
+ });
+
+ // Should be updated to
+
+ var {Given} = require('cucumber');
+
+ Given(/^a step$/, function() {});
+ ```
+
+## [3.2.1] (2018-01-03)
+
+### Bug Fixes
+* revert json formatter mime type ([#995](https://github.com/cucumber/cucumber-js/pull/995)
+
+## [3.2.0] (2017-12-08)
+
+### New Features
+* add exception to `test-case-finished` event ([#952](https://github.com/cucumber/cucumber-js/pull/952) Giuseppe DiBella)
+* compiler option - allow `:` in module name to support specifying an absolute path on Windows ([#958](https://github.com/cucumber/cucumber-js/pull/958) Darrin Holst)
+* json formatter: format step result exception ([#973](https://github.com/cucumber/cucumber-js/pull/973) Valerio Innocenti Sedili)
+
+### Bug Fixes
+* cucumber-expressions: Upgrade from 5.0.3 to [5.0.6](https://github.com/cucumber/cucumber/blob/master/cucumber-expressions/CHANGELOG.md#506---2017-11-28)
+* tag-expressions: Upgrade from 1.0.1 to [1.1.1](https://github.com/cucumber/cucumber/blob/master/tag-expressions/CHANGELOG.md#111---2017-12-01)
+
+## [3.1.0] (2017-10-25)
+
+### New Features
+* add `--language` cli option to provide the default language for feature files
+
+### Bug Fixes
+* pickle filter: support relative paths ([#962](https://github.com/cucumber/cucumber-js/pull/962) Marco Muller)
+
+## [3.0.6] (2017-10-18)
+
+* cli: fix `--format` option parsing on Windows ([#954](https://github.com/cucumber/cucumber-js/pull/954) Darrin Holst)
+
+## [3.0.5] (2017-10-14)
+
+### New Features
+
+* `defineParameterType`: The `transformer` function's `this` object is now the current World (as long as it's not an arrow function). ([#948](https://github.com/cucumber/cucumber-js/pull/948) Aslak Hellesøy)
+* `Before` / `After`: The first argument now includes a `pickle` property which can
+be used to get the name / tags of the running scenario. ([#947](https://github.com/cucumber/cucumber-js/pull/947) Giuseppe DiBella)
+
+## [3.0.4] (2017-10-04)
+
+### New Features
+
+* cli: make `--tags` option repeatable (joined with `and`) ([#940](https://github.com/cucumber/cucumber-js/issues/940), Ilya Kozhevnikov)
+* rerun formatter: make separator configurable. See docs [here](https://github.com/cucumber/cucumber-js/blob/fb9e8fc2e68d4395b9b0a124d18e036d00a8c69f/docs/cli.md) ([#930](https://github.com/cucumber/cucumber-js/issues/930), Máté Karácsony)
+
+## [3.0.3] (2017-09-23)
+
+### New Features
+
+* support to imperatively skip steps. See documentation [here](/docs/support_files/step_definitions.md#skipped-steps) ([#912](https://github.com/cucumber/cucumber-js/issues/912), jshifflet)
+
+## [3.0.2] (2017-09-13)
+
+### New Features
+
+* `defineParameterType`: new options `useForSnippets` and `preferForRegexpMatch`. Please see documentation for usage.
+
+### Bug Fixes
+
+* fix `usage` and `usage-json` formatters when there are undefined steps
+
+### Deprecations
+
+* `defineParameterType`: `typeName` option is deprecated in favor of `name`
+
+## [3.0.1] (2017-08-28)
+
+### Bug Fixes
+
+* JSON formatter: add type to scenario ([#893](https://github.com/cucumber/cucumber-js/issues/893), szymonprz)
+* BeforeAll/AfterAll hooks: fix timeout support ([#899](https://github.com/cucumber/cucumber-js/issues/899))
+* format output paths: allow absolute paths ([#906](https://github.com/cucumber/cucumber-js/issues/906), Darrin Holst)
+* Before/After: fix undefined hook parameter ([#919](https://github.com/cucumber/cucumber-js/issues/919))
+
+### Documentation
+
+* update nodejs example
+([#898](https://github.com/cucumber/cucumber-js/issues/898), João Guilherme Farias Duda)
+* fix typo and make punctuation consistent
+([#909](https://github.com/cucumber/cucumber-js/issues/909), Dmitry Shirokov)
+* normalize CHANGELOG
+([#915](https://github.com/cucumber/cucumber-js/issues/915), Jayson Smith)
+
+## [3.0.0] (2017-08-08)
+
+### BREAKING CHANGES
+
+* `pretty` formatter has been removed. All errors are now reported in a `pretty` format instead. The `progress` formatter is now the default.
+* Major changes to [custom formatter](/docs/custom_formatters.md) and [custom snippet syntax](/docs/custom_snippet_syntaxes.md) APIs due to rewrite in support of the event protocol. Please see the updated documentation.
+* Remove `registerHandler` and `registerListener`. Use `BeforeAll` / `AfterAll` for setup code. Use the event protocol formatter if used for reporting. Please open an issue if you have another use case.
+* Remove deprecated `addTransform`. Use `defineParameterType` instead.
+* `cucumber-expressions`:
+ * using an undefined parameter type now results in an error
+ * `{stringInDoubleQuotes}` is now `{string}` which works for strings in single or double quotes
+* Undefined steps fail the build in non-strict mode. Non-strict mode only allows pending steps now.
+
+### New Features
+
+* Add `--i18n-languages` and `--i18n-keywords ` CLI options
+* Add `BeforeAll` / `AfterAll` hooks for suite level setup / teardown
+* Add event protocol formatter
+* `cucumber-expressions`:
+ * Add built in `{word}` parameter type which is equivalent to `[A-Za-z0-9_]+`
+ * Allow multiple parameter types to use the same regular expression
+* Improve error message when using multiple asynchronous interfaces
+
+### Bug Fixes
+
+* Fix support code line and uri references when using direct imports
+
+## [2.3.1] (2017-06-09)
+
+### New Features
+
+* pass step specific options to definition function wrapper ([#838](https://github.com/cucumber/cucumber-js/issues/838), Łukasz Gandecki)
+
+## [2.3.0] (2017-06-01)
+
+### New Features
+
+* Add support code aliases for every method in the [support code API](./docs/support_files/api_reference.md). The following are now equivalent:
+ ```javascript
+ // Using defineSupportCode
+ var {defineSupportCode} = require('cucumber');
+
+ defineSupportCode(function({Given}) {
+ Given(/^a step$/, function() {});
+ });
+
+ // Using aliases
+ var {Given} = require('cucumber');
+
+ Given(/^a step$/, function() {});
+ ```
+ (Nico Jansen and Łukasz Gandecki)
+
+## [2.2.0] (2017-05-20)
+
+### New Features
+
+* Add `progress-bar` formatter inspired by [fuubar-cucumber]( https://github.com/martinciu/fuubar-cucumber) and [fuubar](https://github.com/thekompanee/fuubar) which outputs a progress bar and errors as they happen
+
+## [2.1.0](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.9...v2.1.0) (2017-05-12)
+
+### Bug Fixes
+
+* throw descriptive error message when running a global install
+
+## [1.3.3] (2016-04-26)
+
+### Bug Fixes
+
+* fix unhandled rejections in handlers ([#792](https://github.com/cucumber/cucumber-js/issues/792), yaronassa)
+
+## [1.3.2] (2016-03-20)
+
+### Bug Fixes
+
+* dependency: fix use of gherkin to not rely on removed field
+
+## [2.0.0-rc.9](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.8...v2.0.0-rc.9) (2017-03-16)
+
+### Bug Fixes
+
+* dependency: fix use of gherkin to not rely on removed field
+
+## [2.0.0-rc.8](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2017-03-10)
+
+### Bug Fixes
+
+* generated step definition snippets are not found ([#732](https://github.com/cucumber/cucumber-js/issues/732), Aslak Hellesøy)
+* catch attempt to define duplicate parameter type regular expression ([#780](https://github.com/cucumber/cucumber-js/issues/780), Aslak Hellesøy)
+* catch errors in parameter type transform functions (Aslak Hellesøy)
+
+### New Features
+
+* all async parameter type transform functions (Aslak Hellesøy)
+* make all formatters available when requiring
+
+### Deprecations
+
+* `addTransform` was deprecated in favor of `defineParameterType`
+
+### Documentation
+
+* normalize syntax highlighting ([#726](https://github.com/cucumber/cucumber-js/issues/726), Martin Delille)
+* fix setWorldConstructor example
+
+## [2.0.0-rc.7](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2017-01-30)
+
+### Bug Fixes
+
+* fix after hook run order ([#743](https://github.com/cucumber/cucumber-js/issues/743))
+
+### Documentation
+
+* normalize syntax highlighting ([#726](https://github.com/cucumber/cucumber-js/issues/726), (Martin Delille)
+* fix addTransform parameter name ([#738](https://github.com/cucumber/cucumber-js/issues/738))
+
+## [2.0.0-rc.6](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2017-01-06)
+
+### New Features
+
+* usage and usage-json formatters
+* update error reporting for `registerHandler` errors
+* add ability to disable timeout
+
+### Bug Fixes
+
+* update snippets to new support code interface
+
+## [2.0.0-rc.5](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2016-12-22)
+
+### Breaking Changes
+
+* Drop support for Node 0.12
+* format assertion errors to display diffs
+
+### Documentation
+
+* fix CLI format-options name ([#703](https://github.com/cucumber/cucumber-js/issues/703), Florian Ribon)
+* add link on README.md to custom formatters documentation
+
+## [2.0.0-rc.4](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2016-12-19)
+
+### Breaking Changes
+
+* update support code library interface - instead of exporting a function and calling methods on `this`, require the `cucumber` module and call `defineSupportCode` which passes an object as the first argument whch exposes the methods. Overriding the world constructor has changed from overriding the World property to calling `setWorldConstructor`.
+
+ ```javascript
+ // 1.3.1
+ module.exports = function () {
+ this.Given(/^a step$/, function() {});
+ this.World = CustomWorld
+ });
+
+ // 2.0.0
+ var {defineSupportCode} = require('cucumber');
+
+ defineSupportCode(function({Given, setWorldConstructor}) {
+ Given(/^a step$/, function() {});
+ setWorldConstructor(CustomWorld);
+ });
+ ```
+
+## [2.0.0-rc.3](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2016-12-19)
+
+### Breaking Changes
+
+* make strict the default
+ * previously pending and undefined steps did not cause an exit code of 1. This could be overridden with `--strict`. Strict is now the default and you can use `--no-strict` to return to the previous behavior.
+* update automatically required files
+ * if the features live in a `features` directory at any level, all support files in the `features` directory are loaded.
+
+### Bug Fixes
+
+* prevent crash on empty feature file
+
+### New Features
+
+* validate argument types
+
+### Documentation
+
+* docs: fix tag expression migration guide ([#691](https://github.com/cucumber/cucumber-js/issues/691), Aslak Hellesøy)
+
+## [2.0.0-rc.2](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2016-12-04)
+
+### Breaking Changes
+
+* pass `attach` to world constructor instead of assigning it to world
+ * the world constructor now receives `{attach, parameters}` as the first argument instead of `parameters`
+
+### New Features
+
+* json formatter: add `isBackground` to steps
+
+### Bug Fixes
+
+* clear timeouts of asynchronous hooks/steps
+* stop running features with no scenarios
+
+### Documentation
+
+* update node js example
+
+## [2.0.0-rc.1](https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.0...v2.0.0-rc.1) (2016-11-25)
+
+### Bug Fixes
+
+* fix browser version
+
+## [2.0.0-rc.0](https://github.com/cucumber/cucumber-js/compare/v1.3.1...v2.0.0-rc.0) (2016-11-25)
+
+### Breaking Changes
+
+* Dropped support for Node 0.10
+* CLI
+ * `--colors / --no-colors` has moved to `--format-options '{"colorsEnabled": }'`
+ * `--require `: the required files are no longer reordered to require anything in a `support` directory first
+ * `--snippet-interface ` has moved to `--format-options '{"snippetInterface": ""}'`
+ * `--snippet-syntax ` has moved to `--format-options '{"snippetSyntax": ""}'`
+ * `--tags ` now uses [cucumber-tag-expressions](https://docs.cucumber.io/tag-expressions/). It is no longer repeatable and new values will override previous
+ * `--tags @dev` stays the same
+ * `--tags ~@dev` becomes `--tags 'not @dev'`
+ * `--tags @foo,@bar` becomes `--tags '@foo or @bar'`
+ * `--tags @foo --tags @bar` becomes `--tags '@foo and @bar'`
+* Internals
+ * complete rewrite using ES2015 and promises
+* JSON Formatter
+ * String attachments are no longer base64 encoded. Buffer and Stream attachments are still base64 encoded.
+* Support Files
+ * Attachments
+ * The `attach` function used for adding attachments moved from the API scenario object to world. It is thus now available in step definitions without saving a reference to the scenario.
+
+ ```javascript
+ // 1.3.0
+ this.After(function(scenario, callback) {
+ scenario.attach(new Buffer([137, 80, 78, 71]), 'image/png')
+ });
+
+ // 2.0.0
+ this.After(function() {
+ this.attach(new Buffer([137, 80, 78, 71]), 'image/png');
+ });
+ ```
+
+ * When attaching buffers or strings, the callback argument is ignored.
+ * Hooks
+ * Hooks now receive a [ScenarioResult](/src/models/scenario_result.js) instead of the Scenario
+
+ ```javascript
+ // 1.3.0
+ this.After(function(scenario) {});
+
+ // 2.0.0
+ this.After(function(scenarioResult) {});
+ ```
+
+ * The `tags` option for hook should now be a string instead of an array and uses [cucumber-tag-expressions](https://docs.cucumber.io/tag-expressions/)
+
+ ```javascript
+ // 1.3.0
+ this.Before({tags: ["@foo"]}, function (scenario) {})
+ this.Before({tags: ["@foo,@bar"]}, function (scenario) {})
+ this.Before({tags: ["@foo", "@bar"]}, function (scenario) {})
+
+ // 2.0.0
+ this.Before({tags: "@foo"}, function (scenario) {})
+ this.Before({tags: "@foo and @bar"}, function (scenario) {})
+ this.Before({tags: "@foo or @bar"}, function (scenario) {})
+ ```
+
+ * Step Definitions
+ * String patterns were removed in favor [cucumber-expressions](https://docs.cucumber.io/cucumber-expressions/)
+ * Regular Expressions
+ * capture groups matching `(-?\d+)` will be automatically converted to an integer using `parseInt`
+ * capture groups matching `(-?\d*\.?\d+)` will be automatically converted to a float using `parseFloat`
+ * Generator functions are no longer automatically run with `co`. To retain the previous functionality, use [this.setDefinitionFunctionWrapper](/docs/support_files/step_definitions.md#definition-function-wrapper)
+ * Event Handlers
+ * Objects no longer have `get*` methods and instead have exposed properties
+ * For example: `scenario.getName()` is now just `scenario.name`
+ * `StepResult` duration is now in milliseconds instead of nanoseconds
+
+### Bug Fixes
+
+* remove empty lines from `@rerun` files ([#660](https://github.com/cucumber/cucumber-js/issues/660), Cody Ray Hoeft)
+* catch uncaught errors in the browser (Charlie Rudolph)
+
+### New Features
+
+* Support Files
+ * Attachments:
+ * When attaching a stream, the interface can either accept a callback as a third argument or will return a promise if not passed a callback
+ * Step Definitions
+ * Ability to add custom argument transformations
+* Fail fast / rerun formatter
+ * When used together rerun formatter will output all skipped scenarios that didn't run due to a failure
+
+### Documentation
+
+* fix typo ([#659](https://github.com/cucumber/cucumber-js/issues/659), gforceg)
+* update support files api reference ([#661](https://github.com/cucumber/cucumber-js/issues/661), Zearin)
+
+## [1.3.1] (2016-09-30)
+
+### Bug Fixes
+
+* pass formatter options to listener ([#641](https://github.com/cucumber/cucumber-js/issues/641), Charlie Rudolph)
+* rerun formatter: output any scenario that doesn't pass (Charlie Rudolph)
+* populate scenario definition ([#647](https://github.com/cucumber/cucumber-js/issues/647), Charlie Rudolph)
+* handle empty stacktraces ([#605](https://github.com/cucumber/cucumber-js/issues/605), Hugues Malphettes)
+* use cross-platform symbols ([#635](https://github.com/cucumber/cucumber-js/issues/635), Kevin Goslar)
+
+### Documentation
+
+* fix node.js example ([#637](https://github.com/cucumber/cucumber-js/issues/637), Jonathan Gomez)
+* fix links in event_handlers.md ([#638](https://github.com/cucumber/cucumber-js/issues/638), Oliver Rogers)
+* fix hooks example ([#644](https://github.com/cucumber/cucumber-js/issues/644), John McLaughlin)
+
+## [1.3.0] (2016-09-08)
+
+### New Features
+
+* add `--snippet-interface ` CLI option (Charlie Rudolph)
+* add `--world-parameters ` CLI option (Charlie Rudolph)
+* add snippets formatter (Charlie Rudolph)
+* add support for ES6 default module syntax (dbillingham)
+* pretty formatter: add symbols (Charlie Rudolph)
+* add simplified hook parameters (Charlie Rudolph)
+
+### Bug Fixes
+
+* step definition snippets internationalization (Charlie Rudolph)
+
+### Documentation
+
+* document order of execution for multiple hooks (John McLaughlin)
+* breakup README.md, organize docs (Charlie Rudolph)
+
+## [1.2.2] (2016-08-05)
+
+### Bug Fixes
+
+* Fix error when stack trace has no frames ([#610](https://github.com/cucumber/cucumber-js/issues/610), Jan Molak)
+
+## [1.2.1] (2016-07-01)
+
+### Bug Fixes
+
+* Fix hook / step definition location and stacktraces in the browser ([#567](https://github.com/cucumber/cucumber-js/issues/567), [#538](https://github.com/cucumber/cucumber-js/issues/538), Charlie Rudolph)
+
+## [1.2.0] (2016-06-24)
+
+### Bug Fixes
+
+* Attachments
+ * Remove intermediate conversion to string (Charlie Rudolph)
+ * Use native base64 encoding which can encode binary ([#589](https://github.com/cucumber/cucumber-js/issues/589), Benjamín Eidelman)
+
+## [1.1.0] (2016-06-23)
+
+### New Features
+
+* Add full support to `registerHandler` (Charlie Rudolph)
+ * Can now use all supported functions interfaces (synchronous, callback, promise, generators)
+ * Will throw any error received and immediately kill the test suite
+ * Supports handler specific timeouts
+ * Updated documentation
+
+### Bug Fixes
+
+* CLI format: support absolute path on windows (Charlie Rudolph)
+* Fix typo in event name. ([#590](https://github.com/cucumber/cucumber-js/issues/590), Artur Pomadowski)
+* Don't run hooks in dry run mode (Charlie Rudolph)
+
+## [1.0.0] (2016-05-30)
+
+### Bug Fixes
+
+* Escape all instances of special characters in example / data table (Charlie Rudolph)
+
+## [0.10.4] (2016-05-30)
+
+### New Features
+
+* Allow time to be faked by utilities such as `sinon.useFakeTimers` (John McLaughlin)
+
+## [0.10.3] (2016-05-19)
+
+### Bug Fixes
+
+* Escape newlines in table cells in pretty formatter (Julien Biezemans)
+* Fix handling of unusual error objects (efokschaner)
+
+## [0.10.2] (2016-04-07)
+
+### New Features
+
+* Add match location to JSON formatter output (Charlie Rudolph)
+
+### Bug Fixes
+
+* Undefined background step (Scott Deakin)
+
+## [0.10.1] (2016-04-01)
+
+### New Features
+
+* Support generators for hooks/step definitions (Ádám Gólya)
+
+## [0.10.0] (2016-04-01)
+
+### Breaking changes
+
+* removed around hooks (Charlie Rudolph)
+ * how to update: use separate before and after hooks. If this is not sufficient, please create an issue.
+
+* updated pending step interface (Charlie Rudolph)
+ * how to update: change `callback.pending()` to `callback(null, 'pending')` or use one of the new pending step interfaces
+
+* updated tagged hook interface (Charlie Rudolph)
+ * how to update:
+
+ ```javascript
+ this.Before('@tagA', function() { ... })
+ // becomes
+ this.Before({tags: ['@tagA']}, function() { ... })
+
+ this.Before('@tagA', '@tagB,@tagC', function() { ... })
+ // becomes
+ this.Before({tags: ['@tagA', '@tagB,@tagC']}, function() { ... })
+ ```
+
+
+### New Features
+
+* support hook specific timeouts (Charlie Rudolph)
+* reworked formatter error reporting (Charlie Rudolph)
+
+## [0.9.5] (2016-02-16)
+
+### Bug Fixes
+
+* Fix rerun formatter output (Charlie Rudolph)
+
+### New Features
+
+* Allow rerun file to be in subfolder (Charlie Rudolph)
+
+## [0.9.4] (2016-01-28)
+
+### Bug Fixes
+
+* Publish release folder to npm (Charlie Rudolph)
+
+## [0.9.3] (2016-01-27)
+
+### New Features
+
+* Run scenario by name (Charlie Rudolph)
+
+### Bug Fixes
+
+* Prevent maximum call stack from being exceeded (John Krull)
+
+### Documentation
+
+* Add documentation of profiles (Charlie Rudolph)
+* README improvements (Miika Hänninen, Kevin Goslar, Maxim Koretskiy)
+
+## [0.9.2]
+
+### New Features
+
+* Bump stack-chain (Rick Lee-Morlang)
+
+## [0.9.1]
+
+### New Features
+
+* Add rerun formatter (Charlie Rudolph)
+
+### Fixes
+
+* Add ability to execute scenario outline example (Charlie Rudolph)
+* Support tags on scenario outline examples (Charlie Rudolph)
+
+### Documentation
+
+* Fix invalid hook documentation (Charlie Rudolph)
+
+## [0.9.0]
+
+### Breaking changes
+
+* catch ambiguous step definitions (Charlie Rudolph)
+* remove use of domain (Charlie Rudolph)
+
+### New Features
+
+* pretty formatter: source shows step definition location (Charlie Rudolph)
+* support node 5 (Charlie Rudolph)
+
+### Fixes
+
+* Fix `Api.Scenario#attach` callback handling (Julien Biezemans)
+
+### Documentation
+
+* Add async example to README (Artem Bronitsky)
+* Document hooks sync/async protocols (Julien Biezemans)
+* Remove useless callbacks in documentation (Julien Biezemans)
+* Fix browser example (Karine Pires)
+
+## [v0.8.1]
+
+### Documentation, internals and tests
+
+* Update World constructor documentation (Charlie Rudolph)
+* Remove badges from README.md (Charlie Rudolph)
+
+## [v0.8.0]
+
+### Breaking changes
+
+* Add strict function length checking to hooks and step definitions (Charlie Rudolph)
+* Make World constructors strictly synchronous (Julien Biezemans)
+
+### New features
+
+* Add cli option to fail fast (Charlie Rudolph)
+* Add cli for specifying multiple formatters (Charlie Rudolph)
+* Add support for passing multiple line numbers (Charlie Rudolph)
+* Add ability to disable colors (Charlie Rudolph)
+* Add support for custom snippet syntaxes (Charlie Rudolph)
+
+### Changed features
+
+* Hide errors in pretty formatter summary (Charlie Rudolph)
+* Remove unnecessary whitespaces in pretty formatter output (Charlie Rudolph)
+
+### Fixes
+
+* Properly ask configurations for strict mode (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Document data table interface (Charlie Rudolph)
+* Refactor: statuses (Charlie Rudolph)
+* Refactor: cleanup step definitions (Charlie Rudolph)
+* Cleanup: remove log to console from listeners (Charlie Rudolph)
+* Use svg badges (Charlie Rudolph)
+* Rename CONTRIBUTE.md to CONTRIBUTING.md (Julien Biezemans)
+* Require maintainers to document API changes in release tag descriptions (Julien Biezemans)
+* Add build-release NPM script (Julien Biezemans)
+
+## [v0.7.0]
+
+### New features
+
+* Time out steps that take too long (Charles Rudolph)
+* Print execution time (Charles Rudolph)
+
+### Changed features
+
+* Remove callback.fail() (Charles Rudolph)
+* Update hooks interface (Charles Rudolph)
+
+### Fixes
+
+* Don't try to handle empty features (Julien Biezemans)
+* Fix unpredictable nopt behavior (Charles Rudolph)
+* Fix pretty formatter step indentation after doc string (Charles Rudolph)
+
+### Documentation, internals and tests
+
+* Rename Collection functions: forEach/syncForEach -> asyncForEach/forEach (Charles Rudolph)
+* Simplify installation instructions (Charles Rudolph)
+* Fix spec on Windows (Marcel Hoyer)
+* Simplify World examples in README (Charles Rudolph)
+* Update license in package.json (Charles Rudolph)
+* Convert test framework from jasmine-node to jasmine (Charles Rudolph)
+* Separate test output (Charles Rudolph)
+* Remove ruby, legacy features, cucumber-tck (Charles Rudolph)
+
+## [v0.6.0]
+
+### New features
+
+* Add --no-source to hide uris (Eddie Loeffen)
+* Add dry run capability (Karthik Viswanath)
+* Introduce --compiler CLI option (Charles Rudolph)
+
+### Documentation, internals and tests
+
+* Stop IRC and email notifications from Travis (Julien Biezemans)
+* Remove Node.js 0.11 explicit support (Julien Biezemans)
+* Use basic for loop for array iterations (Charles Rudolph)
+* Bump browserify (Charles Rudolph)
+* Add CLI help for --profile (Charles Rudolph)
+* Use colors library (Charles Rudolph)
+* Improve --compiler help (Julien Biezemans)
+* Fix loading of external compiler modules (Julien Biezemans)
+* Document a few common compiler usages (Julien Biezemans)
+
+## [v0.5.3]
+
+### New features
+
+* Add support for profiles (Charles Rudolph)
+
+### Changed features
+
+* Allow for multiple instances of placeholder (Charles Rudolph)
+* Print relative paths in summary output (Charles Rudolph)
+
+### Fixes
+
+* Remove duplicate line number from output (Charles Rudolph)
+* Return clone of array from DataTable.Row.raw() (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Update various urls (Dale Gardner)
+* Bump CoffeeScript (Julien Biezemans)
+* Bump PogoScript (Julien Biezemans)
+* Bump underscore (Julien Biezemans)
+* Bump underscore.string (Julien Biezemans)
+* Bump stack-chain (Julien Biezemans)
+* Bump nopt (Julien Biezemans)
+* Bump connect (Julien Biezemans)
+* Bump exorcist (Julien Biezemans)
+* Bump uglifyify (Julien Biezemans)
+* Bump through (Julien Biezemans)
+* Bump serve-static (Julien Biezemans)
+* Bump rimraf (Julien Biezemans)
+* Bump mkdirp (Julien Biezemans)
+* Bump jshint (Julien Biezemans)
+* Remove extra bracket in README example (Julien Biezemans)
+* Officially support Node.js 4.x (Julien Biezemans)
+* Use a profile for own build (Julien Biezemans)
+
+## [v0.5.2]
+
+### New features
+
+* Add rowsHash method to data tables (Mark Amery)
+
+### Documentation, internals and tests
+
+* Remove CLI resource leak timeout (Julien Biezemans)
+* Point to cucumber.io instead of cukes.info (Julien Biezemans)
+* Fix mixed tabs and spaces (Mark Amery)
+* Use hexadecimal values for console colours (Julien Biezemans)
+* Update walkdir module to 0.0.10 (Artem Repko)
+* Fix ruby tests on Windows (zs-zs)
+* Fix npm test to run on Windows (zs-zs)
+* Normalize OS-specific path separators in output assertions (zs-zs)
+* Relax check for promises in step definitions (zs-zs)
+* Add Ast.Feature.getFeatureElements() (Mark Derbecker)
+* Add Util.Collection.sort() (Mark Derbecker)
+* Add waffle.io badge (Julien Biezemans)
+
+## [v0.5.1]
+
+### New features
+
+* Support placeholders in scenario outlines (chrismilleruk)
+* Add failure exception to scenario object (Mateusz Derks)
+
+### Documentation, internals and tests
+
+* Fix World example in README (Julien Biezemans)
+* Remove moot `version` property from bower.json (Kevin Kirsche)
+* Remove obsolete release instruction for bower (Julien Biezemans)
+* Add Gitter badge (Julien Biezemans)
+* Rephrase spec example (Julien Biezemans)
+* Add documentation for attachments (Simon Dean)
+* Fix name of Cucumber.Api.Scenario in README (Simon Dean)
+
+## [v0.5.0]
+
+### New features
+
+* Support promises from step definitions (Will Farrell)
+* Support synchronous step definitions (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Remove irrelevant feature file (Julien Biezemans)
+* Reorganise callback feature (Julien Biezemans)
+* Remove unused dependency (Julien Biezemans)
+* Document new step definition styles (Julien Biezemans)
+* Make step definitions synchronous in example app (Julien Biezemans)
+
+## [v0.4.9]
+
+### New features
+
+* Make pretty formatter the default (Julien Biezemans)
+* Filter stack traces (close [#157](https://github.com/cucumber/cucumber-js/issues/157), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Separate source map from bundle (Julien Biezemans)
+* Hint (Julien Biezemans)
+* Fix misspelling io.js (Sonny Piers)
+* Add 0.12 to supported engines in NPM manifest (Julien Biezemans)
+* Fix test script to be more portable (Sam Saccone)
+* Force Cucumber <2 for now (Julien Biezemans)
+* Bump Cucumber gem to 2.0.0 (Julien Biezemans)
+* Explicitly require json module in Ruby stepdefs (Julien Biezemans)
+* Add CLI help section for --backtrace (Julien Biezemans)
+
+## [v0.4.8]
+
+### New features
+
+* Support IO.js (Sam Saccone)
+* Support Node.js 0.12 (Julien Biezemans)
+
+### Fixes
+
+* Handle BOM and fix regexp for hyphenated languages ([#144](https://github.com/cucumber/cucumber-js/issues/144), Aslak Hellesøy)
+* Fix attachment clean up in hooks ([#282](https://github.com/cucumber/cucumber-js/issues/282), nebehr)
+
+### Documentation, internals and tests
+
+* More thorough specs for GherkinLexer. Fix build? (Aslak Hellesøy)
+* Add jshintrc (Jesse Harlin)
+* Hint lib/ (Julien Biezemans)
+* Hint bundler and bin (Julien Biezemans)
+* Hint spec/ (Julien Biezemans)
+* Be consistent in anonymous function syntax (Julien Biezemans)
+* Use named functions for all constructors (Julien Biezemans)
+* Indent (Julien Biezemans)
+* Add more diagnostics to build (Julien Biezemans)
+* Remove unnecessary spaces in shell commands (Julien Biezemans)
+
+## [v0.4.7]
+
+### Documentation, internals and tests
+
+* Do not dispose of step domains (Julien Biezemans)
+* Refactor and add debug code (Julien Biezemans)
+* Create a single domain per run (Julien Biezemans)
+* Add missing AstTreeWalker specs (Julien Biezemans)
+* Indent (Julien Biezemans)
+* Spec domain enter/exit in AstTreeWalker (Julien Biezemans)
+
+## [v0.4.6]
+
+### New features
+
+* Add --no-snippets flag to CLI (close [#207](https://github.com/cucumber/cucumber-js/issues/207), Krispin Schulz)
+* Add strict mode (close [#211](https://github.com/cucumber/cucumber-js/issues/211), Elwyn)
+* Add strict mode to volatile configuration (close [#258](https://github.com/cucumber/cucumber-js/issues/258), Jan-Eric Duden)
+
+### Fixes
+
+* Fix code loader on windows (close [#226](https://github.com/cucumber/cucumber-js/issues/226), Gary Taylor)
+
+### Documentation, internals and tests
+
+* Connect to Rubygems through SSL (Julien Biezemans)
+* Use Node domain's enter/exit in stepdefs (Julien Biezemans)
+* Do not display snippets in build (Julien Biezemans)
+* Asynchronously dispose of step domains (Julien Biezemans)
+* Change order of tests in build (Julien Biezemans)
+* Fix tests to run on Windows (close [#216](https://github.com/cucumber/cucumber-js/issues/216), kostya.misura)
+* Fix registerHandler() example in README (Julien Biezemans)
+* Fix typo in variable name (Julien Biezemans)
+* Fix World property assignment in README example (Julian)
+* Unix EOLs (Julien Biezemans)
+* Ignore .ruby-* (Julien Biezemans)
+
+## [v0.4.5]
+
+### Documentation, internals and tests
+
+* Fix issue with npm upgrade on node.js v0.8 (Simon Dean)
+* Use Node domain to handle asynchronous exceptions (Julien Biezemans)
+
+## [v0.4.4]
+
+### Fixes
+
+* Allow >1 parameter in string step definitions (Craig Morris)
+* Don't skip scenario outlines (close [#245](https://github.com/cucumber/cucumber-js/issues/245), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Bump nopt (Julien Biezemans)
+* Bump coffee-script (Julien Biezemans)
+* Bump pogo (Julien Biezemans)
+* Bump underscore (Julien Biezemans)
+* Bump rimraf (Julien Biezemans)
+* Bump jasmine-node (Julien Biezemans)
+* Bump connect (Julien Biezemans)
+* Rewrite bundling system (close [#186](https://github.com/cucumber/cucumber-js/issues/186), Julien Biezemans)
+* Rename release script (Julien Biezemans)
+* Upgrade NPM on Travis (Julien Biezemans)
+* Drop Node 0.6 support (Julien Biezemans)
+* Drop Node 0.6 support (manifest) (Julien Biezemans)
+
+## [v0.4.3]
+
+### Fixes
+
+* Scenario outline fixes (Simon Dean)
+* Correct the embeddings JSON to match other ports of Cucumber (Simon Dean)
+
+## [v0.4.2]
+
+### New features
+
+* Support attachments (close [#189](https://github.com/cucumber/cucumber-js/issues/189), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Fix world example in main readme (Sam Saccone)
+* Update instructings for running tests (Sam Saccone)
+
+## [v0.4.1]
+
+### New features
+
+* Target scenario by line number on CLI (close [#168](https://github.com/cucumber/cucumber-js/issues/168), Simon Lampen)
+
+### Fixes
+
+* Ensure no stdout output is lost (Simon Dean)
+* Properly tag scenario outlines (close [#195](https://github.com/cucumber/cucumber-js/issues/195), [#197](https://github.com/cucumber/cucumber-js/issues/197), Artur Kania)
+
+### Documentation, internals and tests
+
+* Align snippet comment with Cucumber-Ruby/JVM (close [#150](https://github.com/cucumber/cucumber-js/issues/150), Julien Biezemans)
+* Update build badge URL on README (Julien Biezemans)
+* Add line number pattern to --help on CLI (Julien Biezemans)
+* Document AfterFeatures event (close [#171](https://github.com/cucumber/cucumber-js/issues/171), Eddie Loeffen)
+* Include 'features' in *Features events payload (Stanley Shyiko)
+* Try to fix build on Travis (Julien Biezemans)
+* Remove bower as a dev dependency (close [#191](https://github.com/cucumber/cucumber-js/issues/191), Simon Dean)
+* Remove obsolete Travis trick for Node 0.8 (Julien Biezemans)
+* Remove development status table from README (Julien Biezemans)
+* Help the guy produce changelogs (Julien Biezemans)
+
+## [v0.4.0]
+
+### New features
+
+* Add support for scenario outlines and examples (close [#155](https://github.com/cucumber/cucumber-js/issues/155), Ben Van Treese)
+* Add i18n support (close [#156](https://github.com/cucumber/cucumber-js/issues/156), Lukas Degener)
+
+### Changed features
+
+* Pass scenario to hooks (Marat Dyatko)
+* Minor change to stepdef snippets (JS) (Julien Biezemans)
+* Make feature id in JSON output replace all spaces (close #[127](https://github.com/cucumber/cucumber-js/issues/127), Tim Perry)
+* Bump CoffeeScript (close [#154](https://github.com/cucumber/cucumber-js/issues/154), Gabe Hayes)
+
+### Documentation, internals and tests
+
+* Add Hook spec example for single-arg function (close [#143](https://github.com/cucumber/cucumber-js/issues/143), Julien Biezemans)
+* Update README with Hook scenario object doc (Julien Biezemans)
+* Style (Julien Biezemans)
+
+## [v0.3.3]
+
+### New features
+
+* Output step definition snippets in CoffeeScript (John George Wright)
+* Add colors to CLI (Johny Jose)
+
+### Changed features
+
+* Add durations to JSON formatter (Simon Dean)
+
+### Documentation, internals and tests
+
+* Bump most dependencies (Julien Biezemans)
+* DRY (Julien Biezemans)
+* Refactor (Julien Biezemans)
+
+## [v0.3.2]
+
+### New features
+
+* Add PogoScript support (Josh Chisholm)
+* Add listener and event handler registration (close [#130](https://github.com/cucumber/cucumber-js/issues/130), Paul Shannon)
+
+### Documentation, internals and tests
+
+* Added some nice stats (Aslak Hellesøy)
+* Fix spelling of "GitHub" (Peter Suschlik)
+* Add Code Climate badge to README (Julien Biezemans)
+* Update README.md (Sebastian Schürmann)
+
+## [v0.3.1]
+
+### New features
+
+* Add DataTable.rows() (Niklas Närhinen)
+* Officially support Node 0.10 and 0.11 (Julien Biezemans)
+
+### Changed features
+
+* Update cucumber-html (Aslak Hellesøy)
+* Bump Gherkin (Julien Biezemans)
+* Add options parameter to JSON formatter (Israël Hallé)
+* Updated CoffeeScript (Matteo Collina)
+* Specify strict coffee-script version number (Julien Biezemans)
+* Bump jasmine-node (Julien Biezemans)
+
+### Fixes
+
+* Fix travis build Node versions (Julien Biezemans)
+* Fix Travis CI configuration (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Remove words in History (Julien Biezemans)
+* Update dev status table in README (Julien Biezemans)
+* Update LICENSE (Julien Biezemans)
+* Add contributors (Julien Biezemans)
+* Move data table scenario to TCK (Julien Biezemans)
+* Be consistent in spec matchers (Julien Biezemans)
+* Remove cucumber.no.de links (Kim, Jang-hwan)
+* Fix broken link in README dev status table ([#118](https://github.com/cucumber/cucumber-js/issues/118), Michael Zedeler)
+* Refactor hook-related Given steps in JS stepdefs (Julien Biezemans)
+* Refactor failing mapping JS step definitions (Julien Biezemans & Matt Wynne)
+* Update README.md to correct error in example for zombie initialization (Tom V)
+* Update minor typos in README.md (David Godfrey)
+
+
+
+## [v0.3.0]
+
+### New features
+
+* Allow for node-like callback errors (Julien Biezemans)
+* Accept multiple features in volatile configuration ([#52](https://github.com/cucumber/cucumber-js/issues/52), Julien Biezemans)
+
+### Fixes
+
+* Add ^ prefix and $ suffix to string-based step definition regexps ([#77](https://github.com/cucumber/cucumber-js/issues/77), Julien Biezemans)
+* Allow for unsafe regexp characters in stepdef string patterns ([#77](https://github.com/cucumber/cucumber-js/issues/77), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Build on Node.js 0.8 on Travis (Julien Biezemans)
+* Rewrite README's status table in HTML (Julien Biezemans)
+* Bump Gherkin ([#78](https://github.com/cucumber/cucumber-js/issues/78), Julien Biezemans)
+* Switch to HTML tables in README (Julien Biezemans)
+* Bump Aruba (Julien Biezemans)
+
+
+
+## [v0.2.x](https://github.com/cucumber/cucumber-js/compare/v0.2.0...v0.3.0^)
+
+## [v0.2.22]
+
+### New features
+
+* Print data tables and doc strings in pretty formatter output ([#89](https://github.com/cucumber/cucumber-js/issues/89), [#81](https://github.com/cucumber/cucumber-js/issues/81), Julien Biezemans)
+
+### Fixes
+
+* Exclude unmatched features from AST ([#80](https://github.com/cucumber/cucumber-js/issues/80), Julien Biezemans)
+
+
+
+## [v0.2.21]
+
+### New features
+
+* Add bundler (Julien Biezemans)
+
+
+
+**TBD**
+
+## [v0.2.20]
+
+### New features
+
+* Add JSON formatter ([#79](https://github.com/cucumber/cucumber-js/issues/79), Chris Young)
+
+### Fixes
+
+* Fix data table and tags handling in JSON formatter (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Force example feature execution order in JSON feature (Julien Biezemans)
+
+
+
+## [v0.2.19]
+
+### Fixes
+
+* Fix CLI arguments passing ([#83](https://github.com/cucumber/cucumber-js/issues/83), Omar Gonzalez)
+
+### Documentation, internals and tests
+
+* Refactor "summarizer" listener to summary formatter ([#71](https://github.com/cucumber/cucumber-js/issues/71), 28b74ef, Julien Biezemans)
+* Add "summary" formatter to available CLI formatters (Julien Biezemans)
+* Fix spec example description (Julien Biezemans)
+
+
+
+## [v0.2.18]
+
+### Fixes
+
+* Replace findit with walkdir to fix file loading on Windows ([#73](https://github.com/cucumber/cucumber-js/issues/73), Aaron Garvey)
+
+### Documentation, internals and tests
+
+* Rename spec file (Julien Biezemans)
+* Extract developer documentation from README to CONTRIBUTE (Julien Biezemans)
+* Bump browserify (Julien Biezemans)
+* Update supported Node.js versions (Julien Biezemans)
+
+
+
+## [v0.2.17]
+
+### New features
+
+* Add pretty formatter (simplified, monochrome) ([#59](https://github.com/cucumber/cucumber-js/issues/59), @renier, Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Display only master branch build status in README (Julien Biezemans)
+* Rename "summary logger" to "summarizer" ([#59](https://github.com/cucumber/cucumber-js/issues/59), Julien Biezemans)
+* Extract common formatter methods ([#59](https://github.com/cucumber/cucumber-js/issues/59), [#63](https://github.com/cucumber/cucumber-js/issues/63), Julien Biezemans)
+
+
+
+## [v0.2.16]
+
+### New features
+
+* Display failing scenario URIs in summary (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Ran a gem update (Aslak Hellesøy)
+* Update NPM dependencies ([#69](https://github.com/cucumber/cucumber-js/issues/69), Aslak Hellesøy)
+* Refactor listener infrastructure ([#35](https://github.com/cucumber/cucumber-js/issues/35), [#59](https://github.com/cucumber/cucumber-js/issues/59), [#63](https://github.com/cucumber/cucumber-js/issues/63), Julien Biezemans)
+* Extract summary logger from progress formatter ([#59](https://github.com/cucumber/cucumber-js/issues/59), [#63](https://github.com/cucumber/cucumber-js/issues/63), Julien Biezemans)
+* Store URI on AST elements (Julien Biezemans)
+
+
+
+## [v0.2.15]
+
+### New features
+
+* Handle asynchronous exceptions ([#51](https://github.com/cucumber/cucumber-js/issues/51), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Remove commented code (Julien Biezemans)
+
+
+
+## [v0.2.14]
+
+### New features
+
+* Mention CS support in README (Julien Biezemans)
+* Update command-line documentation in README (Julien Biezemans)
+
+### Fixes
+
+* Add alternate binary script for Windows ([#60](https://github.com/cucumber/cucumber-js/issues/60), Julien Biezemans)
+
+
+
+## [v0.2.13]
+
+### New features
+
+* Add support for string-based step definition patterns ([#48](https://github.com/cucumber/cucumber-js/issues/48), Ted de Koning, Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Pass step instance to step definition invocation ([#57](https://github.com/cucumber/cucumber-js/issues/57), Julien Biezemans)
+* Refactor step result specs (Julien Biezemans)
+* Store step on step results ([#57](https://github.com/cucumber/cucumber-js/issues/57), Julien Biezemans)
+* Increase Aruba timeout delay for slow Travis (Julien Biezemans)
+* Decouple pattern from regexp in step definition ([#48](https://github.com/cucumber/cucumber-js/issues/48), Julien Biezemans)
+
+
+
+## [v0.2.12]
+
+### Changed features
+
+* Allow World constructor to set explicit World object ([#50](https://github.com/cucumber/cucumber-js/issues/50), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add semicolons (Julien Biezemans)
+* Add documentation about World to README (Julien Biezemans)
+
+
+
+## [v0.2.11]
+
+### Changed features
+
+* Simplify World callbacks ([#49](https://github.com/cucumber/cucumber-js/issues/49), Julien Biezemans)
+
+### Fixes
+
+* Fix callback.fail() when called without any reasons (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add toHaveBeenCalledWithInstanceOfConstructorAsNthParameter() spec helper (Julien Biezemans)
+* Simplify default World constructor callback (Julien Biezemans)
+* Adapt World constructors (Julien Biezemans)
+
+
+
+## [v0.2.10]
+
+### Fixes
+
+* Fix path handling on Windows platforms ([#47](https://github.com/cucumber/cucumber-js/issues/47), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add tagged hooks example to README (Julien Biezemans)
+* Fix browserify setup for example page load (Julien Biezemans)
+* Rename bundle to 'cucumber.js' in web example (Julien Biezemans)
+* Remove obsolete browserify directive (Julien Biezemans)
+* Improve platform detection (Julien Biezemans)
+
+
+
+## [v0.2.9]
+
+### New features
+
+* Add support for tagged hooks ([#32](https://github.com/cucumber/cucumber-js/issues/32), Julien Biezemans)
+
+### Changed features
+
+* Allow for whitespaces in tag groups (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add Cucumber.Type.String and String#trim(, Julien Biezemans)
+* Remove unnecessary this. from stepdefs (Julien Biezemans)
+* Simplify tag-related stepdefs (Julien Biezemans)
+* Simplify tag selection syntax in volatile configuration (Julien Biezemans)
+* Mark hooks "done" in README dev status (Julien Biezemans)
+
+
+
+## [v0.2.8]
+
+### New features
+
+* Add around hooks ([#32](https://github.com/cucumber/cucumber-js/issues/32), Julien Biezemans)
+
+### Changed features
+
+* Treat undefined and skipped step as any other step (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Remove unused parameter in parser spec (Julien Biezemans)
+* Add JS stepdef for async failing steps scenario (Julien Biezemans)
+* Assign zombie in README example ([#44](https://github.com/cucumber/cucumber-js/issues/44), Julien Biezemans)
+* Remove trailing spaces (Julien Biezemans)
+* Get rid of obsolete PendingStepException (Julien Biezemans)
+* Refactor SupportCode.Library spec (Julien Biezemans)
+* Add around hooks documentation ([#32](https://github.com/cucumber/cucumber-js/issues/32), Julien Biezemans)
+
+
+
+## [v0.2.7]
+
+### New features
+
+* Allow for asynchronous pending steps (Julien Biezemans)
+* Allow for asynchronous step failures (Julien Biezemans)
+
+### Fixes
+
+* Fix matching groups in step definition snippets ([#42](https://github.com/cucumber/cucumber-js/issues/42), Julien Biezemans)
+* Remove obsolete dependency from snippet builder spec (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add steps to release process in README (Julien Biezemans)
+* Update development status table in README (Julien Biezemans)
+* Import implementation-specific scenarios from cucumber-tck/undefined_steps (Julien Biezemans)
+* Switch from throwing exceptions to callback.fail() in web example (Julien Biezemans)
+* Add callback.fail() example to README (Julien Biezemans)
+
+## [v0.2.6]
+
+### New features
+
+* Add tags support ([#7](https://github.com/cucumber/cucumber-js/issues/7), Julien Biezemans)
+* Add support for tags on features ([#7](https://github.com/cucumber/cucumber-js/issues/7), Julien Biezemans)
+
+### Changed features
+
+* Handle missing instance in World constructor callback ([#40](https://github.com/cucumber/cucumber-js/issues/40), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Update development status in README (Julien Biezemans)
+* Typo in README (Julien Biezemans)
+* Refactor parser and add AST assembler (required by [#7](https://github.com/cucumber/cucumber-js/issues/7), Julien Biezemans)
+* Indent properly (Julien Biezemans)
+* Refactor AST assembler to be stateful (needed by [#7](https://github.com/cucumber/cucumber-js/issues/7), Julien Biezemans)
+* Update master diff in History (Julien Biezemans)
+* Add --tags documentation to --help (CLI, Julien Biezemans)
+
+
+
+## [v0.2.5]
+
+### New features
+
+* Add Before/After hooks ([#32](https://github.com/cucumber/cucumber-js/issues/32), [#31](https://github.com/cucumber/cucumber-js/issues/31), Tristan Dunn)
+
+### Changed features
+
+* Interpret "*" step keyword as a repeat keyword (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add NPM publishing to README release checklist (Julien Biezemans)
+* Add "Help & Support" to README (Julien Biezemans)
+* Words in README (Julien Biezemans)
+* Document before and after hooks (Julien Biezemans)
+
+
+
+## [v0.2.4]
+
+### New features
+
+* Add --version to CLI (Julien Biezemans)
+* Add --help to CLI (Julien Biezemans)
+
+### Changed features
+
+* Add styles for reported errors on web example (Julien Biezemans)
+* Make and expect World constructors to be asynchronous ([#39](https://github.com/cucumber/cucumber-js/issues/39), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Update README (Julien Biezemans)
+* Add development status to README (Julien Biezemans)
+* Add link to demo at cucumber.no.de (Julien Biezemans)
+* Add link to example app to README (Julien Biezemans)
+* Add usage documentation to README ([#23](https://github.com/cucumber/cucumber-js/issues/23), Olivier Melcher)
+* Add examples to run features with the CLI (Olivier Melcher)
+* Fix header levels and whitespaces in README (Julien Biezemans)
+* Add Opera to supported browsers in README (Julien Biezemans)
+* Fix World constructor in README (Julien Biezemans)
+* Simplify World#visit in README (Julien Biezemans)
+* Rewrite step definition and wrapper documentation (Julien Biezemans)
+* Remove useless words (Julien Biezemans)
+* Use more consistent Markdown in README (Julien Biezemans)
+* Fix Gherkin comment in README (Julien Biezemans)
+* Add credits (Julien Biezemans)
+* Add Aruba setup details to README (Julien Biezemans)
+* Fix World constructor on web example according to the recent API changes (Julien Biezemans)
+* Tell Travis CI to post build results to #cucumber (Julien Biezemans)
+* Add release checklist to README (Julien Biezemans)
+
+
+
+## [v0.2.3]
+
+### New features
+
+* Add support for Node 0.6 (Julien Biezemans)
+
+### Fixes
+
+* Prevent the same step definition snippet from being suggested twice (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Don't make NPM ignore `example/` anymore (Julien Biezemans)
+* Bump cucumber-features (Julien Biezemans)
+* Use non-deprecated "url" key instead of "web" in NPM manifest (Julien Biezemans)
+* Add JS step definitions related to data table scenarios (Julien Biezemans)
+* Move from cucumber-features to cucumber-tck (Julien Biezemans)
+* Bump Gherkin (Julien Biezemans)
+* Bump jasmine-node (Julien Biezemans)
+* Bump connect (Julien Biezemans)
+* Fix Travis build (Julien Biezemans)
+* Bump browserify (Julien Biezemans)
+* Bump nopt (Julien Biezemans)
+* Bump underscore (Julien Biezemans)
+* Bump underscore.string (Julien Biezemans)
+* Bump rimraf (Julien Biezemans)
+* Bump mkdirp (Julien Biezemans)
+* Bump Aruba (Julien Biezemans)
+
+
+
+## [v0.2.2]
+
+### New features
+
+* Suggest step definition snippets for undefined steps ([#33](https://github.com/cucumber/cucumber-js/issues/33), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Add contributors to NPM package manifest (Julien Biezemans)
+* Clean up JS step definitions (Julien Biezemans)
+* Bump cucumber-features and reflect step changes (Julien Biezemans)
+* Set up [continuous integration on Travis CI](http://travis-ci.org/#!/cucumber/cucumber-js) (Julien Biezemans)
+* Add Travis's build status icon to README (Julien Biezemans)
+
+
+
+## [v0.2.1]
+
+### New features
+
+* Allow custom World constructors (Julien Biezemans)
+* Add support for data tables (with conversion to hashes) ([#12](https://github.com/cucumber/cucumber-js/issues/12), Julien Biezemans)
+
+### Changed features
+
+* Demonstrate World object usages in web example (Julien Biezemans)
+
+
+
+## [v0.2.0]
+
+### New features
+
+* Setup application to run on [Travis CI](http://travis-ci.org/#!/jbpros/cucumber-js) (Julien Biezemans)
+* Add CoffeeScript support for step definition files (Paul Jensen)
+* Add "World" ([#26](https://github.com/cucumber/cucumber-js/issues/26), Julien Biezemans)
+
+### Changed features
+
+* Add link to the Github repository on web example (Julien Biezemans)
+* Allow specifying the port the web example server should listen on (Julien Biezemans)
+* Update web example to use cucumber-html formatter (Julien Biezemans)
+
+### Fixes
+
+* Fix load paths in spec helper (Julien Biezemans)
+* Prevent 'crypto' module from being included by browserify in web example (Julien Biezemans)
+* Fix HTML indentation (Julien Biezemans)
+* Prevent CLI support code loader from calling module main exports which are not functions (Julien Biezemans)
+* Remove use of username for submodule (Kushal Pisavadia)
+
+### Documentation, internals and tests
+
+* Bump jasmine-node
+* Update README (Julien Biezemans)
+* Bump Gherkin twice (Julien Biezemans)
+* Bump cucumber-features twice (Julien Biezemans)
+* Add missing getters on several AST feature elements (mostly getLine()) (Julien Biezemans)
+* Ignore example/ on NPM (Julien Biezemans)
+* Add Procfile (used by Heroku when deploying to cucumber.heroku.com) (Julien Biezemans)
+* Bump Aruba (Julien Biezemans)
+* Add guard-jasmine-node (Julien Biezemans)
+* Improve Guardfile regular expressions (Julien Biezemans)
+* Bump cucumber-html and remove DOM templates from web example HTML file (Julien Biezemans)
+* Fix PathExpander internal name (Julien Biezemans)
+* Remove unneeded requires from FeaturePathExpander (Julien Biezemans)
+* Bump browserify (Julien Biezemans)
+* Remove "glob" from dependencies (Julien Biezemans)
+* Refactor SupportCodePathExpander spec (Julien Biezemans)
+* Add feature for CoffeeScript support ([#29](https://github.com/cucumber/cucumber-js/issues/29), Julien Biezemans)
+
+
+
+## [v0.1.x](https://github.com/cucumber/cucumber-js/compare/v0.1.0...v0.2.0^)
+
+## [v0.1.5]
+
+### New features
+
+* Add support for background ([#9](https://github.com/cucumber/cucumber-js/issues/9), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Bump cucumber-features (twice) (Julien Biezemans)
+* Bump gherkin and reflect changes in its API (add DocString content type) (Julien Biezemans)
+
+
+
+## [v0.1.4]
+
+### Changed features
+
+* Stop polluting the global namespace with Given(), When() and Then() ([#2](https://github.com/cucumber/cucumber-js/issues/2), Julien Biezemans)
+* Step definitions can be created with the support code helper passed as 'this':
+ this.Given(), this.When(), this.Then() and this.defineStep() ([#2](https://github.com/cucumber/cucumber-js/issues/2), Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Fix typo "occured" -> "occurred" (Fernando Acorreia)
+* Improve variable names in CLI support code loader (Julien Biezemans)
+
+
+
+## [v0.1.3]
+
+### New features
+
+* Allow several features to run at once ([#14](https://github.com/cucumber/cucumber-js/issues/14), Julien Biezemans)
+* Add support for --require (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Improve features and support code API (Julien Biezemans)
+* Add "Cli" and "Volatile" configurations (Julien Biezemans)
+* Internal refactoring and cleanup (Julien Biezemans)
+* Cucumber.js can now fully test itself (Julien Biezemans)
+* Remove run_all_features script in favor of bin/cucumber.js (Julien Biezemans)
+
+
+
+## [v0.1.2]
+
+### New features
+
+* Add failure reporting to the progress formatter ([#20](https://github.com/cucumber/cucumber-js/issues/20), Julien Biezemans)
+
+
+
+## [v0.1.1]
+
+### New features
+
+* Publish Cucumber.js to NPM as [`cucumber`](https://www.npmjs.com/search?q=cucumber) (Julien Biezemans)
+
+### Changed features
+
+* Throw a clearer exception on missing feature argument (CLI) (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Unify and clean up js-specific features and step definitions ([#21](https://github.com/cucumber/cucumber-js/issues/21), Julien Biezemans)
+
+
+
+## [v0.1.0]
+
+### New features
+
+* Add cucumber.js executable (Julien Biezemans)
+* Handle step failures ([#6](https://github.com/cucumber/cucumber-js/issues/6), Julien Biezemans)
+* Add the progress formatter ([#16](https://github.com/cucumber/cucumber-js/issues/16), Julien Biezemans)
+* Add support for pending steps ([#18](https://github.com/cucumber/cucumber-js/issues/18), Julien Biezemans)
+* Add support for undefined steps ([#19](https://github.com/cucumber/cucumber-js/issues/19), Julien Biezemans)
+
+### Changed features
+
+* Update web example to use the new progress formatter (Julien Biezemans)
+
+### Fixes
+
+* Fix asynchronous step definition callbacks ([#1](https://github.com/cucumber/cucumber-js/issues/1), Julien Biezemans)
+* Fix stepResult.isSuccessful call in ProgressFormatter (Julien Biezemans)
+* Load Gherkin properly in browsers (Julien Biezemans)
+* Remove calls to console.log in web example (Julien Biezemans)
+
+### Documentation, internals and tests
+
+* Pass against core.feature in its new form, both with the Cucumber-ruby/Aruba pair and cucumber-js itself (Julien Biezemans)
+* Refactor cucumber-features JS mappings (Julien Biezemans)
+* Refactor js-specific features (Julien Biezemans)
+* Rename PyString to DocString ([#15](https://github.com/cucumber/cucumber-js/issues/15), Julien Biezemans)
+* Update Gherkin to 2.4.0 (Julien Biezemans)
+* Modularize the project and use browserify.js to serve a single JS file to browsers. ([#3](https://github.com/cucumber/cucumber-js/issues/3), Julien Biezemans)
+* Rename Cucumber.Types to Cucumber.Type (Julien Biezemans)
+* Use progress formatter in cucumber-features ([#17](https://github.com/cucumber/cucumber-js/issues/17), Julien Biezemans)
+
+
+
+## [v0.0.x](https://github.com/cucumber/cucumber-js/compare/v0.0.1...v0.1.0^)
+
+## [v0.0.1](https://github.com/cucumber/cucumber-js/tree/v0.0.1)
+
+* Emerge Cucumber.js with bare support for features, scenarios and steps. It does not handle several Gherkin elements nor failures yet. (Julien Biezemans)
+
+
+
+[Unreleased]: https://github.com/cucumber/cucumber-js/compare/v7.2.0...master
+[7.2.0]: https://github.com/cucumber/cucumber-js/compare/7.2.0-rc.0...7.0.0
+[7.1.0]: https://github.com/cucumber/cucumber-js/compare/7.1.0-rc.0...7.0.0
+[7.0.0]: https://github.com/cucumber/cucumber-js/compare/7.0.0-rc.0...v7.0.0
+[7.0.0-rc.0]: https://github.com/cucumber/cucumber-js/compare/v6.0.5...v7.0.0-rc.0
+[6.0.5]: https://github.com/cucumber/cucumber-js/compare/v6.0.4...v6.0.5
+[6.0.4]: https://github.com/cucumber/cucumber-js/compare/v6.0.3...v6.0.4
+[6.0.3]: https://github.com/cucumber/cucumber-js/compare/v6.0.2...v6.0.3
+[6.0.2]: https://github.com/cucumber/cucumber-js/compare/v6.0.1...v6.0.2
+[6.0.1]: https://github.com/cucumber/cucumber-js/compare/v6.0.0...v6.0.1
+[6.0.0]: https://github.com/cucumber/cucumber-js/compare/v5.1.0...v6.0.0
+[5.1.0]: https://github.com/cucumber/cucumber-js/compare/v5.0.3...v5.1.0
+[5.0.3]: https://github.com/cucumber/cucumber-js/compare/v5.0.2...v5.0.3
+[5.0.2]: https://github.com/cucumber/cucumber-js/compare/v5.0.1...v5.0.2
+[5.0.1]: https://github.com/cucumber/cucumber-js/compare/v4.2.1...v5.0.1
+[4.2.1]: https://github.com/cucumber/cucumber-js/compare/v4.2.0...v4.2.1
+[4.2.0]: https://github.com/cucumber/cucumber-js/compare/v4.1.0...v4.2.0
+[4.1.0]: https://github.com/cucumber/cucumber-js/compare/v4.0.0...v4.1.0
+[4.0.0]: https://github.com/cucumber/cucumber-js/compare/v3.2.1...v4.0.0
+[3.2.1]: https://github.com/cucumber/cucumber-js/compare/v3.2.0...v3.2.1
+[3.2.0]: https://github.com/cucumber/cucumber-js/compare/v3.1.0...v3.2.0
+[3.1.0]: https://github.com/cucumber/cucumber-js/compare/v3.0.6...v3.1.0
+[3.0.6]: https://github.com/cucumber/cucumber-js/compare/v3.0.5...v3.0.6
+[3.0.5]: https://github.com/cucumber/cucumber-js/compare/v3.0.4...v3.0.5
+[3.0.4]: https://github.com/cucumber/cucumber-js/compare/v3.0.3...v3.0.4
+[3.0.3]: https://github.com/cucumber/cucumber-js/compare/v3.0.2...v3.0.3
+[3.0.2]: https://github.com/cucumber/cucumber-js/compare/v3.0.1...v3.0.2
+[3.0.1]: https://github.com/cucumber/cucumber-js/compare/v3.0.0...v3.0.1
+[3.0.0]: https://github.com/cucumber/cucumber-js/compare/v2.3.1...v3.0.0
+[2.3.1]: https://github.com/cucumber/cucumber-js/compare/v2.3.0...v2.3.1
+[2.3.0]: https://github.com/cucumber/cucumber-js/compare/v2.2.0...v2.3.0
+[2.2.0]: https://github.com/cucumber/cucumber-js/compare/v2.1.0...v2.2.0
+[2.1.0]: https://github.com/cucumber/cucumber-js/compare/v2.0.0-rc.9...v2.1.0
+[1.3.3]: https://github.com/cucumber/cucumber-js/compare/v1.3.2...v1.3.3
+[1.3.2]: https://github.com/cucumber/cucumber-js/compare/v1.3.1...v1.3.2
+[1.3.1]: https://github.com/cucumber/cucumber-js/compare/v1.3.0...v1.3.1
+[1.3.0]: https://github.com/cucumber/cucumber-js/compare/v1.2.2...v1.3.0
+[1.2.2]: https://github.com/cucumber/cucumber-js/compare/v1.2.1...v1.2.2
+[1.2.1]: https://github.com/cucumber/cucumber-js/compare/v1.2.0...v1.2.1
+[1.2.0]: https://github.com/cucumber/cucumber-js/compare/v1.1.0...v1.2.0
+[1.1.0]: https://github.com/cucumber/cucumber-js/compare/v1.0.0...v1.1.0
+[1.0.0]: https://github.com/cucumber/cucumber-js/compare/v0.10.4...v1.0.0
+[0.10.4]: https://github.com/cucumber/cucumber-js/compare/v0.10.3...v0.10.4
+[0.10.3]: https://github.com/cucumber/cucumber-js/compare/v0.10.2...v0.10.3
+[0.10.2]: https://github.com/cucumber/cucumber-js/compare/v0.10.1...v0.10.2
+[0.10.1]: https://github.com/cucumber/cucumber-js/compare/v0.10.0...v0.10.1
+[0.10.0]: https://github.com/cucumber/cucumber-js/compare/v0.9.5...v0.10.0
+[0.9.5]: https://github.com/cucumber/cucumber-js/compare/v0.9.4...v0.9.5
+[0.9.4]: https://github.com/cucumber/cucumber-js/compare/v0.9.3...v0.9.4
+[0.9.3]: https://github.com/cucumber/cucumber-js/compare/v0.9.2...v0.9.3
+[0.9.2]: https://github.com/cucumber/cucumber-js/compare/v0.9.1...v0.9.2
+[0.9.1]: https://github.com/cucumber/cucumber-js/compare/v0.9.0...v0.9.1
+[0.9.0]: https://github.com/cucumber/cucumber-js/compare/v0.8.1...v0.9.0
diff --git a/node_modules/@cucumber/cucumber/LICENSE b/node_modules/@cucumber/cucumber/LICENSE
new file mode 100644
index 0000000..45973cd
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/LICENSE
@@ -0,0 +1,22 @@
+The MIT License
+
+Copyright (c) Julien Biezemans and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@cucumber/cucumber/README.md b/node_modules/@cucumber/cucumber/README.md
new file mode 100644
index 0000000..73fae42
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/README.md
@@ -0,0 +1,78 @@
+# Cucumber.js
+
+[![OpenCollective](https://opencollective.com/cucumber/backers/badge.svg)](https://opencollective.com/cucumber)
+[![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)
+[![pull requests](https://oselvar.com/api/badge?label=pull%20requests&csvUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fcucumber%2Foselvar-github-metrics%2Fmain%2Fdata%2Fcucumber%2Fcucumber-js%2FpullRequests.csv)](https://oselvar.com/github/cucumber/oselvar-github-metrics/main/cucumber/cucumber-js)
+[![issues](https://oselvar.com/api/badge?label=issues&csvUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fcucumber%2Foselvar-github-metrics%2Fmain%2Fdata%2Fcucumber%2Fcucumber-js%2Fissues.csv)](https://oselvar.com/github/cucumber/oselvar-github-metrics/main/cucumber/cucumber-js)
+
+[![GitHub Actions](https://github.com/cucumber/cucumber-js/workflows/Build/badge.svg)](https://github.com/cucumber/cucumber-js/actions)
+[![Dependencies](https://david-dm.org/cucumber/cucumber-js.svg)](https://david-dm.org/cucumber/cucumber-js)
+[![Coverage Status](https://coveralls.io/repos/github/cucumber/cucumber-js/badge.svg?branch=master)](https://coveralls.io/github/cucumber/cucumber-js?branch=master)
+
+[Cucumber](https://cucumber.io) is a tool for running automated tests written in plain language. Because they're
+written in plain language, they can be read by anyone on your team. Because they can be
+read by anyone, you can use them to help improve communication, collaboration and trust on
+your team.
+
+Cucumber.js is the JavaScript implementation of Cucumber and runs on the [maintained Node.js versions](https://github.com/nodejs/Release).
+
+## Try it now
+
+We've put a demo of Cucumber.js to [run in your browser](https://cucumber.github.io/cucumber-js/). Why don't you give it a try before anything else?
+
+## Help & support
+
+* See here: https://cucumber.io/support
+
+## Contributing
+
+See [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber.js.
+
+## Code of Conduct
+
+Everyone interacting in this codebase and issue tracker is expected to follow the Cucumber [code of conduct](https://github.com/cucumber/cucumber/blob/master/CODE_OF_CONDUCT.md).
+
+## Install
+
+Cucumber.js is available as an npm module.
+
+### 7.x.x and above
+
+``` shell
+$ npm install @cucumber/cucumber
+```
+
+If you're upgrading from 6.x.x or below, see the [migration guide](./docs/migration.md).
+
+### 6.x.x and below
+
+``` shell
+$ npm install cucumber@6
+```
+
+## Documentation
+
+The following documentation is for master. See below for documentation for older versions.
+
+* [CLI](/docs/cli.md)
+* [Custom Formatters](/docs/custom_formatters.md)
+* [Custom Snippet Syntaxes](/docs/custom_snippet_syntaxes.md)
+* [NodeJs Example](/docs/nodejs_example.md)
+* Support Files
+ * [World](/docs/support_files/world.md)
+ * [Step Definitions](/docs/support_files/step_definitions.md)
+ * [Hooks](/docs/support_files/hooks.md)
+ * [Timeouts](docs/support_files/timeouts.md)
+ * [Data Table Interface](/docs/support_files/data_table_interface.md)
+ * [Attachments](/docs/support_files/attachments.md)
+ * [API Reference](/docs/support_files/api_reference.md)
+* [FAQ](/docs/faq.md)
+
+#### Documentation for older versions
+
+* [`6.x`](https://github.com/cucumber/cucumber-js/tree/6.x)
+* [`5.x`](https://github.com/cucumber/cucumber-js/tree/5.x)
+* [`4.x`](https://github.com/cucumber/cucumber-js/tree/4.x)
+* [`3.x`](https://github.com/cucumber/cucumber-js/tree/3.x)
+* [`2.x`](https://github.com/cucumber/cucumber-js/tree/2.x)
+* [`1.x`](https://github.com/cucumber/cucumber-js/tree/1.x)
diff --git a/node_modules/@cucumber/cucumber/bin/cucumber-js b/node_modules/@cucumber/cucumber/bin/cucumber-js
new file mode 100755
index 0000000..2460cb2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/bin/cucumber-js
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+
+require('../lib/cli/run.js').default();
diff --git a/node_modules/@cucumber/cucumber/lib/cli/argv_parser.d.ts b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.d.ts
new file mode 100644
index 0000000..5c6e7d6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.d.ts
@@ -0,0 +1,52 @@
+import { SnippetInterface } from '../formatter/step_definition_snippet_builder/snippet_syntax';
+export interface IParsedArgvFormatRerunOptions {
+ separator?: string;
+}
+export interface IParsedArgvFormatOptions {
+ colorsEnabled?: boolean;
+ rerun?: IParsedArgvFormatRerunOptions;
+ snippetInterface?: SnippetInterface;
+ snippetSyntax?: string;
+ [customKey: string]: any;
+}
+export interface IParsedArgvOptions {
+ backtrace: boolean;
+ dryRun: boolean;
+ esm: boolean;
+ exit: boolean;
+ failFast: boolean;
+ format: string[];
+ formatOptions: IParsedArgvFormatOptions;
+ i18nKeywords: string;
+ i18nLanguages: boolean;
+ language: string;
+ name: string[];
+ order: string;
+ parallel: number;
+ predictableIds: boolean;
+ profile: string[];
+ publish: boolean;
+ publishQuiet: boolean;
+ require: string[];
+ requireModule: string[];
+ retry: number;
+ retryTagFilter: string;
+ strict: boolean;
+ tags: string;
+ worldParameters: object;
+}
+export interface IParsedArgv {
+ args: string[];
+ options: IParsedArgvOptions;
+}
+declare const ArgvParser: {
+ collect(val: T, memo: T[]): T[];
+ mergeJson(option: string): (str: string, memo: object) => object;
+ mergeTags(value: string, memo: string): string;
+ validateCountOption(value: string, optionName: string): number;
+ validateLanguage(value: string): string;
+ validateRetryOptions(options: IParsedArgvOptions): void;
+ parse(argv: string[]): IParsedArgv;
+ lint(fullArgv: string[]): void;
+};
+export default ArgvParser;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js
new file mode 100644
index 0000000..91891f3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js
@@ -0,0 +1,105 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const lodash_1 = __importDefault(require("lodash"));
+const commander_1 = require("commander");
+const path_1 = __importDefault(require("path"));
+const gherkin_1 = require("@cucumber/gherkin");
+// Using require instead of import so compiled typescript will have the desired folder structure
+const { version } = require('../../package.json'); // eslint-disable-line @typescript-eslint/no-var-requires
+const ArgvParser = {
+ collect(val, memo) {
+ memo.push(val);
+ return memo;
+ },
+ mergeJson(option) {
+ return function (str, memo) {
+ let val;
+ try {
+ val = JSON.parse(str);
+ }
+ catch (error) {
+ const e = error;
+ throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`);
+ }
+ if (!lodash_1.default.isPlainObject(val)) {
+ throw new Error(`${option} must be passed JSON of an object: ${str}`);
+ }
+ return lodash_1.default.merge(memo, val);
+ };
+ },
+ mergeTags(value, memo) {
+ return memo === '' ? `(${value})` : `${memo} and (${value})`;
+ },
+ validateCountOption(value, optionName) {
+ const numericValue = parseInt(value);
+ if (isNaN(numericValue) || numericValue < 0) {
+ throw new Error(`${optionName} must be a non negative integer`);
+ }
+ return numericValue;
+ },
+ validateLanguage(value) {
+ if (!lodash_1.default.includes(lodash_1.default.keys(gherkin_1.dialects), value)) {
+ throw new Error(`Unsupported ISO 639-1: ${value}`);
+ }
+ return value;
+ },
+ validateRetryOptions(options) {
+ if (options.retryTagFilter !== '' && options.retry === 0) {
+ throw new Error('a positive --retry count must be specified when setting --retry-tag-filter');
+ }
+ },
+ parse(argv) {
+ const program = new commander_1.Command(path_1.default.basename(argv[1]));
+ program
+ .storeOptionsAsProperties(false)
+ .usage('[options] [...]')
+ .version(version, '-v, --version')
+ .option('-b, --backtrace', 'show full backtrace for errors')
+ .option('-d, --dry-run', 'invoke formatters without executing steps', false)
+ .option('--esm', 'import support code via ES module imports', false)
+ .option('--exit', 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit', false)
+ .option('--fail-fast', 'abort the run on first failure', false)
+ .option('-f, --format ', 'specify the output format, optionally supply PATH to redirect formatter output (repeatable)', ArgvParser.collect, [])
+ .option('--format-options ', 'provide options for formatters (repeatable)', ArgvParser.mergeJson('--format-options'), {})
+ .option('--i18n-keywords ', 'list language keywords', ArgvParser.validateLanguage, '')
+ .option('--i18n-languages', 'list languages', false)
+ .option('--language ', 'provide the default language for feature files', 'en')
+ .option('--name ', 'only execute the scenarios with name matching the expression (repeatable)', ArgvParser.collect, [])
+ .option('--no-strict', 'succeed even if there are pending steps')
+ .option('--order ', 'run scenarios in the specified order. Type should be `defined` or `random`', 'defined')
+ .option('-p, --profile ', 'specify the profile to use (repeatable)', ArgvParser.collect, [])
+ .option('--parallel ', 'run in parallel with the given number of workers', (val) => ArgvParser.validateCountOption(val, '--parallel'), 0)
+ .option('--predictable-ids', 'Use predictable ids in messages (option ignored if using parallel)', false)
+ .option('--publish', 'Publish a report to https://reports.cucumber.io', false)
+ .option('--publish-quiet', "Don't print information banner about publishing reports", false)
+ .option('-r, --require ', 'require files before executing features (repeatable)', ArgvParser.collect, [])
+ .option('--require-module ', 'require node modules before requiring files (repeatable)', ArgvParser.collect, [])
+ .option('--retry ', 'specify the number of times to retry failing test cases (default: 0)', (val) => ArgvParser.validateCountOption(val, '--retry'), 0)
+ .option('--retryTagFilter, --retry-tag-filter ', `only retries the features or scenarios with tags matching the expression (repeatable).
+ This option requires '--retry' to be specified.`, ArgvParser.mergeTags, '')
+ .option('-t, --tags ', 'only execute the features or scenarios with tags matching the expression (repeatable)', ArgvParser.mergeTags, '')
+ .option('--world-parameters ', 'provide parameters that will be passed to the world constructor (repeatable)', ArgvParser.mergeJson('--world-parameters'), {});
+ program.on('--help', () => {
+ /* eslint-disable no-console */
+ console.log(' For more details please visit https://github.com/cucumber/cucumber-js/blob/master/docs/cli.md\n');
+ /* eslint-enable no-console */
+ });
+ program.parse(argv);
+ const options = program.opts();
+ ArgvParser.validateRetryOptions(options);
+ return {
+ options,
+ args: program.args,
+ };
+ },
+ lint(fullArgv) {
+ if (fullArgv.includes('--retryTagFilter')) {
+ console.warn('the argument --retryTagFilter is deprecated and will be removed in a future release; please use --retry-tag-filter');
+ }
+ },
+};
+exports.default = ArgvParser;
+//# sourceMappingURL=argv_parser.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js.map b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js.map
new file mode 100644
index 0000000..2b12d38
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/argv_parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"argv_parser.js","sourceRoot":"","sources":["../../src/cli/argv_parser.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash'\nimport { Command } from 'commander'\nimport path from 'path'\nimport { dialects } from '@cucumber/gherkin'\nimport { SnippetInterface } from '../formatter/step_definition_snippet_builder/snippet_syntax'\n\n// Using require instead of import so compiled typescript will have the desired folder structure\nconst { version } = require('../../package.json') // eslint-disable-line @typescript-eslint/no-var-requires\n\nexport interface IParsedArgvFormatRerunOptions {\n separator?: string\n}\n\nexport interface IParsedArgvFormatOptions {\n colorsEnabled?: boolean\n rerun?: IParsedArgvFormatRerunOptions\n snippetInterface?: SnippetInterface\n snippetSyntax?: string\n [customKey: string]: any\n}\n\nexport interface IParsedArgvOptions {\n backtrace: boolean\n dryRun: boolean\n esm: boolean\n exit: boolean\n failFast: boolean\n format: string[]\n formatOptions: IParsedArgvFormatOptions\n i18nKeywords: string\n i18nLanguages: boolean\n language: string\n name: string[]\n order: string\n parallel: number\n predictableIds: boolean\n profile: string[]\n publish: boolean\n publishQuiet: boolean\n require: string[]\n requireModule: string[]\n retry: number\n retryTagFilter: string\n strict: boolean\n tags: string\n worldParameters: object\n}\n\nexport interface IParsedArgv {\n args: string[]\n options: IParsedArgvOptions\n}\n\nconst ArgvParser = {\n collect(val: T, memo: T[]): T[] {\n memo.push(val)\n return memo\n },\n\n mergeJson(option: string): (str: string, memo: object) => object {\n return function (str: string, memo: object) {\n let val: object\n try {\n val = JSON.parse(str)\n } catch (error) {\n const e: Error = error\n throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`)\n }\n if (!_.isPlainObject(val)) {\n throw new Error(`${option} must be passed JSON of an object: ${str}`)\n }\n return _.merge(memo, val)\n }\n },\n\n mergeTags(value: string, memo: string): string {\n return memo === '' ? `(${value})` : `${memo} and (${value})`\n },\n\n validateCountOption(value: string, optionName: string): number {\n const numericValue = parseInt(value)\n if (isNaN(numericValue) || numericValue < 0) {\n throw new Error(`${optionName} must be a non negative integer`)\n }\n return numericValue\n },\n\n validateLanguage(value: string): string {\n if (!_.includes(_.keys(dialects), value)) {\n throw new Error(`Unsupported ISO 639-1: ${value}`)\n }\n return value\n },\n\n validateRetryOptions(options: IParsedArgvOptions): void {\n if (options.retryTagFilter !== '' && options.retry === 0) {\n throw new Error(\n 'a positive --retry count must be specified when setting --retry-tag-filter'\n )\n }\n },\n\n parse(argv: string[]): IParsedArgv {\n const program = new Command(path.basename(argv[1]))\n\n program\n .storeOptionsAsProperties(false)\n .usage('[options] [...]')\n .version(version, '-v, --version')\n .option('-b, --backtrace', 'show full backtrace for errors')\n .option(\n '-d, --dry-run',\n 'invoke formatters without executing steps',\n false\n )\n .option('--esm', 'import support code via ES module imports', false)\n .option(\n '--exit',\n 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit',\n false\n )\n .option('--fail-fast', 'abort the run on first failure', false)\n .option(\n '-f, --format ',\n 'specify the output format, optionally supply PATH to redirect formatter output (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--format-options ',\n 'provide options for formatters (repeatable)',\n ArgvParser.mergeJson('--format-options'),\n {}\n )\n .option(\n '--i18n-keywords ',\n 'list language keywords',\n ArgvParser.validateLanguage,\n ''\n )\n .option('--i18n-languages', 'list languages', false)\n .option(\n '--language ',\n 'provide the default language for feature files',\n 'en'\n )\n .option(\n '--name ',\n 'only execute the scenarios with name matching the expression (repeatable)',\n ArgvParser.collect,\n []\n )\n .option('--no-strict', 'succeed even if there are pending steps')\n .option(\n '--order ',\n 'run scenarios in the specified order. Type should be `defined` or `random`',\n 'defined'\n )\n .option(\n '-p, --profile ',\n 'specify the profile to use (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--parallel ',\n 'run in parallel with the given number of workers',\n (val) => ArgvParser.validateCountOption(val, '--parallel'),\n 0\n )\n .option(\n '--predictable-ids',\n 'Use predictable ids in messages (option ignored if using parallel)',\n false\n )\n .option(\n '--publish',\n 'Publish a report to https://reports.cucumber.io',\n false\n )\n .option(\n '--publish-quiet',\n \"Don't print information banner about publishing reports\",\n false\n )\n .option(\n '-r, --require ',\n 'require files before executing features (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--require-module ',\n 'require node modules before requiring files (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--retry ',\n 'specify the number of times to retry failing test cases (default: 0)',\n (val) => ArgvParser.validateCountOption(val, '--retry'),\n 0\n )\n .option(\n '--retryTagFilter, --retry-tag-filter ',\n `only retries the features or scenarios with tags matching the expression (repeatable).\n This option requires '--retry' to be specified.`,\n ArgvParser.mergeTags,\n ''\n )\n .option(\n '-t, --tags ',\n 'only execute the features or scenarios with tags matching the expression (repeatable)',\n ArgvParser.mergeTags,\n ''\n )\n .option(\n '--world-parameters ',\n 'provide parameters that will be passed to the world constructor (repeatable)',\n ArgvParser.mergeJson('--world-parameters'),\n {}\n )\n\n program.on('--help', () => {\n /* eslint-disable no-console */\n console.log(\n ' For more details please visit https://github.com/cucumber/cucumber-js/blob/master/docs/cli.md\\n'\n )\n /* eslint-enable no-console */\n })\n\n program.parse(argv)\n const options = program.opts() as IParsedArgvOptions\n ArgvParser.validateRetryOptions(options)\n\n return {\n options,\n args: program.args,\n }\n },\n\n lint(fullArgv: string[]): void {\n if (fullArgv.includes('--retryTagFilter')) {\n console.warn(\n 'the argument --retryTagFilter is deprecated and will be removed in a future release; please use --retry-tag-filter'\n )\n }\n },\n}\n\nexport default ArgvParser\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.d.ts b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.d.ts
new file mode 100644
index 0000000..6413d41
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.d.ts
@@ -0,0 +1,47 @@
+import { IParsedArgvFormatOptions } from './argv_parser';
+import { IPickleFilterOptions } from '../pickle_filter';
+import { IRuntimeOptions } from '../runtime';
+export interface IConfigurationFormat {
+ outputTo: string;
+ type: string;
+}
+export interface IConfiguration {
+ esm: boolean;
+ featureDefaultLanguage: string;
+ featurePaths: string[];
+ formats: IConfigurationFormat[];
+ formatOptions: IParsedArgvFormatOptions;
+ publishing: boolean;
+ listI18nKeywordsFor: string;
+ listI18nLanguages: boolean;
+ order: string;
+ parallel: number;
+ pickleFilterOptions: IPickleFilterOptions;
+ predictableIds: boolean;
+ profiles: string[];
+ runtimeOptions: IRuntimeOptions;
+ shouldExitImmediately: boolean;
+ supportCodePaths: string[];
+ supportCodeRequiredModules: string[];
+ suppressPublishAdvertisement: boolean;
+}
+export interface INewConfigurationBuilderOptions {
+ argv: string[];
+ cwd: string;
+}
+export default class ConfigurationBuilder {
+ static build(options: INewConfigurationBuilderOptions): Promise;
+ private readonly cwd;
+ private readonly args;
+ private readonly options;
+ constructor({ argv, cwd }: INewConfigurationBuilderOptions);
+ build(): Promise;
+ expandPaths(unexpandedPaths: string[], defaultExtension: string): Promise;
+ expandFeaturePaths(featurePaths: string[]): Promise;
+ getFeatureDirectoryPaths(featurePaths: string[]): string[];
+ isPublishing(): boolean;
+ isPublishAdvertisementSuppressed(): boolean;
+ getFormats(): IConfigurationFormat[];
+ isTruthyString(s: string | undefined): boolean;
+ getUnexpandedFeaturePaths(): Promise;
+}
diff --git a/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js
new file mode 100644
index 0000000..5099097
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js
@@ -0,0 +1,161 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const lodash_1 = __importDefault(require("lodash"));
+const argv_parser_1 = __importDefault(require("./argv_parser"));
+const fs_1 = __importDefault(require("mz/fs"));
+const path_1 = __importDefault(require("path"));
+const option_splitter_1 = __importDefault(require("./option_splitter"));
+const bluebird_1 = __importDefault(require("bluebird"));
+const glob_1 = __importDefault(require("glob"));
+const util_1 = require("util");
+const value_checker_1 = require("../value_checker");
+const DEFAULT_CUCUMBER_PUBLISH_URL = 'https://messages.cucumber.io/api/reports';
+class ConfigurationBuilder {
+ constructor({ argv, cwd }) {
+ this.cwd = cwd;
+ argv_parser_1.default.lint(argv);
+ const parsedArgv = argv_parser_1.default.parse(argv);
+ this.args = parsedArgv.args;
+ this.options = parsedArgv.options;
+ }
+ static async build(options) {
+ const builder = new ConfigurationBuilder(options);
+ return await builder.build();
+ }
+ async build() {
+ const listI18nKeywordsFor = this.options.i18nKeywords;
+ const listI18nLanguages = this.options.i18nLanguages;
+ const unexpandedFeaturePaths = await this.getUnexpandedFeaturePaths();
+ let featurePaths = [];
+ let supportCodePaths = [];
+ if (listI18nKeywordsFor === '' && !listI18nLanguages) {
+ featurePaths = await this.expandFeaturePaths(unexpandedFeaturePaths);
+ let unexpandedSupportCodePaths = this.options.require;
+ if (unexpandedSupportCodePaths.length === 0) {
+ unexpandedSupportCodePaths = this.getFeatureDirectoryPaths(featurePaths);
+ }
+ supportCodePaths = await this.expandPaths(unexpandedSupportCodePaths, this.options.esm ? '.@(js|mjs)' : '.js');
+ }
+ return {
+ esm: this.options.esm,
+ featureDefaultLanguage: this.options.language,
+ featurePaths,
+ formats: this.getFormats(),
+ formatOptions: this.options.formatOptions,
+ publishing: this.isPublishing(),
+ listI18nKeywordsFor,
+ listI18nLanguages,
+ order: this.options.order,
+ parallel: this.options.parallel,
+ pickleFilterOptions: {
+ cwd: this.cwd,
+ featurePaths: unexpandedFeaturePaths,
+ names: this.options.name,
+ tagExpression: this.options.tags,
+ },
+ predictableIds: this.options.predictableIds,
+ profiles: this.options.profile,
+ runtimeOptions: {
+ dryRun: this.options.dryRun,
+ predictableIds: this.options.predictableIds,
+ failFast: this.options.failFast,
+ filterStacktraces: !this.options.backtrace,
+ retry: this.options.retry,
+ retryTagFilter: this.options.retryTagFilter,
+ strict: this.options.strict,
+ worldParameters: this.options.worldParameters,
+ },
+ shouldExitImmediately: this.options.exit,
+ supportCodePaths,
+ supportCodeRequiredModules: this.options.requireModule,
+ suppressPublishAdvertisement: this.isPublishAdvertisementSuppressed(),
+ };
+ }
+ async expandPaths(unexpandedPaths, defaultExtension) {
+ const expandedPaths = await bluebird_1.default.map(unexpandedPaths, async (unexpandedPath) => {
+ const matches = await util_1.promisify(glob_1.default)(unexpandedPath, {
+ absolute: true,
+ cwd: this.cwd,
+ });
+ const expanded = await bluebird_1.default.map(matches, async (match) => {
+ if (path_1.default.extname(match) === '') {
+ return await util_1.promisify(glob_1.default)(`${match}/**/*${defaultExtension}`);
+ }
+ return [match];
+ });
+ return lodash_1.default.flatten(expanded);
+ });
+ return lodash_1.default.flatten(expandedPaths).map((x) => path_1.default.normalize(x));
+ }
+ async expandFeaturePaths(featurePaths) {
+ featurePaths = featurePaths.map((p) => p.replace(/(:\d+)*$/g, '')); // Strip line numbers
+ return this.expandPaths(featurePaths, '.feature');
+ }
+ getFeatureDirectoryPaths(featurePaths) {
+ const featureDirs = featurePaths.map((featurePath) => {
+ let featureDir = path_1.default.dirname(featurePath);
+ let childDir;
+ let parentDir = featureDir;
+ while (childDir !== parentDir) {
+ childDir = parentDir;
+ parentDir = path_1.default.dirname(childDir);
+ if (path_1.default.basename(parentDir) === 'features') {
+ featureDir = parentDir;
+ break;
+ }
+ }
+ return path_1.default.relative(this.cwd, featureDir);
+ });
+ return lodash_1.default.uniq(featureDirs);
+ }
+ isPublishing() {
+ return (this.options.publish ||
+ this.isTruthyString(process.env.CUCUMBER_PUBLISH_ENABLED) ||
+ process.env.CUCUMBER_PUBLISH_TOKEN !== undefined);
+ }
+ isPublishAdvertisementSuppressed() {
+ return (this.options.publishQuiet ||
+ this.isTruthyString(process.env.CUCUMBER_PUBLISH_QUIET));
+ }
+ getFormats() {
+ const mapping = { '': 'progress' };
+ this.options.format.forEach((format) => {
+ const [type, outputTo] = option_splitter_1.default.split(format);
+ mapping[outputTo] = type;
+ });
+ if (this.isPublishing()) {
+ const publishUrl = value_checker_1.valueOrDefault(process.env.CUCUMBER_PUBLISH_URL, DEFAULT_CUCUMBER_PUBLISH_URL);
+ mapping[publishUrl] = 'message';
+ }
+ return lodash_1.default.map(mapping, (type, outputTo) => ({ outputTo, type }));
+ }
+ isTruthyString(s) {
+ if (s === undefined) {
+ return false;
+ }
+ return s.match(/^(false|no|0)$/i) === null;
+ }
+ async getUnexpandedFeaturePaths() {
+ if (this.args.length > 0) {
+ const nestedFeaturePaths = await bluebird_1.default.map(this.args, async (arg) => {
+ const filename = path_1.default.basename(arg);
+ if (filename[0] === '@') {
+ const filePath = path_1.default.join(this.cwd, arg);
+ const content = await fs_1.default.readFile(filePath, 'utf8');
+ return lodash_1.default.chain(content).split('\n').map(lodash_1.default.trim).compact().value();
+ }
+ return [arg];
+ });
+ const featurePaths = lodash_1.default.flatten(nestedFeaturePaths);
+ if (featurePaths.length > 0) {
+ return featurePaths;
+ }
+ }
+ return ['features/**/*.feature'];
+ }
+}
+exports.default = ConfigurationBuilder;
+//# sourceMappingURL=configuration_builder.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js.map b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js.map
new file mode 100644
index 0000000..ae8f0c8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/configuration_builder.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"configuration_builder.js","sourceRoot":"","sources":["../../src/cli/configuration_builder.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash'\nimport ArgvParser, {\n IParsedArgvFormatOptions,\n IParsedArgvOptions,\n} from './argv_parser'\nimport fs from 'mz/fs'\nimport path from 'path'\nimport OptionSplitter from './option_splitter'\nimport bluebird from 'bluebird'\nimport glob from 'glob'\nimport { promisify } from 'util'\nimport { IPickleFilterOptions } from '../pickle_filter'\nimport { IRuntimeOptions } from '../runtime'\nimport { valueOrDefault } from '../value_checker'\n\nexport interface IConfigurationFormat {\n outputTo: string\n type: string\n}\n\nexport interface IConfiguration {\n esm: boolean\n featureDefaultLanguage: string\n featurePaths: string[]\n formats: IConfigurationFormat[]\n formatOptions: IParsedArgvFormatOptions\n publishing: boolean\n listI18nKeywordsFor: string\n listI18nLanguages: boolean\n order: string\n parallel: number\n pickleFilterOptions: IPickleFilterOptions\n predictableIds: boolean\n profiles: string[]\n runtimeOptions: IRuntimeOptions\n shouldExitImmediately: boolean\n supportCodePaths: string[]\n supportCodeRequiredModules: string[]\n suppressPublishAdvertisement: boolean\n}\n\nexport interface INewConfigurationBuilderOptions {\n argv: string[]\n cwd: string\n}\n\nconst DEFAULT_CUCUMBER_PUBLISH_URL = 'https://messages.cucumber.io/api/reports'\n\nexport default class ConfigurationBuilder {\n static async build(\n options: INewConfigurationBuilderOptions\n ): Promise {\n const builder = new ConfigurationBuilder(options)\n return await builder.build()\n }\n\n private readonly cwd: string\n private readonly args: string[]\n private readonly options: IParsedArgvOptions\n\n constructor({ argv, cwd }: INewConfigurationBuilderOptions) {\n this.cwd = cwd\n\n ArgvParser.lint(argv)\n const parsedArgv = ArgvParser.parse(argv)\n this.args = parsedArgv.args\n this.options = parsedArgv.options\n }\n\n async build(): Promise {\n const listI18nKeywordsFor = this.options.i18nKeywords\n const listI18nLanguages = this.options.i18nLanguages\n const unexpandedFeaturePaths = await this.getUnexpandedFeaturePaths()\n let featurePaths: string[] = []\n let supportCodePaths: string[] = []\n if (listI18nKeywordsFor === '' && !listI18nLanguages) {\n featurePaths = await this.expandFeaturePaths(unexpandedFeaturePaths)\n let unexpandedSupportCodePaths = this.options.require\n if (unexpandedSupportCodePaths.length === 0) {\n unexpandedSupportCodePaths = this.getFeatureDirectoryPaths(featurePaths)\n }\n supportCodePaths = await this.expandPaths(\n unexpandedSupportCodePaths,\n this.options.esm ? '.@(js|mjs)' : '.js'\n )\n }\n return {\n esm: this.options.esm,\n featureDefaultLanguage: this.options.language,\n featurePaths,\n formats: this.getFormats(),\n formatOptions: this.options.formatOptions,\n publishing: this.isPublishing(),\n listI18nKeywordsFor,\n listI18nLanguages,\n order: this.options.order,\n parallel: this.options.parallel,\n pickleFilterOptions: {\n cwd: this.cwd,\n featurePaths: unexpandedFeaturePaths,\n names: this.options.name,\n tagExpression: this.options.tags,\n },\n predictableIds: this.options.predictableIds,\n profiles: this.options.profile,\n runtimeOptions: {\n dryRun: this.options.dryRun,\n predictableIds: this.options.predictableIds,\n failFast: this.options.failFast,\n filterStacktraces: !this.options.backtrace,\n retry: this.options.retry,\n retryTagFilter: this.options.retryTagFilter,\n strict: this.options.strict,\n worldParameters: this.options.worldParameters,\n },\n shouldExitImmediately: this.options.exit,\n supportCodePaths,\n supportCodeRequiredModules: this.options.requireModule,\n suppressPublishAdvertisement: this.isPublishAdvertisementSuppressed(),\n }\n }\n\n async expandPaths(\n unexpandedPaths: string[],\n defaultExtension: string\n ): Promise {\n const expandedPaths = await bluebird.map(\n unexpandedPaths,\n async (unexpandedPath) => {\n const matches = await promisify(glob)(unexpandedPath, {\n absolute: true,\n cwd: this.cwd,\n })\n const expanded = await bluebird.map(matches, async (match) => {\n if (path.extname(match) === '') {\n return await promisify(glob)(`${match}/**/*${defaultExtension}`)\n }\n return [match]\n })\n return _.flatten(expanded)\n }\n )\n return _.flatten(expandedPaths).map((x) => path.normalize(x))\n }\n\n async expandFeaturePaths(featurePaths: string[]): Promise {\n featurePaths = featurePaths.map((p) => p.replace(/(:\\d+)*$/g, '')) // Strip line numbers\n return this.expandPaths(featurePaths, '.feature')\n }\n\n getFeatureDirectoryPaths(featurePaths: string[]): string[] {\n const featureDirs = featurePaths.map((featurePath) => {\n let featureDir = path.dirname(featurePath)\n let childDir: string\n let parentDir = featureDir\n while (childDir !== parentDir) {\n childDir = parentDir\n parentDir = path.dirname(childDir)\n if (path.basename(parentDir) === 'features') {\n featureDir = parentDir\n break\n }\n }\n return path.relative(this.cwd, featureDir)\n })\n return _.uniq(featureDirs)\n }\n\n isPublishing(): boolean {\n return (\n this.options.publish ||\n this.isTruthyString(process.env.CUCUMBER_PUBLISH_ENABLED) ||\n process.env.CUCUMBER_PUBLISH_TOKEN !== undefined\n )\n }\n\n isPublishAdvertisementSuppressed(): boolean {\n return (\n this.options.publishQuiet ||\n this.isTruthyString(process.env.CUCUMBER_PUBLISH_QUIET)\n )\n }\n\n getFormats(): IConfigurationFormat[] {\n const mapping: { [key: string]: string } = { '': 'progress' }\n this.options.format.forEach((format) => {\n const [type, outputTo] = OptionSplitter.split(format)\n mapping[outputTo] = type\n })\n if (this.isPublishing()) {\n const publishUrl = valueOrDefault(\n process.env.CUCUMBER_PUBLISH_URL,\n DEFAULT_CUCUMBER_PUBLISH_URL\n )\n\n mapping[publishUrl] = 'message'\n }\n return _.map(mapping, (type, outputTo) => ({ outputTo, type }))\n }\n\n isTruthyString(s: string | undefined): boolean {\n if (s === undefined) {\n return false\n }\n return s.match(/^(false|no|0)$/i) === null\n }\n\n async getUnexpandedFeaturePaths(): Promise {\n if (this.args.length > 0) {\n const nestedFeaturePaths = await bluebird.map(this.args, async (arg) => {\n const filename = path.basename(arg)\n if (filename[0] === '@') {\n const filePath = path.join(this.cwd, arg)\n const content = await fs.readFile(filePath, 'utf8')\n return _.chain(content).split('\\n').map(_.trim).compact().value()\n }\n return [arg]\n })\n const featurePaths = _.flatten(nestedFeaturePaths)\n if (featurePaths.length > 0) {\n return featurePaths\n }\n }\n return ['features/**/*.feature']\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/helpers.d.ts b/node_modules/@cucumber/cucumber/lib/cli/helpers.d.ts
new file mode 100644
index 0000000..080c243
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/helpers.d.ts
@@ -0,0 +1,29 @@
+///
+import { EventEmitter } from 'events';
+import PickleFilter from '../pickle_filter';
+import { EventDataCollector } from '../formatter/helpers';
+import { Readable } from 'stream';
+import { IdGenerator } from '@cucumber/messages';
+import { ISupportCodeLibrary } from '../support_code_library_builder/types';
+export interface IGetExpandedArgvRequest {
+ argv: string[];
+ cwd: string;
+}
+export declare function getExpandedArgv({ argv, cwd, }: IGetExpandedArgvRequest): Promise;
+interface IParseGherkinMessageStreamRequest {
+ cwd: string;
+ eventBroadcaster: EventEmitter;
+ eventDataCollector: EventDataCollector;
+ gherkinMessageStream: Readable;
+ order: string;
+ pickleFilter: PickleFilter;
+}
+export declare function parseGherkinMessageStream({ cwd, eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }: IParseGherkinMessageStreamRequest): Promise;
+export declare function orderPickleIds(pickleIds: string[], order: string): void;
+export declare function emitMetaMessage(eventBroadcaster: EventEmitter): Promise;
+export declare function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }: {
+ eventBroadcaster: EventEmitter;
+ supportCodeLibrary: ISupportCodeLibrary;
+ newId: IdGenerator.NewId;
+}): void;
+export {};
diff --git a/node_modules/@cucumber/cucumber/lib/cli/helpers.js b/node_modules/@cucumber/cucumber/lib/cli/helpers.js
new file mode 100644
index 0000000..00d91f6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/helpers.js
@@ -0,0 +1,172 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.emitSupportCodeMessages = exports.emitMetaMessage = exports.orderPickleIds = exports.parseGherkinMessageStream = exports.getExpandedArgv = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const argv_parser_1 = __importDefault(require("./argv_parser"));
+const profile_loader_1 = __importDefault(require("./profile_loader"));
+const knuth_shuffle_seeded_1 = __importDefault(require("knuth-shuffle-seeded"));
+const path_1 = __importDefault(require("path"));
+const value_checker_1 = require("../value_checker");
+const option_splitter_1 = __importDefault(require("./option_splitter"));
+const messages_1 = require("@cucumber/messages");
+const create_meta_1 = __importDefault(require("@cucumber/create-meta"));
+const support_code_library_builder_1 = require("../support_code_library_builder");
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const importers = require('../importers');
+const StepDefinitionPatternType = messages_1.messages.StepDefinition.StepDefinitionPattern.StepDefinitionPatternType;
+async function getExpandedArgv({ argv, cwd, }) {
+ const { options } = argv_parser_1.default.parse(argv);
+ const importer = options.esm ? importers.esm : importers.legacy;
+ let fullArgv = argv;
+ const profileArgv = await new profile_loader_1.default(cwd, importer).getArgv(options.profile);
+ if (profileArgv.length > 0) {
+ fullArgv = lodash_1.default.concat(argv.slice(0, 2), profileArgv, argv.slice(2));
+ }
+ return fullArgv;
+}
+exports.getExpandedArgv = getExpandedArgv;
+async function parseGherkinMessageStream({ cwd, eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }) {
+ return await new Promise((resolve, reject) => {
+ const result = [];
+ gherkinMessageStream.on('data', (envelope) => {
+ eventBroadcaster.emit('envelope', envelope);
+ if (value_checker_1.doesHaveValue(envelope.pickle)) {
+ const pickle = envelope.pickle;
+ const pickleId = pickle.id;
+ const gherkinDocument = eventDataCollector.getGherkinDocument(pickle.uri);
+ if (pickleFilter.matches({ gherkinDocument, pickle })) {
+ result.push(pickleId);
+ }
+ }
+ if (value_checker_1.doesHaveValue(envelope.parseError)) {
+ reject(new Error(`Parse error in '${path_1.default.relative(cwd, envelope.parseError.source.uri)}': ${envelope.parseError.message}`));
+ }
+ });
+ gherkinMessageStream.on('end', () => {
+ orderPickleIds(result, order);
+ resolve(result);
+ });
+ gherkinMessageStream.on('error', reject);
+ });
+}
+exports.parseGherkinMessageStream = parseGherkinMessageStream;
+// Orders the pickleIds in place - morphs input
+function orderPickleIds(pickleIds, order) {
+ let [type, seed] = option_splitter_1.default.split(order);
+ switch (type) {
+ case 'defined':
+ break;
+ case 'random':
+ if (seed === '') {
+ seed = Math.floor(Math.random() * 1000 * 1000).toString();
+ console.warn(`Random order using seed: ${seed}`);
+ }
+ knuth_shuffle_seeded_1.default(pickleIds, seed);
+ break;
+ default:
+ throw new Error('Unrecgonized order type. Should be `defined` or `random`');
+ }
+}
+exports.orderPickleIds = orderPickleIds;
+async function emitMetaMessage(eventBroadcaster) {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ const { version } = require('../../package.json');
+ eventBroadcaster.emit('envelope', new messages_1.messages.Envelope({
+ meta: create_meta_1.default('cucumber-js', version, process.env),
+ }));
+}
+exports.emitMetaMessage = emitMetaMessage;
+function emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId) {
+ for (const parameterType of supportCodeLibrary.parameterTypeRegistry
+ .parameterTypes) {
+ if (support_code_library_builder_1.builtinParameterTypes.includes(parameterType.name)) {
+ continue;
+ }
+ eventBroadcaster.emit('envelope', messages_1.messages.Envelope.fromObject({
+ parameterType: {
+ id: newId(),
+ name: parameterType.name,
+ preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,
+ regularExpressions: parameterType.regexpStrings,
+ useForSnippets: parameterType.useForSnippets,
+ },
+ }));
+ }
+}
+function emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster) {
+ for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {
+ eventBroadcaster.emit('envelope', messages_1.messages.Envelope.fromObject({
+ undefinedParameterType,
+ }));
+ }
+}
+function emitStepDefinitions(supportCodeLibrary, eventBroadcaster) {
+ supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {
+ eventBroadcaster.emit('envelope', messages_1.messages.Envelope.fromObject({
+ stepDefinition: {
+ id: stepDefinition.id,
+ pattern: {
+ source: stepDefinition.pattern.toString(),
+ type: typeof stepDefinition.pattern === 'string'
+ ? StepDefinitionPatternType.CUCUMBER_EXPRESSION
+ : StepDefinitionPatternType.REGULAR_EXPRESSION,
+ },
+ sourceReference: {
+ uri: stepDefinition.uri,
+ location: {
+ line: stepDefinition.line,
+ },
+ },
+ },
+ }));
+ });
+}
+function emitTestCaseHooks(supportCodeLibrary, eventBroadcaster) {
+ ;
+ []
+ .concat(supportCodeLibrary.beforeTestCaseHookDefinitions, supportCodeLibrary.afterTestCaseHookDefinitions)
+ .forEach((testCaseHookDefinition) => {
+ eventBroadcaster.emit('envelope', messages_1.messages.Envelope.fromObject({
+ hook: {
+ id: testCaseHookDefinition.id,
+ tagExpression: testCaseHookDefinition.tagExpression,
+ sourceReference: {
+ uri: testCaseHookDefinition.uri,
+ location: {
+ line: testCaseHookDefinition.line,
+ },
+ },
+ },
+ }));
+ });
+}
+function emitTestRunHooks(supportCodeLibrary, eventBroadcaster) {
+ ;
+ []
+ .concat(supportCodeLibrary.beforeTestRunHookDefinitions, supportCodeLibrary.afterTestRunHookDefinitions)
+ .forEach((testRunHookDefinition) => {
+ eventBroadcaster.emit('envelope', messages_1.messages.Envelope.fromObject({
+ hook: {
+ id: testRunHookDefinition.id,
+ sourceReference: {
+ uri: testRunHookDefinition.uri,
+ location: {
+ line: testRunHookDefinition.line,
+ },
+ },
+ },
+ }));
+ });
+}
+function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }) {
+ emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId);
+ emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster);
+ emitStepDefinitions(supportCodeLibrary, eventBroadcaster);
+ emitTestCaseHooks(supportCodeLibrary, eventBroadcaster);
+ emitTestRunHooks(supportCodeLibrary, eventBroadcaster);
+}
+exports.emitSupportCodeMessages = emitSupportCodeMessages;
+//# sourceMappingURL=helpers.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/helpers.js.map b/node_modules/@cucumber/cucumber/lib/cli/helpers.js.map
new file mode 100644
index 0000000..3c40437
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/helpers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash'\nimport ArgvParser from './argv_parser'\nimport ProfileLoader from './profile_loader'\nimport shuffle from 'knuth-shuffle-seeded'\nimport path from 'path'\nimport { EventEmitter } from 'events'\nimport PickleFilter from '../pickle_filter'\nimport { EventDataCollector } from '../formatter/helpers'\nimport { doesHaveValue } from '../value_checker'\nimport OptionSplitter from './option_splitter'\nimport { Readable } from 'stream'\nimport { IdGenerator, messages } from '@cucumber/messages'\nimport createMeta from '@cucumber/create-meta'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport TestCaseHookDefinition from '../models/test_case_hook_definition'\nimport TestRunHookDefinition from '../models/test_run_hook_definition'\nimport { builtinParameterTypes } from '../support_code_library_builder'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst importers = require('../importers')\n\nconst StepDefinitionPatternType =\n messages.StepDefinition.StepDefinitionPattern.StepDefinitionPatternType\n\nexport interface IGetExpandedArgvRequest {\n argv: string[]\n cwd: string\n}\n\nexport async function getExpandedArgv({\n argv,\n cwd,\n}: IGetExpandedArgvRequest): Promise {\n const { options } = ArgvParser.parse(argv)\n const importer = options.esm ? importers.esm : importers.legacy\n let fullArgv = argv\n const profileArgv = await new ProfileLoader(cwd, importer).getArgv(\n options.profile\n )\n if (profileArgv.length > 0) {\n fullArgv = _.concat(argv.slice(0, 2), profileArgv, argv.slice(2))\n }\n return fullArgv\n}\n\ninterface IParseGherkinMessageStreamRequest {\n cwd: string\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n gherkinMessageStream: Readable\n order: string\n pickleFilter: PickleFilter\n}\n\nexport async function parseGherkinMessageStream({\n cwd,\n eventBroadcaster,\n eventDataCollector,\n gherkinMessageStream,\n order,\n pickleFilter,\n}: IParseGherkinMessageStreamRequest): Promise {\n return await new Promise((resolve, reject) => {\n const result: string[] = []\n gherkinMessageStream.on('data', (envelope: messages.IEnvelope) => {\n eventBroadcaster.emit('envelope', envelope)\n if (doesHaveValue(envelope.pickle)) {\n const pickle = envelope.pickle\n const pickleId = pickle.id\n const gherkinDocument = eventDataCollector.getGherkinDocument(\n pickle.uri\n )\n if (pickleFilter.matches({ gherkinDocument, pickle })) {\n result.push(pickleId)\n }\n }\n if (doesHaveValue(envelope.parseError)) {\n reject(\n new Error(\n `Parse error in '${path.relative(\n cwd,\n envelope.parseError.source.uri\n )}': ${envelope.parseError.message}`\n )\n )\n }\n })\n gherkinMessageStream.on('end', () => {\n orderPickleIds(result, order)\n resolve(result)\n })\n gherkinMessageStream.on('error', reject)\n })\n}\n\n// Orders the pickleIds in place - morphs input\nexport function orderPickleIds(pickleIds: string[], order: string): void {\n let [type, seed] = OptionSplitter.split(order)\n switch (type) {\n case 'defined':\n break\n case 'random':\n if (seed === '') {\n seed = Math.floor(Math.random() * 1000 * 1000).toString()\n console.warn(`Random order using seed: ${seed}`)\n }\n shuffle(pickleIds, seed)\n break\n default:\n throw new Error(\n 'Unrecgonized order type. Should be `defined` or `random`'\n )\n }\n}\n\nexport async function emitMetaMessage(\n eventBroadcaster: EventEmitter\n): Promise {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { version } = require('../../package.json')\n eventBroadcaster.emit(\n 'envelope',\n new messages.Envelope({\n meta: createMeta('cucumber-js', version, process.env),\n })\n )\n}\n\nfunction emitParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter,\n newId: IdGenerator.NewId\n): void {\n for (const parameterType of supportCodeLibrary.parameterTypeRegistry\n .parameterTypes) {\n if (builtinParameterTypes.includes(parameterType.name)) {\n continue\n }\n eventBroadcaster.emit(\n 'envelope',\n messages.Envelope.fromObject({\n parameterType: {\n id: newId(),\n name: parameterType.name,\n preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,\n regularExpressions: parameterType.regexpStrings,\n useForSnippets: parameterType.useForSnippets,\n },\n })\n )\n }\n}\n\nfunction emitUndefinedParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {\n eventBroadcaster.emit(\n 'envelope',\n messages.Envelope.fromObject({\n undefinedParameterType,\n })\n )\n }\n}\n\nfunction emitStepDefinitions(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {\n eventBroadcaster.emit(\n 'envelope',\n messages.Envelope.fromObject({\n stepDefinition: {\n id: stepDefinition.id,\n pattern: {\n source: stepDefinition.pattern.toString(),\n type:\n typeof stepDefinition.pattern === 'string'\n ? StepDefinitionPatternType.CUCUMBER_EXPRESSION\n : StepDefinitionPatternType.REGULAR_EXPRESSION,\n },\n sourceReference: {\n uri: stepDefinition.uri,\n location: {\n line: stepDefinition.line,\n },\n },\n },\n })\n )\n })\n}\n\nfunction emitTestCaseHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestCaseHookDefinitions,\n supportCodeLibrary.afterTestCaseHookDefinitions\n )\n .forEach((testCaseHookDefinition: TestCaseHookDefinition) => {\n eventBroadcaster.emit(\n 'envelope',\n messages.Envelope.fromObject({\n hook: {\n id: testCaseHookDefinition.id,\n tagExpression: testCaseHookDefinition.tagExpression,\n sourceReference: {\n uri: testCaseHookDefinition.uri,\n location: {\n line: testCaseHookDefinition.line,\n },\n },\n },\n })\n )\n })\n}\n\nfunction emitTestRunHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestRunHookDefinitions,\n supportCodeLibrary.afterTestRunHookDefinitions\n )\n .forEach((testRunHookDefinition: TestRunHookDefinition) => {\n eventBroadcaster.emit(\n 'envelope',\n messages.Envelope.fromObject({\n hook: {\n id: testRunHookDefinition.id,\n sourceReference: {\n uri: testRunHookDefinition.uri,\n location: {\n line: testRunHookDefinition.line,\n },\n },\n },\n })\n )\n })\n}\n\nexport function emitSupportCodeMessages({\n eventBroadcaster,\n supportCodeLibrary,\n newId,\n}: {\n eventBroadcaster: EventEmitter\n supportCodeLibrary: ISupportCodeLibrary\n newId: IdGenerator.NewId\n}): void {\n emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId)\n emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster)\n emitStepDefinitions(supportCodeLibrary, eventBroadcaster)\n emitTestCaseHooks(supportCodeLibrary, eventBroadcaster)\n emitTestRunHooks(supportCodeLibrary, eventBroadcaster)\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/i18n.d.ts b/node_modules/@cucumber/cucumber/lib/cli/i18n.d.ts
new file mode 100644
index 0000000..82dc3b0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/i18n.d.ts
@@ -0,0 +1,2 @@
+export declare function getLanguages(): string;
+export declare function getKeywords(isoCode: string): string;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/i18n.js b/node_modules/@cucumber/cucumber/lib/cli/i18n.js
new file mode 100644
index 0000000..d56246f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/i18n.js
@@ -0,0 +1,70 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getKeywords = exports.getLanguages = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const gherkin_1 = require("@cucumber/gherkin");
+const cli_table3_1 = __importDefault(require("cli-table3"));
+const capital_case_1 = require("capital-case");
+const keywords = [
+ 'feature',
+ 'background',
+ 'scenario',
+ 'scenarioOutline',
+ 'examples',
+ 'given',
+ 'when',
+ 'then',
+ 'and',
+ 'but',
+];
+function getAsTable(header, rows) {
+ const table = new cli_table3_1.default({
+ chars: {
+ bottom: '',
+ 'bottom-left': '',
+ 'bottom-mid': '',
+ 'bottom-right': '',
+ left: '',
+ 'left-mid': '',
+ mid: '',
+ 'mid-mid': '',
+ middle: ' | ',
+ right: '',
+ 'right-mid': '',
+ top: '',
+ 'top-left': '',
+ 'top-mid': '',
+ 'top-right': '',
+ },
+ style: {
+ border: [],
+ 'padding-left': 0,
+ 'padding-right': 0,
+ },
+ });
+ table.push(header);
+ table.push(...rows);
+ return table.toString();
+}
+function getLanguages() {
+ const rows = lodash_1.default.map(gherkin_1.dialects, (data, isoCode) => [
+ isoCode,
+ data.name,
+ data.native,
+ ]);
+ return getAsTable(['ISO 639-1', 'ENGLISH NAME', 'NATIVE NAME'], rows);
+}
+exports.getLanguages = getLanguages;
+function getKeywords(isoCode) {
+ const language = gherkin_1.dialects[isoCode];
+ const rows = lodash_1.default.map(keywords, (keyword) => {
+ const words = lodash_1.default.map(language[keyword], (s) => `"${s}"`).join(', ');
+ return [capital_case_1.capitalCase(keyword), words];
+ });
+ return getAsTable(['ENGLISH KEYWORD', 'NATIVE KEYWORDS'], rows);
+}
+exports.getKeywords = getKeywords;
+//# sourceMappingURL=i18n.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/i18n.js.map b/node_modules/@cucumber/cucumber/lib/cli/i18n.js.map
new file mode 100644
index 0000000..6f9e017
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/i18n.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/cli/i18n.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsB;AACtB,+CAA4C;AAC5C,4DAA8B;AAC9B,+CAA0C;AAE1C,MAAM,QAAQ,GAAG;IACf,SAAS;IACT,YAAY;IACZ,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;CACG,CAAA;AAEV,SAAS,UAAU,CAAC,MAAgB,EAAE,IAAgB;IACpD,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;QACtB,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;YACd,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;YACf,GAAG,EAAE,EAAE;YACP,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;SAChB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;SACnB;KACF,CAAC,CAAA;IACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACnB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED,SAAgB,YAAY;IAC1B,MAAM,IAAI,GAAG,gBAAC,CAAC,GAAG,CAAC,kBAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9C,OAAO;QACP,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,MAAM;KACZ,CAAC,CAAA;IACF,OAAO,UAAU,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;AACvE,CAAC;AAPD,oCAOC;AAED,SAAgB,WAAW,CAAC,OAAe;IACzC,MAAM,QAAQ,GAAG,kBAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,gBAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,gBAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,OAAO,CAAC,0BAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IACF,OAAO,UAAU,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAA;AACjE,CAAC;AAPD,kCAOC","sourcesContent":["import _ from 'lodash'\nimport { dialects } from '@cucumber/gherkin'\nimport Table from 'cli-table3'\nimport { capitalCase } from 'capital-case'\n\nconst keywords = [\n 'feature',\n 'background',\n 'scenario',\n 'scenarioOutline',\n 'examples',\n 'given',\n 'when',\n 'then',\n 'and',\n 'but',\n] as const\n\nfunction getAsTable(header: string[], rows: string[][]): string {\n const table = new Table({\n chars: {\n bottom: '',\n 'bottom-left': '',\n 'bottom-mid': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n middle: ' | ',\n right: '',\n 'right-mid': '',\n top: '',\n 'top-left': '',\n 'top-mid': '',\n 'top-right': '',\n },\n style: {\n border: [],\n 'padding-left': 0,\n 'padding-right': 0,\n },\n })\n table.push(header)\n table.push(...rows)\n return table.toString()\n}\n\nexport function getLanguages(): string {\n const rows = _.map(dialects, (data, isoCode) => [\n isoCode,\n data.name,\n data.native,\n ])\n return getAsTable(['ISO 639-1', 'ENGLISH NAME', 'NATIVE NAME'], rows)\n}\n\nexport function getKeywords(isoCode: string): string {\n const language = dialects[isoCode]\n const rows = _.map(keywords, (keyword) => {\n const words = _.map(language[keyword], (s) => `\"${s}\"`).join(', ')\n return [capitalCase(keyword), words]\n })\n return getAsTable(['ENGLISH KEYWORD', 'NATIVE KEYWORDS'], rows)\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/index.d.ts b/node_modules/@cucumber/cucumber/lib/cli/index.d.ts
new file mode 100644
index 0000000..b39e17e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/index.d.ts
@@ -0,0 +1,41 @@
+///
+import { EventDataCollector } from '../formatter/helpers';
+import { IConfiguration, IConfigurationFormat } from './configuration_builder';
+import { EventEmitter } from 'events';
+import { IdGenerator } from '@cucumber/messages';
+import { IFormatterStream } from '../formatter';
+import { ISupportCodeLibrary } from '../support_code_library_builder/types';
+import { IParsedArgvFormatOptions } from './argv_parser';
+export interface ICliRunResult {
+ shouldExitImmediately: boolean;
+ success: boolean;
+}
+interface IInitializeFormattersRequest {
+ eventBroadcaster: EventEmitter;
+ eventDataCollector: EventDataCollector;
+ formatOptions: IParsedArgvFormatOptions;
+ formats: IConfigurationFormat[];
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+interface IGetSupportCodeLibraryRequest {
+ newId: IdGenerator.NewId;
+ supportCodeRequiredModules: string[];
+ supportCodePaths: string[];
+}
+export declare type IUserCodeImporter = (path: string, isFilePath?: boolean) => Promise;
+export default class Cli {
+ private readonly argv;
+ private readonly cwd;
+ private readonly stdout;
+ private importer;
+ constructor({ argv, cwd, stdout, }: {
+ argv: string[];
+ cwd: string;
+ stdout: IFormatterStream;
+ });
+ getConfiguration(): Promise;
+ initializeFormatters({ eventBroadcaster, eventDataCollector, formatOptions, formats, supportCodeLibrary, }: IInitializeFormattersRequest): Promise<() => Promise>;
+ getSupportCodeLibrary({ newId, supportCodeRequiredModules, supportCodePaths, }: IGetSupportCodeLibraryRequest): Promise;
+ run(): Promise;
+}
+export {};
diff --git a/node_modules/@cucumber/cucumber/lib/cli/index.js b/node_modules/@cucumber/cucumber/lib/cli/index.js
new file mode 100644
index 0000000..67e7c2d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/index.js
@@ -0,0 +1,218 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const helpers_1 = require("../formatter/helpers");
+const helpers_2 = require("./helpers");
+const install_validator_1 = require("./install_validator");
+const I18n = __importStar(require("./i18n"));
+const configuration_builder_1 = __importDefault(require("./configuration_builder"));
+const events_1 = require("events");
+const builder_1 = __importDefault(require("../formatter/builder"));
+const fs_1 = __importDefault(require("mz/fs"));
+const path_1 = __importDefault(require("path"));
+const pickle_filter_1 = __importDefault(require("../pickle_filter"));
+const bluebird_1 = __importDefault(require("bluebird"));
+const coordinator_1 = __importDefault(require("../runtime/parallel/coordinator"));
+const runtime_1 = __importDefault(require("../runtime"));
+const support_code_library_builder_1 = __importDefault(require("../support_code_library_builder"));
+const messages_1 = require("@cucumber/messages");
+const value_checker_1 = require("../value_checker");
+const gherkin_streams_1 = require("@cucumber/gherkin-streams");
+const http_stream_1 = __importDefault(require("../formatter/http_stream"));
+const stream_1 = require("stream");
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const importers = require('../importers');
+const { incrementing, uuid } = messages_1.IdGenerator;
+class Cli {
+ constructor({ argv, cwd, stdout, }) {
+ this.importer = importers.legacy;
+ this.argv = argv;
+ this.cwd = cwd;
+ this.stdout = stdout;
+ }
+ async getConfiguration() {
+ const fullArgv = await helpers_2.getExpandedArgv({
+ argv: this.argv,
+ cwd: this.cwd,
+ });
+ return await configuration_builder_1.default.build({
+ argv: fullArgv,
+ cwd: this.cwd,
+ });
+ }
+ async initializeFormatters({ eventBroadcaster, eventDataCollector, formatOptions, formats, supportCodeLibrary, }) {
+ const formatters = await bluebird_1.default.map(formats, async ({ type, outputTo }) => {
+ let stream = this.stdout;
+ if (outputTo !== '') {
+ if (outputTo.match(/^https?:\/\//) !== null) {
+ const headers = {};
+ if (process.env.CUCUMBER_PUBLISH_TOKEN !== undefined) {
+ headers.Authorization = `Bearer ${process.env.CUCUMBER_PUBLISH_TOKEN}`;
+ }
+ stream = new http_stream_1.default(outputTo, 'GET', headers);
+ const readerStream = new stream_1.Writable({
+ objectMode: true,
+ write: function (responseBody, encoding, writeCallback) {
+ console.error(responseBody);
+ writeCallback();
+ },
+ });
+ stream.pipe(readerStream);
+ }
+ else {
+ const fd = await fs_1.default.open(path_1.default.resolve(this.cwd, outputTo), 'w');
+ stream = fs_1.default.createWriteStream(null, { fd });
+ }
+ }
+ stream.on('error', (error) => {
+ console.error(error.message);
+ process.exit(1);
+ });
+ const typeOptions = {
+ cwd: this.cwd,
+ eventBroadcaster,
+ eventDataCollector,
+ log: stream.write.bind(stream),
+ parsedArgvOptions: formatOptions,
+ importer: this.importer,
+ stream,
+ cleanup: stream === this.stdout
+ ? async () => await Promise.resolve()
+ : bluebird_1.default.promisify(stream.end.bind(stream)),
+ supportCodeLibrary,
+ };
+ if (value_checker_1.doesNotHaveValue(formatOptions.colorsEnabled)) {
+ typeOptions.parsedArgvOptions.colorsEnabled = stream.isTTY;
+ }
+ if (type === 'progress-bar' && !stream.isTTY) {
+ const outputToName = outputTo === '' ? 'stdout' : outputTo;
+ console.warn(`Cannot use 'progress-bar' formatter for output to '${outputToName}' as not a TTY. Switching to 'progress' formatter.`);
+ type = 'progress';
+ }
+ return await builder_1.default.build(type, typeOptions);
+ });
+ return async function () {
+ await bluebird_1.default.each(formatters, async (formatter) => {
+ await formatter.finished();
+ });
+ };
+ }
+ async getSupportCodeLibrary({ newId, supportCodeRequiredModules, supportCodePaths, }) {
+ for (const requiredModule of supportCodeRequiredModules) {
+ await this.importer(requiredModule);
+ }
+ support_code_library_builder_1.default.reset(this.cwd, newId);
+ for (const codePath of supportCodePaths) {
+ await this.importer(codePath, true);
+ }
+ return support_code_library_builder_1.default.finalize();
+ }
+ async run() {
+ await install_validator_1.validateInstall(this.cwd);
+ const configuration = await this.getConfiguration();
+ if (configuration.listI18nLanguages) {
+ this.stdout.write(I18n.getLanguages());
+ return { shouldExitImmediately: true, success: true };
+ }
+ if (configuration.listI18nKeywordsFor !== '') {
+ this.stdout.write(I18n.getKeywords(configuration.listI18nKeywordsFor));
+ return { shouldExitImmediately: true, success: true };
+ }
+ const newId = configuration.predictableIds && configuration.parallel <= 1
+ ? incrementing()
+ : uuid();
+ if (configuration.esm) {
+ this.importer = importers.esm;
+ }
+ const supportCodeLibrary = await this.getSupportCodeLibrary({
+ newId,
+ supportCodePaths: configuration.supportCodePaths,
+ supportCodeRequiredModules: configuration.supportCodeRequiredModules,
+ });
+ const eventBroadcaster = new events_1.EventEmitter();
+ const eventDataCollector = new helpers_1.EventDataCollector(eventBroadcaster);
+ const cleanup = await this.initializeFormatters({
+ eventBroadcaster,
+ eventDataCollector,
+ formatOptions: configuration.formatOptions,
+ formats: configuration.formats,
+ supportCodeLibrary,
+ });
+ await helpers_2.emitMetaMessage(eventBroadcaster);
+ const gherkinMessageStream = gherkin_streams_1.GherkinStreams.fromPaths(configuration.featurePaths, {
+ defaultDialect: configuration.featureDefaultLanguage,
+ newId,
+ });
+ const pickleIds = await helpers_2.parseGherkinMessageStream({
+ cwd: this.cwd,
+ eventBroadcaster,
+ eventDataCollector,
+ gherkinMessageStream,
+ order: configuration.order,
+ pickleFilter: new pickle_filter_1.default(configuration.pickleFilterOptions),
+ });
+ helpers_2.emitSupportCodeMessages({
+ eventBroadcaster,
+ supportCodeLibrary,
+ newId,
+ });
+ let success;
+ if (configuration.parallel > 1) {
+ const parallelRuntimeCoordinator = new coordinator_1.default({
+ cwd: this.cwd,
+ eventBroadcaster,
+ eventDataCollector,
+ options: configuration.runtimeOptions,
+ pickleIds,
+ supportCodeLibrary,
+ supportCodePaths: configuration.supportCodePaths,
+ supportCodeRequiredModules: configuration.supportCodeRequiredModules,
+ });
+ await new Promise((resolve) => {
+ parallelRuntimeCoordinator.run(configuration.parallel, (s) => {
+ success = s;
+ resolve();
+ });
+ });
+ }
+ else {
+ const runtime = new runtime_1.default({
+ eventBroadcaster,
+ eventDataCollector,
+ options: configuration.runtimeOptions,
+ newId,
+ pickleIds,
+ supportCodeLibrary,
+ });
+ success = await runtime.start();
+ }
+ await cleanup();
+ return {
+ shouldExitImmediately: configuration.shouldExitImmediately,
+ success,
+ };
+ }
+}
+exports.default = Cli;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/index.js.map b/node_modules/@cucumber/cucumber/lib/cli/index.js.map
new file mode 100644
index 0000000..439bc69
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventDataCollector } from '../formatter/helpers'\nimport {\n emitMetaMessage,\n emitSupportCodeMessages,\n getExpandedArgv,\n parseGherkinMessageStream,\n} from './helpers'\nimport { validateInstall } from './install_validator'\nimport * as I18n from './i18n'\nimport ConfigurationBuilder, {\n IConfiguration,\n IConfigurationFormat,\n} from './configuration_builder'\nimport { EventEmitter } from 'events'\nimport FormatterBuilder from '../formatter/builder'\nimport fs from 'mz/fs'\nimport path from 'path'\nimport PickleFilter from '../pickle_filter'\nimport bluebird from 'bluebird'\nimport ParallelRuntimeCoordinator from '../runtime/parallel/coordinator'\nimport Runtime from '../runtime'\nimport supportCodeLibraryBuilder from '../support_code_library_builder'\nimport { IdGenerator } from '@cucumber/messages'\nimport { IFormatterStream } from '../formatter'\nimport { WriteStream as TtyWriteStream } from 'tty'\nimport { doesNotHaveValue } from '../value_checker'\nimport { GherkinStreams } from '@cucumber/gherkin-streams'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport { IParsedArgvFormatOptions } from './argv_parser'\nimport HttpStream from '../formatter/http_stream'\nimport { Writable } from 'stream'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst importers = require('../importers')\nconst { incrementing, uuid } = IdGenerator\n\nexport interface ICliRunResult {\n shouldExitImmediately: boolean\n success: boolean\n}\n\ninterface IInitializeFormattersRequest {\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n formatOptions: IParsedArgvFormatOptions\n formats: IConfigurationFormat[]\n supportCodeLibrary: ISupportCodeLibrary\n}\n\ninterface IGetSupportCodeLibraryRequest {\n newId: IdGenerator.NewId\n supportCodeRequiredModules: string[]\n supportCodePaths: string[]\n}\n\nexport type IUserCodeImporter = (\n path: string,\n isFilePath?: boolean\n) => Promise\n\nexport default class Cli {\n private readonly argv: string[]\n private readonly cwd: string\n private readonly stdout: IFormatterStream\n private importer: IUserCodeImporter = importers.legacy\n\n constructor({\n argv,\n cwd,\n stdout,\n }: {\n argv: string[]\n cwd: string\n stdout: IFormatterStream\n }) {\n this.argv = argv\n this.cwd = cwd\n this.stdout = stdout\n }\n\n async getConfiguration(): Promise {\n const fullArgv = await getExpandedArgv({\n argv: this.argv,\n cwd: this.cwd,\n })\n return await ConfigurationBuilder.build({\n argv: fullArgv,\n cwd: this.cwd,\n })\n }\n\n async initializeFormatters({\n eventBroadcaster,\n eventDataCollector,\n formatOptions,\n formats,\n supportCodeLibrary,\n }: IInitializeFormattersRequest): Promise<() => Promise> {\n const formatters = await bluebird.map(\n formats,\n async ({ type, outputTo }) => {\n let stream: IFormatterStream = this.stdout\n if (outputTo !== '') {\n if (outputTo.match(/^https?:\\/\\//) !== null) {\n const headers: { [key: string]: string } = {}\n if (process.env.CUCUMBER_PUBLISH_TOKEN !== undefined) {\n headers.Authorization = `Bearer ${process.env.CUCUMBER_PUBLISH_TOKEN}`\n }\n\n stream = new HttpStream(outputTo, 'GET', headers)\n const readerStream = new Writable({\n objectMode: true,\n write: function (responseBody: string, encoding, writeCallback) {\n console.error(responseBody)\n writeCallback()\n },\n })\n stream.pipe(readerStream)\n } else {\n const fd = await fs.open(path.resolve(this.cwd, outputTo), 'w')\n stream = fs.createWriteStream(null, { fd })\n }\n }\n\n stream.on('error', (error) => {\n console.error(error.message)\n process.exit(1)\n })\n\n const typeOptions = {\n cwd: this.cwd,\n eventBroadcaster,\n eventDataCollector,\n log: stream.write.bind(stream),\n parsedArgvOptions: formatOptions,\n importer: this.importer,\n stream,\n cleanup:\n stream === this.stdout\n ? async () => await Promise.resolve()\n : bluebird.promisify(stream.end.bind(stream)),\n supportCodeLibrary,\n }\n if (doesNotHaveValue(formatOptions.colorsEnabled)) {\n typeOptions.parsedArgvOptions.colorsEnabled = (stream as TtyWriteStream).isTTY\n }\n if (type === 'progress-bar' && !(stream as TtyWriteStream).isTTY) {\n const outputToName = outputTo === '' ? 'stdout' : outputTo\n console.warn(\n `Cannot use 'progress-bar' formatter for output to '${outputToName}' as not a TTY. Switching to 'progress' formatter.`\n )\n type = 'progress'\n }\n return await FormatterBuilder.build(type, typeOptions)\n }\n )\n return async function () {\n await bluebird.each(formatters, async (formatter) => {\n await formatter.finished()\n })\n }\n }\n\n async getSupportCodeLibrary({\n newId,\n supportCodeRequiredModules,\n supportCodePaths,\n }: IGetSupportCodeLibraryRequest): Promise {\n for (const requiredModule of supportCodeRequiredModules) {\n await this.importer(requiredModule)\n }\n supportCodeLibraryBuilder.reset(this.cwd, newId)\n for (const codePath of supportCodePaths) {\n await this.importer(codePath, true)\n }\n return supportCodeLibraryBuilder.finalize()\n }\n\n async run(): Promise {\n await validateInstall(this.cwd)\n const configuration = await this.getConfiguration()\n if (configuration.listI18nLanguages) {\n this.stdout.write(I18n.getLanguages())\n return { shouldExitImmediately: true, success: true }\n }\n if (configuration.listI18nKeywordsFor !== '') {\n this.stdout.write(I18n.getKeywords(configuration.listI18nKeywordsFor))\n return { shouldExitImmediately: true, success: true }\n }\n const newId =\n configuration.predictableIds && configuration.parallel <= 1\n ? incrementing()\n : uuid()\n if (configuration.esm) {\n this.importer = importers.esm\n }\n const supportCodeLibrary = await this.getSupportCodeLibrary({\n newId,\n supportCodePaths: configuration.supportCodePaths,\n supportCodeRequiredModules: configuration.supportCodeRequiredModules,\n })\n const eventBroadcaster = new EventEmitter()\n const eventDataCollector = new EventDataCollector(eventBroadcaster)\n const cleanup = await this.initializeFormatters({\n eventBroadcaster,\n eventDataCollector,\n formatOptions: configuration.formatOptions,\n formats: configuration.formats,\n supportCodeLibrary,\n })\n await emitMetaMessage(eventBroadcaster)\n const gherkinMessageStream = GherkinStreams.fromPaths(\n configuration.featurePaths,\n {\n defaultDialect: configuration.featureDefaultLanguage,\n newId,\n }\n )\n const pickleIds = await parseGherkinMessageStream({\n cwd: this.cwd,\n eventBroadcaster,\n eventDataCollector,\n gherkinMessageStream,\n order: configuration.order,\n pickleFilter: new PickleFilter(configuration.pickleFilterOptions),\n })\n emitSupportCodeMessages({\n eventBroadcaster,\n supportCodeLibrary,\n newId,\n })\n let success\n if (configuration.parallel > 1) {\n const parallelRuntimeCoordinator = new ParallelRuntimeCoordinator({\n cwd: this.cwd,\n eventBroadcaster,\n eventDataCollector,\n options: configuration.runtimeOptions,\n pickleIds,\n supportCodeLibrary,\n supportCodePaths: configuration.supportCodePaths,\n supportCodeRequiredModules: configuration.supportCodeRequiredModules,\n })\n await new Promise((resolve) => {\n parallelRuntimeCoordinator.run(configuration.parallel, (s) => {\n success = s\n resolve()\n })\n })\n } else {\n const runtime = new Runtime({\n eventBroadcaster,\n eventDataCollector,\n options: configuration.runtimeOptions,\n newId,\n pickleIds,\n supportCodeLibrary,\n })\n success = await runtime.start()\n }\n await cleanup()\n return {\n shouldExitImmediately: configuration.shouldExitImmediately,\n success,\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/install_validator.d.ts b/node_modules/@cucumber/cucumber/lib/cli/install_validator.d.ts
new file mode 100644
index 0000000..8a86a6a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/install_validator.d.ts
@@ -0,0 +1 @@
+export declare function validateInstall(cwd: string): Promise;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/install_validator.js b/node_modules/@cucumber/cucumber/lib/cli/install_validator.js
new file mode 100644
index 0000000..7693adb
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/install_validator.js
@@ -0,0 +1,40 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateInstall = void 0;
+const fs_1 = __importDefault(require("mz/fs"));
+const path_1 = __importDefault(require("path"));
+const resolve_1 = __importDefault(require("resolve"));
+const util_1 = require("util");
+async function validateInstall(cwd) {
+ const projectPath = path_1.default.join(__dirname, '..', '..');
+ if (projectPath === cwd) {
+ return; // cucumber testing itself
+ }
+ const currentCucumberPath = require.resolve(projectPath);
+ let localCucumberPath;
+ try {
+ localCucumberPath = await util_1.promisify(resolve_1.default)('@cucumber/cucumber', {
+ basedir: cwd,
+ });
+ }
+ catch (e) {
+ throw new Error('`@cucumber/cucumber` module not resolvable. Must be locally installed.');
+ }
+ localCucumberPath = await fs_1.default.realpath(localCucumberPath);
+ if (localCucumberPath !== currentCucumberPath) {
+ throw new Error(`
+ You appear to be executing an install of cucumber (most likely a global install)
+ that is different from your local install (the one required in your support files).
+ For cucumber to work, you need to execute the same install that is required in your support files.
+ Please execute the locally installed version to run your tests.
+
+ Executed Path: ${currentCucumberPath}
+ Local Path: ${localCucumberPath}
+ `);
+ }
+}
+exports.validateInstall = validateInstall;
+//# sourceMappingURL=install_validator.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/install_validator.js.map b/node_modules/@cucumber/cucumber/lib/cli/install_validator.js.map
new file mode 100644
index 0000000..54c3ce0
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/install_validator.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"install_validator.js","sourceRoot":"","sources":["../../src/cli/install_validator.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAsB;AACtB,gDAAuB;AACvB,sDAA6B;AAC7B,+BAAgC;AAEzB,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACpD,IAAI,WAAW,KAAK,GAAG,EAAE;QACvB,OAAM,CAAC,0BAA0B;KAClC;IACD,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACxD,IAAI,iBAAyB,CAAA;IAC7B,IAAI;QACF,iBAAiB,GAAG,MAAM,gBAAS,CAA+B,iBAAO,CAAC,CACxE,oBAAoB,EACpB;YACE,OAAO,EAAE,GAAG;SACb,CACF,CAAA;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAA;KACF;IACD,iBAAiB,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IACxD,IAAI,iBAAiB,KAAK,mBAAmB,EAAE;QAC7C,MAAM,IAAI,KAAK,CACb;;;;;;uBAMiB,mBAAmB;uBACnB,iBAAiB;OACjC,CACF,CAAA;KACF;AACH,CAAC;AAjCD,0CAiCC","sourcesContent":["import fs from 'mz/fs'\nimport path from 'path'\nimport resolve from 'resolve'\nimport { promisify } from 'util'\n\nexport async function validateInstall(cwd: string): Promise {\n const projectPath = path.join(__dirname, '..', '..')\n if (projectPath === cwd) {\n return // cucumber testing itself\n }\n const currentCucumberPath = require.resolve(projectPath)\n let localCucumberPath: string\n try {\n localCucumberPath = await promisify(resolve)(\n '@cucumber/cucumber',\n {\n basedir: cwd,\n }\n )\n } catch (e) {\n throw new Error(\n '`@cucumber/cucumber` module not resolvable. Must be locally installed.'\n )\n }\n localCucumberPath = await fs.realpath(localCucumberPath)\n if (localCucumberPath !== currentCucumberPath) {\n throw new Error(\n `\n You appear to be executing an install of cucumber (most likely a global install)\n that is different from your local install (the one required in your support files).\n For cucumber to work, you need to execute the same install that is required in your support files.\n Please execute the locally installed version to run your tests.\n\n Executed Path: ${currentCucumberPath}\n Local Path: ${localCucumberPath}\n `\n )\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/option_splitter.d.ts b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.d.ts
new file mode 100644
index 0000000..64e677a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.d.ts
@@ -0,0 +1,4 @@
+declare const OptionSplitter: {
+ split(option: string): string[];
+};
+export default OptionSplitter;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js
new file mode 100644
index 0000000..785b73f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const OptionSplitter = {
+ split(option) {
+ const parts = option.split(/([^A-Z]):(?!\\)/);
+ const result = parts.reduce((memo, part, i) => {
+ if (partNeedsRecombined(i)) {
+ memo.push(parts.slice(i, i + 2).join(''));
+ }
+ return memo;
+ }, []);
+ if (result.length === 1) {
+ result.push('');
+ }
+ return result;
+ },
+};
+function partNeedsRecombined(i) {
+ return i % 2 === 0;
+}
+exports.default = OptionSplitter;
+//# sourceMappingURL=option_splitter.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js.map b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js.map
new file mode 100644
index 0000000..66764bc
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/option_splitter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"option_splitter.js","sourceRoot":"","sources":["../../src/cli/option_splitter.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG;IACrB,KAAK,CAAC,MAAc;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAc,EAAE,IAAY,EAAE,CAAS,EAAE,EAAE;YACtE,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;aAC1C;YAED,OAAO,IAAI,CAAA;QACb,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAChB;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpB,CAAC;AAED,kBAAe,cAAc,CAAA","sourcesContent":["const OptionSplitter = {\n split(option: string): string[] {\n const parts = option.split(/([^A-Z]):(?!\\\\)/)\n\n const result = parts.reduce((memo: string[], part: string, i: number) => {\n if (partNeedsRecombined(i)) {\n memo.push(parts.slice(i, i + 2).join(''))\n }\n\n return memo\n }, [])\n\n if (result.length === 1) {\n result.push('')\n }\n\n return result\n },\n}\n\nfunction partNeedsRecombined(i: number): boolean {\n return i % 2 === 0\n}\n\nexport default OptionSplitter\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/profile_loader.d.ts b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.d.ts
new file mode 100644
index 0000000..7adb139
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.d.ts
@@ -0,0 +1,9 @@
+import { Dictionary } from 'lodash';
+import { IUserCodeImporter } from './index';
+export default class ProfileLoader {
+ private readonly directory;
+ private readonly importer;
+ constructor(directory: string, importer: IUserCodeImporter);
+ getDefinitions(): Promise>;
+ getArgv(profiles: string[]): Promise;
+}
diff --git a/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js
new file mode 100644
index 0000000..afa3b0e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js
@@ -0,0 +1,43 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const lodash_1 = __importDefault(require("lodash"));
+const fs_1 = __importDefault(require("mz/fs"));
+const path_1 = __importDefault(require("path"));
+const string_argv_1 = __importDefault(require("string-argv"));
+const value_checker_1 = require("../value_checker");
+class ProfileLoader {
+ constructor(directory, importer) {
+ this.directory = directory;
+ this.importer = importer;
+ }
+ async getDefinitions() {
+ const definitionsFilePath = path_1.default.join(this.directory, 'cucumber.js');
+ const exists = await fs_1.default.exists(definitionsFilePath);
+ if (!exists) {
+ return {};
+ }
+ const definitions = await this.importer(definitionsFilePath, true);
+ if (typeof definitions !== 'object') {
+ throw new Error(`${definitionsFilePath} does not export an object`);
+ }
+ return definitions;
+ }
+ async getArgv(profiles) {
+ const definitions = await this.getDefinitions();
+ if (profiles.length === 0 && value_checker_1.doesHaveValue(definitions.default)) {
+ profiles = ['default'];
+ }
+ const argvs = profiles.map((profile) => {
+ if (value_checker_1.doesNotHaveValue(definitions[profile])) {
+ throw new Error(`Undefined profile: ${profile}`);
+ }
+ return string_argv_1.default(definitions[profile]);
+ });
+ return lodash_1.default.flatten(argvs);
+ }
+}
+exports.default = ProfileLoader;
+//# sourceMappingURL=profile_loader.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js.map b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js.map
new file mode 100644
index 0000000..249e073
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/profile_loader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"profile_loader.js","sourceRoot":"","sources":["../../src/cli/profile_loader.ts"],"names":[],"mappings":";;;;;AAAA,oDAAsC;AACtC,+CAAsB;AACtB,gDAAuB;AACvB,8DAAoC;AACpC,oDAAkE;AAGlE,MAAqB,aAAa;IAChC,YACmB,SAAiB,EACjB,QAA2B;QAD3B,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAmB;IAC3C,CAAC;IAEJ,KAAK,CAAC,cAAc;QAClB,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,YAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAA;SACV;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;QAClE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,mBAAmB,4BAA4B,CAAC,CAAA;SACpE;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,6BAAa,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAA;SACvB;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACrC,IAAI,gCAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;aACjD;YACD,OAAO,qBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QACF,OAAO,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;CACF;AAhCD,gCAgCC","sourcesContent":["import _, { Dictionary } from 'lodash'\nimport fs from 'mz/fs'\nimport path from 'path'\nimport stringArgv from 'string-argv'\nimport { doesHaveValue, doesNotHaveValue } from '../value_checker'\nimport { IUserCodeImporter } from './index'\n\nexport default class ProfileLoader {\n constructor(\n private readonly directory: string,\n private readonly importer: IUserCodeImporter\n ) {}\n\n async getDefinitions(): Promise> {\n const definitionsFilePath = path.join(this.directory, 'cucumber.js')\n const exists = await fs.exists(definitionsFilePath)\n if (!exists) {\n return {}\n }\n const definitions = await this.importer(definitionsFilePath, true)\n if (typeof definitions !== 'object') {\n throw new Error(`${definitionsFilePath} does not export an object`)\n }\n return definitions\n }\n\n async getArgv(profiles: string[]): Promise {\n const definitions = await this.getDefinitions()\n if (profiles.length === 0 && doesHaveValue(definitions.default)) {\n profiles = ['default']\n }\n const argvs = profiles.map((profile) => {\n if (doesNotHaveValue(definitions[profile])) {\n throw new Error(`Undefined profile: ${profile}`)\n }\n return stringArgv(definitions[profile])\n })\n return _.flatten(argvs)\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/publish_banner.d.ts b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.d.ts
new file mode 100644
index 0000000..ae80eca
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.d.ts
@@ -0,0 +1,2 @@
+declare const _default: string;
+export default _default;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js
new file mode 100644
index 0000000..38aef5e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js
@@ -0,0 +1,30 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const safe_1 = __importDefault(require("colors/safe"));
+const cli_table3_1 = __importDefault(require("cli-table3"));
+const underlineBoldCyan = (x) => safe_1.default.underline(safe_1.default.bold(safe_1.default.cyan(x)));
+const formattedReportUrl = underlineBoldCyan('https://reports.cucumber.io');
+const formattedEnv = safe_1.default.cyan('CUCUMBER_PUBLISH_ENABLED') + '=' + safe_1.default.cyan('true');
+const formattedMoreInfoUrl = underlineBoldCyan('https://reports.cucumber.io/docs/cucumber-js');
+const text = `\
+Share your Cucumber Report with your team at ${formattedReportUrl}
+
+Command line option: ${safe_1.default.cyan('--publish')}
+Environment variable: ${formattedEnv}
+
+More information at ${formattedMoreInfoUrl}
+
+To disable this message, add this to your ${safe_1.default.bold('./cucumber.js')}:
+${safe_1.default.bold("module.exports = { default: '--publish-quiet' }")}`;
+const table = new cli_table3_1.default({
+ style: {
+ head: [],
+ border: ['green'],
+ },
+});
+table.push([text]);
+exports.default = table.toString();
+//# sourceMappingURL=publish_banner.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js.map b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js.map
new file mode 100644
index 0000000..61cc53a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/publish_banner.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"publish_banner.js","sourceRoot":"","sources":["../../src/cli/publish_banner.ts"],"names":[],"mappings":";;;;;AAAA,uDAAgC;AAChC,4DAA8B;AAE9B,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAU,EAAE,CAC9C,cAAM,CAAC,SAAS,CAAC,cAAM,CAAC,IAAI,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/C,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,6BAA6B,CAAC,CAAA;AAC3E,MAAM,YAAY,GAChB,cAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,GAAG,GAAG,cAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrE,MAAM,oBAAoB,GAAG,iBAAiB,CAC5C,8CAA8C,CAC/C,CAAA;AAED,MAAM,IAAI,GAAG;+CACkC,kBAAkB;;0BAEvC,cAAM,CAAC,IAAI,CAAC,WAAW,CAAC;0BACxB,YAAY;;sBAEhB,oBAAoB;;4CAEE,cAAM,CAAC,IAAI,CAAC,eAAe,CAAC;EACtE,cAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,EAAE,CAAA;AAElE,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;IACtB,KAAK,EAAE;QACL,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,CAAC,OAAO,CAAC;KAClB;CACF,CAAC,CAAA;AAEF,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAElB,kBAAe,KAAK,CAAC,QAAQ,EAAE,CAAA","sourcesContent":["import colors from 'colors/safe'\nimport Table from 'cli-table3'\n\nconst underlineBoldCyan = (x: string): string =>\n colors.underline(colors.bold(colors.cyan(x)))\n\nconst formattedReportUrl = underlineBoldCyan('https://reports.cucumber.io')\nconst formattedEnv =\n colors.cyan('CUCUMBER_PUBLISH_ENABLED') + '=' + colors.cyan('true')\nconst formattedMoreInfoUrl = underlineBoldCyan(\n 'https://reports.cucumber.io/docs/cucumber-js'\n)\n\nconst text = `\\\nShare your Cucumber Report with your team at ${formattedReportUrl}\n\nCommand line option: ${colors.cyan('--publish')}\nEnvironment variable: ${formattedEnv}\n\nMore information at ${formattedMoreInfoUrl}\n\nTo disable this message, add this to your ${colors.bold('./cucumber.js')}: \n${colors.bold(\"module.exports = { default: '--publish-quiet' }\")}`\n\nconst table = new Table({\n style: {\n head: [],\n border: ['green'],\n },\n})\n\ntable.push([text])\n\nexport default table.toString()\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/run.d.ts b/node_modules/@cucumber/cucumber/lib/cli/run.d.ts
new file mode 100644
index 0000000..b3c9871
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/run.d.ts
@@ -0,0 +1 @@
+export default function run(): Promise;
diff --git a/node_modules/@cucumber/cucumber/lib/cli/run.js b/node_modules/@cucumber/cucumber/lib/cli/run.js
new file mode 100644
index 0000000..d8a76c4
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/run.js
@@ -0,0 +1,43 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _1 = __importDefault(require("./"));
+const verror_1 = __importDefault(require("verror"));
+const publish_banner_1 = __importDefault(require("./publish_banner"));
+function exitWithError(error) {
+ console.error(verror_1.default.fullStack(error)); // eslint-disable-line no-console
+ process.exit(1);
+}
+function displayPublishAdvertisementBanner() {
+ console.error(publish_banner_1.default);
+}
+async function run() {
+ const cwd = process.cwd();
+ const cli = new _1.default({
+ argv: process.argv,
+ cwd,
+ stdout: process.stdout,
+ });
+ let result;
+ try {
+ result = await cli.run();
+ }
+ catch (error) {
+ exitWithError(error);
+ }
+ const config = await cli.getConfiguration();
+ if (!config.publishing && !config.suppressPublishAdvertisement) {
+ displayPublishAdvertisementBanner();
+ }
+ const exitCode = result.success ? 0 : 1;
+ if (result.shouldExitImmediately) {
+ process.exit(exitCode);
+ }
+ else {
+ process.exitCode = exitCode;
+ }
+}
+exports.default = run;
+//# sourceMappingURL=run.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/cli/run.js.map b/node_modules/@cucumber/cucumber/lib/cli/run.js.map
new file mode 100644
index 0000000..ea3b295
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/cli/run.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;;;;AAAA,0CAAuC;AACvC,oDAA2B;AAC3B,sEAA4C;AAE5C,SAAS,aAAa,CAAC,KAAY;IACjC,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC,iCAAiC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,iCAAiC;IACxC,OAAO,CAAC,KAAK,CAAC,wBAAa,CAAC,CAAA;AAC9B,CAAC;AAEc,KAAK,UAAU,GAAG;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,GAAG,GAAG,IAAI,UAAG,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IAEF,IAAI,MAAqB,CAAA;IACzB,IAAI;QACF,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAA;KACzB;IAAC,OAAO,KAAK,EAAE;QACd,aAAa,CAAC,KAAK,CAAC,CAAA;KACrB;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC3C,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE;QAC9D,iCAAiC,EAAE,CAAA;KACpC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACvB;SAAM;QACL,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;KAC5B;AACH,CAAC;AA1BD,sBA0BC","sourcesContent":["import Cli, { ICliRunResult } from './'\nimport VError from 'verror'\nimport publishBanner from './publish_banner'\n\nfunction exitWithError(error: Error): void {\n console.error(VError.fullStack(error)) // eslint-disable-line no-console\n process.exit(1)\n}\n\nfunction displayPublishAdvertisementBanner(): void {\n console.error(publishBanner)\n}\n\nexport default async function run(): Promise {\n const cwd = process.cwd()\n const cli = new Cli({\n argv: process.argv,\n cwd,\n stdout: process.stdout,\n })\n\n let result: ICliRunResult\n try {\n result = await cli.run()\n } catch (error) {\n exitWithError(error)\n }\n\n const config = await cli.getConfiguration()\n if (!config.publishing && !config.suppressPublishAdvertisement) {\n displayPublishAdvertisementBanner()\n }\n\n const exitCode = result.success ? 0 : 1\n if (result.shouldExitImmediately) {\n process.exit(exitCode)\n } else {\n process.exitCode = exitCode\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/builder.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/builder.d.ts
new file mode 100644
index 0000000..535d52d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/builder.d.ts
@@ -0,0 +1,36 @@
+///
+import StepDefinitionSnippetBuilder from './step_definition_snippet_builder';
+import { ISupportCodeLibrary } from '../support_code_library_builder/types';
+import Formatter, { IFormatterCleanupFn, IFormatterLogFn } from '.';
+import { EventEmitter } from 'events';
+import EventDataCollector from './helpers/event_data_collector';
+import { Writable as WritableStream } from 'stream';
+import { IParsedArgvFormatOptions } from '../cli/argv_parser';
+import { SnippetInterface } from './step_definition_snippet_builder/snippet_syntax';
+import { IUserCodeImporter } from '../cli';
+interface IGetStepDefinitionSnippetBuilderOptions {
+ cwd: string;
+ importer: IUserCodeImporter;
+ snippetInterface?: SnippetInterface;
+ snippetSyntax?: string;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+export interface IBuildOptions {
+ cwd: string;
+ eventBroadcaster: EventEmitter;
+ eventDataCollector: EventDataCollector;
+ log: IFormatterLogFn;
+ parsedArgvOptions: IParsedArgvFormatOptions;
+ importer: IUserCodeImporter;
+ stream: WritableStream;
+ cleanup: IFormatterCleanupFn;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+declare const FormatterBuilder: {
+ build(type: string, options: IBuildOptions): Promise;
+ getConstructorByType(type: string, cwd: string, importer: IUserCodeImporter): Promise;
+ getStepDefinitionSnippetBuilder({ cwd, importer, snippetInterface, snippetSyntax, supportCodeLibrary, }: IGetStepDefinitionSnippetBuilderOptions): Promise;
+ loadCustomFormatter(customFormatterPath: string, cwd: string, importer: IUserCodeImporter): Promise;
+ resolveConstructor(ImportedCode: any): any;
+};
+export default FormatterBuilder;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/builder.js b/node_modules/@cucumber/cucumber/lib/formatter/builder.js
new file mode 100644
index 0000000..1324a1a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/builder.js
@@ -0,0 +1,104 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const get_color_fns_1 = __importDefault(require("./get_color_fns"));
+const javascript_snippet_syntax_1 = __importDefault(require("./step_definition_snippet_builder/javascript_snippet_syntax"));
+const json_formatter_1 = __importDefault(require("./json_formatter"));
+const message_formatter_1 = __importDefault(require("./message_formatter"));
+const path_1 = __importDefault(require("path"));
+const progress_bar_formatter_1 = __importDefault(require("./progress_bar_formatter"));
+const progress_formatter_1 = __importDefault(require("./progress_formatter"));
+const rerun_formatter_1 = __importDefault(require("./rerun_formatter"));
+const snippets_formatter_1 = __importDefault(require("./snippets_formatter"));
+const step_definition_snippet_builder_1 = __importDefault(require("./step_definition_snippet_builder"));
+const summary_formatter_1 = __importDefault(require("./summary_formatter"));
+const usage_formatter_1 = __importDefault(require("./usage_formatter"));
+const usage_json_formatter_1 = __importDefault(require("./usage_json_formatter"));
+const value_checker_1 = require("../value_checker");
+const snippet_syntax_1 = require("./step_definition_snippet_builder/snippet_syntax");
+const html_formatter_1 = __importDefault(require("./html_formatter"));
+const FormatterBuilder = {
+ async build(type, options) {
+ const FormatterConstructor = await FormatterBuilder.getConstructorByType(type, options.cwd, options.importer);
+ const colorFns = get_color_fns_1.default(options.parsedArgvOptions.colorsEnabled);
+ const snippetBuilder = await FormatterBuilder.getStepDefinitionSnippetBuilder({
+ cwd: options.cwd,
+ importer: options.importer,
+ snippetInterface: options.parsedArgvOptions.snippetInterface,
+ snippetSyntax: options.parsedArgvOptions.snippetSyntax,
+ supportCodeLibrary: options.supportCodeLibrary,
+ });
+ return new FormatterConstructor({
+ colorFns,
+ snippetBuilder,
+ ...options,
+ });
+ },
+ async getConstructorByType(type, cwd, importer) {
+ switch (type) {
+ case 'json':
+ return json_formatter_1.default;
+ case 'message':
+ return message_formatter_1.default;
+ case 'html':
+ return html_formatter_1.default;
+ case 'progress':
+ return progress_formatter_1.default;
+ case 'progress-bar':
+ return progress_bar_formatter_1.default;
+ case 'rerun':
+ return rerun_formatter_1.default;
+ case 'snippets':
+ return snippets_formatter_1.default;
+ case 'summary':
+ return summary_formatter_1.default;
+ case 'usage':
+ return usage_formatter_1.default;
+ case 'usage-json':
+ return usage_json_formatter_1.default;
+ default:
+ return await FormatterBuilder.loadCustomFormatter(type, cwd, importer);
+ }
+ },
+ async getStepDefinitionSnippetBuilder({ cwd, importer, snippetInterface, snippetSyntax, supportCodeLibrary, }) {
+ if (value_checker_1.doesNotHaveValue(snippetInterface)) {
+ snippetInterface = snippet_syntax_1.SnippetInterface.Synchronous;
+ }
+ let Syntax = javascript_snippet_syntax_1.default;
+ if (value_checker_1.doesHaveValue(snippetSyntax)) {
+ const fullSyntaxPath = path_1.default.resolve(cwd, snippetSyntax);
+ Syntax = await importer(fullSyntaxPath, true);
+ Syntax = FormatterBuilder.resolveConstructor(Syntax);
+ }
+ return new step_definition_snippet_builder_1.default({
+ snippetSyntax: new Syntax(snippetInterface),
+ parameterTypeRegistry: supportCodeLibrary.parameterTypeRegistry,
+ });
+ },
+ async loadCustomFormatter(customFormatterPath, cwd, importer) {
+ let CustomFormatter = customFormatterPath.startsWith(`.`)
+ ? await importer(path_1.default.resolve(cwd, customFormatterPath), true)
+ : await importer(customFormatterPath);
+ CustomFormatter = FormatterBuilder.resolveConstructor(CustomFormatter);
+ if (value_checker_1.doesHaveValue(CustomFormatter)) {
+ return CustomFormatter;
+ }
+ else {
+ throw new Error(`Custom formatter (${customFormatterPath}) does not export a function`);
+ }
+ },
+ resolveConstructor(ImportedCode) {
+ if (typeof ImportedCode === 'function') {
+ return ImportedCode;
+ }
+ else if (value_checker_1.doesHaveValue(ImportedCode) &&
+ typeof ImportedCode.default === 'function') {
+ return ImportedCode.default;
+ }
+ return null;
+ },
+};
+exports.default = FormatterBuilder;
+//# sourceMappingURL=builder.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/builder.js.map b/node_modules/@cucumber/cucumber/lib/formatter/builder.js.map
new file mode 100644
index 0000000..e3db21c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/builder.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/formatter/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import getColorFns from './get_color_fns'\nimport JavascriptSnippetSyntax from './step_definition_snippet_builder/javascript_snippet_syntax'\nimport JsonFormatter from './json_formatter'\nimport MessageFormatter from './message_formatter'\nimport path from 'path'\nimport ProgressBarFormatter from './progress_bar_formatter'\nimport ProgressFormatter from './progress_formatter'\nimport RerunFormatter from './rerun_formatter'\nimport SnippetsFormatter from './snippets_formatter'\nimport StepDefinitionSnippetBuilder from './step_definition_snippet_builder'\nimport SummaryFormatter from './summary_formatter'\nimport UsageFormatter from './usage_formatter'\nimport UsageJsonFormatter from './usage_json_formatter'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport Formatter, { IFormatterCleanupFn, IFormatterLogFn } from '.'\nimport { doesHaveValue, doesNotHaveValue } from '../value_checker'\nimport { EventEmitter } from 'events'\nimport EventDataCollector from './helpers/event_data_collector'\nimport { Writable as WritableStream } from 'stream'\nimport { IParsedArgvFormatOptions } from '../cli/argv_parser'\nimport { SnippetInterface } from './step_definition_snippet_builder/snippet_syntax'\nimport HtmlFormatter from './html_formatter'\nimport { IUserCodeImporter } from '../cli'\n\ninterface IGetStepDefinitionSnippetBuilderOptions {\n cwd: string\n importer: IUserCodeImporter\n snippetInterface?: SnippetInterface\n snippetSyntax?: string\n supportCodeLibrary: ISupportCodeLibrary\n}\n\nexport interface IBuildOptions {\n cwd: string\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n log: IFormatterLogFn\n parsedArgvOptions: IParsedArgvFormatOptions\n importer: IUserCodeImporter\n stream: WritableStream\n cleanup: IFormatterCleanupFn\n supportCodeLibrary: ISupportCodeLibrary\n}\n\nconst FormatterBuilder = {\n async build(type: string, options: IBuildOptions): Promise {\n const FormatterConstructor = await FormatterBuilder.getConstructorByType(\n type,\n options.cwd,\n options.importer\n )\n const colorFns = getColorFns(options.parsedArgvOptions.colorsEnabled)\n const snippetBuilder = await FormatterBuilder.getStepDefinitionSnippetBuilder(\n {\n cwd: options.cwd,\n importer: options.importer,\n snippetInterface: options.parsedArgvOptions.snippetInterface,\n snippetSyntax: options.parsedArgvOptions.snippetSyntax,\n supportCodeLibrary: options.supportCodeLibrary,\n }\n )\n return new FormatterConstructor({\n colorFns,\n snippetBuilder,\n ...options,\n })\n },\n\n async getConstructorByType(\n type: string,\n cwd: string,\n importer: IUserCodeImporter\n ): Promise {\n switch (type) {\n case 'json':\n return JsonFormatter\n case 'message':\n return MessageFormatter\n case 'html':\n return HtmlFormatter\n case 'progress':\n return ProgressFormatter\n case 'progress-bar':\n return ProgressBarFormatter\n case 'rerun':\n return RerunFormatter\n case 'snippets':\n return SnippetsFormatter\n case 'summary':\n return SummaryFormatter\n case 'usage':\n return UsageFormatter\n case 'usage-json':\n return UsageJsonFormatter\n default:\n return await FormatterBuilder.loadCustomFormatter(type, cwd, importer)\n }\n },\n\n async getStepDefinitionSnippetBuilder({\n cwd,\n importer,\n snippetInterface,\n snippetSyntax,\n supportCodeLibrary,\n }: IGetStepDefinitionSnippetBuilderOptions) {\n if (doesNotHaveValue(snippetInterface)) {\n snippetInterface = SnippetInterface.Synchronous\n }\n let Syntax = JavascriptSnippetSyntax\n if (doesHaveValue(snippetSyntax)) {\n const fullSyntaxPath = path.resolve(cwd, snippetSyntax)\n Syntax = await importer(fullSyntaxPath, true)\n Syntax = FormatterBuilder.resolveConstructor(Syntax)\n }\n return new StepDefinitionSnippetBuilder({\n snippetSyntax: new Syntax(snippetInterface),\n parameterTypeRegistry: supportCodeLibrary.parameterTypeRegistry,\n })\n },\n\n async loadCustomFormatter(\n customFormatterPath: string,\n cwd: string,\n importer: IUserCodeImporter\n ) {\n let CustomFormatter = customFormatterPath.startsWith(`.`)\n ? await importer(path.resolve(cwd, customFormatterPath), true)\n : await importer(customFormatterPath)\n CustomFormatter = FormatterBuilder.resolveConstructor(CustomFormatter)\n if (doesHaveValue(CustomFormatter)) {\n return CustomFormatter\n } else {\n throw new Error(\n `Custom formatter (${customFormatterPath}) does not export a function`\n )\n }\n },\n\n resolveConstructor(ImportedCode: any) {\n if (typeof ImportedCode === 'function') {\n return ImportedCode\n } else if (\n doesHaveValue(ImportedCode) &&\n typeof ImportedCode.default === 'function'\n ) {\n return ImportedCode.default\n }\n return null\n },\n}\n\nexport default FormatterBuilder\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.d.ts
new file mode 100644
index 0000000..c5cfa56
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.d.ts
@@ -0,0 +1,8 @@
+import { messages } from '@cucumber/messages';
+export declare type IColorFn = (text: string) => string;
+export interface IColorFns {
+ forStatus: (status: messages.TestStepFinished.TestStepResult.Status) => IColorFn;
+ location: IColorFn;
+ tag: IColorFn;
+}
+export default function getColorFns(enabled: boolean): IColorFns;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js
new file mode 100644
index 0000000..6b6a037
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js
@@ -0,0 +1,39 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const lodash_1 = __importDefault(require("lodash"));
+const safe_1 = __importDefault(require("colors/safe"));
+const status_1 = __importDefault(require("../status"));
+safe_1.default.enable();
+function getColorFns(enabled) {
+ if (enabled) {
+ return {
+ forStatus(status) {
+ return {
+ [status_1.default.AMBIGUOUS]: safe_1.default.red.bind(safe_1.default),
+ [status_1.default.FAILED]: safe_1.default.red.bind(safe_1.default),
+ [status_1.default.PASSED]: safe_1.default.green.bind(safe_1.default),
+ [status_1.default.PENDING]: safe_1.default.yellow.bind(safe_1.default),
+ [status_1.default.SKIPPED]: safe_1.default.cyan.bind(safe_1.default),
+ [status_1.default.UNDEFINED]: safe_1.default.yellow.bind(safe_1.default),
+ [status_1.default.UNKNOWN]: safe_1.default.yellow.bind(safe_1.default),
+ }[status];
+ },
+ location: safe_1.default.gray.bind(safe_1.default),
+ tag: safe_1.default.cyan.bind(safe_1.default),
+ };
+ }
+ else {
+ return {
+ forStatus(status) {
+ return lodash_1.default.identity;
+ },
+ location: lodash_1.default.identity,
+ tag: lodash_1.default.identity,
+ };
+ }
+}
+exports.default = getColorFns;
+//# sourceMappingURL=get_color_fns.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js.map b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js.map
new file mode 100644
index 0000000..0914b03
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/get_color_fns.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"get_color_fns.js","sourceRoot":"","sources":["../../src/formatter/get_color_fns.ts"],"names":[],"mappings":";;;;;AAAA,oDAAsB;AACtB,uDAAgC;AAChC,uDAA8B;AAG9B,cAAM,CAAC,MAAM,EAAE,CAAA;AAYf,SAAwB,WAAW,CAAC,OAAgB;IAClD,IAAI,OAAO,EAAE;QACX,OAAO;YACL,SAAS,CAAC,MAAuD;gBAC/D,OAAO;oBACL,CAAC,gBAAM,CAAC,SAAS,CAAC,EAAE,cAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAM,CAAC;oBAC3C,CAAC,gBAAM,CAAC,MAAM,CAAC,EAAE,cAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAM,CAAC;oBACxC,CAAC,gBAAM,CAAC,MAAM,CAAC,EAAE,cAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAM,CAAC;oBAC1C,CAAC,gBAAM,CAAC,OAAO,CAAC,EAAE,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAM,CAAC;oBAC5C,CAAC,gBAAM,CAAC,OAAO,CAAC,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAM,CAAC;oBAC1C,CAAC,gBAAM,CAAC,SAAS,CAAC,EAAE,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAM,CAAC;oBAC9C,CAAC,gBAAM,CAAC,OAAO,CAAC,EAAE,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAM,CAAC;iBAC7C,CAAC,MAAM,CAAC,CAAA;YACX,CAAC;YACD,QAAQ,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAM,CAAC;YAClC,GAAG,EAAE,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAM,CAAC;SAC9B,CAAA;KACF;SAAM;QACL,OAAO;YACL,SAAS,CAAC,MAAuD;gBAC/D,OAAO,gBAAC,CAAC,QAAQ,CAAA;YACnB,CAAC;YACD,QAAQ,EAAE,gBAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,gBAAC,CAAC,QAAQ;SAChB,CAAA;KACF;AACH,CAAC;AA1BD,8BA0BC","sourcesContent":["import _ from 'lodash'\nimport colors from 'colors/safe'\nimport Status from '../status'\nimport { messages } from '@cucumber/messages'\n\ncolors.enable()\n\nexport type IColorFn = (text: string) => string\n\nexport interface IColorFns {\n forStatus: (\n status: messages.TestStepFinished.TestStepResult.Status\n ) => IColorFn\n location: IColorFn\n tag: IColorFn\n}\n\nexport default function getColorFns(enabled: boolean): IColorFns {\n if (enabled) {\n return {\n forStatus(status: messages.TestStepFinished.TestStepResult.Status) {\n return {\n [Status.AMBIGUOUS]: colors.red.bind(colors),\n [Status.FAILED]: colors.red.bind(colors),\n [Status.PASSED]: colors.green.bind(colors),\n [Status.PENDING]: colors.yellow.bind(colors),\n [Status.SKIPPED]: colors.cyan.bind(colors),\n [Status.UNDEFINED]: colors.yellow.bind(colors),\n [Status.UNKNOWN]: colors.yellow.bind(colors),\n }[status]\n },\n location: colors.gray.bind(colors),\n tag: colors.cyan.bind(colors),\n }\n } else {\n return {\n forStatus(status: messages.TestStepFinished.TestStepResult.Status) {\n return _.identity\n },\n location: _.identity,\n tag: _.identity,\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.d.ts
new file mode 100644
index 0000000..838da1b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.d.ts
@@ -0,0 +1,32 @@
+///
+import { Dictionary } from 'lodash';
+import { messages } from '@cucumber/messages';
+import { EventEmitter } from 'events';
+import { Query } from '@cucumber/query';
+export interface ITestCaseAttempt {
+ attempt: number;
+ gherkinDocument: messages.IGherkinDocument;
+ pickle: messages.IPickle;
+ stepAttachments: Dictionary;
+ stepResults: Dictionary;
+ testCase: messages.ITestCase;
+ worstTestStepResult: messages.TestStepFinished.ITestStepResult;
+}
+export default class EventDataCollector {
+ private gherkinDocumentMap;
+ private pickleMap;
+ private testCaseMap;
+ private testCaseAttemptDataMap;
+ readonly undefinedParameterTypes: messages.IUndefinedParameterType[];
+ readonly query: Query;
+ constructor(eventBroadcaster: EventEmitter);
+ getGherkinDocument(uri: string): messages.IGherkinDocument;
+ getPickle(pickleId: string): messages.IPickle;
+ getTestCaseAttempts(): ITestCaseAttempt[];
+ getTestCaseAttempt(testCaseStartedId: string): ITestCaseAttempt;
+ parseEnvelope(envelope: messages.Envelope): void;
+ initTestCaseAttempt(testCaseStarted: messages.ITestCaseStarted): void;
+ storeAttachment({ testCaseStartedId, testStepId, body, mediaType, }: messages.IAttachment): void;
+ storeTestStepResult({ testCaseStartedId, testStepId, testStepResult, }: messages.ITestStepFinished): void;
+ storeTestCaseResult({ testCaseStartedId }: messages.ITestCaseFinished): void;
+}
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js
new file mode 100644
index 0000000..d4b8a88
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js
@@ -0,0 +1,115 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const lodash_1 = __importStar(require("lodash"));
+const value_checker_1 = require("../../value_checker");
+const query_1 = require("@cucumber/query");
+class EventDataCollector {
+ constructor(eventBroadcaster) {
+ this.gherkinDocumentMap = {};
+ this.pickleMap = {};
+ this.testCaseMap = {};
+ this.testCaseAttemptDataMap = {};
+ this.undefinedParameterTypes = [];
+ this.query = new query_1.Query();
+ eventBroadcaster.on('envelope', this.parseEnvelope.bind(this));
+ }
+ getGherkinDocument(uri) {
+ return this.gherkinDocumentMap[uri];
+ }
+ getPickle(pickleId) {
+ return this.pickleMap[pickleId];
+ }
+ getTestCaseAttempts() {
+ return lodash_1.default.keys(this.testCaseAttemptDataMap).map((testCaseStartedId) => {
+ return this.getTestCaseAttempt(testCaseStartedId);
+ });
+ }
+ getTestCaseAttempt(testCaseStartedId) {
+ const testCaseAttemptData = this.testCaseAttemptDataMap[testCaseStartedId];
+ const testCase = this.testCaseMap[testCaseAttemptData.testCaseId];
+ const pickle = this.pickleMap[testCase.pickleId];
+ return {
+ gherkinDocument: this.gherkinDocumentMap[pickle.uri],
+ pickle,
+ testCase,
+ attempt: testCaseAttemptData.attempt,
+ stepAttachments: testCaseAttemptData.stepAttachments,
+ stepResults: testCaseAttemptData.stepResults,
+ worstTestStepResult: testCaseAttemptData.worstTestStepResult,
+ };
+ }
+ parseEnvelope(envelope) {
+ this.query.update(envelope);
+ if (value_checker_1.doesHaveValue(envelope.gherkinDocument)) {
+ this.gherkinDocumentMap[envelope.gherkinDocument.uri] =
+ envelope.gherkinDocument;
+ }
+ else if (value_checker_1.doesHaveValue(envelope.pickle)) {
+ this.pickleMap[envelope.pickle.id] = envelope.pickle;
+ }
+ else if (value_checker_1.doesHaveValue(envelope.undefinedParameterType)) {
+ this.undefinedParameterTypes.push(envelope.undefinedParameterType);
+ }
+ else if (value_checker_1.doesHaveValue(envelope.testCase)) {
+ this.testCaseMap[envelope.testCase.id] = envelope.testCase;
+ }
+ else if (value_checker_1.doesHaveValue(envelope.testCaseStarted)) {
+ this.initTestCaseAttempt(envelope.testCaseStarted);
+ }
+ else if (value_checker_1.doesHaveValue(envelope.attachment)) {
+ this.storeAttachment(envelope.attachment);
+ }
+ else if (value_checker_1.doesHaveValue(envelope.testStepFinished)) {
+ this.storeTestStepResult(envelope.testStepFinished);
+ }
+ else if (value_checker_1.doesHaveValue(envelope.testCaseFinished)) {
+ this.storeTestCaseResult(envelope.testCaseFinished);
+ }
+ }
+ initTestCaseAttempt(testCaseStarted) {
+ this.testCaseAttemptDataMap[testCaseStarted.id] = {
+ attempt: testCaseStarted.attempt,
+ testCaseId: testCaseStarted.testCaseId,
+ stepAttachments: {},
+ stepResults: {},
+ worstTestStepResult: {},
+ };
+ }
+ storeAttachment({ testCaseStartedId, testStepId, body, mediaType, }) {
+ if (value_checker_1.doesHaveValue(testCaseStartedId) && value_checker_1.doesHaveValue(testStepId)) {
+ const { stepAttachments } = this.testCaseAttemptDataMap[testCaseStartedId];
+ if (value_checker_1.doesNotHaveValue(stepAttachments[testStepId])) {
+ stepAttachments[testStepId] = [];
+ }
+ stepAttachments[testStepId].push({ body, mediaType });
+ }
+ }
+ storeTestStepResult({ testCaseStartedId, testStepId, testStepResult, }) {
+ this.testCaseAttemptDataMap[testCaseStartedId].stepResults[testStepId] = testStepResult;
+ }
+ storeTestCaseResult({ testCaseStartedId }) {
+ const stepResults = lodash_1.values(this.testCaseAttemptDataMap[testCaseStartedId].stepResults);
+ this.testCaseAttemptDataMap[testCaseStartedId].worstTestStepResult = this.query.getWorstTestStepResult(stepResults);
+ }
+}
+exports.default = EventDataCollector;
+//# sourceMappingURL=event_data_collector.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js.map
new file mode 100644
index 0000000..941570e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/event_data_collector.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"event_data_collector.js","sourceRoot":"","sources":["../../../src/formatter/helpers/event_data_collector.ts"],"names":[],"mappings":"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","sourcesContent":["import _, { Dictionary, values } from 'lodash'\nimport { messages } from '@cucumber/messages'\nimport { doesHaveValue, doesNotHaveValue } from '../../value_checker'\nimport { EventEmitter } from 'events'\nimport { Query } from '@cucumber/query'\n\ninterface ITestCaseAttemptData {\n attempt: number\n testCaseId: string\n stepAttachments: Dictionary\n stepResults: Dictionary\n worstTestStepResult: messages.TestStepFinished.ITestStepResult\n}\n\nexport interface ITestCaseAttempt {\n attempt: number\n gherkinDocument: messages.IGherkinDocument\n pickle: messages.IPickle\n stepAttachments: Dictionary\n stepResults: Dictionary\n testCase: messages.ITestCase\n worstTestStepResult: messages.TestStepFinished.ITestStepResult\n}\n\nexport default class EventDataCollector {\n private gherkinDocumentMap: Dictionary = {}\n private pickleMap: Dictionary = {}\n private testCaseMap: Dictionary = {}\n private testCaseAttemptDataMap: Dictionary = {}\n readonly undefinedParameterTypes: messages.IUndefinedParameterType[] = []\n readonly query = new Query()\n\n constructor(eventBroadcaster: EventEmitter) {\n eventBroadcaster.on('envelope', this.parseEnvelope.bind(this))\n }\n\n getGherkinDocument(uri: string): messages.IGherkinDocument {\n return this.gherkinDocumentMap[uri]\n }\n\n getPickle(pickleId: string): messages.IPickle {\n return this.pickleMap[pickleId]\n }\n\n getTestCaseAttempts(): ITestCaseAttempt[] {\n return _.keys(this.testCaseAttemptDataMap).map((testCaseStartedId) => {\n return this.getTestCaseAttempt(testCaseStartedId)\n })\n }\n\n getTestCaseAttempt(testCaseStartedId: string): ITestCaseAttempt {\n const testCaseAttemptData = this.testCaseAttemptDataMap[testCaseStartedId]\n const testCase = this.testCaseMap[testCaseAttemptData.testCaseId]\n const pickle = this.pickleMap[testCase.pickleId]\n return {\n gherkinDocument: this.gherkinDocumentMap[pickle.uri],\n pickle,\n testCase,\n attempt: testCaseAttemptData.attempt,\n stepAttachments: testCaseAttemptData.stepAttachments,\n stepResults: testCaseAttemptData.stepResults,\n worstTestStepResult: testCaseAttemptData.worstTestStepResult,\n }\n }\n\n parseEnvelope(envelope: messages.Envelope): void {\n this.query.update(envelope)\n if (doesHaveValue(envelope.gherkinDocument)) {\n this.gherkinDocumentMap[envelope.gherkinDocument.uri] =\n envelope.gherkinDocument\n } else if (doesHaveValue(envelope.pickle)) {\n this.pickleMap[envelope.pickle.id] = envelope.pickle\n } else if (doesHaveValue(envelope.undefinedParameterType)) {\n this.undefinedParameterTypes.push(envelope.undefinedParameterType)\n } else if (doesHaveValue(envelope.testCase)) {\n this.testCaseMap[envelope.testCase.id] = envelope.testCase\n } else if (doesHaveValue(envelope.testCaseStarted)) {\n this.initTestCaseAttempt(envelope.testCaseStarted)\n } else if (doesHaveValue(envelope.attachment)) {\n this.storeAttachment(envelope.attachment)\n } else if (doesHaveValue(envelope.testStepFinished)) {\n this.storeTestStepResult(envelope.testStepFinished)\n } else if (doesHaveValue(envelope.testCaseFinished)) {\n this.storeTestCaseResult(envelope.testCaseFinished)\n }\n }\n\n initTestCaseAttempt(testCaseStarted: messages.ITestCaseStarted): void {\n this.testCaseAttemptDataMap[testCaseStarted.id] = {\n attempt: testCaseStarted.attempt,\n testCaseId: testCaseStarted.testCaseId,\n stepAttachments: {},\n stepResults: {},\n worstTestStepResult: {},\n }\n }\n\n storeAttachment({\n testCaseStartedId,\n testStepId,\n body,\n mediaType,\n }: messages.IAttachment): void {\n if (doesHaveValue(testCaseStartedId) && doesHaveValue(testStepId)) {\n const { stepAttachments } = this.testCaseAttemptDataMap[testCaseStartedId]\n if (doesNotHaveValue(stepAttachments[testStepId])) {\n stepAttachments[testStepId] = []\n }\n stepAttachments[testStepId].push({ body, mediaType })\n }\n }\n\n storeTestStepResult({\n testCaseStartedId,\n testStepId,\n testStepResult,\n }: messages.ITestStepFinished): void {\n this.testCaseAttemptDataMap[testCaseStartedId].stepResults[\n testStepId\n ] = testStepResult\n }\n\n storeTestCaseResult({ testCaseStartedId }: messages.ITestCaseFinished): void {\n const stepResults = values(\n this.testCaseAttemptDataMap[testCaseStartedId].stepResults\n )\n this.testCaseAttemptDataMap[\n testCaseStartedId\n ].worstTestStepResult = this.query.getWorstTestStepResult(stepResults)\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.d.ts
new file mode 100644
index 0000000..2bc787c
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.d.ts
@@ -0,0 +1,6 @@
+import { Dictionary } from 'lodash';
+import { messages } from '@cucumber/messages';
+export declare function getGherkinStepMap(gherkinDocument: messages.IGherkinDocument): Dictionary;
+export declare function getGherkinScenarioMap(gherkinDocument: messages.IGherkinDocument): Dictionary;
+export declare function getGherkinExampleRuleMap(gherkinDocument: messages.IGherkinDocument): Dictionary;
+export declare function getGherkinScenarioLocationMap(gherkinDocument: messages.IGherkinDocument): Dictionary;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js
new file mode 100644
index 0000000..6e474b8
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js
@@ -0,0 +1,82 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getGherkinScenarioLocationMap = exports.getGherkinExampleRuleMap = exports.getGherkinScenarioMap = exports.getGherkinStepMap = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const value_checker_1 = require("../../value_checker");
+function getGherkinStepMap(gherkinDocument) {
+ return lodash_1.default.chain(gherkinDocument.feature.children)
+ .map(extractStepContainers)
+ .flatten()
+ .map('steps')
+ .flatten()
+ .map((step) => [step.id, step])
+ .fromPairs()
+ .value();
+}
+exports.getGherkinStepMap = getGherkinStepMap;
+function extractStepContainers(child) {
+ if (value_checker_1.doesHaveValue(child.background)) {
+ return [child.background];
+ }
+ else if (value_checker_1.doesHaveValue(child.rule)) {
+ return child.rule.children.map((ruleChild) => value_checker_1.doesHaveValue(ruleChild.background)
+ ? ruleChild.background
+ : ruleChild.scenario);
+ }
+ return [child.scenario];
+}
+function getGherkinScenarioMap(gherkinDocument) {
+ return lodash_1.default.chain(gherkinDocument.feature.children)
+ .map((child) => {
+ if (value_checker_1.doesHaveValue(child.rule)) {
+ return child.rule.children;
+ }
+ return [child];
+ })
+ .flatten()
+ .filter('scenario')
+ .map('scenario')
+ .map((scenario) => [
+ scenario.id,
+ scenario,
+ ])
+ .fromPairs()
+ .value();
+}
+exports.getGherkinScenarioMap = getGherkinScenarioMap;
+function getGherkinExampleRuleMap(gherkinDocument) {
+ return lodash_1.default.chain(gherkinDocument.feature.children)
+ .filter('rule')
+ .map('rule')
+ .map((rule) => {
+ return rule.children
+ .filter((child) => value_checker_1.doesHaveValue(child.scenario))
+ .map((child) => [child.scenario.id, rule]);
+ })
+ .flatten()
+ .fromPairs()
+ .value();
+}
+exports.getGherkinExampleRuleMap = getGherkinExampleRuleMap;
+function getGherkinScenarioLocationMap(gherkinDocument) {
+ const locationMap = {};
+ const scenarioMap = getGherkinScenarioMap(gherkinDocument);
+ lodash_1.default.entries(scenarioMap).forEach(([id, scenario]) => {
+ locationMap[id] = scenario.location;
+ if (value_checker_1.doesHaveValue(scenario.examples)) {
+ lodash_1.default.chain(scenario.examples)
+ .map('tableBody')
+ .flatten()
+ .forEach((tableRow) => {
+ locationMap[tableRow.id] = tableRow.location;
+ })
+ .value();
+ }
+ });
+ return locationMap;
+}
+exports.getGherkinScenarioLocationMap = getGherkinScenarioLocationMap;
+//# sourceMappingURL=gherkin_document_parser.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js.map
new file mode 100644
index 0000000..2a0b352
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"gherkin_document_parser.js","sourceRoot":"","sources":["../../../src/formatter/helpers/gherkin_document_parser.ts"],"names":[],"mappings":"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","sourcesContent":["import _, { Dictionary } from 'lodash'\nimport { messages } from '@cucumber/messages'\nimport { doesHaveValue } from '../../value_checker'\n\nexport function getGherkinStepMap(\n gherkinDocument: messages.IGherkinDocument\n): Dictionary {\n return _.chain(gherkinDocument.feature.children)\n .map(extractStepContainers)\n .flatten()\n .map('steps')\n .flatten()\n .map((step: messages.GherkinDocument.Feature.IStep) => [step.id, step])\n .fromPairs()\n .value()\n}\n\nfunction extractStepContainers(\n child: messages.GherkinDocument.Feature.IFeatureChild\n): Array<\n | messages.GherkinDocument.Feature.IScenario\n | messages.GherkinDocument.Feature.IBackground\n> {\n if (doesHaveValue(child.background)) {\n return [child.background]\n } else if (doesHaveValue(child.rule)) {\n return child.rule.children.map((ruleChild) =>\n doesHaveValue(ruleChild.background)\n ? ruleChild.background\n : ruleChild.scenario\n )\n }\n return [child.scenario]\n}\n\nexport function getGherkinScenarioMap(\n gherkinDocument: messages.IGherkinDocument\n): Dictionary {\n return _.chain(gherkinDocument.feature.children)\n .map((child: messages.GherkinDocument.Feature.IFeatureChild) => {\n if (doesHaveValue(child.rule)) {\n return child.rule.children\n }\n return [child]\n })\n .flatten()\n .filter('scenario')\n .map('scenario')\n .map((scenario: messages.GherkinDocument.Feature.IScenario) => [\n scenario.id,\n scenario,\n ])\n .fromPairs()\n .value()\n}\n\nexport function getGherkinExampleRuleMap(\n gherkinDocument: messages.IGherkinDocument\n): Dictionary {\n return _.chain(gherkinDocument.feature.children)\n .filter('rule')\n .map('rule')\n .map((rule) => {\n return rule.children\n .filter((child) => doesHaveValue(child.scenario))\n .map((child) => [child.scenario.id, rule])\n })\n .flatten()\n .fromPairs()\n .value()\n}\n\nexport function getGherkinScenarioLocationMap(\n gherkinDocument: messages.IGherkinDocument\n): Dictionary {\n const locationMap: Dictionary = {}\n const scenarioMap: Dictionary = getGherkinScenarioMap(\n gherkinDocument\n )\n _.entries(scenarioMap).forEach(\n ([id, scenario]) => {\n locationMap[id] = scenario.location\n if (doesHaveValue(scenario.examples)) {\n _.chain(scenario.examples)\n .map('tableBody')\n .flatten()\n .forEach((tableRow) => {\n locationMap[tableRow.id] = tableRow.location\n })\n .value()\n }\n }\n )\n return locationMap\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.d.ts
new file mode 100644
index 0000000..5295826
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.d.ts
@@ -0,0 +1,10 @@
+import * as GherkinDocumentParser from './gherkin_document_parser';
+import * as PickleParser from './pickle_parser';
+export { parseTestCaseAttempt } from './test_case_attempt_parser';
+export { default as EventDataCollector } from './event_data_collector';
+export { KeywordType, getStepKeywordType } from './keyword_type';
+export { formatIssue, isWarning, isFailure, isIssue } from './issue_helpers';
+export { formatLocation } from './location_helpers';
+export { formatSummary } from './summary_helpers';
+export { getUsage } from './usage_helpers';
+export { GherkinDocumentParser, PickleParser };
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js
new file mode 100644
index 0000000..73ffae1
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js
@@ -0,0 +1,48 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.PickleParser = exports.GherkinDocumentParser = exports.getUsage = exports.formatSummary = exports.formatLocation = exports.isIssue = exports.isFailure = exports.isWarning = exports.formatIssue = exports.getStepKeywordType = exports.KeywordType = exports.EventDataCollector = exports.parseTestCaseAttempt = void 0;
+const GherkinDocumentParser = __importStar(require("./gherkin_document_parser"));
+exports.GherkinDocumentParser = GherkinDocumentParser;
+const PickleParser = __importStar(require("./pickle_parser"));
+exports.PickleParser = PickleParser;
+var test_case_attempt_parser_1 = require("./test_case_attempt_parser");
+Object.defineProperty(exports, "parseTestCaseAttempt", { enumerable: true, get: function () { return test_case_attempt_parser_1.parseTestCaseAttempt; } });
+var event_data_collector_1 = require("./event_data_collector");
+Object.defineProperty(exports, "EventDataCollector", { enumerable: true, get: function () { return __importDefault(event_data_collector_1).default; } });
+var keyword_type_1 = require("./keyword_type");
+Object.defineProperty(exports, "KeywordType", { enumerable: true, get: function () { return keyword_type_1.KeywordType; } });
+Object.defineProperty(exports, "getStepKeywordType", { enumerable: true, get: function () { return keyword_type_1.getStepKeywordType; } });
+var issue_helpers_1 = require("./issue_helpers");
+Object.defineProperty(exports, "formatIssue", { enumerable: true, get: function () { return issue_helpers_1.formatIssue; } });
+Object.defineProperty(exports, "isWarning", { enumerable: true, get: function () { return issue_helpers_1.isWarning; } });
+Object.defineProperty(exports, "isFailure", { enumerable: true, get: function () { return issue_helpers_1.isFailure; } });
+Object.defineProperty(exports, "isIssue", { enumerable: true, get: function () { return issue_helpers_1.isIssue; } });
+var location_helpers_1 = require("./location_helpers");
+Object.defineProperty(exports, "formatLocation", { enumerable: true, get: function () { return location_helpers_1.formatLocation; } });
+var summary_helpers_1 = require("./summary_helpers");
+Object.defineProperty(exports, "formatSummary", { enumerable: true, get: function () { return summary_helpers_1.formatSummary; } });
+var usage_helpers_1 = require("./usage_helpers");
+Object.defineProperty(exports, "getUsage", { enumerable: true, get: function () { return usage_helpers_1.getUsage; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js.map
new file mode 100644
index 0000000..b02e01f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatter/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAkE;AAUzD,sDAAqB;AAT9B,8DAA+C;AASf,oCAAY;AAP5C,uEAAiE;AAAxD,gIAAA,oBAAoB,OAAA;AAC7B,+DAAsE;AAA7D,2IAAA,OAAO,OAAsB;AACtC,+CAAgE;AAAvD,2GAAA,WAAW,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AACxC,iDAA4E;AAAnE,4GAAA,WAAW,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,wGAAA,OAAO,OAAA;AACnD,uDAAmD;AAA1C,kHAAA,cAAc,OAAA;AACvB,qDAAiD;AAAxC,gHAAA,aAAa,OAAA;AACtB,iDAA0C;AAAjC,yGAAA,QAAQ,OAAA","sourcesContent":["import * as GherkinDocumentParser from './gherkin_document_parser'\nimport * as PickleParser from './pickle_parser'\n\nexport { parseTestCaseAttempt } from './test_case_attempt_parser'\nexport { default as EventDataCollector } from './event_data_collector'\nexport { KeywordType, getStepKeywordType } from './keyword_type'\nexport { formatIssue, isWarning, isFailure, isIssue } from './issue_helpers'\nexport { formatLocation } from './location_helpers'\nexport { formatSummary } from './summary_helpers'\nexport { getUsage } from './usage_helpers'\nexport { GherkinDocumentParser, PickleParser }\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.d.ts
new file mode 100644
index 0000000..342fd88
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.d.ts
@@ -0,0 +1,19 @@
+import { messages } from '@cucumber/messages';
+import { IColorFns } from '../get_color_fns';
+import StepDefinitionSnippetBuilder from '../step_definition_snippet_builder';
+import { ISupportCodeLibrary } from '../../support_code_library_builder/types';
+import { ITestCaseAttempt } from './event_data_collector';
+export declare function isFailure(result: messages.TestStepFinished.ITestStepResult): boolean;
+export declare function isWarning(result: messages.TestStepFinished.ITestStepResult): boolean;
+export declare function isIssue(result: messages.TestStepFinished.ITestStepResult): boolean;
+export interface IFormatIssueRequest {
+ colorFns: IColorFns;
+ cwd: string;
+ number: number;
+ snippetBuilder: StepDefinitionSnippetBuilder;
+ testCaseAttempt: ITestCaseAttempt;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+export declare function formatIssue({ colorFns, cwd, number, snippetBuilder, testCaseAttempt, supportCodeLibrary, }: IFormatIssueRequest): string;
+export declare function formatUndefinedParameterTypes(undefinedParameterTypes: messages.IUndefinedParameterType[]): string;
+export declare function formatUndefinedParameterType(parameterType: messages.IUndefinedParameterType): string;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js
new file mode 100644
index 0000000..4d21dc6
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js
@@ -0,0 +1,61 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.formatUndefinedParameterType = exports.formatUndefinedParameterTypes = exports.formatIssue = exports.isIssue = exports.isWarning = exports.isFailure = void 0;
+const indent_string_1 = __importDefault(require("indent-string"));
+const status_1 = __importDefault(require("../../status"));
+const test_case_attempt_formatter_1 = require("./test_case_attempt_formatter");
+function isFailure(result) {
+ return (result.status === status_1.default.AMBIGUOUS ||
+ result.status === status_1.default.UNDEFINED ||
+ (result.status === status_1.default.FAILED && !result.willBeRetried));
+}
+exports.isFailure = isFailure;
+function isWarning(result) {
+ return (result.status === status_1.default.PENDING ||
+ (result.status === status_1.default.FAILED && result.willBeRetried));
+}
+exports.isWarning = isWarning;
+function isIssue(result) {
+ return isFailure(result) || isWarning(result);
+}
+exports.isIssue = isIssue;
+function formatIssue({ colorFns, cwd, number, snippetBuilder, testCaseAttempt, supportCodeLibrary, }) {
+ const prefix = `${number.toString()}) `;
+ const formattedTestCaseAttempt = test_case_attempt_formatter_1.formatTestCaseAttempt({
+ colorFns,
+ cwd,
+ snippetBuilder,
+ testCaseAttempt,
+ supportCodeLibrary,
+ });
+ const lines = formattedTestCaseAttempt.split('\n');
+ const updatedLines = lines.map((line, index) => {
+ if (index === 0) {
+ return `${prefix}${line}`;
+ }
+ return indent_string_1.default(line, prefix.length);
+ });
+ return updatedLines.join('\n');
+}
+exports.formatIssue = formatIssue;
+function formatUndefinedParameterTypes(undefinedParameterTypes) {
+ const output = [`Undefined parameter types:\n\n`];
+ const withLatest = {};
+ undefinedParameterTypes.forEach((parameterType) => {
+ withLatest[parameterType.name] = parameterType;
+ });
+ output.push(Object.values(withLatest)
+ .map((parameterType) => `- ${formatUndefinedParameterType(parameterType)}`)
+ .join('\n'));
+ output.push('\n\n');
+ return output.join('');
+}
+exports.formatUndefinedParameterTypes = formatUndefinedParameterTypes;
+function formatUndefinedParameterType(parameterType) {
+ return `"${parameterType.name}" e.g. \`${parameterType.expression}\``;
+}
+exports.formatUndefinedParameterType = formatUndefinedParameterType;
+//# sourceMappingURL=issue_helpers.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js.map
new file mode 100644
index 0000000..2e3cf5d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/issue_helpers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"issue_helpers.js","sourceRoot":"","sources":["../../../src/formatter/helpers/issue_helpers.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAwC;AACxC,0DAAiC;AACjC,+EAAqE;AAQrE,SAAgB,SAAS,CACvB,MAAiD;IAEjD,OAAO,CACL,MAAM,CAAC,MAAM,KAAK,gBAAM,CAAC,SAAS;QAClC,MAAM,CAAC,MAAM,KAAK,gBAAM,CAAC,SAAS;QAClC,CAAC,MAAM,CAAC,MAAM,KAAK,gBAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3D,CAAA;AACH,CAAC;AARD,8BAQC;AAED,SAAgB,SAAS,CACvB,MAAiD;IAEjD,OAAO,CACL,MAAM,CAAC,MAAM,KAAK,gBAAM,CAAC,OAAO;QAChC,CAAC,MAAM,CAAC,MAAM,KAAK,gBAAM,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,CAC1D,CAAA;AACH,CAAC;AAPD,8BAOC;AAED,SAAgB,OAAO,CACrB,MAAiD;IAEjD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/C,CAAC;AAJD,0BAIC;AAWD,SAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,GAAG,EACH,MAAM,EACN,cAAc,EACd,eAAe,EACf,kBAAkB,GACE;IACpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAA;IACvC,MAAM,wBAAwB,GAAG,mDAAqB,CAAC;QACrD,QAAQ;QACR,GAAG;QACH,cAAc;QACd,eAAe;QACf,kBAAkB;KACnB,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAA;SAC1B;QACD,OAAO,uBAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAxBD,kCAwBC;AAED,SAAgB,6BAA6B,CAC3C,uBAA2D;IAE3D,MAAM,MAAM,GAAG,CAAC,gCAAgC,CAAC,CAAA;IACjD,MAAM,UAAU,GAAiD,EAAE,CAAA;IACnE,uBAAuB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QAChD,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAA;IAChD,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;SACtB,GAAG,CACF,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,4BAA4B,CAAC,aAAa,CAAC,EAAE,CACtE;SACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAA;IACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxB,CAAC;AAjBD,sEAiBC;AAED,SAAgB,4BAA4B,CAC1C,aAA+C;IAE/C,OAAO,IAAI,aAAa,CAAC,IAAI,YAAY,aAAa,CAAC,UAAU,IAAI,CAAA;AACvE,CAAC;AAJD,oEAIC","sourcesContent":["import indentString from 'indent-string'\nimport Status from '../../status'\nimport { formatTestCaseAttempt } from './test_case_attempt_formatter'\nimport { messages } from '@cucumber/messages'\nimport { IColorFns } from '../get_color_fns'\nimport StepDefinitionSnippetBuilder from '../step_definition_snippet_builder'\nimport { ISupportCodeLibrary } from '../../support_code_library_builder/types'\nimport { ITestCaseAttempt } from './event_data_collector'\nimport { Dictionary } from 'lodash'\n\nexport function isFailure(\n result: messages.TestStepFinished.ITestStepResult\n): boolean {\n return (\n result.status === Status.AMBIGUOUS ||\n result.status === Status.UNDEFINED ||\n (result.status === Status.FAILED && !result.willBeRetried)\n )\n}\n\nexport function isWarning(\n result: messages.TestStepFinished.ITestStepResult\n): boolean {\n return (\n result.status === Status.PENDING ||\n (result.status === Status.FAILED && result.willBeRetried)\n )\n}\n\nexport function isIssue(\n result: messages.TestStepFinished.ITestStepResult\n): boolean {\n return isFailure(result) || isWarning(result)\n}\n\nexport interface IFormatIssueRequest {\n colorFns: IColorFns\n cwd: string\n number: number\n snippetBuilder: StepDefinitionSnippetBuilder\n testCaseAttempt: ITestCaseAttempt\n supportCodeLibrary: ISupportCodeLibrary\n}\n\nexport function formatIssue({\n colorFns,\n cwd,\n number,\n snippetBuilder,\n testCaseAttempt,\n supportCodeLibrary,\n}: IFormatIssueRequest): string {\n const prefix = `${number.toString()}) `\n const formattedTestCaseAttempt = formatTestCaseAttempt({\n colorFns,\n cwd,\n snippetBuilder,\n testCaseAttempt,\n supportCodeLibrary,\n })\n const lines = formattedTestCaseAttempt.split('\\n')\n const updatedLines = lines.map((line, index) => {\n if (index === 0) {\n return `${prefix}${line}`\n }\n return indentString(line, prefix.length)\n })\n return updatedLines.join('\\n')\n}\n\nexport function formatUndefinedParameterTypes(\n undefinedParameterTypes: messages.IUndefinedParameterType[]\n): string {\n const output = [`Undefined parameter types:\\n\\n`]\n const withLatest: Dictionary = {}\n undefinedParameterTypes.forEach((parameterType) => {\n withLatest[parameterType.name] = parameterType\n })\n output.push(\n Object.values(withLatest)\n .map(\n (parameterType) => `- ${formatUndefinedParameterType(parameterType)}`\n )\n .join('\\n')\n )\n output.push('\\n\\n')\n return output.join('')\n}\n\nexport function formatUndefinedParameterType(\n parameterType: messages.IUndefinedParameterType\n): string {\n return `\"${parameterType.name}\" e.g. \\`${parameterType.expression}\\``\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.d.ts
new file mode 100644
index 0000000..e38f64e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.d.ts
@@ -0,0 +1,11 @@
+export declare enum KeywordType {
+ Precondition = "precondition",
+ Event = "event",
+ Outcome = "outcome"
+}
+export interface IGetStepKeywordTypeOptions {
+ keyword: string;
+ language: string;
+ previousKeywordType?: KeywordType;
+}
+export declare function getStepKeywordType({ keyword, language, previousKeywordType, }: IGetStepKeywordTypeOptions): KeywordType;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js
new file mode 100644
index 0000000..443805f
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js
@@ -0,0 +1,36 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getStepKeywordType = exports.KeywordType = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const gherkin_1 = require("@cucumber/gherkin");
+const value_checker_1 = require("../../value_checker");
+var KeywordType;
+(function (KeywordType) {
+ KeywordType["Precondition"] = "precondition";
+ KeywordType["Event"] = "event";
+ KeywordType["Outcome"] = "outcome";
+})(KeywordType = exports.KeywordType || (exports.KeywordType = {}));
+function getStepKeywordType({ keyword, language, previousKeywordType, }) {
+ const dialect = gherkin_1.dialects[language];
+ const stepKeywords = ['given', 'when', 'then', 'and', 'but'];
+ const type = lodash_1.default.find(stepKeywords, (key) => lodash_1.default.includes(dialect[key], keyword));
+ switch (type) {
+ case 'when':
+ return KeywordType.Event;
+ case 'then':
+ return KeywordType.Outcome;
+ case 'and':
+ case 'but':
+ if (value_checker_1.doesHaveValue(previousKeywordType)) {
+ return previousKeywordType;
+ }
+ // fallthrough
+ default:
+ return KeywordType.Precondition;
+ }
+}
+exports.getStepKeywordType = getStepKeywordType;
+//# sourceMappingURL=keyword_type.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js.map
new file mode 100644
index 0000000..bbc420d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/keyword_type.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"keyword_type.js","sourceRoot":"","sources":["../../../src/formatter/helpers/keyword_type.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsB;AACtB,+CAAqD;AACrD,uDAAmD;AAEnD,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,4CAA6B,CAAA;IAC7B,8BAAe,CAAA;IACf,kCAAmB,CAAA;AACrB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAQD,SAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,QAAQ,EACR,mBAAmB,GACQ;IAC3B,MAAM,OAAO,GAAY,kBAAQ,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;IACrE,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7E,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,KAAK,CAAA;QAC1B,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,OAAO,CAAA;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACR,IAAI,6BAAa,CAAC,mBAAmB,CAAC,EAAE;gBACtC,OAAO,mBAAmB,CAAA;aAC3B;QACH,cAAc;QACd;YACE,OAAO,WAAW,CAAC,YAAY,CAAA;KAClC;AACH,CAAC;AAtBD,gDAsBC","sourcesContent":["import _ from 'lodash'\nimport { Dialect, dialects } from '@cucumber/gherkin'\nimport { doesHaveValue } from '../../value_checker'\n\nexport enum KeywordType {\n Precondition = 'precondition',\n Event = 'event',\n Outcome = 'outcome',\n}\n\nexport interface IGetStepKeywordTypeOptions {\n keyword: string\n language: string\n previousKeywordType?: KeywordType\n}\n\nexport function getStepKeywordType({\n keyword,\n language,\n previousKeywordType,\n}: IGetStepKeywordTypeOptions): KeywordType {\n const dialect: Dialect = dialects[language]\n const stepKeywords = ['given', 'when', 'then', 'and', 'but'] as const\n const type = _.find(stepKeywords, (key) => _.includes(dialect[key], keyword))\n switch (type) {\n case 'when':\n return KeywordType.Event\n case 'then':\n return KeywordType.Outcome\n case 'and':\n case 'but':\n if (doesHaveValue(previousKeywordType)) {\n return previousKeywordType\n }\n // fallthrough\n default:\n return KeywordType.Precondition\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.d.ts
new file mode 100644
index 0000000..4936e2d
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.d.ts
@@ -0,0 +1,2 @@
+import { ILineAndUri } from '../../types';
+export declare function formatLocation(obj: ILineAndUri, cwd?: string): string;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js
new file mode 100644
index 0000000..0cd6487
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js
@@ -0,0 +1,17 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.formatLocation = void 0;
+const path_1 = __importDefault(require("path"));
+const value_checker_1 = require("../../value_checker");
+function formatLocation(obj, cwd) {
+ let uri = obj.uri;
+ if (value_checker_1.doesHaveValue(cwd)) {
+ uri = path_1.default.relative(cwd, uri);
+ }
+ return `${uri}:${obj.line.toString()}`;
+}
+exports.formatLocation = formatLocation;
+//# sourceMappingURL=location_helpers.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js.map
new file mode 100644
index 0000000..a66dc22
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/location_helpers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"location_helpers.js","sourceRoot":"","sources":["../../../src/formatter/helpers/location_helpers.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,uDAAmD;AAGnD,SAAgB,cAAc,CAAC,GAAgB,EAAE,GAAY;IAC3D,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IACjB,IAAI,6BAAa,CAAC,GAAG,CAAC,EAAE;QACtB,GAAG,GAAG,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC9B;IACD,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;AACxC,CAAC;AAND,wCAMC","sourcesContent":["import path from 'path'\nimport { doesHaveValue } from '../../value_checker'\nimport { ILineAndUri } from '../../types'\n\nexport function formatLocation(obj: ILineAndUri, cwd?: string): string {\n let uri = obj.uri\n if (doesHaveValue(cwd)) {\n uri = path.relative(cwd, uri)\n }\n return `${uri}:${obj.line.toString()}`\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.d.ts
new file mode 100644
index 0000000..96777cd
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.d.ts
@@ -0,0 +1,18 @@
+import { Dictionary } from 'lodash';
+import { messages } from '@cucumber/messages';
+export interface IGetPickleLocationRequest {
+ gherkinDocument: messages.IGherkinDocument;
+ pickle: messages.IPickle;
+}
+export interface IGetStepKeywordRequest {
+ pickleStep: messages.Pickle.IPickleStep;
+ gherkinStepMap: Dictionary;
+}
+export interface IGetScenarioDescriptionRequest {
+ pickle: messages.IPickle;
+ gherkinScenarioMap: Dictionary;
+}
+export declare function getScenarioDescription({ pickle, gherkinScenarioMap, }: IGetScenarioDescriptionRequest): string;
+export declare function getStepKeyword({ pickleStep, gherkinStepMap, }: IGetStepKeywordRequest): string;
+export declare function getPickleStepMap(pickle: messages.IPickle): Dictionary;
+export declare function getPickleLocation({ gherkinDocument, pickle, }: IGetPickleLocationRequest): messages.ILocation;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js
new file mode 100644
index 0000000..6a41f16
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js
@@ -0,0 +1,37 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getPickleLocation = exports.getPickleStepMap = exports.getStepKeyword = exports.getScenarioDescription = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const gherkin_document_parser_1 = require("./gherkin_document_parser");
+function getScenarioDescription({ pickle, gherkinScenarioMap, }) {
+ return lodash_1.default.chain(pickle.astNodeIds)
+ .map((id) => gherkinScenarioMap[id])
+ .compact()
+ .first()
+ .value().description;
+}
+exports.getScenarioDescription = getScenarioDescription;
+function getStepKeyword({ pickleStep, gherkinStepMap, }) {
+ return lodash_1.default.chain(pickleStep.astNodeIds)
+ .map((id) => gherkinStepMap[id])
+ .compact()
+ .first()
+ .value().keyword;
+}
+exports.getStepKeyword = getStepKeyword;
+function getPickleStepMap(pickle) {
+ return lodash_1.default.chain(pickle.steps)
+ .map((pickleStep) => [pickleStep.id, pickleStep])
+ .fromPairs()
+ .value();
+}
+exports.getPickleStepMap = getPickleStepMap;
+function getPickleLocation({ gherkinDocument, pickle, }) {
+ const gherkinScenarioLocationMap = gherkin_document_parser_1.getGherkinScenarioLocationMap(gherkinDocument);
+ return gherkinScenarioLocationMap[lodash_1.default.last(pickle.astNodeIds)];
+}
+exports.getPickleLocation = getPickleLocation;
+//# sourceMappingURL=pickle_parser.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js.map
new file mode 100644
index 0000000..fb57267
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/pickle_parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pickle_parser.js","sourceRoot":"","sources":["../../../src/formatter/helpers/pickle_parser.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsC;AACtC,uEAAyE;AAkBzE,SAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,kBAAkB,GACa;IAC/B,OAAO,gBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;SAC9B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;SACnC,OAAO,EAAE;SACT,KAAK,EAAE;SACP,KAAK,EAAE,CAAC,WAAW,CAAA;AACxB,CAAC;AATD,wDASC;AAED,SAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,cAAc,GACS;IACvB,OAAO,gBAAC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SAC/B,OAAO,EAAE;SACT,KAAK,EAAE;SACP,KAAK,EAAE,CAAC,OAAO,CAAA;AACpB,CAAC;AATD,wCASC;AAED,SAAgB,gBAAgB,CAC9B,MAAwB;IAExB,OAAO,gBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SAChD,SAAS,EAAE;SACX,KAAK,EAAE,CAAA;AACZ,CAAC;AAPD,4CAOC;AAED,SAAgB,iBAAiB,CAAC,EAChC,eAAe,EACf,MAAM,GACoB;IAC1B,MAAM,0BAA0B,GAAG,uDAA6B,CAC9D,eAAe,CAChB,CAAA;IACD,OAAO,0BAA0B,CAAC,gBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;AAC9D,CAAC;AARD,8CAQC","sourcesContent":["import _, { Dictionary } from 'lodash'\nimport { getGherkinScenarioLocationMap } from './gherkin_document_parser'\nimport { messages } from '@cucumber/messages'\n\nexport interface IGetPickleLocationRequest {\n gherkinDocument: messages.IGherkinDocument\n pickle: messages.IPickle\n}\n\nexport interface IGetStepKeywordRequest {\n pickleStep: messages.Pickle.IPickleStep\n gherkinStepMap: Dictionary\n}\n\nexport interface IGetScenarioDescriptionRequest {\n pickle: messages.IPickle\n gherkinScenarioMap: Dictionary\n}\n\nexport function getScenarioDescription({\n pickle,\n gherkinScenarioMap,\n}: IGetScenarioDescriptionRequest): string {\n return _.chain(pickle.astNodeIds)\n .map((id) => gherkinScenarioMap[id])\n .compact()\n .first()\n .value().description\n}\n\nexport function getStepKeyword({\n pickleStep,\n gherkinStepMap,\n}: IGetStepKeywordRequest): string {\n return _.chain(pickleStep.astNodeIds)\n .map((id) => gherkinStepMap[id])\n .compact()\n .first()\n .value().keyword\n}\n\nexport function getPickleStepMap(\n pickle: messages.IPickle\n): Dictionary {\n return _.chain(pickle.steps)\n .map((pickleStep) => [pickleStep.id, pickleStep])\n .fromPairs()\n .value()\n}\n\nexport function getPickleLocation({\n gherkinDocument,\n pickle,\n}: IGetPickleLocationRequest): messages.ILocation {\n const gherkinScenarioLocationMap = getGherkinScenarioLocationMap(\n gherkinDocument\n )\n return gherkinScenarioLocationMap[_.last(pickle.astNodeIds)]\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.d.ts
new file mode 100644
index 0000000..7995c31
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.d.ts
@@ -0,0 +1,2 @@
+import { messages } from '@cucumber/messages';
+export declare function formatStepArgument(arg: messages.IPickleStepArgument): string;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js
new file mode 100644
index 0000000..9423a71
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js
@@ -0,0 +1,48 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.formatStepArgument = void 0;
+const cli_table3_1 = __importDefault(require("cli-table3"));
+const step_arguments_1 = require("../../step_arguments");
+function formatDataTable(dataTable) {
+ const table = new cli_table3_1.default({
+ chars: {
+ bottom: '',
+ 'bottom-left': '',
+ 'bottom-mid': '',
+ 'bottom-right': '',
+ left: '|',
+ 'left-mid': '',
+ mid: '',
+ 'mid-mid': '',
+ middle: '|',
+ right: '|',
+ 'right-mid': '',
+ top: '',
+ 'top-left': '',
+ 'top-mid': '',
+ 'top-right': '',
+ },
+ style: {
+ border: [],
+ 'padding-left': 1,
+ 'padding-right': 1,
+ },
+ });
+ const rows = dataTable.rows.map((row) => row.cells.map((cell) => cell.value.replace(/\\/g, '\\\\').replace(/\n/g, '\\n')));
+ table.push(...rows);
+ return table.toString();
+}
+function formatDocString(docString) {
+ return `"""\n${docString.content}\n"""`;
+}
+function formatStepArgument(arg) {
+ return step_arguments_1.parseStepArgument(arg, {
+ dataTable: formatDataTable,
+ docString: formatDocString,
+ });
+}
+exports.formatStepArgument = formatStepArgument;
+//# sourceMappingURL=step_argument_formatter.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js.map
new file mode 100644
index 0000000..994cbbf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/step_argument_formatter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"step_argument_formatter.js","sourceRoot":"","sources":["../../../src/formatter/helpers/step_argument_formatter.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA8B;AAC9B,yDAAwD;AAGxD,SAAS,eAAe,CACtB,SAAmD;IAEnD,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;QACtB,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,EAAE;YACd,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,EAAE;YACf,GAAG,EAAE,EAAE;YACP,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;SAChB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;SACnB;KACF,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACxD,CACF,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACnB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,eAAe,CACtB,SAAuD;IAEvD,OAAO,QAAQ,SAAS,CAAC,OAAO,OAAO,CAAA;AACzC,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAiC;IAClE,OAAO,kCAAiB,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAA;AACJ,CAAC;AALD,gDAKC","sourcesContent":["import Table from 'cli-table3'\nimport { parseStepArgument } from '../../step_arguments'\nimport { messages } from '@cucumber/messages'\n\nfunction formatDataTable(\n dataTable: messages.PickleStepArgument.IPickleTable\n): string {\n const table = new Table({\n chars: {\n bottom: '',\n 'bottom-left': '',\n 'bottom-mid': '',\n 'bottom-right': '',\n left: '|',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n middle: '|',\n right: '|',\n 'right-mid': '',\n top: '',\n 'top-left': '',\n 'top-mid': '',\n 'top-right': '',\n },\n style: {\n border: [],\n 'padding-left': 1,\n 'padding-right': 1,\n },\n })\n const rows = dataTable.rows.map((row) =>\n row.cells.map((cell) =>\n cell.value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n')\n )\n )\n table.push(...rows)\n return table.toString()\n}\n\nfunction formatDocString(\n docString: messages.PickleStepArgument.IPickleDocString\n): string {\n return `\"\"\"\\n${docString.content}\\n\"\"\"`\n}\n\nexport function formatStepArgument(arg: messages.IPickleStepArgument): string {\n return parseStepArgument(arg, {\n dataTable: formatDataTable,\n docString: formatDocString,\n })\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.d.ts
new file mode 100644
index 0000000..ce0de84
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.d.ts
@@ -0,0 +1,9 @@
+import { IColorFns } from '../get_color_fns';
+import { ITestCaseAttempt } from './event_data_collector';
+import { messages } from '@cucumber/messages';
+export interface IFormatSummaryRequest {
+ colorFns: IColorFns;
+ testCaseAttempts: ITestCaseAttempt[];
+ testRunDuration: messages.IDuration;
+}
+export declare function formatSummary({ colorFns, testCaseAttempts, testRunDuration, }: IFormatSummaryRequest): string;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js
new file mode 100644
index 0000000..77a0677
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js
@@ -0,0 +1,73 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.formatSummary = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const duration_1 = __importDefault(require("duration"));
+const status_1 = __importDefault(require("../../status"));
+const time_1 = require("../../time");
+const messages_1 = require("@cucumber/messages");
+const STATUS_REPORT_ORDER = [
+ status_1.default.FAILED,
+ status_1.default.AMBIGUOUS,
+ status_1.default.UNDEFINED,
+ status_1.default.PENDING,
+ status_1.default.SKIPPED,
+ status_1.default.PASSED,
+];
+function formatSummary({ colorFns, testCaseAttempts, testRunDuration, }) {
+ const testCaseResults = [];
+ const testStepResults = [];
+ let totalStepDuration = time_1.getZeroDuration();
+ testCaseAttempts.forEach(({ testCase, worstTestStepResult, stepResults }) => {
+ Object.values(stepResults).forEach((stepResult) => {
+ totalStepDuration = time_1.addDurations(totalStepDuration, stepResult.duration);
+ });
+ if (!worstTestStepResult.willBeRetried) {
+ testCaseResults.push(worstTestStepResult);
+ lodash_1.default.each(testCase.testSteps, (testStep) => {
+ if (testStep.pickleStepId !== '') {
+ testStepResults.push(stepResults[testStep.id]);
+ }
+ });
+ }
+ });
+ const scenarioSummary = getCountSummary({
+ colorFns,
+ objects: testCaseResults,
+ type: 'scenario',
+ });
+ const stepSummary = getCountSummary({
+ colorFns,
+ objects: testStepResults,
+ type: 'step',
+ });
+ const durationSummary = `${getDurationSummary(testRunDuration)} (executing steps: ${getDurationSummary(totalStepDuration)})\n`;
+ return [scenarioSummary, stepSummary, durationSummary].join('\n');
+}
+exports.formatSummary = formatSummary;
+function getCountSummary({ colorFns, objects, type, }) {
+ const counts = lodash_1.default.chain(objects).groupBy('status').mapValues('length').value();
+ const total = lodash_1.default.chain(counts).values().sum().value();
+ let text = `${total.toString()} ${type}${total === 1 ? '' : 's'}`;
+ if (total > 0) {
+ const details = [];
+ STATUS_REPORT_ORDER.forEach((status) => {
+ if (counts[status] > 0) {
+ details.push(colorFns.forStatus(status)(`${counts[status].toString()} ${status_1.default[status].toLowerCase()}`));
+ }
+ });
+ text += ` (${details.join(', ')})`;
+ }
+ return text;
+}
+function getDurationSummary(durationMsg) {
+ const start = new Date(0);
+ const end = new Date(messages_1.TimeConversion.durationToMilliseconds(durationMsg));
+ const duration = new duration_1.default(start, end);
+ // Use spaces in toString method for readability and to avoid %Ls which is a format
+ return duration.toString('%Ms m %S . %L s').replace(/ /g, '');
+}
+//# sourceMappingURL=summary_helpers.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js.map
new file mode 100644
index 0000000..a7baa23
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/summary_helpers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"summary_helpers.js","sourceRoot":"","sources":["../../../src/formatter/helpers/summary_helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash'\nimport Duration from 'duration'\nimport Status from '../../status'\nimport { addDurations, getZeroDuration } from '../../time'\nimport { IColorFns } from '../get_color_fns'\nimport { ITestCaseAttempt } from './event_data_collector'\nimport { messages, TimeConversion } from '@cucumber/messages'\n\nconst STATUS_REPORT_ORDER = [\n Status.FAILED,\n Status.AMBIGUOUS,\n Status.UNDEFINED,\n Status.PENDING,\n Status.SKIPPED,\n Status.PASSED,\n]\n\nexport interface IFormatSummaryRequest {\n colorFns: IColorFns\n testCaseAttempts: ITestCaseAttempt[]\n testRunDuration: messages.IDuration\n}\n\nexport function formatSummary({\n colorFns,\n testCaseAttempts,\n testRunDuration,\n}: IFormatSummaryRequest): string {\n const testCaseResults: messages.TestStepFinished.ITestStepResult[] = []\n const testStepResults: messages.TestStepFinished.ITestStepResult[] = []\n let totalStepDuration = getZeroDuration()\n testCaseAttempts.forEach(({ testCase, worstTestStepResult, stepResults }) => {\n Object.values(stepResults).forEach((stepResult) => {\n totalStepDuration = addDurations(totalStepDuration, stepResult.duration)\n })\n if (!worstTestStepResult.willBeRetried) {\n testCaseResults.push(worstTestStepResult)\n _.each(testCase.testSteps, (testStep) => {\n if (testStep.pickleStepId !== '') {\n testStepResults.push(stepResults[testStep.id])\n }\n })\n }\n })\n const scenarioSummary = getCountSummary({\n colorFns,\n objects: testCaseResults,\n type: 'scenario',\n })\n const stepSummary = getCountSummary({\n colorFns,\n objects: testStepResults,\n type: 'step',\n })\n const durationSummary = `${getDurationSummary(\n testRunDuration\n )} (executing steps: ${getDurationSummary(totalStepDuration)})\\n`\n return [scenarioSummary, stepSummary, durationSummary].join('\\n')\n}\n\ninterface IGetCountSummaryRequest {\n colorFns: IColorFns\n objects: messages.TestStepFinished.ITestStepResult[]\n type: string\n}\n\nfunction getCountSummary({\n colorFns,\n objects,\n type,\n}: IGetCountSummaryRequest): string {\n const counts = _.chain(objects).groupBy('status').mapValues('length').value()\n const total = _.chain(counts).values().sum().value()\n let text = `${total.toString()} ${type}${total === 1 ? '' : 's'}`\n if (total > 0) {\n const details: string[] = []\n STATUS_REPORT_ORDER.forEach((status) => {\n if (counts[status] > 0) {\n details.push(\n colorFns.forStatus(status)(\n `${counts[status].toString()} ${Status[status].toLowerCase()}`\n )\n )\n }\n })\n text += ` (${details.join(', ')})`\n }\n return text\n}\n\nfunction getDurationSummary(durationMsg: messages.IDuration): string {\n const start = new Date(0)\n const end = new Date(TimeConversion.durationToMilliseconds(durationMsg))\n const duration = new Duration(start, end)\n // Use spaces in toString method for readability and to avoid %Ls which is a format\n return duration.toString('%Ms m %S . %L s').replace(/ /g, '')\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.d.ts
new file mode 100644
index 0000000..70fe250
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.d.ts
@@ -0,0 +1,12 @@
+import { IColorFns } from '../get_color_fns';
+import { ITestCaseAttempt } from './event_data_collector';
+import StepDefinitionSnippetBuilder from '../step_definition_snippet_builder';
+import { ISupportCodeLibrary } from '../../support_code_library_builder/types';
+export interface IFormatTestCaseAttemptRequest {
+ colorFns: IColorFns;
+ cwd: string;
+ testCaseAttempt: ITestCaseAttempt;
+ snippetBuilder: StepDefinitionSnippetBuilder;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+export declare function formatTestCaseAttempt({ colorFns, cwd, snippetBuilder, supportCodeLibrary, testCaseAttempt, }: IFormatTestCaseAttemptRequest): string;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js
new file mode 100644
index 0000000..1e67d6e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js
@@ -0,0 +1,81 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.formatTestCaseAttempt = void 0;
+const indent_string_1 = __importDefault(require("indent-string"));
+const status_1 = __importDefault(require("../../status"));
+const figures_1 = __importDefault(require("figures"));
+const location_helpers_1 = require("./location_helpers");
+const test_case_attempt_parser_1 = require("./test_case_attempt_parser");
+const step_argument_formatter_1 = require("./step_argument_formatter");
+const value_checker_1 = require("../../value_checker");
+const CHARACTERS = {
+ [status_1.default.AMBIGUOUS]: figures_1.default.cross,
+ [status_1.default.FAILED]: figures_1.default.cross,
+ [status_1.default.PASSED]: figures_1.default.tick,
+ [status_1.default.PENDING]: '?',
+ [status_1.default.SKIPPED]: '-',
+ [status_1.default.UNDEFINED]: '?',
+};
+function getStepMessage(testStep) {
+ switch (testStep.result.status) {
+ case status_1.default.AMBIGUOUS:
+ case status_1.default.FAILED:
+ return testStep.result.message;
+ case status_1.default.UNDEFINED:
+ return `${'Undefined. Implement with the following snippet:' + '\n\n'}${indent_string_1.default(testStep.snippet, 2)}\n`;
+ case status_1.default.PENDING:
+ return 'Pending';
+ }
+ return '';
+}
+function formatStep({ colorFns, testStep }) {
+ const { result: { status }, actionLocation, attachments, } = testStep;
+ const colorFn = colorFns.forStatus(status);
+ const identifier = testStep.keyword + value_checker_1.valueOrDefault(testStep.text, '');
+ let text = colorFn(`${CHARACTERS[status]} ${identifier}`);
+ if (value_checker_1.doesHaveValue(actionLocation)) {
+ text += ` # ${colorFns.location(location_helpers_1.formatLocation(actionLocation))}`;
+ }
+ text += '\n';
+ if (value_checker_1.doesHaveValue(testStep.argument)) {
+ const argumentsText = step_argument_formatter_1.formatStepArgument(testStep.argument);
+ text += indent_string_1.default(`${colorFn(argumentsText)}\n`, 4);
+ }
+ attachments.forEach(({ body, mediaType }) => {
+ const message = mediaType === 'text/plain' ? `: ${body}` : '';
+ text += indent_string_1.default(`Attachment (${mediaType})${message}\n`, 4);
+ });
+ const message = getStepMessage(testStep);
+ if (message !== '') {
+ text += `${indent_string_1.default(colorFn(message), 4)}\n`;
+ }
+ return text;
+}
+function formatTestCaseAttempt({ colorFns, cwd, snippetBuilder, supportCodeLibrary, testCaseAttempt, }) {
+ const parsed = test_case_attempt_parser_1.parseTestCaseAttempt({
+ cwd,
+ snippetBuilder,
+ testCaseAttempt,
+ supportCodeLibrary,
+ });
+ let text = `Scenario: ${parsed.testCase.name}`;
+ text += getAttemptText(parsed.testCase.attempt, parsed.testCase.worstTestStepResult.willBeRetried);
+ text += ` # ${colorFns.location(location_helpers_1.formatLocation(parsed.testCase.sourceLocation))}\n`;
+ parsed.testSteps.forEach((testStep) => {
+ text += formatStep({ colorFns, testStep });
+ });
+ return `${text}\n`;
+}
+exports.formatTestCaseAttempt = formatTestCaseAttempt;
+function getAttemptText(attempt, willBeRetried) {
+ if (attempt > 0 || willBeRetried) {
+ const numberStr = (attempt + 1).toString();
+ const retriedStr = willBeRetried ? ', retried' : '';
+ return ` (attempt ${numberStr}${retriedStr})`;
+ }
+ return '';
+}
+//# sourceMappingURL=test_case_attempt_formatter.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js.map
new file mode 100644
index 0000000..834ba56
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_formatter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"test_case_attempt_formatter.js","sourceRoot":"","sources":["../../../src/formatter/helpers/test_case_attempt_formatter.ts"],"names":[],"mappings":"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","sourcesContent":["import indentString from 'indent-string'\nimport Status from '../../status'\nimport figures from 'figures'\nimport { formatLocation } from './location_helpers'\nimport {\n IParsedTestStep,\n parseTestCaseAttempt,\n} from './test_case_attempt_parser'\nimport { formatStepArgument } from './step_argument_formatter'\nimport { IColorFns } from '../get_color_fns'\nimport { doesHaveValue, valueOrDefault } from '../../value_checker'\nimport { ITestCaseAttempt } from './event_data_collector'\nimport StepDefinitionSnippetBuilder from '../step_definition_snippet_builder'\nimport { ISupportCodeLibrary } from '../../support_code_library_builder/types'\n\nconst CHARACTERS: { [status: number]: string } = {\n [Status.AMBIGUOUS]: figures.cross,\n [Status.FAILED]: figures.cross,\n [Status.PASSED]: figures.tick,\n [Status.PENDING]: '?',\n [Status.SKIPPED]: '-',\n [Status.UNDEFINED]: '?',\n}\n\nfunction getStepMessage(testStep: IParsedTestStep): string {\n switch (testStep.result.status) {\n case Status.AMBIGUOUS:\n case Status.FAILED:\n return testStep.result.message\n case Status.UNDEFINED:\n return `${\n 'Undefined. Implement with the following snippet:' + '\\n\\n'\n }${indentString(testStep.snippet, 2)}\\n`\n case Status.PENDING:\n return 'Pending'\n }\n return ''\n}\n\ninterface IFormatStepRequest {\n colorFns: IColorFns\n testStep: IParsedTestStep\n}\n\nfunction formatStep({ colorFns, testStep }: IFormatStepRequest): string {\n const {\n result: { status },\n actionLocation,\n attachments,\n } = testStep\n const colorFn = colorFns.forStatus(status)\n const identifier = testStep.keyword + valueOrDefault(testStep.text, '')\n let text = colorFn(`${CHARACTERS[status]} ${identifier}`)\n if (doesHaveValue(actionLocation)) {\n text += ` # ${colorFns.location(formatLocation(actionLocation))}`\n }\n text += '\\n'\n if (doesHaveValue(testStep.argument)) {\n const argumentsText = formatStepArgument(testStep.argument)\n text += indentString(`${colorFn(argumentsText)}\\n`, 4)\n }\n attachments.forEach(({ body, mediaType }) => {\n const message = mediaType === 'text/plain' ? `: ${body}` : ''\n text += indentString(`Attachment (${mediaType})${message}\\n`, 4)\n })\n const message = getStepMessage(testStep)\n if (message !== '') {\n text += `${indentString(colorFn(message), 4)}\\n`\n }\n return text\n}\n\nexport interface IFormatTestCaseAttemptRequest {\n colorFns: IColorFns\n cwd: string\n testCaseAttempt: ITestCaseAttempt\n snippetBuilder: StepDefinitionSnippetBuilder\n supportCodeLibrary: ISupportCodeLibrary\n}\n\nexport function formatTestCaseAttempt({\n colorFns,\n cwd,\n snippetBuilder,\n supportCodeLibrary,\n testCaseAttempt,\n}: IFormatTestCaseAttemptRequest): string {\n const parsed = parseTestCaseAttempt({\n cwd,\n snippetBuilder,\n testCaseAttempt,\n supportCodeLibrary,\n })\n let text = `Scenario: ${parsed.testCase.name}`\n text += getAttemptText(\n parsed.testCase.attempt,\n parsed.testCase.worstTestStepResult.willBeRetried\n )\n text += ` # ${colorFns.location(\n formatLocation(parsed.testCase.sourceLocation)\n )}\\n`\n parsed.testSteps.forEach((testStep) => {\n text += formatStep({ colorFns, testStep })\n })\n return `${text}\\n`\n}\n\nfunction getAttemptText(attempt: number, willBeRetried: boolean): string {\n if (attempt > 0 || willBeRetried) {\n const numberStr = (attempt + 1).toString()\n const retriedStr = willBeRetried ? ', retried' : ''\n return ` (attempt ${numberStr}${retriedStr})`\n }\n return ''\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.d.ts
new file mode 100644
index 0000000..27649ba
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.d.ts
@@ -0,0 +1,32 @@
+import { messages } from '@cucumber/messages';
+import { ITestCaseAttempt } from './event_data_collector';
+import StepDefinitionSnippetBuilder from '../step_definition_snippet_builder';
+import { ISupportCodeLibrary } from '../../support_code_library_builder/types';
+import { ILineAndUri } from '../../types';
+export interface IParsedTestStep {
+ actionLocation?: ILineAndUri;
+ argument?: messages.IPickleStepArgument;
+ attachments: messages.IAttachment[];
+ keyword: string;
+ result: messages.TestStepFinished.ITestStepResult;
+ snippet?: string;
+ sourceLocation?: ILineAndUri;
+ text?: string;
+}
+export interface IParsedTestCase {
+ attempt: number;
+ name: string;
+ sourceLocation?: ILineAndUri;
+ worstTestStepResult: messages.TestStepFinished.ITestStepResult;
+}
+export interface IParsedTestCaseAttempt {
+ testCase: IParsedTestCase;
+ testSteps: IParsedTestStep[];
+}
+export interface IParseTestCaseAttemptRequest {
+ cwd: string;
+ testCaseAttempt: ITestCaseAttempt;
+ snippetBuilder: StepDefinitionSnippetBuilder;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+export declare function parseTestCaseAttempt({ cwd, testCaseAttempt, snippetBuilder, supportCodeLibrary, }: IParseTestCaseAttemptRequest): IParsedTestCaseAttempt;
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js
new file mode 100644
index 0000000..38f1f99
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js
@@ -0,0 +1,115 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parseTestCaseAttempt = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const status_1 = __importDefault(require("../../status"));
+const keyword_type_1 = require("./keyword_type");
+const gherkin_document_parser_1 = require("./gherkin_document_parser");
+const pickle_parser_1 = require("./pickle_parser");
+const path_1 = __importDefault(require("path"));
+const value_checker_1 = require("../../value_checker");
+function parseStep({ isBeforeHook, gherkinStepMap, keyword, keywordType, pickleStep, pickleUri, snippetBuilder, supportCodeLibrary, testStep, testStepResult, testStepAttachments, }) {
+ const out = {
+ attachments: testStepAttachments,
+ keyword: testStep.pickleStepId !== ''
+ ? keyword
+ : isBeforeHook
+ ? 'Before'
+ : 'After',
+ result: testStepResult,
+ };
+ if (testStep.hookId !== '') {
+ let hookDefinition;
+ if (isBeforeHook) {
+ hookDefinition = supportCodeLibrary.beforeTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
+ }
+ else {
+ hookDefinition = supportCodeLibrary.afterTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
+ }
+ out.actionLocation = {
+ uri: hookDefinition.uri,
+ line: hookDefinition.line,
+ };
+ }
+ if (value_checker_1.doesHaveValue(testStep.stepDefinitionIds) &&
+ testStep.stepDefinitionIds.length === 1) {
+ const stepDefinition = supportCodeLibrary.stepDefinitions.find((x) => x.id === testStep.stepDefinitionIds[0]);
+ out.actionLocation = {
+ uri: stepDefinition.uri,
+ line: stepDefinition.line,
+ };
+ }
+ if (testStep.pickleStepId !== '') {
+ out.sourceLocation = {
+ uri: pickleUri,
+ line: gherkinStepMap[pickleStep.astNodeIds[0]].location.line,
+ };
+ out.text = pickleStep.text;
+ if (value_checker_1.doesHaveValue(pickleStep.argument)) {
+ out.argument = pickleStep.argument;
+ }
+ }
+ if (testStepResult.status === status_1.default.UNDEFINED) {
+ out.snippet = snippetBuilder.build({ keywordType, pickleStep });
+ }
+ return out;
+}
+// Converts a testCaseAttempt into a json object with all data needed for
+// displaying it in a pretty format
+function parseTestCaseAttempt({ cwd, testCaseAttempt, snippetBuilder, supportCodeLibrary, }) {
+ const { testCase, pickle, gherkinDocument } = testCaseAttempt;
+ const gherkinStepMap = gherkin_document_parser_1.getGherkinStepMap(gherkinDocument);
+ const gherkinScenarioLocationMap = gherkin_document_parser_1.getGherkinScenarioLocationMap(gherkinDocument);
+ const pickleStepMap = pickle_parser_1.getPickleStepMap(pickle);
+ const relativePickleUri = path_1.default.relative(cwd, pickle.uri);
+ const parsedTestCase = {
+ attempt: testCaseAttempt.attempt,
+ name: pickle.name,
+ sourceLocation: {
+ uri: relativePickleUri,
+ line: gherkinScenarioLocationMap[lodash_1.default.last(pickle.astNodeIds)].line,
+ },
+ worstTestStepResult: testCaseAttempt.worstTestStepResult,
+ };
+ const parsedTestSteps = [];
+ let isBeforeHook = true;
+ let previousKeywordType = keyword_type_1.KeywordType.Precondition;
+ lodash_1.default.each(testCase.testSteps, (testStep) => {
+ const testStepResult = testCaseAttempt.stepResults[testStep.id];
+ isBeforeHook = isBeforeHook && testStep.hookId !== '';
+ let keyword, keywordType, pickleStep;
+ if (testStep.pickleStepId !== '') {
+ pickleStep = pickleStepMap[testStep.pickleStepId];
+ keyword = pickle_parser_1.getStepKeyword({ pickleStep, gherkinStepMap });
+ keywordType = keyword_type_1.getStepKeywordType({
+ keyword,
+ language: gherkinDocument.feature.language,
+ previousKeywordType,
+ });
+ }
+ const parsedStep = parseStep({
+ isBeforeHook,
+ gherkinStepMap,
+ keyword,
+ keywordType,
+ pickleStep,
+ pickleUri: relativePickleUri,
+ snippetBuilder,
+ supportCodeLibrary,
+ testStep,
+ testStepResult,
+ testStepAttachments: value_checker_1.valueOrDefault(testCaseAttempt.stepAttachments[testStep.id], []),
+ });
+ parsedTestSteps.push(parsedStep);
+ previousKeywordType = keywordType;
+ });
+ return {
+ testCase: parsedTestCase,
+ testSteps: parsedTestSteps,
+ };
+}
+exports.parseTestCaseAttempt = parseTestCaseAttempt;
+//# sourceMappingURL=test_case_attempt_parser.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js.map
new file mode 100644
index 0000000..f3cf4d9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/test_case_attempt_parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"test_case_attempt_parser.js","sourceRoot":"","sources":["../../../src/formatter/helpers/test_case_attempt_parser.ts"],"names":[],"mappings":"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","sourcesContent":["import _, { Dictionary } from 'lodash'\nimport Status from '../../status'\nimport { getStepKeywordType, KeywordType } from './keyword_type'\nimport {\n getGherkinScenarioLocationMap,\n getGherkinStepMap,\n} from './gherkin_document_parser'\nimport { getPickleStepMap, getStepKeyword } from './pickle_parser'\nimport path from 'path'\nimport { messages } from '@cucumber/messages'\nimport { ITestCaseAttempt } from './event_data_collector'\nimport StepDefinitionSnippetBuilder from '../step_definition_snippet_builder'\nimport { ISupportCodeLibrary } from '../../support_code_library_builder/types'\nimport { doesHaveValue, valueOrDefault } from '../../value_checker'\nimport TestCaseHookDefinition from '../../models/test_case_hook_definition'\nimport { ILineAndUri } from '../../types'\n\nexport interface IParsedTestStep {\n actionLocation?: ILineAndUri\n argument?: messages.IPickleStepArgument\n attachments: messages.IAttachment[]\n keyword: string\n result: messages.TestStepFinished.ITestStepResult\n snippet?: string\n sourceLocation?: ILineAndUri\n text?: string\n}\n\nexport interface IParsedTestCase {\n attempt: number\n name: string\n sourceLocation?: ILineAndUri\n worstTestStepResult: messages.TestStepFinished.ITestStepResult\n}\n\nexport interface IParsedTestCaseAttempt {\n testCase: IParsedTestCase\n testSteps: IParsedTestStep[]\n}\n\ninterface IParseStepRequest {\n isBeforeHook: boolean\n gherkinStepMap: Dictionary\n keyword: string\n keywordType: KeywordType\n pickleStep: messages.Pickle.IPickleStep\n pickleUri: string\n snippetBuilder: StepDefinitionSnippetBuilder\n supportCodeLibrary: ISupportCodeLibrary\n testStep: messages.TestCase.ITestStep\n testStepResult: messages.TestStepFinished.ITestStepResult\n testStepAttachments: messages.IAttachment[]\n}\n\nfunction parseStep({\n isBeforeHook,\n gherkinStepMap,\n keyword,\n keywordType,\n pickleStep,\n pickleUri,\n snippetBuilder,\n supportCodeLibrary,\n testStep,\n testStepResult,\n testStepAttachments,\n}: IParseStepRequest): IParsedTestStep {\n const out: IParsedTestStep = {\n attachments: testStepAttachments,\n keyword:\n testStep.pickleStepId !== ''\n ? keyword\n : isBeforeHook\n ? 'Before'\n : 'After',\n result: testStepResult,\n }\n if (testStep.hookId !== '') {\n let hookDefinition: TestCaseHookDefinition\n if (isBeforeHook) {\n hookDefinition = supportCodeLibrary.beforeTestCaseHookDefinitions.find(\n (x) => x.id === testStep.hookId\n )\n } else {\n hookDefinition = supportCodeLibrary.afterTestCaseHookDefinitions.find(\n (x) => x.id === testStep.hookId\n )\n }\n out.actionLocation = {\n uri: hookDefinition.uri,\n line: hookDefinition.line,\n }\n }\n if (\n doesHaveValue(testStep.stepDefinitionIds) &&\n testStep.stepDefinitionIds.length === 1\n ) {\n const stepDefinition = supportCodeLibrary.stepDefinitions.find(\n (x) => x.id === testStep.stepDefinitionIds[0]\n )\n out.actionLocation = {\n uri: stepDefinition.uri,\n line: stepDefinition.line,\n }\n }\n if (testStep.pickleStepId !== '') {\n out.sourceLocation = {\n uri: pickleUri,\n line: gherkinStepMap[pickleStep.astNodeIds[0]].location.line,\n }\n out.text = pickleStep.text\n if (doesHaveValue(pickleStep.argument)) {\n out.argument = pickleStep.argument\n }\n }\n if (testStepResult.status === Status.UNDEFINED) {\n out.snippet = snippetBuilder.build({ keywordType, pickleStep })\n }\n return out\n}\n\nexport interface IParseTestCaseAttemptRequest {\n cwd: string\n testCaseAttempt: ITestCaseAttempt\n snippetBuilder: StepDefinitionSnippetBuilder\n supportCodeLibrary: ISupportCodeLibrary\n}\n\n// Converts a testCaseAttempt into a json object with all data needed for\n// displaying it in a pretty format\nexport function parseTestCaseAttempt({\n cwd,\n testCaseAttempt,\n snippetBuilder,\n supportCodeLibrary,\n}: IParseTestCaseAttemptRequest): IParsedTestCaseAttempt {\n const { testCase, pickle, gherkinDocument } = testCaseAttempt\n const gherkinStepMap = getGherkinStepMap(gherkinDocument)\n const gherkinScenarioLocationMap = getGherkinScenarioLocationMap(\n gherkinDocument\n )\n const pickleStepMap = getPickleStepMap(pickle)\n const relativePickleUri = path.relative(cwd, pickle.uri)\n const parsedTestCase: IParsedTestCase = {\n attempt: testCaseAttempt.attempt,\n name: pickle.name,\n sourceLocation: {\n uri: relativePickleUri,\n line: gherkinScenarioLocationMap[_.last(pickle.astNodeIds)].line,\n },\n worstTestStepResult: testCaseAttempt.worstTestStepResult,\n }\n const parsedTestSteps: IParsedTestStep[] = []\n let isBeforeHook = true\n let previousKeywordType = KeywordType.Precondition\n _.each(testCase.testSteps, (testStep) => {\n const testStepResult = testCaseAttempt.stepResults[testStep.id]\n isBeforeHook = isBeforeHook && testStep.hookId !== ''\n let keyword, keywordType, pickleStep\n if (testStep.pickleStepId !== '') {\n pickleStep = pickleStepMap[testStep.pickleStepId]\n keyword = getStepKeyword({ pickleStep, gherkinStepMap })\n keywordType = getStepKeywordType({\n keyword,\n language: gherkinDocument.feature.language,\n previousKeywordType,\n })\n }\n const parsedStep = parseStep({\n isBeforeHook,\n gherkinStepMap,\n keyword,\n keywordType,\n pickleStep,\n pickleUri: relativePickleUri,\n snippetBuilder,\n supportCodeLibrary,\n testStep,\n testStepResult,\n testStepAttachments: valueOrDefault(\n testCaseAttempt.stepAttachments[testStep.id],\n []\n ),\n })\n parsedTestSteps.push(parsedStep)\n previousKeywordType = keywordType\n })\n return {\n testCase: parsedTestCase,\n testSteps: parsedTestSteps,\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.d.ts
new file mode 100644
index 0000000..44a909a
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.d.ts
@@ -0,0 +1,24 @@
+import { messages } from '@cucumber/messages';
+import StepDefinition from '../../../models/step_definition';
+import EventDataCollector from '../event_data_collector';
+export interface IUsageMatch {
+ duration?: messages.IDuration;
+ line: number;
+ text: string;
+ uri: string;
+}
+export interface IUsage {
+ code: string;
+ line: number;
+ matches: IUsageMatch[];
+ meanDuration?: messages.IDuration;
+ pattern: string;
+ patternType: string;
+ uri: string;
+}
+export interface IGetUsageRequest {
+ cwd: string;
+ eventDataCollector: EventDataCollector;
+ stepDefinitions: StepDefinition[];
+}
+export declare function getUsage({ cwd, stepDefinitions, eventDataCollector, }: IGetUsageRequest): IUsage[];
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js
new file mode 100644
index 0000000..87b9ac2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js
@@ -0,0 +1,92 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getUsage = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const pickle_parser_1 = require("../pickle_parser");
+const path_1 = __importDefault(require("path"));
+const gherkin_document_parser_1 = require("../gherkin_document_parser");
+const time_1 = require("../../../time");
+const messages_1 = require("@cucumber/messages");
+const value_checker_1 = require("../../../value_checker");
+function buildEmptyMapping(stepDefinitions) {
+ const mapping = {};
+ stepDefinitions.forEach((stepDefinition) => {
+ mapping[stepDefinition.id] = {
+ code: stepDefinition.unwrappedCode.toString(),
+ line: stepDefinition.line,
+ pattern: stepDefinition.expression.source,
+ patternType: stepDefinition.expression.constructor.name,
+ matches: [],
+ uri: stepDefinition.uri,
+ };
+ });
+ return mapping;
+}
+function buildMapping({ cwd, stepDefinitions, eventDataCollector, }) {
+ const mapping = buildEmptyMapping(stepDefinitions);
+ lodash_1.default.each(eventDataCollector.getTestCaseAttempts(), (testCaseAttempt) => {
+ const pickleStepMap = pickle_parser_1.getPickleStepMap(testCaseAttempt.pickle);
+ const gherkinStepMap = gherkin_document_parser_1.getGherkinStepMap(testCaseAttempt.gherkinDocument);
+ testCaseAttempt.testCase.testSteps.forEach((testStep) => {
+ if (testStep.pickleStepId !== '' &&
+ testStep.stepDefinitionIds.length === 1) {
+ const stepDefinitionId = testStep.stepDefinitionIds[0];
+ const pickleStep = pickleStepMap[testStep.pickleStepId];
+ const gherkinStep = gherkinStepMap[pickleStep.astNodeIds[0]];
+ const match = {
+ line: gherkinStep.location.line,
+ text: pickleStep.text,
+ uri: path_1.default.relative(cwd, testCaseAttempt.pickle.uri),
+ };
+ const { duration, status } = testCaseAttempt.stepResults[testStep.id];
+ if (![
+ messages_1.messages.TestStepFinished.TestStepResult.Status.AMBIGUOUS,
+ messages_1.messages.TestStepFinished.TestStepResult.Status.SKIPPED,
+ messages_1.messages.TestStepFinished.TestStepResult.Status.UNDEFINED,
+ ].includes(status) &&
+ value_checker_1.doesHaveValue(duration)) {
+ match.duration = duration;
+ }
+ if (value_checker_1.doesHaveValue(mapping[stepDefinitionId])) {
+ mapping[stepDefinitionId].matches.push(match);
+ }
+ }
+ });
+ });
+ return mapping;
+}
+function invertDuration(duration) {
+ if (value_checker_1.doesHaveValue(duration)) {
+ return -1 * time_1.durationToMilliseconds(duration);
+ }
+ return 1;
+}
+function buildResult(mapping) {
+ return lodash_1.default.chain(mapping)
+ .map(({ matches, ...rest }) => {
+ const sortedMatches = lodash_1.default.sortBy(matches, [
+ (match) => invertDuration(match.duration),
+ 'text',
+ ]);
+ const result = { matches: sortedMatches, ...rest };
+ const durations = lodash_1.default.chain(matches)
+ .map((m) => m.duration)
+ .compact()
+ .value();
+ if (durations.length > 0) {
+ result.meanDuration = time_1.millisecondsToDuration(lodash_1.default.meanBy(durations, (d) => time_1.durationToMilliseconds(d)));
+ }
+ return result;
+ })
+ .sortBy((usage) => invertDuration(usage.meanDuration))
+ .value();
+}
+function getUsage({ cwd, stepDefinitions, eventDataCollector, }) {
+ const mapping = buildMapping({ cwd, stepDefinitions, eventDataCollector });
+ return buildResult(mapping);
+}
+exports.getUsage = getUsage;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js.map b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js.map
new file mode 100644
index 0000000..a9e860e
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/helpers/usage_helpers/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/formatter/helpers/usage_helpers/index.ts"],"names":[],"mappings":"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","sourcesContent":["import _, { Dictionary } from 'lodash'\nimport { getPickleStepMap } from '../pickle_parser'\nimport path from 'path'\nimport { getGherkinStepMap } from '../gherkin_document_parser'\nimport { durationToMilliseconds, millisecondsToDuration } from '../../../time'\nimport { messages } from '@cucumber/messages'\nimport StepDefinition from '../../../models/step_definition'\nimport { doesHaveValue } from '../../../value_checker'\nimport EventDataCollector from '../event_data_collector'\n\nexport interface IUsageMatch {\n duration?: messages.IDuration\n line: number\n text: string\n uri: string\n}\n\nexport interface IUsage {\n code: string\n line: number\n matches: IUsageMatch[]\n meanDuration?: messages.IDuration\n pattern: string\n patternType: string\n uri: string\n}\n\nexport interface IGetUsageRequest {\n cwd: string\n eventDataCollector: EventDataCollector\n stepDefinitions: StepDefinition[]\n}\n\nfunction buildEmptyMapping(\n stepDefinitions: StepDefinition[]\n): Dictionary {\n const mapping: Dictionary = {}\n stepDefinitions.forEach((stepDefinition) => {\n mapping[stepDefinition.id] = {\n code: stepDefinition.unwrappedCode.toString(),\n line: stepDefinition.line,\n pattern: stepDefinition.expression.source,\n patternType: stepDefinition.expression.constructor.name,\n matches: [],\n uri: stepDefinition.uri,\n }\n })\n return mapping\n}\n\nfunction buildMapping({\n cwd,\n stepDefinitions,\n eventDataCollector,\n}: IGetUsageRequest): Dictionary {\n const mapping = buildEmptyMapping(stepDefinitions)\n _.each(eventDataCollector.getTestCaseAttempts(), (testCaseAttempt) => {\n const pickleStepMap = getPickleStepMap(testCaseAttempt.pickle)\n const gherkinStepMap = getGherkinStepMap(testCaseAttempt.gherkinDocument)\n testCaseAttempt.testCase.testSteps.forEach((testStep) => {\n if (\n testStep.pickleStepId !== '' &&\n testStep.stepDefinitionIds.length === 1\n ) {\n const stepDefinitionId = testStep.stepDefinitionIds[0]\n const pickleStep = pickleStepMap[testStep.pickleStepId]\n const gherkinStep = gherkinStepMap[pickleStep.astNodeIds[0]]\n const match: IUsageMatch = {\n line: gherkinStep.location.line,\n text: pickleStep.text,\n uri: path.relative(cwd, testCaseAttempt.pickle.uri),\n }\n const { duration, status } = testCaseAttempt.stepResults[testStep.id]\n if (\n ![\n messages.TestStepFinished.TestStepResult.Status.AMBIGUOUS,\n messages.TestStepFinished.TestStepResult.Status.SKIPPED,\n messages.TestStepFinished.TestStepResult.Status.UNDEFINED,\n ].includes(status) &&\n doesHaveValue(duration)\n ) {\n match.duration = duration\n }\n if (doesHaveValue(mapping[stepDefinitionId])) {\n mapping[stepDefinitionId].matches.push(match)\n }\n }\n })\n })\n return mapping\n}\n\nfunction invertDuration(duration: messages.IDuration): number {\n if (doesHaveValue(duration)) {\n return -1 * durationToMilliseconds(duration)\n }\n return 1\n}\n\nfunction buildResult(mapping: Dictionary): IUsage[] {\n return _.chain(mapping)\n .map(({ matches, ...rest }: IUsage) => {\n const sortedMatches = _.sortBy(matches, [\n (match: IUsageMatch) => invertDuration(match.duration),\n 'text',\n ])\n const result = { matches: sortedMatches, ...rest }\n const durations: messages.IDuration[] = _.chain(matches)\n .map((m: IUsageMatch) => m.duration)\n .compact()\n .value()\n if (durations.length > 0) {\n result.meanDuration = millisecondsToDuration(\n _.meanBy(durations, (d: messages.IDuration) =>\n durationToMilliseconds(d)\n )\n )\n }\n return result\n })\n .sortBy((usage: IUsage) => invertDuration(usage.meanDuration))\n .value()\n}\n\nexport function getUsage({\n cwd,\n stepDefinitions,\n eventDataCollector,\n}: IGetUsageRequest): IUsage[] {\n const mapping = buildMapping({ cwd, stepDefinitions, eventDataCollector })\n return buildResult(mapping)\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.d.ts
new file mode 100644
index 0000000..42f81d9
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.d.ts
@@ -0,0 +1,6 @@
+import Formatter, { IFormatterOptions } from '.';
+export default class HtmlFormatter extends Formatter {
+ private readonly _finished;
+ constructor(options: IFormatterOptions);
+ finished(): Promise;
+}
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js
new file mode 100644
index 0000000..7fe0ebf
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js
@@ -0,0 +1,33 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _1 = __importDefault(require("."));
+const resolve_pkg_1 = __importDefault(require("resolve-pkg"));
+const html_formatter_1 = __importDefault(require("@cucumber/html-formatter"));
+const value_checker_1 = require("../value_checker");
+const stream_1 = require("stream");
+const util_1 = require("util");
+class HtmlFormatter extends _1.default {
+ constructor(options) {
+ super(options);
+ const cucumberHtmlStream = new html_formatter_1.default(resolve_pkg_1.default('@cucumber/html-formatter', { cwd: __dirname }) +
+ '/dist/cucumber-react.css', resolve_pkg_1.default('@cucumber/html-formatter', { cwd: __dirname }) +
+ '/dist/main.js');
+ options.eventBroadcaster.on('envelope', (envelope) => {
+ cucumberHtmlStream.write(envelope);
+ if (value_checker_1.doesHaveValue(envelope.testRunFinished)) {
+ cucumberHtmlStream.end();
+ }
+ });
+ cucumberHtmlStream.on('data', (chunk) => this.log(chunk));
+ this._finished = util_1.promisify(stream_1.finished)(cucumberHtmlStream);
+ }
+ async finished() {
+ await this._finished;
+ await super.finished();
+ }
+}
+exports.default = HtmlFormatter;
+//# sourceMappingURL=html_formatter.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js.map b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js.map
new file mode 100644
index 0000000..c1d7b2b
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/html_formatter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"html_formatter.js","sourceRoot":"","sources":["../../src/formatter/html_formatter.ts"],"names":[],"mappings":";;;;;AAAA,yCAAgD;AAEhD,8DAAoC;AACpC,8EAAyD;AACzD,oDAAgD;AAChD,mCAAiC;AACjC,+BAAgC;AAEhC,MAAqB,aAAc,SAAQ,UAAS;IAGlD,YAAY,OAA0B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,MAAM,kBAAkB,GAAG,IAAI,wBAAkB,CAC/C,qBAAU,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACxD,0BAA0B,EAC5B,qBAAU,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACxD,eAAe,CAClB,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAA2B,EAAE,EAAE;YACtE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,6BAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC3C,kBAAkB,CAAC,GAAG,EAAE,CAAA;aACzB;QACH,CAAC,CAAC,CAAA;QACF,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACzD,IAAI,CAAC,SAAS,GAAG,gBAAS,CAAC,iBAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,SAAS,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;CACF;AAzBD,gCAyBC","sourcesContent":["import Formatter, { IFormatterOptions } from '.'\nimport { messages } from '@cucumber/messages'\nimport resolvePkg from 'resolve-pkg'\nimport CucumberHtmlStream from '@cucumber/html-formatter'\nimport { doesHaveValue } from '../value_checker'\nimport { finished } from 'stream'\nimport { promisify } from 'util'\n\nexport default class HtmlFormatter extends Formatter {\n private readonly _finished: Promise\n\n constructor(options: IFormatterOptions) {\n super(options)\n const cucumberHtmlStream = new CucumberHtmlStream(\n resolvePkg('@cucumber/html-formatter', { cwd: __dirname }) +\n '/dist/cucumber-react.css',\n resolvePkg('@cucumber/html-formatter', { cwd: __dirname }) +\n '/dist/main.js'\n )\n options.eventBroadcaster.on('envelope', (envelope: messages.Envelope) => {\n cucumberHtmlStream.write(envelope)\n if (doesHaveValue(envelope.testRunFinished)) {\n cucumberHtmlStream.end()\n }\n })\n cucumberHtmlStream.on('data', (chunk) => this.log(chunk))\n this._finished = promisify(finished)(cucumberHtmlStream)\n }\n\n async finished(): Promise {\n await this._finished\n await super.finished()\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/http_stream.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.d.ts
new file mode 100644
index 0000000..8d4df53
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.d.ts
@@ -0,0 +1,28 @@
+///
+import { Transform } from 'stream';
+import http from 'http';
+declare type HttpMethod = 'GET' | 'POST' | 'PUT';
+/**
+ * This Writable writes data to a HTTP/HTTPS URL.
+ *
+ * It has special handling for https://reports.cucumber.io/
+ * which uses an API where the first request is a `GET`,
+ * and if the response is 202 with a Location header, issues
+ * a PUT request to that URL.
+ *
+ * 3xx redirects are not currently followed.
+ */
+export default class HttpStream extends Transform {
+ private readonly url;
+ private readonly method;
+ private readonly headers;
+ private tempFilePath;
+ private tempFile;
+ constructor(url: string, method: HttpMethod, headers: http.OutgoingHttpHeaders);
+ _write(chunk: any, encoding: BufferEncoding, callback: (err?: Error | null) => void): void;
+ _final(callback: (error?: Error | null) => void): void;
+ private pushResponseBody;
+ private emitErrorUnlessHttp2xx;
+ private sendHttpRequest;
+}
+export {};
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js
new file mode 100644
index 0000000..1b87f83
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js
@@ -0,0 +1,112 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = require("stream");
+const tmp_1 = __importDefault(require("tmp"));
+const fs_1 = __importDefault(require("fs"));
+const http_1 = __importDefault(require("http"));
+const https_1 = __importDefault(require("https"));
+const value_checker_1 = require("../value_checker");
+/**
+ * This Writable writes data to a HTTP/HTTPS URL.
+ *
+ * It has special handling for https://reports.cucumber.io/
+ * which uses an API where the first request is a `GET`,
+ * and if the response is 202 with a Location header, issues
+ * a PUT request to that URL.
+ *
+ * 3xx redirects are not currently followed.
+ */
+class HttpStream extends stream_1.Transform {
+ constructor(url, method, headers) {
+ super({
+ readableObjectMode: true,
+ });
+ this.url = url;
+ this.method = method;
+ this.headers = headers;
+ }
+ _write(chunk, encoding, callback) {
+ if (this.tempFile === undefined) {
+ tmp_1.default.file((err, name, fd) => {
+ if (value_checker_1.doesHaveValue(err))
+ return callback(err);
+ this.tempFilePath = name;
+ this.tempFile = fs_1.default.createWriteStream(name, { fd });
+ this.tempFile.write(chunk, encoding, callback);
+ });
+ }
+ else {
+ this.tempFile.write(chunk, encoding, callback);
+ }
+ }
+ _final(callback) {
+ this.tempFile.end(() => {
+ this.sendHttpRequest(this.url, this.method, this.headers, (err1, res1) => {
+ if (value_checker_1.doesHaveValue(err1))
+ return callback(err1);
+ this.pushResponseBody(res1, () => {
+ this.emitErrorUnlessHttp2xx(res1, this.url, this.method);
+ if (res1.statusCode === 202 &&
+ res1.headers.location !== undefined) {
+ this.sendHttpRequest(res1.headers.location, 'PUT', {}, (err2, res2) => {
+ if (value_checker_1.doesHaveValue(err2))
+ return callback(err2);
+ this.emitErrorUnlessHttp2xx(res2, this.url, this.method);
+ callback();
+ });
+ }
+ else {
+ callback();
+ }
+ });
+ });
+ });
+ }
+ pushResponseBody(res, done) {
+ let body = Buffer.alloc(0);
+ res.on('data', (chunk) => {
+ body = Buffer.concat([body, chunk]);
+ });
+ res.on('end', () => {
+ this.push(body.toString('utf-8'));
+ done();
+ });
+ }
+ emitErrorUnlessHttp2xx(res, url, method) {
+ if (res.statusCode >= 300)
+ this.emit('error', new Error(`Unexpected http status ${res.statusCode} from ${method} ${url}`));
+ }
+ sendHttpRequest(url, method, headers, callback) {
+ const httpx = value_checker_1.doesHaveValue(url.match(/^https:/)) ? https_1.default : http_1.default;
+ const additionalHttpHeaders = {};
+ const upload = method === 'PUT' || method === 'POST';
+ if (upload) {
+ additionalHttpHeaders['Content-Length'] = fs_1.default.statSync(this.tempFilePath).size;
+ }
+ const allHeaders = { ...headers, ...additionalHttpHeaders };
+ const req = httpx.request(url, {
+ method,
+ headers: allHeaders,
+ });
+ req.on('error', (err) => this.emit('error', err));
+ req.on('response', (res) => {
+ res.on('error', (err) => this.emit('error', err));
+ callback(null, res);
+ });
+ if (upload) {
+ stream_1.pipeline(fs_1.default.createReadStream(this.tempFilePath), req, (err) => {
+ if (value_checker_1.doesHaveValue(err)) {
+ this.emit('error', err);
+ }
+ });
+ }
+ else {
+ req.end();
+ }
+ }
+}
+exports.default = HttpStream;
+//# sourceMappingURL=http_stream.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js.map b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js.map
new file mode 100644
index 0000000..9769d20
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/http_stream.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"http_stream.js","sourceRoot":"","sources":["../../src/formatter/http_stream.ts"],"names":[],"mappings":"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","sourcesContent":["import { pipeline, Transform, Writable } from 'stream'\nimport tmp from 'tmp'\nimport fs from 'fs'\nimport http from 'http'\nimport https from 'https'\nimport { doesHaveValue } from '../value_checker'\n\ntype HttpMethod = 'GET' | 'POST' | 'PUT'\n\n/**\n * This Writable writes data to a HTTP/HTTPS URL.\n *\n * It has special handling for https://reports.cucumber.io/\n * which uses an API where the first request is a `GET`,\n * and if the response is 202 with a Location header, issues\n * a PUT request to that URL.\n *\n * 3xx redirects are not currently followed.\n */\nexport default class HttpStream extends Transform {\n private tempFilePath: string\n private tempFile: Writable\n\n constructor(\n private readonly url: string,\n private readonly method: HttpMethod,\n private readonly headers: http.OutgoingHttpHeaders\n ) {\n super({\n readableObjectMode: true,\n })\n }\n\n _write(\n chunk: any,\n encoding: BufferEncoding,\n callback: (err?: Error | null) => void\n ): void {\n if (this.tempFile === undefined) {\n tmp.file((err, name, fd) => {\n if (doesHaveValue(err)) return callback(err)\n this.tempFilePath = name\n this.tempFile = fs.createWriteStream(name, { fd })\n this.tempFile.write(chunk, encoding, callback)\n })\n } else {\n this.tempFile.write(chunk, encoding, callback)\n }\n }\n\n _final(callback: (error?: Error | null) => void): void {\n this.tempFile.end(() => {\n this.sendHttpRequest(\n this.url,\n this.method,\n this.headers,\n (err1, res1) => {\n if (doesHaveValue(err1)) return callback(err1)\n this.pushResponseBody(res1, () => {\n this.emitErrorUnlessHttp2xx(res1, this.url, this.method)\n if (\n res1.statusCode === 202 &&\n res1.headers.location !== undefined\n ) {\n this.sendHttpRequest(\n res1.headers.location,\n 'PUT',\n {},\n (err2, res2) => {\n if (doesHaveValue(err2)) return callback(err2)\n this.emitErrorUnlessHttp2xx(res2, this.url, this.method)\n callback()\n }\n )\n } else {\n callback()\n }\n })\n }\n )\n })\n }\n\n private pushResponseBody(res: http.IncomingMessage, done: () => void): void {\n let body = Buffer.alloc(0)\n res.on('data', (chunk) => {\n body = Buffer.concat([body, chunk])\n })\n res.on('end', () => {\n this.push(body.toString('utf-8'))\n done()\n })\n }\n\n private emitErrorUnlessHttp2xx(\n res: http.IncomingMessage,\n url: string,\n method: string\n ): void {\n if (res.statusCode >= 300)\n this.emit(\n 'error',\n new Error(\n `Unexpected http status ${res.statusCode} from ${method} ${url}`\n )\n )\n }\n\n private sendHttpRequest(\n url: string,\n method: HttpMethod,\n headers: http.OutgoingHttpHeaders,\n callback: (err?: Error | null, res?: http.IncomingMessage) => void\n ): void {\n const httpx = doesHaveValue(url.match(/^https:/)) ? https : http\n const additionalHttpHeaders: http.OutgoingHttpHeaders = {}\n\n const upload = method === 'PUT' || method === 'POST'\n if (upload) {\n additionalHttpHeaders['Content-Length'] = fs.statSync(\n this.tempFilePath\n ).size\n }\n\n const allHeaders = { ...headers, ...additionalHttpHeaders }\n const req = httpx.request(url, {\n method,\n headers: allHeaders,\n })\n req.on('error', (err) => this.emit('error', err))\n req.on('response', (res) => {\n res.on('error', (err) => this.emit('error', err))\n callback(null, res)\n })\n\n if (upload) {\n pipeline(fs.createReadStream(this.tempFilePath), req, (err) => {\n if (doesHaveValue(err)) {\n this.emit('error', err)\n }\n })\n } else {\n req.end()\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/index.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/index.d.ts
new file mode 100644
index 0000000..2ed8212
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/index.d.ts
@@ -0,0 +1,38 @@
+///
+import { IColorFns } from './get_color_fns';
+import { EventDataCollector } from './helpers';
+import StepDefinitionSnippetBuilder from './step_definition_snippet_builder';
+import { PassThrough, Writable as WritableStream } from 'stream';
+import { ISupportCodeLibrary } from '../support_code_library_builder/types';
+import { WriteStream as FsWriteStream } from 'fs';
+import { WriteStream as TtyWriteStream } from 'tty';
+import { EventEmitter } from 'events';
+import { IParsedArgvFormatOptions } from '../cli/argv_parser';
+import HttpStream from './http_stream';
+export declare type IFormatterStream = FsWriteStream | TtyWriteStream | PassThrough | HttpStream;
+export declare type IFormatterLogFn = (buffer: string | Uint8Array) => void;
+export declare type IFormatterCleanupFn = () => Promise;
+export interface IFormatterOptions {
+ colorFns: IColorFns;
+ cwd: string;
+ eventBroadcaster: EventEmitter;
+ eventDataCollector: EventDataCollector;
+ log: IFormatterLogFn;
+ parsedArgvOptions: IParsedArgvFormatOptions;
+ snippetBuilder: StepDefinitionSnippetBuilder;
+ stream: WritableStream;
+ cleanup: IFormatterCleanupFn;
+ supportCodeLibrary: ISupportCodeLibrary;
+}
+export default class Formatter {
+ protected colorFns: IColorFns;
+ protected cwd: string;
+ protected eventDataCollector: EventDataCollector;
+ protected log: IFormatterLogFn;
+ protected snippetBuilder: StepDefinitionSnippetBuilder;
+ protected stream: WritableStream;
+ protected supportCodeLibrary: ISupportCodeLibrary;
+ private readonly cleanup;
+ constructor(options: IFormatterOptions);
+ finished(): Promise;
+}
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/index.js b/node_modules/@cucumber/cucumber/lib/formatter/index.js
new file mode 100644
index 0000000..f2cb9f3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/index.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class Formatter {
+ constructor(options) {
+ this.colorFns = options.colorFns;
+ this.cwd = options.cwd;
+ this.eventDataCollector = options.eventDataCollector;
+ this.log = options.log;
+ this.snippetBuilder = options.snippetBuilder;
+ this.stream = options.stream;
+ this.supportCodeLibrary = options.supportCodeLibrary;
+ this.cleanup = options.cleanup;
+ }
+ async finished() {
+ await this.cleanup();
+ }
+}
+exports.default = Formatter;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/index.js.map b/node_modules/@cucumber/cucumber/lib/formatter/index.js.map
new file mode 100644
index 0000000..233c1a2
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatter/index.ts"],"names":[],"mappings":";;AAgCA,MAAqB,SAAS;IAU5B,YAAY,OAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACtB,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACtB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;CACF;AAxBD,4BAwBC","sourcesContent":["import { IColorFns } from './get_color_fns'\nimport { EventDataCollector } from './helpers'\nimport StepDefinitionSnippetBuilder from './step_definition_snippet_builder'\nimport { PassThrough, Writable as WritableStream } from 'stream'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport { WriteStream as FsWriteStream } from 'fs'\nimport { WriteStream as TtyWriteStream } from 'tty'\nimport { EventEmitter } from 'events'\nimport { IParsedArgvFormatOptions } from '../cli/argv_parser'\nimport HttpStream from './http_stream'\n\nexport type IFormatterStream =\n | FsWriteStream\n | TtyWriteStream\n | PassThrough\n | HttpStream\nexport type IFormatterLogFn = (buffer: string | Uint8Array) => void\nexport type IFormatterCleanupFn = () => Promise\n\nexport interface IFormatterOptions {\n colorFns: IColorFns\n cwd: string\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n log: IFormatterLogFn\n parsedArgvOptions: IParsedArgvFormatOptions\n snippetBuilder: StepDefinitionSnippetBuilder\n stream: WritableStream\n cleanup: IFormatterCleanupFn\n supportCodeLibrary: ISupportCodeLibrary\n}\n\nexport default class Formatter {\n protected colorFns: IColorFns\n protected cwd: string\n protected eventDataCollector: EventDataCollector\n protected log: IFormatterLogFn\n protected snippetBuilder: StepDefinitionSnippetBuilder\n protected stream: WritableStream\n protected supportCodeLibrary: ISupportCodeLibrary\n private readonly cleanup: IFormatterCleanupFn\n\n constructor(options: IFormatterOptions) {\n this.colorFns = options.colorFns\n this.cwd = options.cwd\n this.eventDataCollector = options.eventDataCollector\n this.log = options.log\n this.snippetBuilder = options.snippetBuilder\n this.stream = options.stream\n this.supportCodeLibrary = options.supportCodeLibrary\n this.cleanup = options.cleanup\n }\n\n async finished(): Promise {\n await this.cleanup()\n }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/@cucumber/cucumber/lib/formatter/json_formatter.d.ts b/node_modules/@cucumber/cucumber/lib/formatter/json_formatter.d.ts
new file mode 100644
index 0000000..215dfa3
--- /dev/null
+++ b/node_modules/@cucumber/cucumber/lib/formatter/json_formatter.d.ts
@@ -0,0 +1,83 @@
+import { Dictionary } from 'lodash';
+import Formatter, { IFormatterOptions } from './';
+import { messages } from '@cucumber/messages';
+import IFeature = messages.GherkinDocument.IFeature;
+import IPickle = messages.IPickle;
+import IScenario = messages.GherkinDocument.Feature.IScenario;
+import IRule = messages.GherkinDocument.Feature.FeatureChild.IRule;
+export interface IJsonFeature {
+ description: string;
+ elements: IJsonScenario[];
+ id: string;
+ keyword: string;
+ line: number;
+ name: string;
+ tags: IJsonTag[];
+ uri: string;
+}
+export interface IJsonScenario {
+ description: string;
+ id: string;
+ keyword: string;
+ line: number;
+ name: string;
+ steps: IJsonStep[];
+ tags: IJsonTag[];
+ type: string;
+}
+export interface IJsonStep {
+ arguments?: any;
+ embeddings?: any;
+ hidden?: boolean;
+ keyword?: string;
+ line?: number;
+ match?: any;
+ name?: string;
+ result?: any;
+}
+export interface IJsonTag {
+ name: string;
+ line: number;
+}
+interface IBuildJsonFeatureOptions {
+ feature: messages.GherkinDocument.IFeature;
+ elements: IJsonScenario[];
+ uri: string;
+}
+interface IBuildJsonScenarioOptions {
+ feature: messages.GherkinDocument.IFeature;
+ gherkinScenarioMap: Dictionary;
+ gherkinExampleRuleMap: Dictionary;
+ gherkinScenarioLocationMap: Dictionary;
+ pickle: messages.IPickle;
+ steps: IJsonStep[];
+}
+interface IBuildJsonStepOptions {
+ isBeforeHook: boolean;
+ gherkinStepMap: Dictionary;
+ pickleStepMap: Dictionary