@dev-blinq/cucumber_client 1.0.1744-dev → 1.0.1745-dev

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.
@@ -14,6 +14,40 @@ import socketLogger, { getErrorMessage } from "../utils/socket_logger.js";
14
14
 
15
15
  const STEP_KEYWORDS = new Set(["Given", "When", "Then"]);
16
16
 
17
+ /**
18
+ * @typedef {Object} StepDefinitionParseError
19
+ * @property {"STEP_DEFINITION_PARSE_ERROR"} code
20
+ * @property {string} message
21
+ * @property {string} filePath
22
+ * @property {number | null} line
23
+ * @property {number | null} column
24
+ * @property {Error} cause
25
+ */
26
+
27
+ /**
28
+ * Create a structured parse error for step definition files.
29
+ * @param {string} filePath
30
+ * @param {unknown} error
31
+ * @returns {Error & StepDefinitionParseError}
32
+ */
33
+ export function createStepDefinitionParseError(filePath, error) {
34
+ const err = error instanceof Error ? error : new Error(String(error));
35
+ const loc = /** @type {any} */ (error)?.loc || /** @type {any} */ (error)?.location;
36
+ const line = loc?.line ?? null;
37
+ const column = loc?.column ?? null;
38
+ const message = err.message || "Failed to parse step definition file";
39
+
40
+ const parseError = new Error(
41
+ `Step definition parse failed in ${filePath}${line ? `:${line}${column !== null ? `:${column}` : ""}` : ""}: ${message}`
42
+ );
43
+ /** @type {Error & StepDefinitionParseError} */ (parseError).code = "STEP_DEFINITION_PARSE_ERROR";
44
+ /** @type {Error & StepDefinitionParseError} */ (parseError).filePath = filePath;
45
+ /** @type {Error & StepDefinitionParseError} */ (parseError).line = line;
46
+ /** @type {Error & StepDefinitionParseError} */ (parseError).column = column;
47
+ /** @type {Error & StepDefinitionParseError} */ (parseError).cause = err;
48
+ return /** @type {Error & StepDefinitionParseError} */ (parseError);
49
+ }
50
+
17
51
  /**
18
52
  * Parse a step definitions file and return its AST.
19
53
  * @param {string} filePath
@@ -21,12 +55,15 @@ const STEP_KEYWORDS = new Set(["Given", "When", "Then"]);
21
55
  */
22
56
  export async function parse(filePath) {
23
57
  const code = await fs.readFile(filePath, "utf-8");
24
- const ast = babelParse(code, {
25
- sourceType: "module",
26
-
27
- // plugins: ["jsx", "typescript"],
28
- });
29
- return ast;
58
+ try {
59
+ const ast = babelParse(code, {
60
+ sourceType: "module",
61
+ // plugins: ["jsx", "typescript"],
62
+ });
63
+ return ast;
64
+ } catch (error) {
65
+ throw createStepDefinitionParseError(filePath, error);
66
+ }
30
67
  }
31
68
 
32
69
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev-blinq/cucumber_client",
3
- "version": "1.0.1744-dev",
3
+ "version": "1.0.1745-dev",
4
4
  "description": " ",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",