From e8fda6a6d4c07e8d8a54039140309e841da5c49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= Date: Wed, 19 Oct 2022 09:51:40 +0100 Subject: [PATCH 1/4] Add event handler to be notified about reindexing --- bin/cucumber-language-server.cjs | 13 +++++++-- src/CucumberLanguageServer.ts | 24 ++++++++-------- src/index.ts | 3 +- src/newWasmServer.ts | 30 -------------------- src/node/index.ts | 1 - src/node/startNodeServer.ts | 8 ------ src/startServer.ts | 22 --------------- src/wasm/index.ts | 3 +- src/wasm/startEmbeddedServer.ts | 44 +++++++++++++++++++++++++++++ src/wasm/startStandaloneServer.ts | 15 ++++++++++ src/wasm/startWasmServer.ts | 8 ------ test/CucumberLanguageServer.test.ts | 7 +++-- 12 files changed, 89 insertions(+), 89 deletions(-) delete mode 100644 src/newWasmServer.ts delete mode 100644 src/node/startNodeServer.ts delete mode 100644 src/startServer.ts create mode 100644 src/wasm/startEmbeddedServer.ts create mode 100644 src/wasm/startStandaloneServer.ts delete mode 100644 src/wasm/startWasmServer.ts diff --git a/bin/cucumber-language-server.cjs b/bin/cucumber-language-server.cjs index 2c6944cc..1e623d9a 100755 --- a/bin/cucumber-language-server.cjs +++ b/bin/cucumber-language-server.cjs @@ -1,10 +1,19 @@ #!/usr/bin/env node /* eslint-disable @typescript-eslint/no-var-requires */ require('source-map-support').install() -const { startWasmServer } = require('../dist/cjs/src/wasm/startWasmServer') +const { startStandaloneServer } = require('../dist/cjs/src/wasm/startStandaloneServer') const { NodeFiles } = require('../dist/cjs/src/node/NodeFiles') const url = require('url') +const { version } = require('../src/version') + const wasmBaseUrl = url.pathToFileURL( `${__dirname}/../node_modules/@cucumber/language-service/dist` ) -startWasmServer(wasmBaseUrl.href, (rootUri) => new NodeFiles(rootUri)) +const { connection } = startStandaloneServer(wasmBaseUrl.href, (rootUri) => new NodeFiles(rootUri)) + +// Don't die on unhandled Promise rejections +process.on('unhandledRejection', (reason, p) => { + connection.console.error( + `Cucumber Language Server ${version}: Unhandled Rejection at promise: ${p}, reason: ${reason}` + ) +}) diff --git a/src/CucumberLanguageServer.ts b/src/CucumberLanguageServer.ts index 4fdebe92..24a7b5e9 100644 --- a/src/CucumberLanguageServer.ts +++ b/src/CucumberLanguageServer.ts @@ -1,5 +1,6 @@ import { buildSuggestions, + Expression, ExpressionBuilder, ExpressionBuilderResult, getGenerateSnippetCodeAction, @@ -85,18 +86,17 @@ export class CucumberLanguageServer { private expressionBuilderResult: ExpressionBuilderResult | undefined = undefined private reindexingTimeout: NodeJS.Timeout private rootUri: string - #suggestions: readonly Suggestion[] #files: Files - get suggestions() { - return this.#suggestions - } - constructor( private readonly connection: Connection, private readonly documents: TextDocuments, parserAdapter: ParserAdapter, - private readonly makeFiles: (rootUri: string) => Files + private readonly makeFiles: (rootUri: string) => Files, + private readonly onReindexed: ( + expressions: readonly Expression[], + suggestions: readonly Suggestion[] + ) => void ) { this.expressionBuilder = new ExpressionBuilder(parserAdapter) @@ -446,15 +446,15 @@ export class CucumberLanguageServer { this.connection.languages.semanticTokens.refresh() try { - this.#suggestions = buildSuggestions( + const expressions = this.expressionBuilderResult.expressionLinks.map((l) => l.expression) + const suggestions = buildSuggestions( this.expressionBuilderResult.registry, stepTexts, - this.expressionBuilderResult.expressionLinks.map((l) => l.expression) - ) - this.connection.console.info( - `* Built ${this.#suggestions.length} suggestions for auto complete` + expressions ) - this.searchIndex = jsSearchIndex(this.#suggestions) + this.connection.console.info(`* Built ${suggestions.length} suggestions for auto complete`) + this.searchIndex = jsSearchIndex(suggestions) + this.onReindexed(expressions, suggestions) } catch (err) { this.connection.console.error(err.stack) this.connection.console.error( diff --git a/src/index.ts b/src/index.ts index 7a204f42..c94af820 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,2 @@ export * from './Files.js' -export * from './newWasmServer.js' -export * from './startServer.js' +export { Expression, Suggestion } from '@cucumber/language-service' diff --git a/src/newWasmServer.ts b/src/newWasmServer.ts deleted file mode 100644 index fd68bf2b..00000000 --- a/src/newWasmServer.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ParserAdapter } from '@cucumber/language-service' -import { WasmParserAdapter } from '@cucumber/language-service/wasm' -import { PassThrough } from 'stream' -import { TextDocuments } from 'vscode-languageserver' -import { createConnection } from 'vscode-languageserver/node' -import { TextDocument } from 'vscode-languageserver-textdocument' - -import { CucumberLanguageServer } from './CucumberLanguageServer.js' -import { Files } from './Files' - -export type StreamInfo = { - writer: NodeJS.WritableStream - reader: NodeJS.ReadableStream -} - -export function newWasmServer(wasmBaseUrl: string, makeFiles: (rootUri: string) => Files) { - const adapter: ParserAdapter = new WasmParserAdapter(wasmBaseUrl) - const inputStream = new PassThrough() - const outputStream = new PassThrough() - - const connection = createConnection(inputStream, outputStream) - const documents = new TextDocuments(TextDocument) - new CucumberLanguageServer(connection, documents, adapter, makeFiles) - connection.listen() - - return { - writer: inputStream, - reader: outputStream, - } -} diff --git a/src/node/index.ts b/src/node/index.ts index 9eab3403..3c87f3b6 100644 --- a/src/node/index.ts +++ b/src/node/index.ts @@ -1,2 +1 @@ export * from './NodeFiles.js' -export * from './startNodeServer.js' diff --git a/src/node/startNodeServer.ts b/src/node/startNodeServer.ts deleted file mode 100644 index 451b3474..00000000 --- a/src/node/startNodeServer.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { NodeParserAdapter } from '@cucumber/language-service/node' - -import { startServer } from '../startServer.js' -import { NodeFiles } from './NodeFiles' - -export function startNodeServer() { - startServer(new NodeParserAdapter(), (rootUri) => new NodeFiles(rootUri)) -} diff --git a/src/startServer.ts b/src/startServer.ts deleted file mode 100644 index aeba5cb4..00000000 --- a/src/startServer.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ParserAdapter } from '@cucumber/language-service' -import { TextDocuments } from 'vscode-languageserver' -import { createConnection, ProposedFeatures } from 'vscode-languageserver/node' -import { TextDocument } from 'vscode-languageserver-textdocument' - -import { CucumberLanguageServer } from './CucumberLanguageServer.js' -import { Files } from './Files.js' -import { version } from './version.js' - -export function startServer(adapter: ParserAdapter, makeFiles: (rootUri: string) => Files) { - const connection = createConnection(ProposedFeatures.all) - const documents = new TextDocuments(TextDocument) - new CucumberLanguageServer(connection, documents, adapter, makeFiles) - connection.listen() - - // Don't die on unhandled Promise rejections - process.on('unhandledRejection', (reason, p) => { - connection.console.error( - `Cucumber Language Server ${version}: Unhandled Rejection at promise: ${p}, reason: ${reason}` - ) - }) -} diff --git a/src/wasm/index.ts b/src/wasm/index.ts index ce2a0b39..94a0d566 100644 --- a/src/wasm/index.ts +++ b/src/wasm/index.ts @@ -1 +1,2 @@ -export * from './startWasmServer.js' +export * from './startEmbeddedServer.js' +export * from './startStandaloneServer.js' diff --git a/src/wasm/startEmbeddedServer.ts b/src/wasm/startEmbeddedServer.ts new file mode 100644 index 00000000..bc4b882c --- /dev/null +++ b/src/wasm/startEmbeddedServer.ts @@ -0,0 +1,44 @@ +import { Expression, ParserAdapter, Suggestion } from '@cucumber/language-service' +import { WasmParserAdapter } from '@cucumber/language-service/wasm' +import { PassThrough } from 'stream' +import { Connection, TextDocuments } from 'vscode-languageserver' +import { createConnection } from 'vscode-languageserver/node' +import { TextDocument } from 'vscode-languageserver-textdocument' + +import { CucumberLanguageServer } from '../CucumberLanguageServer.js' +import { Files } from '../Files' + +export type ServerInfo = { + writer: NodeJS.WritableStream + reader: NodeJS.ReadableStream + server: CucumberLanguageServer + connection: Connection +} + +export function startEmbeddedServer( + wasmBaseUrl: string, + makeFiles: (rootUri: string) => Files, + onSuggestions: (expressions: readonly Expression[], suggestions: readonly Suggestion[]) => void +): ServerInfo { + const adapter: ParserAdapter = new WasmParserAdapter(wasmBaseUrl) + const inputStream = new PassThrough() + const outputStream = new PassThrough() + + const connection = createConnection(inputStream, outputStream) + const documents = new TextDocuments(TextDocument) + const server = new CucumberLanguageServer( + connection, + documents, + adapter, + makeFiles, + onSuggestions + ) + connection.listen() + + return { + writer: inputStream, + reader: outputStream, + server, + connection, + } +} diff --git a/src/wasm/startStandaloneServer.ts b/src/wasm/startStandaloneServer.ts new file mode 100644 index 00000000..23586964 --- /dev/null +++ b/src/wasm/startStandaloneServer.ts @@ -0,0 +1,15 @@ +import { WasmParserAdapter } from '@cucumber/language-service/wasm' +import { TextDocuments } from 'vscode-languageserver' +import { createConnection, ProposedFeatures } from 'vscode-languageserver/node' +import { TextDocument } from 'vscode-languageserver-textdocument' + +import { CucumberLanguageServer } from '../CucumberLanguageServer' +import { Files } from '../Files' + +export function startStandaloneServer(wasmBaseUrl: string, makeFiles: (rootUri: string) => Files) { + const adapter = new WasmParserAdapter(wasmBaseUrl) + const connection = createConnection(ProposedFeatures.all) + const documents = new TextDocuments(TextDocument) + new CucumberLanguageServer(connection, documents, adapter, makeFiles, () => undefined) + connection.listen() +} diff --git a/src/wasm/startWasmServer.ts b/src/wasm/startWasmServer.ts deleted file mode 100644 index d540d525..00000000 --- a/src/wasm/startWasmServer.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { WasmParserAdapter } from '@cucumber/language-service/wasm' - -import { Files } from '../Files' -import { startServer } from '../startServer.js' - -export function startWasmServer(wasmBaseUrl: string, makeFiles: (rootUri: string) => Files) { - startServer(new WasmParserAdapter(wasmBaseUrl), makeFiles) -} diff --git a/test/CucumberLanguageServer.test.ts b/test/CucumberLanguageServer.test.ts index 597e9d95..e92deb7a 100644 --- a/test/CucumberLanguageServer.test.ts +++ b/test/CucumberLanguageServer.test.ts @@ -23,8 +23,8 @@ import { TextDocument } from 'vscode-languageserver-textdocument' import { CompletionItem, CompletionItemKind } from 'vscode-languageserver-types' import { CucumberLanguageServer } from '../src/CucumberLanguageServer.js' -import { NodeFiles } from '../src/node/NodeFiles' -import { Settings } from '../src/types' +import { NodeFiles } from '../src/node/NodeFiles.js' +import { Settings } from '../src/types.js' describe('CucumberLanguageServer', () => { let inputStream: Duplex @@ -43,7 +43,8 @@ describe('CucumberLanguageServer', () => { serverConnection, documents, new WasmParserAdapter('node_modules/@cucumber/language-service/dist'), - (rootUri) => new NodeFiles(rootUri) + (rootUri) => new NodeFiles(rootUri), + () => undefined ) serverConnection.listen() From a1cdf2a6924977632b2dbf7bf30d557173d0f60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= Date: Wed, 2 Nov 2022 13:01:00 +0000 Subject: [PATCH 2/4] Expose expressions, registry and suggestions --- src/CucumberLanguageServer.ts | 19 +++++++++++++------ src/index.ts | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/CucumberLanguageServer.ts b/src/CucumberLanguageServer.ts index 24a7b5e9..d4df8dd3 100644 --- a/src/CucumberLanguageServer.ts +++ b/src/CucumberLanguageServer.ts @@ -12,6 +12,7 @@ import { getStepDefinitionLocationLinks, Index, jsSearchIndex, + ParameterTypeRegistry, ParserAdapter, semanticTokenTypes, Suggestion, @@ -86,7 +87,10 @@ export class CucumberLanguageServer { private expressionBuilderResult: ExpressionBuilderResult | undefined = undefined private reindexingTimeout: NodeJS.Timeout private rootUri: string - #files: Files + private files: Files + public registry: ParameterTypeRegistry + public expressions: readonly Expression[] = [] + public suggestions: readonly Suggestion[] = [] constructor( private readonly connection: Connection, @@ -120,7 +124,7 @@ export class CucumberLanguageServer { } else { connection.console.error(`Could not determine rootPath`) } - this.#files = makeFiles(this.rootUri) + this.files = makeFiles(this.rootUri) // Some users have reported that the globs don't find any files. This is to debug that issue connection.console.info(`Root uri : ${this.rootUri}`) connection.console.info(`Current dir : ${process.cwd()}`) @@ -224,8 +228,8 @@ export class CucumberLanguageServer { return [] } const mustacheTemplate = settings.snippetTemplates[languageName] - const createFile = !(await this.#files.exists(link.targetUri)) - const relativePath = this.#files.relativePath(link.targetUri) + const createFile = !(await this.files.exists(link.targetUri)) + const relativePath = this.files.relativePath(link.targetUri) const codeAction = getGenerateSnippetCodeAction( diagnostics, link, @@ -401,7 +405,7 @@ export class CucumberLanguageServer { // https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#workDoneProgress this.connection.console.info(`Reindexing ${this.rootUri}`) - const gherkinSources = await loadGherkinSources(this.#files, settings.features) + const gherkinSources = await loadGherkinSources(this.files, settings.features) this.connection.console.info( `* Found ${gherkinSources.length} feature file(s) in ${JSON.stringify(settings.features)}` ) @@ -410,7 +414,7 @@ export class CucumberLanguageServer { [] ) this.connection.console.info(`* Found ${stepTexts.length} steps in those feature files`) - const glueSources = await loadGlueSources(this.#files, settings.glue) + const glueSources = await loadGlueSources(this.files, settings.glue) this.connection.console.info( `* Found ${glueSources.length} glue file(s) in ${JSON.stringify(settings.glue)}` ) @@ -454,6 +458,9 @@ export class CucumberLanguageServer { ) this.connection.console.info(`* Built ${suggestions.length} suggestions for auto complete`) this.searchIndex = jsSearchIndex(suggestions) + this.registry = this.expressionBuilderResult.registry + this.expressions = expressions + this.suggestions = suggestions this.onReindexed(expressions, suggestions) } catch (err) { this.connection.console.error(err.stack) diff --git a/src/index.ts b/src/index.ts index c94af820..0a1ab0a7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,3 @@ +export * from './CucumberLanguageServer.js' export * from './Files.js' export { Expression, Suggestion } from '@cucumber/language-service' From c29fde1c48daf005fbf1e367e7e484f22e27aec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= Date: Fri, 18 Nov 2022 12:49:50 +0000 Subject: [PATCH 3/4] WIP --- src/CucumberLanguageServer.ts | 15 ++++++++------- src/index.ts | 2 +- src/wasm/startEmbeddedServer.ts | 16 +++++++--------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/CucumberLanguageServer.ts b/src/CucumberLanguageServer.ts index d4df8dd3..13de94cf 100644 --- a/src/CucumberLanguageServer.ts +++ b/src/CucumberLanguageServer.ts @@ -1,6 +1,6 @@ import { buildSuggestions, - Expression, + CucumberExpressions, ExpressionBuilder, ExpressionBuilderResult, getGenerateSnippetCodeAction, @@ -12,7 +12,6 @@ import { getStepDefinitionLocationLinks, Index, jsSearchIndex, - ParameterTypeRegistry, ParserAdapter, semanticTokenTypes, Suggestion, @@ -88,8 +87,8 @@ export class CucumberLanguageServer { private reindexingTimeout: NodeJS.Timeout private rootUri: string private files: Files - public registry: ParameterTypeRegistry - public expressions: readonly Expression[] = [] + public registry: CucumberExpressions.ParameterTypeRegistry + public expressions: readonly CucumberExpressions.Expression[] = [] public suggestions: readonly Suggestion[] = [] constructor( @@ -98,7 +97,8 @@ export class CucumberLanguageServer { parserAdapter: ParserAdapter, private readonly makeFiles: (rootUri: string) => Files, private readonly onReindexed: ( - expressions: readonly Expression[], + registry: CucumberExpressions.ParameterTypeRegistry, + expressions: readonly CucumberExpressions.Expression[], suggestions: readonly Suggestion[] ) => void ) { @@ -458,10 +458,11 @@ export class CucumberLanguageServer { ) this.connection.console.info(`* Built ${suggestions.length} suggestions for auto complete`) this.searchIndex = jsSearchIndex(suggestions) - this.registry = this.expressionBuilderResult.registry + const registry = this.expressionBuilderResult.registry + this.registry = registry this.expressions = expressions this.suggestions = suggestions - this.onReindexed(expressions, suggestions) + this.onReindexed(registry, expressions, suggestions) } catch (err) { this.connection.console.error(err.stack) this.connection.console.error( diff --git a/src/index.ts b/src/index.ts index 0a1ab0a7..af132ef2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ export * from './CucumberLanguageServer.js' export * from './Files.js' -export { Expression, Suggestion } from '@cucumber/language-service' +export { CucumberExpressions, Suggestion } from '@cucumber/language-service' diff --git a/src/wasm/startEmbeddedServer.ts b/src/wasm/startEmbeddedServer.ts index bc4b882c..feee1583 100644 --- a/src/wasm/startEmbeddedServer.ts +++ b/src/wasm/startEmbeddedServer.ts @@ -1,4 +1,4 @@ -import { Expression, ParserAdapter, Suggestion } from '@cucumber/language-service' +import { CucumberExpressions, ParserAdapter, Suggestion } from '@cucumber/language-service' import { WasmParserAdapter } from '@cucumber/language-service/wasm' import { PassThrough } from 'stream' import { Connection, TextDocuments } from 'vscode-languageserver' @@ -18,7 +18,11 @@ export type ServerInfo = { export function startEmbeddedServer( wasmBaseUrl: string, makeFiles: (rootUri: string) => Files, - onSuggestions: (expressions: readonly Expression[], suggestions: readonly Suggestion[]) => void + onReindexed: ( + registry: CucumberExpressions.ParameterTypeRegistry, + expressions: readonly CucumberExpressions.Expression[], + suggestions: readonly Suggestion[] + ) => void ): ServerInfo { const adapter: ParserAdapter = new WasmParserAdapter(wasmBaseUrl) const inputStream = new PassThrough() @@ -26,13 +30,7 @@ export function startEmbeddedServer( const connection = createConnection(inputStream, outputStream) const documents = new TextDocuments(TextDocument) - const server = new CucumberLanguageServer( - connection, - documents, - adapter, - makeFiles, - onSuggestions - ) + const server = new CucumberLanguageServer(connection, documents, adapter, makeFiles, onReindexed) connection.listen() return { From 8817a66c76d06f48ffaf4148ea24764979f6c7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= Date: Mon, 28 Nov 2022 10:15:21 +0000 Subject: [PATCH 4/4] Upgrade dependencies --- package-lock.json | 380 ++++++++++++++++++++++++++++------------------ package.json | 16 +- src/version.ts | 2 +- 3 files changed, 245 insertions(+), 153 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa224bdd..bc9cc137 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.2.0", "license": "MIT", "dependencies": { - "@cucumber/gherkin-utils": "^8.0.1", - "@cucumber/language-service": "^1.2.0", + "@cucumber/gherkin-utils": "^8.0.2", + "@cucumber/language-service": "^1.3.0", "fast-glob": "3.2.12", "source-map-support": "0.5.21", "vscode-languageserver": "8.0.2", @@ -21,12 +21,12 @@ "cucumber-language-server": "bin/cucumber-language-server.cjs" }, "devDependencies": { - "@cucumber/cucumber": "8.8.0", + "@cucumber/cucumber": "8.9.0", "@types/mocha": "10.0.0", "@types/node": "18.11.9", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", - "eslint": "8.27.0", + "@typescript-eslint/eslint-plugin": "5.44.0", + "@typescript-eslint/parser": "5.44.0", + "eslint": "8.28.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-node": "11.1.0", @@ -34,8 +34,8 @@ "eslint-plugin-simple-import-sort": "8.0.0", "husky": "8.0.2", "mocha": "10.1.0", - "npm-check-updates": "16.4.1", - "prettier": "2.7.1", + "npm-check-updates": "16.4.3", + "prettier": "2.8.0", "pretty-quick": "3.1.3", "ts-node": "10.9.1", "typescript": "4.9.3", @@ -84,9 +84,9 @@ "dev": true }, "node_modules/@cucumber/cucumber": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.8.0.tgz", - "integrity": "sha512-W70MuAF42hH0QgDHUgX1glSqDccJuF/kBbHquOf500gP1aOJczKtO9QgYtct1HvilCBYQLb9rou/hZA08jmMIQ==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.9.0.tgz", + "integrity": "sha512-kU44RHVbS6fNLrEVQAzTtTMP6pDh0gMzB+QXULNymqGGhXDpnk+6PEH88+YG0TsjjPSYYNwOc3mhN/zvQ28yAg==", "dev": true, "dependencies": { "@cucumber/ci-environment": "9.1.0", @@ -126,6 +126,7 @@ "tmp": "^0.2.1", "util-arity": "^1.1.0", "verror": "^1.10.0", + "xmlbuilder": "^15.1.1", "yup": "^0.32.11" }, "bin": { @@ -144,6 +145,34 @@ "regexp-match-indices": "1.0.2" } }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/gherkin-utils": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.1.tgz", + "integrity": "sha512-SjDcCYQMEX4yCUoOJU38+UZo2p0Mxh1WnvwoJ3rSnun5HhhLrAn2p/Hnbiq4kudYJkAuQcEXlFOllJ3ZTwztIg==", + "dev": true, + "dependencies": { + "@cucumber/gherkin": "^24.1.0", + "@cucumber/messages": "^19.1.4", + "@teppeis/multimaps": "2.0.0", + "commander": "9.4.1", + "source-map-support": "^0.5.21" + }, + "bin": { + "gherkin-utils": "bin/gherkin-utils" + } + }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "dev": true, + "dependencies": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { "version": "20.0.0", "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-20.0.0.tgz", @@ -160,6 +189,7 @@ "version": "24.1.0", "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-24.1.0.tgz", "integrity": "sha512-B48XrUod4y3SoXe6mv12q7U1zThUNSK3yHSm/hBJCJZ6RJUJhFk3FVMN/83qOEbsYZe6iG9v+4L1Myf8/q8C6g==", + "dev": true, "dependencies": { "@cucumber/messages": "^19.1.4" } @@ -192,11 +222,11 @@ } }, "node_modules/@cucumber/gherkin-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.1.tgz", - "integrity": "sha512-SjDcCYQMEX4yCUoOJU38+UZo2p0Mxh1WnvwoJ3rSnun5HhhLrAn2p/Hnbiq4kudYJkAuQcEXlFOllJ3ZTwztIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", + "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", "dependencies": { - "@cucumber/gherkin": "^24.1.0", + "@cucumber/gherkin": "^25.0.0", "@cucumber/messages": "^19.1.4", "@teppeis/multimaps": "2.0.0", "commander": "9.4.1", @@ -206,6 +236,14 @@ "gherkin-utils": "bin/gherkin-utils" } }, + "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/gherkin": { + "version": "25.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", + "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", + "dependencies": { + "@cucumber/messages": "^19.1.4" + } + }, "node_modules/@cucumber/html-formatter": { "version": "20.1.0", "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.1.0.tgz", @@ -216,16 +254,16 @@ } }, "node_modules/@cucumber/language-service": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/language-service/-/language-service-1.2.0.tgz", - "integrity": "sha512-JokToDW/Tz9WnLFt2LL8a+V4wSclg9SRQYeVW1kfVm3Q2ijpGuYKf+LzhH8BAyXEM5eyxzOYTSCY5xgFWx08wQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@cucumber/language-service/-/language-service-1.3.0.tgz", + "integrity": "sha512-YAXZ7SZRC2KosrxO3Ks75MUI6SD/+39J2gM3I7zeo06mzWh8czI1CSrvIvHdGXdjcV2iuoBBNsqk1C6uh999bg==", "dependencies": { - "@cucumber/cucumber-expressions": "^16.0.1", + "@cucumber/cucumber-expressions": "^16.1.0", "@cucumber/gherkin": "^25.0.2", - "@cucumber/gherkin-utils": "^8.0.1", + "@cucumber/gherkin-utils": "^8.0.2", "@cucumber/messages": "^20.0.0", "@types/js-search": "1.4.0", - "@types/mustache": "4.2.1", + "@types/mustache": "4.2.2", "fuse.js": "6.6.2", "js-search": "2.0.0", "mustache": "4.2.0", @@ -248,9 +286,9 @@ } }, "node_modules/@cucumber/language-service/node_modules/@cucumber/cucumber-expressions": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.0.1.tgz", - "integrity": "sha512-kYwm6Atet5DzK7+0f5kTPDb4BImXMvD5rBk4KUYHBsHi/nvb+drYx/51UH1Z2L9nHlh2dHgMfEbH2LjJw/T1pQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.0.tgz", + "integrity": "sha512-Q/tKDNje9RrcOXF2TO2NwTW92rzk+RwKkhYYKLxQT26Co8Qbjom0Cz02HsCMA2wjJ8dw6/d2IbWgiOay9RQA+w==", "dependencies": { "regexp-match-indices": "1.0.2" } @@ -733,9 +771,9 @@ "dev": true }, "node_modules/@types/mustache": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.1.tgz", - "integrity": "sha512-gFAlWL9Ik21nJioqjlGCnNYbf9zHi0sVbaZ/1hQEBcCEuxfLJDvz4bVJSV6v6CUaoLOz0XEIoP7mSrhJ6o237w==" + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.2.tgz", + "integrity": "sha512-MUSpfpW0yZbTgjekDbH0shMYBUD+X/uJJJMm9LXN1d5yjl5lCY1vN/eWKD6D1tOtjA6206K0zcIPnUaFMurdNA==" }, "node_modules/@types/node": { "version": "18.11.9", @@ -764,14 +802,14 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz", - "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/type-utils": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -797,14 +835,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz", - "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "debug": "^4.3.4" }, "engines": { @@ -824,13 +862,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz", - "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0" + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -841,13 +879,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz", - "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -868,9 +906,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz", - "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -881,13 +919,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz", - "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -908,16 +946,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz", - "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -934,12 +972,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz", - "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/types": "5.44.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2312,9 +2350,9 @@ } }, "node_modules/eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.3", @@ -4937,9 +4975,9 @@ } }, "node_modules/npm-check-updates": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.4.1.tgz", - "integrity": "sha512-g0Uf1kCw0p5boutvu5E4htsjYEDuFT9LxYHYFLldAzWs5012jVikEH1Wdae68xedu4twF4EVbKcs83+G2nGnQg==", + "version": "16.4.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.4.3.tgz", + "integrity": "sha512-kuTErUSd9DkJKU5Kf5nitkN4Yf8k41OJL/hudtRR+Rf9YaKJasLHHnQboQdEtbf6DFrqMzwxrPSX8p1engLLbQ==", "dev": true, "dependencies": { "chalk": "^5.1.2", @@ -5934,9 +5972,9 @@ } }, "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -7951,6 +7989,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -8090,9 +8137,9 @@ "dev": true }, "@cucumber/cucumber": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.8.0.tgz", - "integrity": "sha512-W70MuAF42hH0QgDHUgX1glSqDccJuF/kBbHquOf500gP1aOJczKtO9QgYtct1HvilCBYQLb9rou/hZA08jmMIQ==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.9.0.tgz", + "integrity": "sha512-kU44RHVbS6fNLrEVQAzTtTMP6pDh0gMzB+QXULNymqGGhXDpnk+6PEH88+YG0TsjjPSYYNwOc3mhN/zvQ28yAg==", "dev": true, "requires": { "@cucumber/ci-environment": "9.1.0", @@ -8132,9 +8179,37 @@ "tmp": "^0.2.1", "util-arity": "^1.1.0", "verror": "^1.10.0", + "xmlbuilder": "^15.1.1", "yup": "^0.32.11" }, "dependencies": { + "@cucumber/gherkin-utils": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.1.tgz", + "integrity": "sha512-SjDcCYQMEX4yCUoOJU38+UZo2p0Mxh1WnvwoJ3rSnun5HhhLrAn2p/Hnbiq4kudYJkAuQcEXlFOllJ3ZTwztIg==", + "dev": true, + "requires": { + "@cucumber/gherkin": "^24.1.0", + "@cucumber/messages": "^19.1.4", + "@teppeis/multimaps": "2.0.0", + "commander": "9.4.1", + "source-map-support": "^0.5.21" + }, + "dependencies": { + "@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + } + } + }, "@cucumber/messages": { "version": "20.0.0", "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-20.0.0.tgz", @@ -8162,6 +8237,7 @@ "version": "24.1.0", "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-24.1.0.tgz", "integrity": "sha512-B48XrUod4y3SoXe6mv12q7U1zThUNSK3yHSm/hBJCJZ6RJUJhFk3FVMN/83qOEbsYZe6iG9v+4L1Myf8/q8C6g==", + "dev": true, "requires": { "@cucumber/messages": "^19.1.4" } @@ -8185,15 +8261,25 @@ } }, "@cucumber/gherkin-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.1.tgz", - "integrity": "sha512-SjDcCYQMEX4yCUoOJU38+UZo2p0Mxh1WnvwoJ3rSnun5HhhLrAn2p/Hnbiq4kudYJkAuQcEXlFOllJ3ZTwztIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", + "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", "requires": { - "@cucumber/gherkin": "^24.1.0", + "@cucumber/gherkin": "^25.0.0", "@cucumber/messages": "^19.1.4", "@teppeis/multimaps": "2.0.0", "commander": "9.4.1", "source-map-support": "^0.5.21" + }, + "dependencies": { + "@cucumber/gherkin": { + "version": "25.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", + "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", + "requires": { + "@cucumber/messages": "^19.1.4" + } + } } }, "@cucumber/html-formatter": { @@ -8204,16 +8290,16 @@ "requires": {} }, "@cucumber/language-service": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/language-service/-/language-service-1.2.0.tgz", - "integrity": "sha512-JokToDW/Tz9WnLFt2LL8a+V4wSclg9SRQYeVW1kfVm3Q2ijpGuYKf+LzhH8BAyXEM5eyxzOYTSCY5xgFWx08wQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@cucumber/language-service/-/language-service-1.3.0.tgz", + "integrity": "sha512-YAXZ7SZRC2KosrxO3Ks75MUI6SD/+39J2gM3I7zeo06mzWh8czI1CSrvIvHdGXdjcV2iuoBBNsqk1C6uh999bg==", "requires": { - "@cucumber/cucumber-expressions": "^16.0.1", + "@cucumber/cucumber-expressions": "^16.1.0", "@cucumber/gherkin": "^25.0.2", - "@cucumber/gherkin-utils": "^8.0.1", + "@cucumber/gherkin-utils": "^8.0.2", "@cucumber/messages": "^20.0.0", "@types/js-search": "1.4.0", - "@types/mustache": "4.2.1", + "@types/mustache": "4.2.2", "fuse.js": "6.6.2", "js-search": "2.0.0", "mustache": "4.2.0", @@ -8231,9 +8317,9 @@ }, "dependencies": { "@cucumber/cucumber-expressions": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.0.1.tgz", - "integrity": "sha512-kYwm6Atet5DzK7+0f5kTPDb4BImXMvD5rBk4KUYHBsHi/nvb+drYx/51UH1Z2L9nHlh2dHgMfEbH2LjJw/T1pQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.0.tgz", + "integrity": "sha512-Q/tKDNje9RrcOXF2TO2NwTW92rzk+RwKkhYYKLxQT26Co8Qbjom0Cz02HsCMA2wjJ8dw6/d2IbWgiOay9RQA+w==", "requires": { "regexp-match-indices": "1.0.2" } @@ -8633,9 +8719,9 @@ "dev": true }, "@types/mustache": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.1.tgz", - "integrity": "sha512-gFAlWL9Ik21nJioqjlGCnNYbf9zHi0sVbaZ/1hQEBcCEuxfLJDvz4bVJSV6v6CUaoLOz0XEIoP7mSrhJ6o237w==" + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.2.tgz", + "integrity": "sha512-MUSpfpW0yZbTgjekDbH0shMYBUD+X/uJJJMm9LXN1d5yjl5lCY1vN/eWKD6D1tOtjA6206K0zcIPnUaFMurdNA==" }, "@types/node": { "version": "18.11.9", @@ -8664,14 +8750,14 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz", - "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/type-utils": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -8681,53 +8767,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz", - "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz", - "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0" + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" } }, "@typescript-eslint/type-utils": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz", - "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz", - "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz", - "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -8736,28 +8822,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz", - "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz", - "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/types": "5.44.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -9775,9 +9861,9 @@ "dev": true }, "eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", @@ -11727,9 +11813,9 @@ } }, "npm-check-updates": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.4.1.tgz", - "integrity": "sha512-g0Uf1kCw0p5boutvu5E4htsjYEDuFT9LxYHYFLldAzWs5012jVikEH1Wdae68xedu4twF4EVbKcs83+G2nGnQg==", + "version": "16.4.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.4.3.tgz", + "integrity": "sha512-kuTErUSd9DkJKU5Kf5nitkN4Yf8k41OJL/hudtRR+Rf9YaKJasLHHnQboQdEtbf6DFrqMzwxrPSX8p1engLLbQ==", "dev": true, "requires": { "chalk": "^5.1.2", @@ -12496,9 +12582,9 @@ "dev": true }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", "dev": true }, "prettier-linter-helpers": { @@ -14033,6 +14119,12 @@ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index ac798265..1921a60d 100644 --- a/package.json +++ b/package.json @@ -64,12 +64,12 @@ }, "homepage": "https://github.com/cucumber/language-server#readme", "devDependencies": { - "@cucumber/cucumber": "8.8.0", + "@cucumber/cucumber": "8.9.0", "@types/mocha": "10.0.0", "@types/node": "18.11.9", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", - "eslint": "8.27.0", + "@typescript-eslint/eslint-plugin": "5.44.0", + "@typescript-eslint/parser": "5.44.0", + "eslint": "8.28.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-node": "11.1.0", @@ -77,8 +77,8 @@ "eslint-plugin-simple-import-sort": "8.0.0", "husky": "8.0.2", "mocha": "10.1.0", - "npm-check-updates": "16.4.1", - "prettier": "2.7.1", + "npm-check-updates": "16.4.3", + "prettier": "2.8.0", "pretty-quick": "3.1.3", "ts-node": "10.9.1", "typescript": "4.9.3", @@ -86,8 +86,8 @@ "vscode-languageserver-protocol": "3.17.2" }, "dependencies": { - "@cucumber/gherkin-utils": "^8.0.1", - "@cucumber/language-service": "^1.2.0", + "@cucumber/gherkin-utils": "^8.0.2", + "@cucumber/language-service": "^1.3.0", "fast-glob": "3.2.12", "source-map-support": "0.5.21", "vscode-languageserver": "8.0.2", diff --git a/src/version.ts b/src/version.ts index c01c1764..20e2ef27 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = '1.1.1' +export const version = '1.2.0'