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.
Files changed (155) hide show
  1. package/README.md +3 -1
  2. package/dist/cli/index.cjs +2 -2
  3. package/dist/cli/index.d.ts +0 -2
  4. package/dist/cli/index.mjs +2 -2
  5. package/dist/index.cjs +2 -2
  6. package/dist/index.d.ts +167 -2
  7. package/dist/index.mjs +2 -2
  8. package/package.json +3 -1
  9. package/dist/cli/commands/init.d.ts +0 -8
  10. package/dist/cli/commands/init.d.ts.map +0 -1
  11. package/dist/cli/commands/init.js +0 -30
  12. package/dist/cli/commands/init.js.map +0 -1
  13. package/dist/cli/commands/report.d.ts +0 -7
  14. package/dist/cli/commands/report.d.ts.map +0 -1
  15. package/dist/cli/commands/report.js +0 -108
  16. package/dist/cli/commands/report.js.map +0 -1
  17. package/dist/cli/commands/validate.d.ts +0 -9
  18. package/dist/cli/commands/validate.d.ts.map +0 -1
  19. package/dist/cli/commands/validate.js +0 -57
  20. package/dist/cli/commands/validate.js.map +0 -1
  21. package/dist/cli/index.d.ts.map +0 -1
  22. package/dist/cli/index.js +0 -7
  23. package/dist/cli/index.js.map +0 -1
  24. package/dist/cli/lib/args.d.ts +0 -18
  25. package/dist/cli/lib/args.d.ts.map +0 -1
  26. package/dist/cli/lib/args.js +0 -98
  27. package/dist/cli/lib/args.js.map +0 -1
  28. package/dist/cli/lib/assets.d.ts +0 -2
  29. package/dist/cli/lib/assets.d.ts.map +0 -1
  30. package/dist/cli/lib/assets.js +0 -24
  31. package/dist/cli/lib/assets.js.map +0 -1
  32. package/dist/cli/lib/failOn.d.ts +0 -5
  33. package/dist/cli/lib/failOn.d.ts.map +0 -1
  34. package/dist/cli/lib/failOn.js +0 -10
  35. package/dist/cli/lib/failOn.js.map +0 -1
  36. package/dist/cli/lib/fs.d.ts +0 -11
  37. package/dist/cli/lib/fs.d.ts.map +0 -1
  38. package/dist/cli/lib/fs.js +0 -91
  39. package/dist/cli/lib/fs.js.map +0 -1
  40. package/dist/cli/lib/logger.d.ts +0 -4
  41. package/dist/cli/lib/logger.d.ts.map +0 -1
  42. package/dist/cli/lib/logger.js +0 -10
  43. package/dist/cli/lib/logger.js.map +0 -1
  44. package/dist/cli/main.d.ts +0 -2
  45. package/dist/cli/main.d.ts.map +0 -1
  46. package/dist/cli/main.js +0 -66
  47. package/dist/cli/main.js.map +0 -1
  48. package/dist/core/config.d.ts +0 -47
  49. package/dist/core/config.d.ts.map +0 -1
  50. package/dist/core/config.js +0 -224
  51. package/dist/core/config.js.map +0 -1
  52. package/dist/core/contractIndex.d.ts +0 -12
  53. package/dist/core/contractIndex.d.ts.map +0 -1
  54. package/dist/core/contractIndex.js +0 -38
  55. package/dist/core/contractIndex.js.map +0 -1
  56. package/dist/core/contracts.d.ts +0 -5
  57. package/dist/core/contracts.d.ts.map +0 -1
  58. package/dist/core/contracts.js +0 -42
  59. package/dist/core/contracts.js.map +0 -1
  60. package/dist/core/contractsDecl.d.ts +0 -3
  61. package/dist/core/contractsDecl.d.ts.map +0 -1
  62. package/dist/core/contractsDecl.js +0 -19
  63. package/dist/core/contractsDecl.js.map +0 -1
  64. package/dist/core/discovery.d.ts +0 -14
  65. package/dist/core/discovery.d.ts.map +0 -1
  66. package/dist/core/discovery.js +0 -55
  67. package/dist/core/discovery.js.map +0 -1
  68. package/dist/core/fs.d.ts +0 -11
  69. package/dist/core/fs.d.ts.map +0 -1
  70. package/dist/core/fs.js +0 -68
  71. package/dist/core/fs.js.map +0 -1
  72. package/dist/core/gherkin/parse.d.ts +0 -7
  73. package/dist/core/gherkin/parse.d.ts.map +0 -1
  74. package/dist/core/gherkin/parse.js +0 -25
  75. package/dist/core/gherkin/parse.js.map +0 -1
  76. package/dist/core/ids.d.ts +0 -6
  77. package/dist/core/ids.d.ts.map +0 -1
  78. package/dist/core/ids.js +0 -52
  79. package/dist/core/ids.js.map +0 -1
  80. package/dist/core/index.d.ts +0 -13
  81. package/dist/core/index.d.ts.map +0 -1
  82. package/dist/core/index.js +0 -13
  83. package/dist/core/index.js.map +0 -1
  84. package/dist/core/parse/adr.d.ts +0 -13
  85. package/dist/core/parse/adr.d.ts.map +0 -1
  86. package/dist/core/parse/adr.js +0 -33
  87. package/dist/core/parse/adr.js.map +0 -1
  88. package/dist/core/parse/gherkin.d.ts +0 -12
  89. package/dist/core/parse/gherkin.d.ts.map +0 -1
  90. package/dist/core/parse/gherkin.js +0 -22
  91. package/dist/core/parse/gherkin.js.map +0 -1
  92. package/dist/core/parse/markdown.d.ts +0 -14
  93. package/dist/core/parse/markdown.d.ts.map +0 -1
  94. package/dist/core/parse/markdown.js +0 -45
  95. package/dist/core/parse/markdown.js.map +0 -1
  96. package/dist/core/parse/spec.d.ts +0 -36
  97. package/dist/core/parse/spec.d.ts.map +0 -1
  98. package/dist/core/parse/spec.js +0 -123
  99. package/dist/core/parse/spec.js.map +0 -1
  100. package/dist/core/report.d.ts +0 -55
  101. package/dist/core/report.d.ts.map +0 -1
  102. package/dist/core/report.js +0 -393
  103. package/dist/core/report.js.map +0 -1
  104. package/dist/core/scenarioModel.d.ts +0 -33
  105. package/dist/core/scenarioModel.d.ts.map +0 -1
  106. package/dist/core/scenarioModel.js +0 -128
  107. package/dist/core/scenarioModel.js.map +0 -1
  108. package/dist/core/specLayout.d.ts +0 -8
  109. package/dist/core/specLayout.d.ts.map +0 -1
  110. package/dist/core/specLayout.js +0 -36
  111. package/dist/core/specLayout.js.map +0 -1
  112. package/dist/core/traceability.d.ts +0 -26
  113. package/dist/core/traceability.d.ts.map +0 -1
  114. package/dist/core/traceability.js +0 -157
  115. package/dist/core/traceability.js.map +0 -1
  116. package/dist/core/types.d.ts +0 -31
  117. package/dist/core/types.d.ts.map +0 -1
  118. package/dist/core/types.js +0 -2
  119. package/dist/core/types.js.map +0 -1
  120. package/dist/core/validate.d.ts +0 -4
  121. package/dist/core/validate.d.ts.map +0 -1
  122. package/dist/core/validate.js +0 -45
  123. package/dist/core/validate.js.map +0 -1
  124. package/dist/core/validators/contracts.d.ts +0 -5
  125. package/dist/core/validators/contracts.d.ts.map +0 -1
  126. package/dist/core/validators/contracts.js +0 -189
  127. package/dist/core/validators/contracts.js.map +0 -1
  128. package/dist/core/validators/delta.d.ts +0 -4
  129. package/dist/core/validators/delta.d.ts.map +0 -1
  130. package/dist/core/validators/delta.js +0 -68
  131. package/dist/core/validators/delta.js.map +0 -1
  132. package/dist/core/validators/ids.d.ts +0 -4
  133. package/dist/core/validators/ids.d.ts.map +0 -1
  134. package/dist/core/validators/ids.js +0 -88
  135. package/dist/core/validators/ids.js.map +0 -1
  136. package/dist/core/validators/scenario.d.ts +0 -5
  137. package/dist/core/validators/scenario.d.ts.map +0 -1
  138. package/dist/core/validators/scenario.js +0 -127
  139. package/dist/core/validators/scenario.js.map +0 -1
  140. package/dist/core/validators/spec.d.ts +0 -5
  141. package/dist/core/validators/spec.d.ts.map +0 -1
  142. package/dist/core/validators/spec.js +0 -94
  143. package/dist/core/validators/spec.js.map +0 -1
  144. package/dist/core/validators/traceability.d.ts +0 -4
  145. package/dist/core/validators/traceability.d.ts.map +0 -1
  146. package/dist/core/validators/traceability.js +0 -222
  147. package/dist/core/validators/traceability.js.map +0 -1
  148. package/dist/core/version.d.ts +0 -2
  149. package/dist/core/version.d.ts.map +0 -1
  150. package/dist/core/version.js +0 -25
  151. package/dist/core/version.js.map +0 -1
  152. package/dist/index.d.ts.map +0 -1
  153. package/dist/index.js +0 -2
  154. package/dist/index.js.map +0 -1
  155. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/cli/lib/args.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function getInitAssetsDir(): string;
2
- //# sourceMappingURL=assets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/assets.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,MAAM,CAuBzC"}
@@ -1,24 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- export function getInitAssetsDir() {
5
- const base = import.meta.url;
6
- const basePath = base.startsWith("file:") ? fileURLToPath(base) : base;
7
- const baseDir = path.dirname(basePath);
8
- // src/cli/lib と dist/cli/lib からの解決を想定する。
9
- const candidates = [
10
- path.resolve(baseDir, "../../../assets/init"),
11
- path.resolve(baseDir, "../../assets/init"),
12
- ];
13
- for (const candidate of candidates) {
14
- if (existsSync(candidate)) {
15
- return candidate;
16
- }
17
- }
18
- throw new Error([
19
- "init 用テンプレートが見つかりません。Template assets not found.",
20
- "確認したパス / Checked paths:",
21
- ...candidates.map((candidate) => `- ${candidate}`),
22
- ].join("\n"));
23
- }
24
- //# sourceMappingURL=assets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/cli/lib/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,yCAAyC;IACzC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC;KAC3C,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb;QACE,iDAAiD;QACjD,yBAAyB;QACzB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { FailOn } from "../../core/config.js";
2
- import type { ValidationResult } from "../../core/types.js";
3
- export type { FailOn };
4
- export declare function shouldFail(result: ValidationResult, failOn: FailOn): boolean;
5
- //# sourceMappingURL=failOn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failOn.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/failOn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,YAAY,EAAE,MAAM,EAAE,CAAC;AAEvB,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQ5E"}
@@ -1,10 +0,0 @@
1
- export function shouldFail(result, failOn) {
2
- if (failOn === "never") {
3
- return false;
4
- }
5
- if (failOn === "error") {
6
- return result.counts.error > 0;
7
- }
8
- return result.counts.error + result.counts.warning > 0;
9
- }
10
- //# sourceMappingURL=failOn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failOn.js","sourceRoot":"","sources":["../../../src/cli/lib/failOn.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,UAAU,CAAC,MAAwB,EAAE,MAAc;IACjE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AACzD,CAAC"}
@@ -1,11 +0,0 @@
1
- export type CopyOptions = {
2
- force: boolean;
3
- dryRun: boolean;
4
- };
5
- export type CopyResult = {
6
- copied: string[];
7
- skipped: string[];
8
- };
9
- export declare function copyTemplateTree(sourceRoot: string, destRoot: string, options: CopyOptions): Promise<CopyResult>;
10
- export declare function copyTemplatePaths(sourceRoot: string, destRoot: string, relativePaths: string[], options: CopyOptions): Promise<CopyResult>;
11
- //# sourceMappingURL=fs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/fs.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CASrB"}
@@ -1,91 +0,0 @@
1
- import { access, copyFile, mkdir, readdir } from "node:fs/promises";
2
- import path from "node:path";
3
- export async function copyTemplateTree(sourceRoot, destRoot, options) {
4
- const files = await collectTemplateFiles(sourceRoot);
5
- return copyFiles(files, sourceRoot, destRoot, options);
6
- }
7
- export async function copyTemplatePaths(sourceRoot, destRoot, relativePaths, options) {
8
- const allFiles = [];
9
- for (const relPath of relativePaths) {
10
- const fullPath = path.join(sourceRoot, relPath);
11
- const files = await collectTemplateFiles(fullPath);
12
- allFiles.push(...files);
13
- }
14
- return copyFiles(allFiles, sourceRoot, destRoot, options);
15
- }
16
- async function copyFiles(files, sourceRoot, destRoot, options) {
17
- const copied = [];
18
- const skipped = [];
19
- const conflicts = [];
20
- if (!options.force) {
21
- for (const file of files) {
22
- const relative = path.relative(sourceRoot, file);
23
- const dest = path.join(destRoot, relative);
24
- if (!(await shouldWrite(dest, options.force))) {
25
- conflicts.push(dest);
26
- }
27
- }
28
- if (conflicts.length > 0) {
29
- throw new Error(formatConflictMessage(conflicts));
30
- }
31
- }
32
- for (const file of files) {
33
- const relative = path.relative(sourceRoot, file);
34
- const dest = path.join(destRoot, relative);
35
- if (!(await shouldWrite(dest, options.force))) {
36
- skipped.push(dest);
37
- continue;
38
- }
39
- if (!options.dryRun) {
40
- await mkdir(path.dirname(dest), { recursive: true });
41
- await copyFile(file, dest);
42
- }
43
- copied.push(dest);
44
- }
45
- return { copied, skipped };
46
- }
47
- function formatConflictMessage(conflicts) {
48
- return [
49
- "既存ファイルと衝突しました。安全のため停止します。",
50
- "",
51
- "衝突ファイル:",
52
- ...conflicts.map((conflict) => `- ${conflict}`),
53
- "",
54
- "上書きして続行する場合は --force を付けて再実行してください。",
55
- ].join("\n");
56
- }
57
- async function collectTemplateFiles(root) {
58
- const entries = [];
59
- if (!(await exists(root))) {
60
- return entries;
61
- }
62
- const items = await readdir(root, { withFileTypes: true });
63
- for (const item of items) {
64
- const fullPath = path.join(root, item.name);
65
- if (item.isDirectory()) {
66
- const nested = await collectTemplateFiles(fullPath);
67
- entries.push(...nested);
68
- continue;
69
- }
70
- if (item.isFile()) {
71
- entries.push(fullPath);
72
- }
73
- }
74
- return entries;
75
- }
76
- async function shouldWrite(target, force) {
77
- if (force) {
78
- return true;
79
- }
80
- return !(await exists(target));
81
- }
82
- async function exists(target) {
83
- try {
84
- await access(target);
85
- return true;
86
- }
87
- catch {
88
- return false;
89
- }
90
- }
91
- //# sourceMappingURL=fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cli/lib/fs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare function info(message: string): void;
2
- export declare function warn(message: string): void;
3
- export declare function error(message: string): void;
4
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/logger.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C"}
@@ -1,10 +0,0 @@
1
- export function info(message) {
2
- process.stdout.write(`${message}\n`);
3
- }
4
- export function warn(message) {
5
- process.stdout.write(`${message}\n`);
6
- }
7
- export function error(message) {
8
- process.stderr.write(`${message}\n`);
9
- }
10
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/lib/logger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function run(argv: string[], cwd: string): Promise<void>;
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAMA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCpE"}
package/dist/cli/main.js DELETED
@@ -1,66 +0,0 @@
1
- import { runInit } from "./commands/init.js";
2
- import { runReport } from "./commands/report.js";
3
- import { runValidate } from "./commands/validate.js";
4
- import { parseArgs } from "./lib/args.js";
5
- import { error, info } from "./lib/logger.js";
6
- export async function run(argv, cwd) {
7
- const { command, options } = parseArgs(argv, cwd);
8
- if (!command || options.help) {
9
- info(usage());
10
- return;
11
- }
12
- switch (command) {
13
- case "init":
14
- await runInit({
15
- dir: options.dir,
16
- force: options.force,
17
- dryRun: options.dryRun,
18
- yes: options.yes,
19
- });
20
- return;
21
- case "validate":
22
- process.exitCode = await runValidate({
23
- root: options.root,
24
- strict: options.strict,
25
- format: options.validateFormat,
26
- ...(options.failOn !== undefined ? { failOn: options.failOn } : {}),
27
- });
28
- return;
29
- case "report":
30
- await runReport({
31
- root: options.root,
32
- format: options.reportFormat,
33
- ...(options.reportOut !== undefined
34
- ? { outPath: options.reportOut }
35
- : {}),
36
- });
37
- return;
38
- default:
39
- error(`Unknown command: ${command}`);
40
- info(usage());
41
- return;
42
- }
43
- }
44
- function usage() {
45
- return `qfai <command> [options]
46
-
47
- Commands:
48
- init テンプレを生成
49
- validate 仕様/契約/参照の検査
50
- report 検証結果と集計を出力
51
-
52
- Options:
53
- --root <path> 対象ディレクトリ
54
- --dir <path> init の出力先
55
- --force 既存ファイルを上書き
56
- --yes init: 予約フラグ(現状は非対話のため挙動差なし。将来の対話導入時に自動Yes)
57
- --dry-run 変更を行わず表示のみ
58
- --format <text|github> validate の出力形式
59
- --format <md|json> report の出力形式
60
- --strict validate: warning 以上で exit 1
61
- --fail-on <error|warning|never> validate: 失敗条件
62
- --out <path> report: 出力先
63
- -h, --help ヘルプ表示
64
- `;
65
- }
66
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,GAAW;IACnD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACd,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,OAAO,CAAC;gBACZ,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAC;YACH,OAAO;QACT,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC;gBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,cAAc;gBAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,CAAC;YACH,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,YAAY;gBAC5B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;oBACjC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;oBAChC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,OAAO;QACT;YACE,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACd,OAAO;IACX,CAAC;AACH,CAAC;AAED,SAAS,KAAK;IACZ,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC"}
@@ -1,47 +0,0 @@
1
- import type { Issue } from "./types.js";
2
- export type FailOn = "never" | "warning" | "error";
3
- export type OutputFormat = "text" | "github";
4
- export type TraceabilitySeverity = "warning" | "error";
5
- export type QfaiPaths = {
6
- contractsDir: string;
7
- specsDir: string;
8
- rulesDir: string;
9
- outDir: string;
10
- promptsDir: string;
11
- srcDir: string;
12
- testsDir: string;
13
- };
14
- export type QfaiValidationConfig = {
15
- failOn: FailOn;
16
- require: {
17
- specSections: string[];
18
- };
19
- traceability: {
20
- brMustHaveSc: boolean;
21
- scMustHaveTest: boolean;
22
- testFileGlobs: string[];
23
- testFileExcludeGlobs: string[];
24
- scNoTestSeverity: TraceabilitySeverity;
25
- allowOrphanContracts: boolean;
26
- unknownContractIdSeverity: TraceabilitySeverity;
27
- };
28
- };
29
- export type QfaiOutputConfig = {
30
- validateJsonPath: string;
31
- };
32
- export type QfaiConfig = {
33
- paths: QfaiPaths;
34
- validation: QfaiValidationConfig;
35
- output: QfaiOutputConfig;
36
- };
37
- export type ConfigPathKey = keyof QfaiPaths;
38
- export type ConfigLoadResult = {
39
- config: QfaiConfig;
40
- issues: Issue[];
41
- configPath: string;
42
- };
43
- export declare const defaultConfig: QfaiConfig;
44
- export declare function getConfigPath(root: string): string;
45
- export declare function loadConfig(root: string): Promise<ConfigLoadResult>;
46
- export declare function resolvePath(root: string, config: QfaiConfig, key: ConfigPathKey): string;
47
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,YAAY,EAAE;QACZ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,gBAAgB,EAAE,oBAAoB,CAAC;QACvC,oBAAoB,EAAE,OAAO,CAAC;QAC9B,yBAAyB,EAAE,oBAAoB,CAAC;KACjD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAoC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkBxE;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,aAAa,GACjB,MAAM,CAER"}
@@ -1,224 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { parse as parseYaml } from "yaml";
4
- export const defaultConfig = {
5
- paths: {
6
- contractsDir: ".qfai/contracts",
7
- specsDir: ".qfai/specs",
8
- rulesDir: ".qfai/rules",
9
- outDir: ".qfai/out",
10
- promptsDir: ".qfai/prompts",
11
- srcDir: "src",
12
- testsDir: "tests",
13
- },
14
- validation: {
15
- failOn: "error",
16
- require: {
17
- specSections: [
18
- "背景",
19
- "スコープ",
20
- "非ゴール",
21
- "用語",
22
- "前提",
23
- "決定事項",
24
- "業務ルール",
25
- ],
26
- },
27
- traceability: {
28
- brMustHaveSc: true,
29
- scMustHaveTest: true,
30
- testFileGlobs: [],
31
- testFileExcludeGlobs: [],
32
- scNoTestSeverity: "error",
33
- allowOrphanContracts: false,
34
- unknownContractIdSeverity: "error",
35
- },
36
- },
37
- output: {
38
- validateJsonPath: ".qfai/out/validate.json",
39
- },
40
- };
41
- export function getConfigPath(root) {
42
- return path.join(root, "qfai.config.yaml");
43
- }
44
- export async function loadConfig(root) {
45
- const configPath = getConfigPath(root);
46
- const issues = [];
47
- let parsed;
48
- try {
49
- const raw = await readFile(configPath, "utf-8");
50
- parsed = parseYaml(raw);
51
- }
52
- catch (error) {
53
- if (isMissingFile(error)) {
54
- return { config: defaultConfig, issues, configPath };
55
- }
56
- issues.push(configIssue(configPath, formatError(error)));
57
- return { config: defaultConfig, issues, configPath };
58
- }
59
- const normalized = normalizeConfig(parsed, configPath, issues);
60
- return { config: normalized, issues, configPath };
61
- }
62
- export function resolvePath(root, config, key) {
63
- return path.resolve(root, config.paths[key]);
64
- }
65
- function normalizeConfig(raw, configPath, issues) {
66
- if (!isRecord(raw)) {
67
- issues.push(configIssue(configPath, "設定ファイルの形式が不正です。"));
68
- return defaultConfig;
69
- }
70
- return {
71
- paths: normalizePaths(raw.paths, configPath, issues),
72
- validation: normalizeValidation(raw.validation, configPath, issues),
73
- output: normalizeOutput(raw.output, configPath, issues),
74
- };
75
- }
76
- function normalizePaths(raw, configPath, issues) {
77
- const base = defaultConfig.paths;
78
- if (!raw) {
79
- return base;
80
- }
81
- if (!isRecord(raw)) {
82
- issues.push(configIssue(configPath, "paths はオブジェクトである必要があります。"));
83
- return base;
84
- }
85
- return {
86
- contractsDir: readString(raw.contractsDir, base.contractsDir, "paths.contractsDir", configPath, issues),
87
- specsDir: readString(raw.specsDir, base.specsDir, "paths.specsDir", configPath, issues),
88
- rulesDir: readString(raw.rulesDir, base.rulesDir, "paths.rulesDir", configPath, issues),
89
- outDir: readString(raw.outDir, base.outDir, "paths.outDir", configPath, issues),
90
- promptsDir: readString(raw.promptsDir, base.promptsDir, "paths.promptsDir", configPath, issues),
91
- srcDir: readString(raw.srcDir, base.srcDir, "paths.srcDir", configPath, issues),
92
- testsDir: readString(raw.testsDir, base.testsDir, "paths.testsDir", configPath, issues),
93
- };
94
- }
95
- function normalizeValidation(raw, configPath, issues) {
96
- const base = defaultConfig.validation;
97
- if (!raw) {
98
- return base;
99
- }
100
- if (!isRecord(raw)) {
101
- issues.push(configIssue(configPath, "validation はオブジェクトである必要があります。"));
102
- return base;
103
- }
104
- let requireRaw;
105
- if (raw.require === undefined) {
106
- requireRaw = undefined;
107
- }
108
- else if (isRecord(raw.require)) {
109
- requireRaw = raw.require;
110
- }
111
- else {
112
- issues.push(configIssue(configPath, "validation.require はオブジェクトである必要があります。"));
113
- requireRaw = undefined;
114
- }
115
- let traceabilityRaw;
116
- if (raw.traceability === undefined) {
117
- traceabilityRaw = undefined;
118
- }
119
- else if (isRecord(raw.traceability)) {
120
- traceabilityRaw = raw.traceability;
121
- }
122
- else {
123
- issues.push(configIssue(configPath, "validation.traceability はオブジェクトである必要があります。"));
124
- traceabilityRaw = undefined;
125
- }
126
- return {
127
- failOn: readFailOn(raw.failOn, base.failOn, "validation.failOn", configPath, issues),
128
- require: {
129
- specSections: readStringArray(requireRaw?.specSections, base.require.specSections, "validation.require.specSections", configPath, issues),
130
- },
131
- traceability: {
132
- brMustHaveSc: readBoolean(traceabilityRaw?.brMustHaveSc, base.traceability.brMustHaveSc, "validation.traceability.brMustHaveSc", configPath, issues),
133
- scMustHaveTest: readBoolean(traceabilityRaw?.scMustHaveTest, base.traceability.scMustHaveTest, "validation.traceability.scMustHaveTest", configPath, issues),
134
- testFileGlobs: readStringArray(traceabilityRaw?.testFileGlobs, base.traceability.testFileGlobs, "validation.traceability.testFileGlobs", configPath, issues),
135
- testFileExcludeGlobs: readStringArray(traceabilityRaw?.testFileExcludeGlobs, base.traceability.testFileExcludeGlobs, "validation.traceability.testFileExcludeGlobs", configPath, issues),
136
- scNoTestSeverity: readTraceabilitySeverity(traceabilityRaw?.scNoTestSeverity, base.traceability.scNoTestSeverity, "validation.traceability.scNoTestSeverity", configPath, issues),
137
- allowOrphanContracts: readBoolean(traceabilityRaw?.allowOrphanContracts, base.traceability.allowOrphanContracts, "validation.traceability.allowOrphanContracts", configPath, issues),
138
- unknownContractIdSeverity: readTraceabilitySeverity(traceabilityRaw?.unknownContractIdSeverity, base.traceability.unknownContractIdSeverity, "validation.traceability.unknownContractIdSeverity", configPath, issues),
139
- },
140
- };
141
- }
142
- function normalizeOutput(raw, configPath, issues) {
143
- const base = defaultConfig.output;
144
- if (!raw) {
145
- return base;
146
- }
147
- if (!isRecord(raw)) {
148
- issues.push(configIssue(configPath, "output はオブジェクトである必要があります。"));
149
- return base;
150
- }
151
- return {
152
- validateJsonPath: readString(raw.validateJsonPath, base.validateJsonPath, "output.validateJsonPath", configPath, issues),
153
- };
154
- }
155
- function readString(value, fallback, label, configPath, issues) {
156
- if (typeof value === "string" && value.trim().length > 0) {
157
- return value;
158
- }
159
- if (value !== undefined) {
160
- issues.push(configIssue(configPath, `${label} は文字列である必要があります。`));
161
- }
162
- return fallback;
163
- }
164
- function readStringArray(value, fallback, label, configPath, issues) {
165
- if (Array.isArray(value) && value.every((item) => typeof item === "string")) {
166
- return value;
167
- }
168
- if (value !== undefined) {
169
- issues.push(configIssue(configPath, `${label} は文字列配列である必要があります。`));
170
- }
171
- return fallback;
172
- }
173
- function readBoolean(value, fallback, label, configPath, issues) {
174
- if (typeof value === "boolean") {
175
- return value;
176
- }
177
- if (value !== undefined) {
178
- issues.push(configIssue(configPath, `${label} は真偽値である必要があります。`));
179
- }
180
- return fallback;
181
- }
182
- function readFailOn(value, fallback, label, configPath, issues) {
183
- if (value === "never" || value === "warning" || value === "error") {
184
- return value;
185
- }
186
- if (value !== undefined) {
187
- issues.push(configIssue(configPath, `${label} は never|warning|error のいずれかである必要があります。`));
188
- }
189
- return fallback;
190
- }
191
- function readTraceabilitySeverity(value, fallback, label, configPath, issues) {
192
- if (value === "warning" || value === "error") {
193
- return value;
194
- }
195
- if (value !== undefined) {
196
- issues.push(configIssue(configPath, `${label} は warning|error のいずれかである必要があります。`));
197
- }
198
- return fallback;
199
- }
200
- function configIssue(file, message) {
201
- return {
202
- code: "QFAI_CONFIG_INVALID",
203
- severity: "error",
204
- message,
205
- file,
206
- rule: "config.invalid",
207
- };
208
- }
209
- function isMissingFile(error) {
210
- if (error && typeof error === "object" && "code" in error) {
211
- return error.code === "ENOENT";
212
- }
213
- return false;
214
- }
215
- function formatError(error) {
216
- if (error instanceof Error) {
217
- return error.message;
218
- }
219
- return String(error);
220
- }
221
- function isRecord(value) {
222
- return value !== null && typeof value === "object" && !Array.isArray(value);
223
- }
224
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { QfaiConfig } from "./config.js";
2
- export type ContractIndex = {
3
- ids: Set<string>;
4
- idToFiles: Map<string, Set<string>>;
5
- files: {
6
- ui: string[];
7
- api: string[];
8
- db: string[];
9
- };
10
- };
11
- export declare function buildContractIndex(root: string, config: QfaiConfig): Promise<ContractIndex>;
12
- //# sourceMappingURL=contractIndex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contractIndex.d.ts","sourceRoot":"","sources":["../../src/core/contractIndex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAS9C,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACtD,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,aAAa,CAAC,CAuBxB"}
@@ -1,38 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { resolvePath } from "./config.js";
4
- import { collectApiContractFiles, collectDbContractFiles, collectUiContractFiles, } from "./discovery.js";
5
- import { extractDeclaredContractIds } from "./contractsDecl.js";
6
- export async function buildContractIndex(root, config) {
7
- const contractsRoot = resolvePath(root, config, "contractsDir");
8
- const uiRoot = path.join(contractsRoot, "ui");
9
- const apiRoot = path.join(contractsRoot, "api");
10
- const dbRoot = path.join(contractsRoot, "db");
11
- const [uiFiles, apiFiles, dbFiles] = await Promise.all([
12
- collectUiContractFiles(uiRoot),
13
- collectApiContractFiles(apiRoot),
14
- collectDbContractFiles(dbRoot),
15
- ]);
16
- const index = {
17
- ids: new Set(),
18
- idToFiles: new Map(),
19
- files: { ui: uiFiles, api: apiFiles, db: dbFiles },
20
- };
21
- await indexContractFiles(uiFiles, index);
22
- await indexContractFiles(apiFiles, index);
23
- await indexContractFiles(dbFiles, index);
24
- return index;
25
- }
26
- async function indexContractFiles(files, index) {
27
- for (const file of files) {
28
- const text = await readFile(file, "utf-8");
29
- extractDeclaredContractIds(text).forEach((id) => record(index, id, file));
30
- }
31
- }
32
- function record(index, id, file) {
33
- index.ids.add(id);
34
- const current = index.idToFiles.get(id) ?? new Set();
35
- current.add(file);
36
- index.idToFiles.set(id, current);
37
- }
38
- //# sourceMappingURL=contractIndex.js.map