qfai 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cli/index.cjs +2 -2
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.mjs +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +167 -2
- package/dist/index.mjs +2 -2
- package/package.json +3 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -30
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/report.d.ts +0 -7
- package/dist/cli/commands/report.d.ts.map +0 -1
- package/dist/cli/commands/report.js +0 -108
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/validate.d.ts +0 -9
- package/dist/cli/commands/validate.d.ts.map +0 -1
- package/dist/cli/commands/validate.js +0 -57
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -7
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/lib/args.d.ts +0 -18
- package/dist/cli/lib/args.d.ts.map +0 -1
- package/dist/cli/lib/args.js +0 -98
- package/dist/cli/lib/args.js.map +0 -1
- package/dist/cli/lib/assets.d.ts +0 -2
- package/dist/cli/lib/assets.d.ts.map +0 -1
- package/dist/cli/lib/assets.js +0 -24
- package/dist/cli/lib/assets.js.map +0 -1
- package/dist/cli/lib/failOn.d.ts +0 -5
- package/dist/cli/lib/failOn.d.ts.map +0 -1
- package/dist/cli/lib/failOn.js +0 -10
- package/dist/cli/lib/failOn.js.map +0 -1
- package/dist/cli/lib/fs.d.ts +0 -11
- package/dist/cli/lib/fs.d.ts.map +0 -1
- package/dist/cli/lib/fs.js +0 -91
- package/dist/cli/lib/fs.js.map +0 -1
- package/dist/cli/lib/logger.d.ts +0 -4
- package/dist/cli/lib/logger.d.ts.map +0 -1
- package/dist/cli/lib/logger.js +0 -10
- package/dist/cli/lib/logger.js.map +0 -1
- package/dist/cli/main.d.ts +0 -2
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -66
- package/dist/cli/main.js.map +0 -1
- package/dist/core/config.d.ts +0 -47
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -224
- package/dist/core/config.js.map +0 -1
- package/dist/core/contractIndex.d.ts +0 -12
- package/dist/core/contractIndex.d.ts.map +0 -1
- package/dist/core/contractIndex.js +0 -38
- package/dist/core/contractIndex.js.map +0 -1
- package/dist/core/contracts.d.ts +0 -5
- package/dist/core/contracts.d.ts.map +0 -1
- package/dist/core/contracts.js +0 -42
- package/dist/core/contracts.js.map +0 -1
- package/dist/core/contractsDecl.d.ts +0 -3
- package/dist/core/contractsDecl.d.ts.map +0 -1
- package/dist/core/contractsDecl.js +0 -19
- package/dist/core/contractsDecl.js.map +0 -1
- package/dist/core/discovery.d.ts +0 -14
- package/dist/core/discovery.d.ts.map +0 -1
- package/dist/core/discovery.js +0 -55
- package/dist/core/discovery.js.map +0 -1
- package/dist/core/fs.d.ts +0 -11
- package/dist/core/fs.d.ts.map +0 -1
- package/dist/core/fs.js +0 -68
- package/dist/core/fs.js.map +0 -1
- package/dist/core/gherkin/parse.d.ts +0 -7
- package/dist/core/gherkin/parse.d.ts.map +0 -1
- package/dist/core/gherkin/parse.js +0 -25
- package/dist/core/gherkin/parse.js.map +0 -1
- package/dist/core/ids.d.ts +0 -6
- package/dist/core/ids.d.ts.map +0 -1
- package/dist/core/ids.js +0 -52
- package/dist/core/ids.js.map +0 -1
- package/dist/core/index.d.ts +0 -13
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -13
- package/dist/core/index.js.map +0 -1
- package/dist/core/parse/adr.d.ts +0 -13
- package/dist/core/parse/adr.d.ts.map +0 -1
- package/dist/core/parse/adr.js +0 -33
- package/dist/core/parse/adr.js.map +0 -1
- package/dist/core/parse/gherkin.d.ts +0 -12
- package/dist/core/parse/gherkin.d.ts.map +0 -1
- package/dist/core/parse/gherkin.js +0 -22
- package/dist/core/parse/gherkin.js.map +0 -1
- package/dist/core/parse/markdown.d.ts +0 -14
- package/dist/core/parse/markdown.d.ts.map +0 -1
- package/dist/core/parse/markdown.js +0 -45
- package/dist/core/parse/markdown.js.map +0 -1
- package/dist/core/parse/spec.d.ts +0 -36
- package/dist/core/parse/spec.d.ts.map +0 -1
- package/dist/core/parse/spec.js +0 -123
- package/dist/core/parse/spec.js.map +0 -1
- package/dist/core/report.d.ts +0 -55
- package/dist/core/report.d.ts.map +0 -1
- package/dist/core/report.js +0 -393
- package/dist/core/report.js.map +0 -1
- package/dist/core/scenarioModel.d.ts +0 -33
- package/dist/core/scenarioModel.d.ts.map +0 -1
- package/dist/core/scenarioModel.js +0 -128
- package/dist/core/scenarioModel.js.map +0 -1
- package/dist/core/specLayout.d.ts +0 -8
- package/dist/core/specLayout.d.ts.map +0 -1
- package/dist/core/specLayout.js +0 -36
- package/dist/core/specLayout.js.map +0 -1
- package/dist/core/traceability.d.ts +0 -26
- package/dist/core/traceability.d.ts.map +0 -1
- package/dist/core/traceability.js +0 -157
- package/dist/core/traceability.js.map +0 -1
- package/dist/core/types.d.ts +0 -31
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/core/validate.d.ts +0 -4
- package/dist/core/validate.d.ts.map +0 -1
- package/dist/core/validate.js +0 -45
- package/dist/core/validate.js.map +0 -1
- package/dist/core/validators/contracts.d.ts +0 -5
- package/dist/core/validators/contracts.d.ts.map +0 -1
- package/dist/core/validators/contracts.js +0 -189
- package/dist/core/validators/contracts.js.map +0 -1
- package/dist/core/validators/delta.d.ts +0 -4
- package/dist/core/validators/delta.d.ts.map +0 -1
- package/dist/core/validators/delta.js +0 -68
- package/dist/core/validators/delta.js.map +0 -1
- package/dist/core/validators/ids.d.ts +0 -4
- package/dist/core/validators/ids.d.ts.map +0 -1
- package/dist/core/validators/ids.js +0 -88
- package/dist/core/validators/ids.js.map +0 -1
- package/dist/core/validators/scenario.d.ts +0 -5
- package/dist/core/validators/scenario.d.ts.map +0 -1
- package/dist/core/validators/scenario.js +0 -127
- package/dist/core/validators/scenario.js.map +0 -1
- package/dist/core/validators/spec.d.ts +0 -5
- package/dist/core/validators/spec.d.ts.map +0 -1
- package/dist/core/validators/spec.js +0 -94
- package/dist/core/validators/spec.js.map +0 -1
- package/dist/core/validators/traceability.d.ts +0 -4
- package/dist/core/validators/traceability.d.ts.map +0 -1
- package/dist/core/validators/traceability.js +0 -222
- package/dist/core/validators/traceability.js.map +0 -1
- package/dist/core/version.d.ts +0 -2
- package/dist/core/version.d.ts.map +0 -1
- package/dist/core/version.js +0 -25
- package/dist/core/version.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contractIndex.js","sourceRoot":"","sources":["../../src/core/contractIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAQhE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,MAAkB;IAElB,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAE9C,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,sBAAsB,CAAC,MAAM,CAAC;QAC9B,uBAAuB,CAAC,OAAO,CAAC;QAChC,sBAAsB,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAkB;QAC3B,GAAG,EAAE,IAAI,GAAG,EAAU;QACtB,SAAS,EAAE,IAAI,GAAG,EAAuB;QACzC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE;KACnD,CAAC;IAEF,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAe,EACf,KAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,0BAA0B,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAoB,EAAE,EAAU,EAAE,IAAY;IAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/core/contracts.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function parseStructuredContract(file: string, text: string): Record<string, unknown>;
|
|
2
|
-
export declare function extractUiContractIds(doc: Record<string, unknown>): string[];
|
|
3
|
-
export declare function extractApiContractIds(doc: Record<string, unknown>): string[];
|
|
4
|
-
export declare function collectOperationIds(value: unknown, out: Set<string>): void;
|
|
5
|
-
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/core/contracts.ts"],"names":[],"mappings":"AAMA,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAG3E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAS5E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAkB1E"}
|
package/dist/core/contracts.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { parse as parseYaml } from "yaml";
|
|
3
|
-
import { extractIds } from "./ids.js";
|
|
4
|
-
export function parseStructuredContract(file, text) {
|
|
5
|
-
const ext = path.extname(file).toLowerCase();
|
|
6
|
-
if (ext === ".json") {
|
|
7
|
-
return JSON.parse(text);
|
|
8
|
-
}
|
|
9
|
-
return parseYaml(text);
|
|
10
|
-
}
|
|
11
|
-
export function extractUiContractIds(doc) {
|
|
12
|
-
const id = typeof doc.id === "string" ? doc.id : "";
|
|
13
|
-
return extractIds(id, "UI");
|
|
14
|
-
}
|
|
15
|
-
export function extractApiContractIds(doc) {
|
|
16
|
-
const operationIds = new Set();
|
|
17
|
-
collectOperationIds(doc, operationIds);
|
|
18
|
-
const ids = new Set();
|
|
19
|
-
for (const operationId of operationIds) {
|
|
20
|
-
extractIds(operationId, "API").forEach((id) => ids.add(id));
|
|
21
|
-
}
|
|
22
|
-
return Array.from(ids);
|
|
23
|
-
}
|
|
24
|
-
export function collectOperationIds(value, out) {
|
|
25
|
-
if (!value || typeof value !== "object") {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (Array.isArray(value)) {
|
|
29
|
-
for (const item of value) {
|
|
30
|
-
collectOperationIds(item, out);
|
|
31
|
-
}
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
for (const [key, entry] of Object.entries(value)) {
|
|
35
|
-
if (key === "operationId" && typeof entry === "string") {
|
|
36
|
-
out.add(entry);
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
collectOperationIds(entry, out);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=contracts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/core/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAA4B,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAA4B;IAC/D,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAA4B;IAChE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,GAAgB;IAClE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,KAAK,aAAa,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contractsDecl.d.ts","sourceRoot":"","sources":["../../src/core/contractsDecl.ts"],"names":[],"mappings":"AAKA,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASjE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlE"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const CONTRACT_DECLARATION_RE = /^\s*(?:#|\/\/|--|\/\*+|\*+)?\s*QFAI-CONTRACT-ID:\s*((?:API|UI|DB)-\d{4})\s*(?:\*\/)?\s*$/gm;
|
|
2
|
-
const CONTRACT_DECLARATION_LINE_RE = /^\s*(?:#|\/\/|--|\/\*+|\*+)?\s*QFAI-CONTRACT-ID:\s*(?:API|UI|DB)-\d{4}\s*(?:\*\/)?\s*$/;
|
|
3
|
-
export function extractDeclaredContractIds(text) {
|
|
4
|
-
const ids = [];
|
|
5
|
-
for (const match of text.matchAll(CONTRACT_DECLARATION_RE)) {
|
|
6
|
-
const id = match[1];
|
|
7
|
-
if (id) {
|
|
8
|
-
ids.push(id);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return ids;
|
|
12
|
-
}
|
|
13
|
-
export function stripContractDeclarationLines(text) {
|
|
14
|
-
return text
|
|
15
|
-
.split(/\r?\n/)
|
|
16
|
-
.filter((line) => !CONTRACT_DECLARATION_LINE_RE.test(line))
|
|
17
|
-
.join("\n");
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=contractsDecl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contractsDecl.js","sourceRoot":"","sources":["../../src/core/contractsDecl.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAC3B,4FAA4F,CAAC;AAC/F,MAAM,4BAA4B,GAChC,wFAAwF,CAAC;AAE3F,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,OAAO,IAAI;SACR,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/core/discovery.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type ContractFiles = {
|
|
2
|
-
api: string[];
|
|
3
|
-
ui: string[];
|
|
4
|
-
db: string[];
|
|
5
|
-
};
|
|
6
|
-
export declare function collectSpecPackDirs(specsRoot: string): Promise<string[]>;
|
|
7
|
-
export declare function collectSpecFiles(specsRoot: string): Promise<string[]>;
|
|
8
|
-
export declare function collectDeltaFiles(specsRoot: string): Promise<string[]>;
|
|
9
|
-
export declare function collectScenarioFiles(specsRoot: string): Promise<string[]>;
|
|
10
|
-
export declare function collectUiContractFiles(uiRoot: string): Promise<string[]>;
|
|
11
|
-
export declare function collectApiContractFiles(apiRoot: string): Promise<string[]>;
|
|
12
|
-
export declare function collectDbContractFiles(dbRoot: string): Promise<string[]>;
|
|
13
|
-
export declare function collectContractFiles(uiRoot: string, apiRoot: string, dbRoot: string): Promise<ContractFiles>;
|
|
14
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;CACd,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnB;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG3E;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG5E;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAOxB"}
|
package/dist/core/discovery.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { access } from "node:fs/promises";
|
|
2
|
-
import { collectFiles } from "./fs.js";
|
|
3
|
-
import { collectSpecEntries } from "./specLayout.js";
|
|
4
|
-
export async function collectSpecPackDirs(specsRoot) {
|
|
5
|
-
const entries = await collectSpecEntries(specsRoot);
|
|
6
|
-
return entries.map((entry) => entry.dir);
|
|
7
|
-
}
|
|
8
|
-
export async function collectSpecFiles(specsRoot) {
|
|
9
|
-
const entries = await collectSpecEntries(specsRoot);
|
|
10
|
-
return filterExisting(entries.map((entry) => entry.specPath));
|
|
11
|
-
}
|
|
12
|
-
export async function collectDeltaFiles(specsRoot) {
|
|
13
|
-
const entries = await collectSpecEntries(specsRoot);
|
|
14
|
-
return filterExisting(entries.map((entry) => entry.deltaPath));
|
|
15
|
-
}
|
|
16
|
-
export async function collectScenarioFiles(specsRoot) {
|
|
17
|
-
const entries = await collectSpecEntries(specsRoot);
|
|
18
|
-
return filterExisting(entries.map((entry) => entry.scenarioPath));
|
|
19
|
-
}
|
|
20
|
-
export async function collectUiContractFiles(uiRoot) {
|
|
21
|
-
return collectFiles(uiRoot, { extensions: [".yaml", ".yml"] });
|
|
22
|
-
}
|
|
23
|
-
export async function collectApiContractFiles(apiRoot) {
|
|
24
|
-
return collectFiles(apiRoot, { extensions: [".yaml", ".yml", ".json"] });
|
|
25
|
-
}
|
|
26
|
-
export async function collectDbContractFiles(dbRoot) {
|
|
27
|
-
return collectFiles(dbRoot, { extensions: [".sql"] });
|
|
28
|
-
}
|
|
29
|
-
export async function collectContractFiles(uiRoot, apiRoot, dbRoot) {
|
|
30
|
-
const [ui, api, db] = await Promise.all([
|
|
31
|
-
collectUiContractFiles(uiRoot),
|
|
32
|
-
collectApiContractFiles(apiRoot),
|
|
33
|
-
collectDbContractFiles(dbRoot),
|
|
34
|
-
]);
|
|
35
|
-
return { ui, api, db };
|
|
36
|
-
}
|
|
37
|
-
async function filterExisting(files) {
|
|
38
|
-
const existing = [];
|
|
39
|
-
for (const file of files) {
|
|
40
|
-
if (await exists(file)) {
|
|
41
|
-
existing.push(file);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return existing;
|
|
45
|
-
}
|
|
46
|
-
async function exists(target) {
|
|
47
|
-
try {
|
|
48
|
-
await access(target);
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/core/fs.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type CollectFilesOptions = {
|
|
2
|
-
extensions?: string[];
|
|
3
|
-
ignoreDirs?: string[];
|
|
4
|
-
};
|
|
5
|
-
export type CollectFilesByGlobOptions = {
|
|
6
|
-
globs: string[];
|
|
7
|
-
ignore?: string[];
|
|
8
|
-
};
|
|
9
|
-
export declare function collectFiles(root: string, options?: CollectFilesOptions): Promise<string[]>;
|
|
10
|
-
export declare function collectFilesByGlobs(root: string, options: CollectFilesByGlobOptions): Promise<string[]>;
|
|
11
|
-
//# sourceMappingURL=fs.d.ts.map
|
package/dist/core/fs.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/core/fs.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB"}
|
package/dist/core/fs.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { access, readdir } from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import fg from "fast-glob";
|
|
4
|
-
const DEFAULT_IGNORE_DIRS = new Set([
|
|
5
|
-
"node_modules",
|
|
6
|
-
".git",
|
|
7
|
-
"dist",
|
|
8
|
-
".pnpm",
|
|
9
|
-
"tmp",
|
|
10
|
-
".mcp-tools",
|
|
11
|
-
]);
|
|
12
|
-
export async function collectFiles(root, options = {}) {
|
|
13
|
-
const entries = [];
|
|
14
|
-
if (!(await exists(root))) {
|
|
15
|
-
return entries;
|
|
16
|
-
}
|
|
17
|
-
const ignoreDirs = new Set([
|
|
18
|
-
...DEFAULT_IGNORE_DIRS,
|
|
19
|
-
...(options.ignoreDirs ?? []),
|
|
20
|
-
]);
|
|
21
|
-
const extensions = options.extensions?.map((ext) => ext.toLowerCase()) ?? [];
|
|
22
|
-
await walk(root, root, ignoreDirs, extensions, entries);
|
|
23
|
-
return entries;
|
|
24
|
-
}
|
|
25
|
-
export async function collectFilesByGlobs(root, options) {
|
|
26
|
-
if (options.globs.length === 0) {
|
|
27
|
-
return [];
|
|
28
|
-
}
|
|
29
|
-
return fg(options.globs, {
|
|
30
|
-
cwd: root,
|
|
31
|
-
ignore: options.ignore ?? [],
|
|
32
|
-
onlyFiles: true,
|
|
33
|
-
absolute: true,
|
|
34
|
-
unique: true,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
async function walk(base, current, ignoreDirs, extensions, out) {
|
|
38
|
-
const items = await readdir(current, { withFileTypes: true });
|
|
39
|
-
for (const item of items) {
|
|
40
|
-
const fullPath = path.join(current, item.name);
|
|
41
|
-
if (item.isDirectory()) {
|
|
42
|
-
if (ignoreDirs.has(item.name)) {
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
await walk(base, fullPath, ignoreDirs, extensions, out);
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (item.isFile()) {
|
|
49
|
-
if (extensions.length > 0) {
|
|
50
|
-
const ext = path.extname(item.name).toLowerCase();
|
|
51
|
-
if (!extensions.includes(ext)) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
out.push(fullPath);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async function exists(target) {
|
|
60
|
-
try {
|
|
61
|
-
await access(target);
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=fs.js.map
|
package/dist/core/fs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/core/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { GherkinDocument } from "@cucumber/messages";
|
|
2
|
-
export type ParsedGherkin = {
|
|
3
|
-
gherkinDocument: GherkinDocument | null;
|
|
4
|
-
errors: string[];
|
|
5
|
-
};
|
|
6
|
-
export declare function parseGherkin(source: string, uri: string): ParsedGherkin;
|
|
7
|
-
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/core/gherkin/parse.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAevE"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { AstBuilder, GherkinClassicTokenMatcher, Parser, } from "@cucumber/gherkin";
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
|
-
export function parseGherkin(source, uri) {
|
|
4
|
-
const errors = [];
|
|
5
|
-
const uuidFn = () => randomUUID();
|
|
6
|
-
const builder = new AstBuilder(uuidFn);
|
|
7
|
-
const matcher = new GherkinClassicTokenMatcher();
|
|
8
|
-
const parser = new Parser(builder, matcher);
|
|
9
|
-
try {
|
|
10
|
-
const gherkinDocument = parser.parse(source);
|
|
11
|
-
gherkinDocument.uri = uri;
|
|
12
|
-
return { gherkinDocument, errors };
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
errors.push(formatError(error));
|
|
16
|
-
return { gherkinDocument: null, errors };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function formatError(error) {
|
|
20
|
-
if (error instanceof Error) {
|
|
21
|
-
return error.message;
|
|
22
|
-
}
|
|
23
|
-
return String(error);
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=parse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/core/gherkin/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,MAAM,GACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,GAAW;IACtD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,eAAe,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/core/ids.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type IdPrefix = "SPEC" | "BR" | "SC" | "UI" | "API" | "DB";
|
|
2
|
-
export type IdFormatPrefix = IdPrefix | "ADR";
|
|
3
|
-
export declare function extractIds(text: string, prefix: IdPrefix): string[];
|
|
4
|
-
export declare function extractAllIds(text: string): string[];
|
|
5
|
-
export declare function extractInvalidIds(text: string, prefixes: IdFormatPrefix[]): string[];
|
|
6
|
-
//# sourceMappingURL=ids.d.ts.map
|
package/dist/core/ids.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;AAwB9C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAInE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMpD;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EAAE,GACzB,MAAM,EAAE,CAWV"}
|
package/dist/core/ids.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
const ID_PREFIXES = ["SPEC", "BR", "SC", "UI", "API", "DB"];
|
|
2
|
-
const STRICT_ID_PATTERNS = {
|
|
3
|
-
SPEC: /\bSPEC-\d{4}\b/g,
|
|
4
|
-
BR: /\bBR-\d{4}\b/g,
|
|
5
|
-
SC: /\bSC-\d{4}\b/g,
|
|
6
|
-
UI: /\bUI-\d{4}\b/g,
|
|
7
|
-
API: /\bAPI-\d{4}\b/g,
|
|
8
|
-
DB: /\bDB-\d{4}\b/g,
|
|
9
|
-
ADR: /\bADR-\d{4}\b/g,
|
|
10
|
-
};
|
|
11
|
-
const LOOSE_ID_PATTERNS = {
|
|
12
|
-
SPEC: /\bSPEC-[A-Za-z0-9_-]+\b/gi,
|
|
13
|
-
BR: /\bBR-[A-Za-z0-9_-]+\b/gi,
|
|
14
|
-
SC: /\bSC-[A-Za-z0-9_-]+\b/gi,
|
|
15
|
-
UI: /\bUI-[A-Za-z0-9_-]+\b/gi,
|
|
16
|
-
API: /\bAPI-[A-Za-z0-9_-]+\b/gi,
|
|
17
|
-
DB: /\bDB-[A-Za-z0-9_-]+\b/gi,
|
|
18
|
-
ADR: /\bADR-[A-Za-z0-9_-]+\b/gi,
|
|
19
|
-
};
|
|
20
|
-
export function extractIds(text, prefix) {
|
|
21
|
-
const pattern = STRICT_ID_PATTERNS[prefix];
|
|
22
|
-
const matches = text.match(pattern);
|
|
23
|
-
return unique(matches ?? []);
|
|
24
|
-
}
|
|
25
|
-
export function extractAllIds(text) {
|
|
26
|
-
const all = [];
|
|
27
|
-
ID_PREFIXES.forEach((prefix) => {
|
|
28
|
-
all.push(...extractIds(text, prefix));
|
|
29
|
-
});
|
|
30
|
-
return unique(all);
|
|
31
|
-
}
|
|
32
|
-
export function extractInvalidIds(text, prefixes) {
|
|
33
|
-
const invalid = [];
|
|
34
|
-
for (const prefix of prefixes) {
|
|
35
|
-
const candidates = text.match(LOOSE_ID_PATTERNS[prefix]) ?? [];
|
|
36
|
-
for (const candidate of candidates) {
|
|
37
|
-
if (!isValidId(candidate, prefix)) {
|
|
38
|
-
invalid.push(candidate);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return unique(invalid);
|
|
43
|
-
}
|
|
44
|
-
function unique(values) {
|
|
45
|
-
return Array.from(new Set(values));
|
|
46
|
-
}
|
|
47
|
-
function isValidId(value, prefix) {
|
|
48
|
-
const pattern = STRICT_ID_PATTERNS[prefix];
|
|
49
|
-
const strict = new RegExp(pattern.source);
|
|
50
|
-
return strict.test(value);
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=ids.js.map
|
package/dist/core/ids.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAExE,MAAM,kBAAkB,GAAmC;IACzD,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,gBAAgB;IACrB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,gBAAgB;CACtB,CAAC;AAEF,MAAM,iBAAiB,GAAmC;IACxD,IAAI,EAAE,2BAA2B;IACjC,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,yBAAyB;IAC7B,GAAG,EAAE,0BAA0B;IAC/B,EAAE,EAAE,yBAAyB;IAC7B,GAAG,EAAE,0BAA0B;CAChC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAgB;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,QAA0B;IAE1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,MAAsB;IACtD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/core/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from "./config.js";
|
|
2
|
-
export * from "./ids.js";
|
|
3
|
-
export * from "./report.js";
|
|
4
|
-
export * from "./types.js";
|
|
5
|
-
export * from "./validate.js";
|
|
6
|
-
export * from "./version.js";
|
|
7
|
-
export * from "./validators/contracts.js";
|
|
8
|
-
export * from "./validators/delta.js";
|
|
9
|
-
export * from "./validators/ids.js";
|
|
10
|
-
export * from "./validators/scenario.js";
|
|
11
|
-
export * from "./validators/spec.js";
|
|
12
|
-
export * from "./validators/traceability.js";
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
package/dist/core/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from "./config.js";
|
|
2
|
-
export * from "./ids.js";
|
|
3
|
-
export * from "./report.js";
|
|
4
|
-
export * from "./types.js";
|
|
5
|
-
export * from "./validate.js";
|
|
6
|
-
export * from "./version.js";
|
|
7
|
-
export * from "./validators/contracts.js";
|
|
8
|
-
export * from "./validators/delta.js";
|
|
9
|
-
export * from "./validators/ids.js";
|
|
10
|
-
export * from "./validators/scenario.js";
|
|
11
|
-
export * from "./validators/spec.js";
|
|
12
|
-
export * from "./validators/traceability.js";
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
package/dist/core/parse/adr.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type ParsedAdr = {
|
|
2
|
-
file: string;
|
|
3
|
-
adrId?: string;
|
|
4
|
-
fields: {
|
|
5
|
-
status?: string;
|
|
6
|
-
context?: string;
|
|
7
|
-
decision?: string;
|
|
8
|
-
consequences?: string;
|
|
9
|
-
related?: string;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export declare function parseAdr(md: string, file: string): ParsedAdr;
|
|
13
|
-
//# sourceMappingURL=adr.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../../src/core/parse/adr.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAOF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAwB5D"}
|
package/dist/core/parse/adr.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const ADR_ID_RE = /\bADR-\d{4}\b/;
|
|
2
|
-
function extractField(md, key) {
|
|
3
|
-
const pattern = new RegExp(`^\\s*-\\s*${key}:\\s*(.+)\\s*$`, "m");
|
|
4
|
-
return md.match(pattern)?.[1]?.trim();
|
|
5
|
-
}
|
|
6
|
-
export function parseAdr(md, file) {
|
|
7
|
-
const adrId = md.match(ADR_ID_RE)?.[0];
|
|
8
|
-
const fields = {};
|
|
9
|
-
const status = extractField(md, "Status");
|
|
10
|
-
const context = extractField(md, "Context");
|
|
11
|
-
const decision = extractField(md, "Decision");
|
|
12
|
-
const consequences = extractField(md, "Consequences");
|
|
13
|
-
const related = extractField(md, "Related");
|
|
14
|
-
if (status)
|
|
15
|
-
fields.status = status;
|
|
16
|
-
if (context)
|
|
17
|
-
fields.context = context;
|
|
18
|
-
if (decision)
|
|
19
|
-
fields.decision = decision;
|
|
20
|
-
if (consequences)
|
|
21
|
-
fields.consequences = consequences;
|
|
22
|
-
if (related)
|
|
23
|
-
fields.related = related;
|
|
24
|
-
const parsed = {
|
|
25
|
-
file,
|
|
26
|
-
fields,
|
|
27
|
-
};
|
|
28
|
-
if (adrId) {
|
|
29
|
-
parsed.adrId = adrId;
|
|
30
|
-
}
|
|
31
|
-
return parsed;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=adr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../../src/core/parse/adr.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,eAAe,CAAC;AAclC,SAAS,YAAY,CAAC,EAAU,EAAE,GAAW;IAC3C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,GAAG,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAE5C,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACtC,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,YAAY;QAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACrD,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAEtC,MAAM,MAAM,GAAc;QACxB,IAAI;QACJ,MAAM;KACP,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type ParsedScenarioFile = {
|
|
2
|
-
file: string;
|
|
3
|
-
featurePresent: boolean;
|
|
4
|
-
scenarios: Array<{
|
|
5
|
-
name: string;
|
|
6
|
-
line: number;
|
|
7
|
-
tags: string[];
|
|
8
|
-
body: string;
|
|
9
|
-
}>;
|
|
10
|
-
};
|
|
11
|
-
export declare function parseGherkinFeature(text: string, file: string): ParsedScenarioFile;
|
|
12
|
-
//# sourceMappingURL=gherkin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gherkin.d.ts","sourceRoot":"","sources":["../../../src/core/parse/gherkin.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,kBAAkB,CAqBpB"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { parseScenarioDocument } from "../scenarioModel.js";
|
|
2
|
-
export function parseGherkinFeature(text, file) {
|
|
3
|
-
const { document } = parseScenarioDocument(text, file);
|
|
4
|
-
if (!document) {
|
|
5
|
-
return { file, featurePresent: false, scenarios: [] };
|
|
6
|
-
}
|
|
7
|
-
const scenarios = document.scenarios.map((scenario) => ({
|
|
8
|
-
name: scenario.name,
|
|
9
|
-
line: scenario.line ?? 1,
|
|
10
|
-
tags: scenario.tags,
|
|
11
|
-
body: scenario.steps
|
|
12
|
-
.map((step) => `${step.keyword}${step.text}`.trimEnd())
|
|
13
|
-
.join("\n")
|
|
14
|
-
.trim(),
|
|
15
|
-
}));
|
|
16
|
-
return {
|
|
17
|
-
file,
|
|
18
|
-
featurePresent: Boolean(document.featureName),
|
|
19
|
-
scenarios,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=gherkin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../../../src/core/parse/gherkin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAa5D,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,IAAY;IAEZ,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC;QACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,KAAK;aACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE;KACV,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,IAAI;QACJ,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type Heading = {
|
|
2
|
-
level: number;
|
|
3
|
-
title: string;
|
|
4
|
-
line: number;
|
|
5
|
-
};
|
|
6
|
-
export type H2Section = {
|
|
7
|
-
title: string;
|
|
8
|
-
startLine: number;
|
|
9
|
-
endLine: number;
|
|
10
|
-
body: string;
|
|
11
|
-
};
|
|
12
|
-
export declare function parseHeadings(md: string): Heading[];
|
|
13
|
-
export declare function extractH2Sections(md: string): Map<string, H2Section>;
|
|
14
|
-
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/core/parse/markdown.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE,CAiBnD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAyBpE"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const HEADING_RE = /^(#{1,6})\s+(.+?)\s*$/;
|
|
2
|
-
export function parseHeadings(md) {
|
|
3
|
-
const lines = md.split(/\r?\n/);
|
|
4
|
-
const headings = [];
|
|
5
|
-
for (let i = 0; i < lines.length; i++) {
|
|
6
|
-
const line = lines[i] ?? "";
|
|
7
|
-
const match = line.match(HEADING_RE);
|
|
8
|
-
if (!match)
|
|
9
|
-
continue;
|
|
10
|
-
const levelToken = match[1];
|
|
11
|
-
const title = match[2];
|
|
12
|
-
if (!levelToken || !title)
|
|
13
|
-
continue;
|
|
14
|
-
headings.push({
|
|
15
|
-
level: levelToken.length,
|
|
16
|
-
title: title.trim(),
|
|
17
|
-
line: i + 1,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return headings;
|
|
21
|
-
}
|
|
22
|
-
export function extractH2Sections(md) {
|
|
23
|
-
const lines = md.split(/\r?\n/);
|
|
24
|
-
const headings = parseHeadings(md).filter((heading) => heading.level === 2);
|
|
25
|
-
const sections = new Map();
|
|
26
|
-
for (let i = 0; i < headings.length; i++) {
|
|
27
|
-
const current = headings[i];
|
|
28
|
-
if (!current)
|
|
29
|
-
continue;
|
|
30
|
-
const next = headings[i + 1];
|
|
31
|
-
const startLine = current.line + 1;
|
|
32
|
-
const endLine = (next?.line ?? lines.length + 1) - 1;
|
|
33
|
-
const body = startLine <= endLine
|
|
34
|
-
? lines.slice(startLine - 1, endLine).join("\n")
|
|
35
|
-
: "";
|
|
36
|
-
sections.set(current.title.trim(), {
|
|
37
|
-
title: current.title.trim(),
|
|
38
|
-
startLine,
|
|
39
|
-
endLine,
|
|
40
|
-
body,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return sections;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/core/parse/markdown.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK;YAAE,SAAS;QACpC,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,CAAC,GAAG,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GACR,SAAS,IAAI,OAAO;YAClB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,EAAE,CAAC;QAET,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YAC3B,SAAS;YACT,OAAO;YACP,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export type BrPriority = "P0" | "P1" | "P2" | "P3";
|
|
2
|
-
export type ParsedBr = {
|
|
3
|
-
id: string;
|
|
4
|
-
priority: BrPriority;
|
|
5
|
-
text: string;
|
|
6
|
-
line: number;
|
|
7
|
-
};
|
|
8
|
-
export type ParsedBrWithoutPriority = {
|
|
9
|
-
id: string;
|
|
10
|
-
text: string;
|
|
11
|
-
line: number;
|
|
12
|
-
};
|
|
13
|
-
export type ParsedBrWithInvalidPriority = {
|
|
14
|
-
id: string;
|
|
15
|
-
priority: string;
|
|
16
|
-
text: string;
|
|
17
|
-
line: number;
|
|
18
|
-
};
|
|
19
|
-
export type ParsedSpec = {
|
|
20
|
-
file: string;
|
|
21
|
-
specId?: string;
|
|
22
|
-
sections: Set<string>;
|
|
23
|
-
brs: ParsedBr[];
|
|
24
|
-
brsWithoutPriority: ParsedBrWithoutPriority[];
|
|
25
|
-
brsWithInvalidPriority: ParsedBrWithInvalidPriority[];
|
|
26
|
-
contractRefs: ParsedContractRefs;
|
|
27
|
-
};
|
|
28
|
-
export type ParsedContractRefs = {
|
|
29
|
-
lines: string[];
|
|
30
|
-
ids: string[];
|
|
31
|
-
invalidTokens: string[];
|
|
32
|
-
hasNone: boolean;
|
|
33
|
-
};
|
|
34
|
-
export declare function parseSpec(md: string, file: string): ParsedSpec;
|
|
35
|
-
export declare function parseContractRefs(md: string): ParsedContractRefs;
|
|
36
|
-
//# sourceMappingURL=spec.d.ts.map
|