@fabricorg/databricks-bdd 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/run-features.ts"],"names":["require"],"mappings":";;;;;;;AA2BA,eAAsB,YAAY,OAAA,EAAyD;AACzF,EAAA,MAAMA,QAAAA,GAAU,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAG7C,EAAA,MAAM,OAAA,GAAUA,QAAAA,CAAQ,OAAA,CAAQ,iCAAiC,CAAA;AACjE,EAAA,MAAM,GAAA,GAAMA,SAAQ,OAAO,CAAA;AAC3B,EAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,OAAO,GAAG,GAAA,CAAI,GAAA,CAAI,aAAa,CAAA,IAAK,iBAAiB,CAAA;AAC9E,EAAA,MAAM,MAAyB,EAAE,GAAG,QAAQ,GAAA,EAAK,GAAG,QAAQ,GAAA,EAAI;AAChE,EAAA,IAAI,OAAA,CAAQ,OAAO,IAAA,EAAM;AACvB,IAAA,MAAM,SAAA,GAAY,cAAA;AAClB,IAAA,GAAA,CAAI,YAAA,GAAe,IAAI,YAAA,GAAe,CAAA,EAAG,IAAI,YAAY,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,SAAA;AAAA,EAC7E;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,QAAA;AAAA,MACE,OAAA,CAAQ,QAAA;AAAA,MACR,CAAC,GAAA,EAAK,GAAI,OAAA,CAAQ,IAAA,IAAQ,EAAG,CAAA;AAAA,MAC7B,EAAE,GAAA,EAAK,OAAA,CAAQ,GAAA,EAAK,GAAA,EAAK,OAAA,EAAS,OAAA,CAAQ,SAAA,IAAa,IAAA,EAAS,SAAA,EAAW,EAAA,GAAK,IAAA,GAAO,IAAA,EAAK;AAAA,MAC5F,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACzB,QAAA,MAAM,QAAA,GACJ,KAAA,IAAS,OAAQ,KAAA,CAA6B,IAAA,KAAS,WACjD,KAAA,CAA4B,IAAA,IAAQ,CAAA,GACtC,KAAA,GACE,CAAA,GACA,CAAA;AACR,QAAA,OAAA,CAAQ,EAAE,OAAA,EAAS,QAAA,KAAa,GAAG,QAAA,EAAU,MAAA,EAAQ,GAAG,MAAM;AAAA,EAAK,MAAM,IAAI,CAAA;AAAA,MAC/E;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH","file":"index.js","sourcesContent":["import { execFile } from 'node:child_process';\nimport { createRequire } from 'node:module';\nimport { dirname, join } from 'node:path';\n\nexport interface RunFeaturesOptions {\n /** Directory containing the cucumber config / features. */\n cwd: string;\n /** Extra CLI args, e.g. ['--tags', 'not @slow'] or ['features/foo.feature']. */\n args?: string[];\n /** Extra environment (merged over process.env). */\n env?: Record<string, string>;\n /** Load TypeScript support code via tsx (default true). */\n tsx?: boolean;\n timeoutMs?: number;\n}\n\nexport interface RunFeaturesResult {\n success: boolean;\n exitCode: number;\n output: string;\n}\n\n/**\n * Vitest bridge: run cucumber-js as a subprocess so feature suites can be\n * embedded in an existing vitest run (one CI entry point) without fighting\n * over cucumber's global step registry or vitest's module transforms.\n */\nexport async function runFeatures(options: RunFeaturesOptions): Promise<RunFeaturesResult> {\n const require = createRequire(import.meta.url);\n // The bin path is not in the package's exports map — resolve it relative\n // to package.json (which is exported).\n const pkgPath = require.resolve('@cucumber/cucumber/package.json');\n const pkg = require(pkgPath) as { bin: Record<string, string> };\n const bin = join(dirname(pkgPath), pkg.bin['cucumber-js'] ?? 'bin/cucumber.js');\n const env: NodeJS.ProcessEnv = { ...process.env, ...options.env };\n if (options.tsx ?? true) {\n const tsxImport = '--import tsx';\n env.NODE_OPTIONS = env.NODE_OPTIONS ? `${env.NODE_OPTIONS} ${tsxImport}` : tsxImport;\n }\n return new Promise((resolve) => {\n execFile(\n process.execPath,\n [bin, ...(options.args ?? [])],\n { cwd: options.cwd, env, timeout: options.timeoutMs ?? 120_000, maxBuffer: 16 * 1024 * 1024 },\n (error, stdout, stderr) => {\n const exitCode =\n error && typeof (error as { code?: unknown }).code === 'number'\n ? ((error as { code?: number }).code ?? 1)\n : error\n ? 1\n : 0;\n resolve({ success: exitCode === 0, exitCode, output: `${stdout}\\n${stderr}` });\n },\n );\n });\n}\n"]}
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var cucumber = require('@cucumber/cucumber');
4
+
5
+ // src/parameter-types.ts
6
+ var RUN_STATES = ["SUCCESS", "FAILED", "CANCELED", "TIMEDOUT"];
7
+ function parseDuration(value) {
8
+ const match = value.trim().match(/^(\d+(?:\.\d+)?)\s*(milliseconds?|ms|seconds?|s|minutes?|m)$/i);
9
+ if (!match) throw new Error(`Invalid duration '${value}'`);
10
+ const amount = Number(match[1]);
11
+ const unit = match[2]?.toLowerCase() ?? "";
12
+ if (unit === "ms" || unit.startsWith("millisecond")) return amount;
13
+ if (unit === "s" || unit.startsWith("second")) return amount * 1e3;
14
+ return amount * 6e4;
15
+ }
16
+ function parseTableIdentifier(value) {
17
+ const identifier = value.trim();
18
+ const part = "(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)";
19
+ if (!new RegExp(`^${part}(?:\\.${part}){0,2}$`).test(identifier)) {
20
+ throw new Error(`Invalid 1-3 part table identifier '${value}'`);
21
+ }
22
+ return identifier;
23
+ }
24
+ function registerParameterTypes() {
25
+ cucumber.defineParameterType({
26
+ name: "runState",
27
+ regexp: /SUCCESS|FAILED|CANCELED|TIMEDOUT/,
28
+ transformer: (value) => value
29
+ });
30
+ cucumber.defineParameterType({
31
+ name: "duration",
32
+ regexp: /\d+(?:\.\d+)?\s*(?:milliseconds?|ms|seconds?|s|minutes?|m)/,
33
+ transformer: parseDuration
34
+ });
35
+ cucumber.defineParameterType({
36
+ name: "table",
37
+ regexp: /(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)(?:\.(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)){0,2}/,
38
+ transformer: parseTableIdentifier
39
+ });
40
+ }
41
+
42
+ exports.RUN_STATES = RUN_STATES;
43
+ exports.parseDuration = parseDuration;
44
+ exports.parseTableIdentifier = parseTableIdentifier;
45
+ exports.registerParameterTypes = registerParameterTypes;
46
+ //# sourceMappingURL=parameter-types.cjs.map
47
+ //# sourceMappingURL=parameter-types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/parameter-types.ts"],"names":["defineParameterType"],"mappings":";;;;;AAEO,IAAM,UAAA,GAAa,CAAC,SAAA,EAAW,QAAA,EAAU,YAAY,UAAU;AAG/D,SAAS,cAAc,KAAA,EAAuB;AACnD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,EAAK,CAAE,MAAM,+DAA+D,CAAA;AAChG,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,KAAK,CAAA,CAAA,CAAG,CAAA;AACzD,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,EAAG,aAAY,IAAK,EAAA;AACxC,EAAA,IAAI,SAAS,IAAA,IAAQ,IAAA,CAAK,UAAA,CAAW,aAAa,GAAG,OAAO,MAAA;AAC5D,EAAA,IAAI,SAAS,GAAA,IAAO,IAAA,CAAK,WAAW,QAAQ,CAAA,SAAU,MAAA,GAAS,GAAA;AAC/D,EAAA,OAAO,MAAA,GAAS,GAAA;AAClB;AAEO,SAAS,qBAAqB,KAAA,EAAuB;AAC1D,EAAA,MAAM,UAAA,GAAa,MAAM,IAAA,EAAK;AAC9B,EAAA,MAAM,IAAA,GAAO,oCAAA;AACb,EAAA,IAAI,CAAC,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,IAAI,CAAA,MAAA,EAAS,IAAI,CAAA,OAAA,CAAS,CAAA,CAAE,IAAA,CAAK,UAAU,CAAA,EAAG;AAChE,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,UAAA;AACT;AAEO,SAAS,sBAAA,GAA+B;AAC7C,EAAAA,4BAAA,CAAoB;AAAA,IAClB,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,kCAAA;AAAA,IACR,WAAA,EAAa,CAAC,KAAA,KAA4B;AAAA,GAC3C,CAAA;AAED,EAAAA,4BAAA,CAAoB;AAAA,IAClB,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,4DAAA;AAAA,IACR,WAAA,EAAa;AAAA,GACd,CAAA;AAED,EAAAA,4BAAA,CAAoB;AAAA,IAClB,IAAA,EAAM,OAAA;AAAA,IACN,MAAA,EAAQ,iFAAA;AAAA,IACR,WAAA,EAAa;AAAA,GACd,CAAA;AACH","file":"parameter-types.cjs","sourcesContent":["import { defineParameterType } from '@cucumber/cucumber';\n\nexport const RUN_STATES = ['SUCCESS', 'FAILED', 'CANCELED', 'TIMEDOUT'] as const;\nexport type RunState = (typeof RUN_STATES)[number];\n\nexport function parseDuration(value: string): number {\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*(milliseconds?|ms|seconds?|s|minutes?|m)$/i);\n if (!match) throw new Error(`Invalid duration '${value}'`);\n const amount = Number(match[1]);\n const unit = match[2]?.toLowerCase() ?? '';\n if (unit === 'ms' || unit.startsWith('millisecond')) return amount;\n if (unit === 's' || unit.startsWith('second')) return amount * 1_000;\n return amount * 60_000;\n}\n\nexport function parseTableIdentifier(value: string): string {\n const identifier = value.trim();\n const part = '(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)';\n if (!new RegExp(`^${part}(?:\\\\.${part}){0,2}$`).test(identifier)) {\n throw new Error(`Invalid 1-3 part table identifier '${value}'`);\n }\n return identifier;\n}\n\nexport function registerParameterTypes(): void {\n defineParameterType({\n name: 'runState',\n regexp: /SUCCESS|FAILED|CANCELED|TIMEDOUT/,\n transformer: (value: string): RunState => value as RunState,\n });\n\n defineParameterType({\n name: 'duration',\n regexp: /\\d+(?:\\.\\d+)?\\s*(?:milliseconds?|ms|seconds?|s|minutes?|m)/,\n transformer: parseDuration,\n });\n\n defineParameterType({\n name: 'table',\n regexp: /(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)(?:\\.(?:[A-Za-z_][A-Za-z0-9_]*|`[^`]+`)){0,2}/,\n transformer: parseTableIdentifier,\n });\n}\n"]}
@@ -0,0 +1,7 @@
1
+ declare const RUN_STATES: readonly ["SUCCESS", "FAILED", "CANCELED", "TIMEDOUT"];
2
+ type RunState = (typeof RUN_STATES)[number];
3
+ declare function parseDuration(value: string): number;
4
+ declare function parseTableIdentifier(value: string): string;
5
+ declare function registerParameterTypes(): void;
6
+
7
+ export { RUN_STATES, type RunState, parseDuration, parseTableIdentifier, registerParameterTypes };
@@ -0,0 +1,7 @@
1
+ declare const RUN_STATES: readonly ["SUCCESS", "FAILED", "CANCELED", "TIMEDOUT"];
2
+ type RunState = (typeof RUN_STATES)[number];
3
+ declare function parseDuration(value: string): number;
4
+ declare function parseTableIdentifier(value: string): string;
5
+ declare function registerParameterTypes(): void;
6
+
7
+ export { RUN_STATES, type RunState, parseDuration, parseTableIdentifier, registerParameterTypes };
@@ -0,0 +1,3 @@
1
+ export { RUN_STATES, parseDuration, parseTableIdentifier, registerParameterTypes } from './chunk-YNOLRERF.js';
2
+ //# sourceMappingURL=parameter-types.js.map
3
+ //# sourceMappingURL=parameter-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"parameter-types.js"}