@codefast/cli 0.5.0-canary.5 → 0.5.0-canary.7

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 (274) hide show
  1. package/README.md +106 -480
  2. package/dist/arrange/analyze.js +25 -0
  3. package/dist/arrange/analyze.js.map +1 -0
  4. package/dist/arrange/cli-schema.js +29 -0
  5. package/dist/arrange/cli-schema.js.map +1 -0
  6. package/dist/arrange/command.js +170 -0
  7. package/dist/arrange/command.js.map +1 -0
  8. package/dist/arrange/domain/analyze-service.js +122 -0
  9. package/dist/arrange/domain/analyze-service.js.map +1 -0
  10. package/dist/arrange/domain/ast/ast-node.js +240 -0
  11. package/dist/arrange/domain/ast/ast-node.js.map +1 -0
  12. package/dist/arrange/domain/ast/collectors-cn.js +81 -0
  13. package/dist/arrange/domain/ast/collectors-cn.js.map +1 -0
  14. package/dist/arrange/domain/ast/collectors-jsx.js +24 -0
  15. package/dist/arrange/domain/ast/collectors-jsx.js.map +1 -0
  16. package/dist/arrange/domain/ast/collectors-tv.js +319 -0
  17. package/dist/arrange/domain/ast/collectors-tv.js.map +1 -0
  18. package/dist/arrange/domain/ast/helpers.js +151 -0
  19. package/dist/arrange/domain/ast/helpers.js.map +1 -0
  20. package/dist/arrange/domain/ast/simplify-targets.js +161 -0
  21. package/dist/arrange/domain/ast/simplify-targets.js.map +1 -0
  22. package/dist/arrange/domain/ast/targets.js +182 -0
  23. package/dist/arrange/domain/ast/targets.js.map +1 -0
  24. package/dist/arrange/domain/constants.js +225 -0
  25. package/dist/arrange/domain/constants.js.map +1 -0
  26. package/dist/arrange/domain/grouping-service.js +128 -0
  27. package/dist/arrange/domain/grouping-service.js.map +1 -0
  28. package/dist/arrange/domain/grouping.js +435 -0
  29. package/dist/arrange/domain/grouping.js.map +1 -0
  30. package/dist/arrange/domain/imports.js +160 -0
  31. package/dist/arrange/domain/imports.js.map +1 -0
  32. package/dist/arrange/domain/source-text-formatters.js +100 -0
  33. package/dist/arrange/domain/source-text-formatters.js.map +1 -0
  34. package/dist/arrange/domain/tailwind-token.js +50 -0
  35. package/dist/arrange/domain/tailwind-token.js.map +1 -0
  36. package/dist/arrange/domain/token-classifier.js +448 -0
  37. package/dist/arrange/domain/token-classifier.js.map +1 -0
  38. package/dist/arrange/domain/types.js +11 -0
  39. package/dist/arrange/domain/types.js.map +1 -0
  40. package/dist/arrange/output.js +120 -0
  41. package/dist/arrange/output.js.map +1 -0
  42. package/dist/arrange/process-file.js +44 -0
  43. package/dist/arrange/process-file.js.map +1 -0
  44. package/dist/arrange/resolve-target.js +33 -0
  45. package/dist/arrange/resolve-target.js.map +1 -0
  46. package/dist/arrange/scan-target.js +30 -0
  47. package/dist/arrange/scan-target.js.map +1 -0
  48. package/dist/arrange/simplify-process-file.js +29 -0
  49. package/dist/arrange/simplify-process-file.js.map +1 -0
  50. package/dist/arrange/simplify-sync.js +29 -0
  51. package/dist/arrange/simplify-sync.js.map +1 -0
  52. package/dist/arrange/source-parse.js +17 -0
  53. package/dist/arrange/source-parse.js.map +1 -0
  54. package/dist/arrange/suggest.js +14 -0
  55. package/dist/arrange/suggest.js.map +1 -0
  56. package/dist/arrange/sync.js +48 -0
  57. package/dist/arrange/sync.js.map +1 -0
  58. package/dist/arrange/typescript-ast-translator.js +455 -0
  59. package/dist/arrange/typescript-ast-translator.js.map +1 -0
  60. package/dist/arrange/workspace.js +31 -0
  61. package/dist/arrange/workspace.js.map +1 -0
  62. package/dist/audit/cli-schema.js +22 -0
  63. package/dist/audit/cli-schema.js.map +1 -0
  64. package/dist/audit/command.js +60 -0
  65. package/dist/audit/command.js.map +1 -0
  66. package/dist/audit/domain/audit-file.js +101 -0
  67. package/dist/audit/domain/audit-file.js.map +1 -0
  68. package/dist/audit/domain/mappings.js +103 -0
  69. package/dist/audit/domain/mappings.js.map +1 -0
  70. package/dist/audit/domain/tokenize.js +83 -0
  71. package/dist/audit/domain/tokenize.js.map +1 -0
  72. package/dist/audit/domain/types.js +2 -0
  73. package/dist/audit/domain/types.js.map +1 -0
  74. package/dist/audit/output.js +44 -0
  75. package/dist/audit/output.js.map +1 -0
  76. package/dist/audit/prepare.js +42 -0
  77. package/dist/audit/prepare.js.map +1 -0
  78. package/dist/audit/run.js +57 -0
  79. package/dist/audit/run.js.map +1 -0
  80. package/dist/{bin.mjs → bin.js} +2 -4
  81. package/dist/bin.js.map +1 -0
  82. package/dist/cli.js +45 -0
  83. package/dist/cli.js.map +1 -0
  84. package/dist/core/cli/format-error.js +19 -0
  85. package/dist/core/cli/format-error.js.map +1 -0
  86. package/dist/core/cli/global-options.js +10 -0
  87. package/dist/core/cli/global-options.js.map +1 -0
  88. package/dist/core/cli/positional.js +9 -0
  89. package/dist/core/cli/positional.js.map +1 -0
  90. package/dist/core/cli/result-handle.js +69 -0
  91. package/dist/core/cli/result-handle.js.map +1 -0
  92. package/dist/core/config/loader.js +88 -0
  93. package/dist/core/config/loader.js.map +1 -0
  94. package/dist/core/config/schema.js +97 -0
  95. package/dist/core/config/schema.js.map +1 -0
  96. package/dist/core/config/warnings.js +12 -0
  97. package/dist/core/config/warnings.js.map +1 -0
  98. package/dist/core/config.js +18 -0
  99. package/dist/core/config.js.map +1 -0
  100. package/dist/core/errors.js +58 -0
  101. package/dist/core/errors.js.map +1 -0
  102. package/dist/core/exit-codes.js +15 -0
  103. package/dist/core/exit-codes.js.map +1 -0
  104. package/dist/core/filesystem/node.js +33 -0
  105. package/dist/core/filesystem/node.js.map +1 -0
  106. package/dist/core/filesystem/port.js +2 -0
  107. package/dist/core/filesystem/port.js.map +1 -0
  108. package/dist/core/glob.js +20 -0
  109. package/dist/core/glob.js.map +1 -0
  110. package/dist/core/logger.js +13 -0
  111. package/dist/core/logger.js.map +1 -0
  112. package/dist/core/result.js +16 -0
  113. package/dist/core/result.js.map +1 -0
  114. package/dist/core/schema-parse.js +21 -0
  115. package/dist/core/schema-parse.js.map +1 -0
  116. package/dist/core/source-text-edit.js +62 -0
  117. package/dist/core/source-text-edit.js.map +1 -0
  118. package/dist/core/verbose-diagnostics.js +9 -0
  119. package/dist/core/verbose-diagnostics.js.map +1 -0
  120. package/dist/core/workspace/resolver.js +208 -0
  121. package/dist/core/workspace/resolver.js.map +1 -0
  122. package/dist/core/workspace/typescript-walk.js +41 -0
  123. package/dist/core/workspace/typescript-walk.js.map +1 -0
  124. package/dist/mirror/cli-result.js +20 -0
  125. package/dist/mirror/cli-result.js.map +1 -0
  126. package/dist/mirror/cli-schema.js +11 -0
  127. package/dist/mirror/cli-schema.js.map +1 -0
  128. package/dist/mirror/command.js +73 -0
  129. package/dist/mirror/command.js.map +1 -0
  130. package/dist/mirror/dist-filesystem-impl.js +53 -0
  131. package/dist/mirror/dist-filesystem-impl.js.map +1 -0
  132. package/dist/mirror/domain/constants.js +21 -0
  133. package/dist/mirror/domain/constants.js.map +1 -0
  134. package/dist/mirror/domain/dirent-guard.js +16 -0
  135. package/dist/mirror/domain/dirent-guard.js.map +1 -0
  136. package/dist/mirror/domain/dist-filesystem.js +2 -0
  137. package/dist/mirror/domain/dist-filesystem.js.map +1 -0
  138. package/dist/mirror/domain/errors.js +19 -0
  139. package/dist/mirror/domain/errors.js.map +1 -0
  140. package/dist/mirror/domain/exports.js +284 -0
  141. package/dist/mirror/domain/exports.js.map +1 -0
  142. package/dist/mirror/domain/package-display-name.js +10 -0
  143. package/dist/mirror/domain/package-display-name.js.map +1 -0
  144. package/dist/mirror/domain/path-normalizer.js +8 -0
  145. package/dist/mirror/domain/path-normalizer.js.map +1 -0
  146. package/dist/mirror/domain/types.js +2 -0
  147. package/dist/mirror/domain/types.js.map +1 -0
  148. package/dist/mirror/output.js +47 -0
  149. package/dist/mirror/output.js.map +1 -0
  150. package/dist/mirror/package-path.js +40 -0
  151. package/dist/mirror/package-path.js.map +1 -0
  152. package/dist/mirror/prepare.js +37 -0
  153. package/dist/mirror/prepare.js.map +1 -0
  154. package/dist/mirror/supplement-exports.js +157 -0
  155. package/dist/mirror/supplement-exports.js.map +1 -0
  156. package/dist/mirror/sync-reporter.js +125 -0
  157. package/dist/mirror/sync-reporter.js.map +1 -0
  158. package/dist/mirror/sync-types.js +2 -0
  159. package/dist/mirror/sync-types.js.map +1 -0
  160. package/dist/mirror/sync-workspace-package.js +117 -0
  161. package/dist/mirror/sync-workspace-package.js.map +1 -0
  162. package/dist/mirror/sync.js +90 -0
  163. package/dist/mirror/sync.js.map +1 -0
  164. package/dist/mirror/write-exports.js +145 -0
  165. package/dist/mirror/write-exports.js.map +1 -0
  166. package/dist/tag/cli-result.js +12 -0
  167. package/dist/tag/cli-result.js.map +1 -0
  168. package/dist/tag/cli-schema.js +13 -0
  169. package/dist/tag/cli-schema.js.map +1 -0
  170. package/dist/tag/command.js +69 -0
  171. package/dist/tag/command.js.map +1 -0
  172. package/dist/tag/domain/types.js +2 -0
  173. package/dist/tag/domain/types.js.map +1 -0
  174. package/dist/tag/output.js +101 -0
  175. package/dist/tag/output.js.map +1 -0
  176. package/dist/tag/prepare.js +30 -0
  177. package/dist/tag/prepare.js.map +1 -0
  178. package/dist/tag/resolve-target-path.js +14 -0
  179. package/dist/tag/resolve-target-path.js.map +1 -0
  180. package/dist/tag/since-writer.js +231 -0
  181. package/dist/tag/since-writer.js.map +1 -0
  182. package/dist/tag/sync.js +166 -0
  183. package/dist/tag/sync.js.map +1 -0
  184. package/dist/tag/target-candidates.js +79 -0
  185. package/dist/tag/target-candidates.js.map +1 -0
  186. package/dist/tag/target-runner.js +25 -0
  187. package/dist/tag/target-runner.js.map +1 -0
  188. package/dist/tag/version-resolver.js +28 -0
  189. package/dist/tag/version-resolver.js.map +1 -0
  190. package/package.json +25 -20
  191. package/dist/arrange/analyze.mjs +0 -24
  192. package/dist/arrange/cli-schema.mjs +0 -27
  193. package/dist/arrange/command.mjs +0 -130
  194. package/dist/arrange/domain/analyze-service.mjs +0 -102
  195. package/dist/arrange/domain/ast/ast-node.mjs +0 -215
  196. package/dist/arrange/domain/ast/collectors-cn.mjs +0 -64
  197. package/dist/arrange/domain/ast/collectors-jsx.mjs +0 -23
  198. package/dist/arrange/domain/ast/collectors-tv.mjs +0 -189
  199. package/dist/arrange/domain/ast/helpers.mjs +0 -108
  200. package/dist/arrange/domain/ast/simplify-targets.mjs +0 -109
  201. package/dist/arrange/domain/ast/targets.mjs +0 -134
  202. package/dist/arrange/domain/constants.mjs +0 -213
  203. package/dist/arrange/domain/grouping-service.mjs +0 -121
  204. package/dist/arrange/domain/grouping.mjs +0 -338
  205. package/dist/arrange/domain/imports.mjs +0 -107
  206. package/dist/arrange/domain/source-text-formatters.mjs +0 -88
  207. package/dist/arrange/domain/tailwind-token.mjs +0 -40
  208. package/dist/arrange/domain/token-classifier.mjs +0 -218
  209. package/dist/arrange/domain/types.mjs +0 -1
  210. package/dist/arrange/output.mjs +0 -87
  211. package/dist/arrange/process-file.mjs +0 -42
  212. package/dist/arrange/resolve-target.mjs +0 -24
  213. package/dist/arrange/scan-target.mjs +0 -29
  214. package/dist/arrange/simplify-process-file.mjs +0 -35
  215. package/dist/arrange/simplify-sync.mjs +0 -32
  216. package/dist/arrange/source-parse.mjs +0 -18
  217. package/dist/arrange/suggest.mjs +0 -15
  218. package/dist/arrange/sync.mjs +0 -51
  219. package/dist/arrange/typescript-ast-translator.mjs +0 -354
  220. package/dist/arrange/workspace.mjs +0 -31
  221. package/dist/cli.mjs +0 -34
  222. package/dist/core/cli/format-error.mjs +0 -15
  223. package/dist/core/cli/global-options.mjs +0 -10
  224. package/dist/core/cli/positional.mjs +0 -11
  225. package/dist/core/cli/result-handle.mjs +0 -51
  226. package/dist/core/config/loader.mjs +0 -79
  227. package/dist/core/config/schema.mjs +0 -60
  228. package/dist/core/config/warnings.mjs +0 -12
  229. package/dist/core/config.mjs +0 -19
  230. package/dist/core/errors.mjs +0 -35
  231. package/dist/core/exit-codes.mjs +0 -17
  232. package/dist/core/filesystem/node.mjs +0 -32
  233. package/dist/core/filesystem/port.mjs +0 -1
  234. package/dist/core/glob.mjs +0 -20
  235. package/dist/core/logger.mjs +0 -15
  236. package/dist/core/result.mjs +0 -21
  237. package/dist/core/schema-parse.mjs +0 -18
  238. package/dist/core/source-text-edit.mjs +0 -56
  239. package/dist/core/verbose-diagnostics.mjs +0 -11
  240. package/dist/core/workspace/resolver.mjs +0 -177
  241. package/dist/core/workspace/typescript-walk.mjs +0 -36
  242. package/dist/mirror/cli-result.mjs +0 -22
  243. package/dist/mirror/cli-schema.mjs +0 -13
  244. package/dist/mirror/command.mjs +0 -58
  245. package/dist/mirror/dist-filesystem-impl.mjs +0 -42
  246. package/dist/mirror/domain/constants.mjs +0 -31
  247. package/dist/mirror/domain/dirent-guard.mjs +0 -16
  248. package/dist/mirror/domain/dist-filesystem.mjs +0 -1
  249. package/dist/mirror/domain/errors.mjs +0 -21
  250. package/dist/mirror/domain/exports.mjs +0 -226
  251. package/dist/mirror/domain/package-display-name.mjs +0 -12
  252. package/dist/mirror/domain/path-normalizer.mjs +0 -10
  253. package/dist/mirror/domain/types.mjs +0 -1
  254. package/dist/mirror/output.mjs +0 -48
  255. package/dist/mirror/package-path.mjs +0 -32
  256. package/dist/mirror/prepare.mjs +0 -33
  257. package/dist/mirror/supplement-exports.mjs +0 -114
  258. package/dist/mirror/sync-reporter.mjs +0 -107
  259. package/dist/mirror/sync-types.mjs +0 -1
  260. package/dist/mirror/sync-workspace-package.mjs +0 -109
  261. package/dist/mirror/sync.mjs +0 -88
  262. package/dist/mirror/write-exports.mjs +0 -94
  263. package/dist/tag/cli-result.mjs +0 -11
  264. package/dist/tag/cli-schema.mjs +0 -15
  265. package/dist/tag/command.mjs +0 -56
  266. package/dist/tag/domain/types.mjs +0 -1
  267. package/dist/tag/output.mjs +0 -87
  268. package/dist/tag/prepare.mjs +0 -29
  269. package/dist/tag/resolve-target-path.mjs +0 -12
  270. package/dist/tag/since-writer.mjs +0 -131
  271. package/dist/tag/sync.mjs +0 -149
  272. package/dist/tag/target-candidates.mjs +0 -68
  273. package/dist/tag/target-runner.mjs +0 -26
  274. package/dist/tag/version-resolver.mjs +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tag/domain/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import { CLI_EXIT_GENERAL_ERROR } from "#/core/exit-codes";
2
+ import { logger } from "#/core/logger";
3
+ import { exitCodeForTagSyncResult } from "#/tag/cli-result";
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ export class TagSyncProgressPresenter {
8
+ onTargetStarted(target) {
9
+ logger.out(TagSyncProgressPresenter.formatProgress({ type: "target-started", target }));
10
+ }
11
+ onTargetCompleted(target, result) {
12
+ logger.out(TagSyncProgressPresenter.formatProgress({ type: "target-completed", target, result }));
13
+ }
14
+ static formatProgress(event) {
15
+ const targetDisplayName = (target) => target.packageName ?? target.rootRelativeTargetPath;
16
+ if (event.type === "target-started") {
17
+ return `[tag] Processing ${targetDisplayName(event.target)}...`;
18
+ }
19
+ const changedFiles = event.result.result?.filesChanged ?? 0;
20
+ return `[tag] Done ${targetDisplayName(event.target)} (${changedFiles} changes)`;
21
+ }
22
+ }
23
+ const colorReset = "\x1b[0m";
24
+ const colors = {
25
+ red: "\x1b[31m",
26
+ green: "\x1b[32m",
27
+ yellow: "\x1b[33m",
28
+ };
29
+ /**
30
+ * @since 0.3.16-canary.0
31
+ */
32
+ export function presentTagSyncResult(result, rootDir) {
33
+ logger.out(formatTargetTable(result.selectedTargets, rootDir));
34
+ if (result.selectedTargets.length === 0) {
35
+ logger.err("No packages found in workspace. Check your pnpm-workspace.yaml or provide an explicit target path.");
36
+ return CLI_EXIT_GENERAL_ERROR;
37
+ }
38
+ const warningsAndErrorsSection = formatWarningsAndErrors(result);
39
+ if (warningsAndErrorsSection) {
40
+ logger.err(warningsAndErrorsSection);
41
+ }
42
+ logger.out(formatSummary(result));
43
+ return exitCodeForTagSyncResult(result);
44
+ }
45
+ function withColorizedLine(line, colorCode) {
46
+ return `${colorCode}${line}${colorReset}`;
47
+ }
48
+ function warningsAndErrorsFromResult(result) {
49
+ const entries = [];
50
+ for (const targetResult of result.targetResults) {
51
+ if (targetResult.runError) {
52
+ entries.push(targetResult.runError);
53
+ }
54
+ }
55
+ if (result.hookError) {
56
+ entries.push(result.hookError);
57
+ }
58
+ return entries;
59
+ }
60
+ function formatTargetTable(targets, rootDir) {
61
+ const packageColumnWidth = Math.max("package".length, ...targets.map((target) => (target.packageName ?? "-").length));
62
+ const pathColumnWidth = Math.max("path".length, ...targets.map((target) => target.rootRelativeTargetPath.length));
63
+ const lines = [];
64
+ lines.push(`[tag] Root: ${rootDir}`);
65
+ lines.push(`[tag] Resolved targets: ${targets.length}`);
66
+ lines.push("[tag] Targets:");
67
+ lines.push(` ${"package".padEnd(packageColumnWidth)} ${"path".padEnd(pathColumnWidth)} source`);
68
+ lines.push(` ${"-".repeat(packageColumnWidth)} ${"-".repeat(pathColumnWidth)} ${"-".repeat("source".length)}`);
69
+ for (const target of targets) {
70
+ lines.push(` ${(target.packageName ?? "-").padEnd(packageColumnWidth)} ${target.rootRelativeTargetPath.padEnd(pathColumnWidth)} ${target.source}`);
71
+ }
72
+ return lines.join("\n");
73
+ }
74
+ function formatWarningsAndErrors(result) {
75
+ const entries = warningsAndErrorsFromResult(result);
76
+ if (entries.length === 0) {
77
+ return null;
78
+ }
79
+ const lines = [withColorizedLine("⚠️ Warnings & Errors", colors.yellow)];
80
+ for (const entry of entries) {
81
+ lines.push(withColorizedLine(`- ${entry}`, colors.red));
82
+ }
83
+ return lines.join("\n");
84
+ }
85
+ function formatSummary(result) {
86
+ const isDryRun = result.mode === "dry-run";
87
+ const summaryPrefix = isDryRun ? "[tag:dry-run]" : "[tag]";
88
+ const versionSuffix = result.versionSummary === "mixed" && result.distinctVersions.length > 0
89
+ ? ` [${result.distinctVersions.join(", ")}]`
90
+ : "";
91
+ const hasError = result.targetResults.some((targetResult) => targetResult.runError !== null) || result.hookError !== null;
92
+ const summaryColor = hasError ? colors.red : isDryRun ? colors.yellow : colors.green;
93
+ const lines = [
94
+ withColorizedLine(`${summaryPrefix} version=${result.versionSummary}${versionSuffix} files=${result.filesChanged}/${result.filesScanned} declarations=${result.taggedDeclarations}`, summaryColor),
95
+ ];
96
+ if (result.skippedPackages.length > 0) {
97
+ lines.push(`[tag] Skipped: ${result.skippedPackages.length} package(s)`);
98
+ }
99
+ return lines.join("\n");
100
+ }
101
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/tag/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { loadCodefastConfig } from "#/core/config";
2
+ import { ok } from "#/core/result";
3
+ import { findRepoRoot } from "#/core/workspace/resolver";
4
+ import { resolveProvidedTagTargetPath } from "#/tag/resolve-target-path";
5
+ /**
6
+ * @since 0.3.16-canary.0
7
+ */
8
+ export async function prepareTagSync(fs, args) {
9
+ let rootDir;
10
+ try {
11
+ rootDir = findRepoRoot(args.currentWorkingDirectory, fs);
12
+ }
13
+ catch {
14
+ rootDir = args.currentWorkingDirectory;
15
+ }
16
+ const loadedOutcome = await loadCodefastConfig(rootDir, fs);
17
+ if (!loadedOutcome.ok) {
18
+ return loadedOutcome;
19
+ }
20
+ const resolvedTargetPath = resolveProvidedTagTargetPath(fs, {
21
+ currentWorkingDirectory: args.currentWorkingDirectory,
22
+ rawTarget: args.rawTarget,
23
+ });
24
+ return ok({
25
+ rootDir,
26
+ config: loadedOutcome.value.config,
27
+ resolvedTargetPath,
28
+ });
29
+ }
30
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/tag/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAInD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAkB,EAClB,IAGC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC;IACzC,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,EAAE,EAAE;QAC1D,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;QACR,OAAO;QACP,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;QAClC,kBAAkB;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import path from "node:path";
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
5
+ export function resolveProvidedTagTargetPath(fs, args) {
6
+ if (args.rawTarget === undefined) {
7
+ return undefined;
8
+ }
9
+ const candidate = path.isAbsolute(args.rawTarget)
10
+ ? path.resolve(args.rawTarget)
11
+ : path.resolve(args.currentWorkingDirectory, args.rawTarget);
12
+ return fs.canonicalPathSync(candidate);
13
+ }
14
+ //# sourceMappingURL=resolve-target-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-target-path.js","sourceRoot":"","sources":["../../src/tag/resolve-target-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,EAAkB,EAClB,IAGC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,231 @@
1
+ import { parseSync } from "oxc-parser";
2
+ import { applyEditsDescending, indentOfLineContaining } from "#/core/source-text-edit";
3
+ /**
4
+ * Top-level statement kinds that carry a `@since` tag: function, class, interface,
5
+ * type alias, enum, and variable declaration.
6
+ */
7
+ const TAGGABLE_DECLARATION_TYPES = new Set([
8
+ "FunctionDeclaration",
9
+ "ClassDeclaration",
10
+ "TSInterfaceDeclaration",
11
+ "TSTypeAliasDeclaration",
12
+ "TSEnumDeclaration",
13
+ "VariableDeclaration",
14
+ ]);
15
+ function isOxcNode(value) {
16
+ return typeof value === "object" && value !== null && typeof value.type === "string";
17
+ }
18
+ function identifierName(node) {
19
+ if (isOxcNode(node) && node.type === "Identifier" && typeof node.name === "string") {
20
+ return node.name;
21
+ }
22
+ return undefined;
23
+ }
24
+ /**
25
+ * @since 0.3.16-canary.0
26
+ */
27
+ export class TagSinceWriter {
28
+ fs;
29
+ sinceDocumentationTag = "@since";
30
+ constructor(fs) {
31
+ this.fs = fs;
32
+ }
33
+ applySinceTagsToFile(filePath, version, write) {
34
+ const sourceText = this.fs.readFileSync(filePath, "utf8");
35
+ const { program, comments } = parseSync(filePath, sourceText);
36
+ const statements = program.body;
37
+ const jsDocComments = comments.filter((comment) => comment.type === "Block" && comment.value.startsWith("*"));
38
+ const edits = [];
39
+ for (const declaration of this.collectExportedDeclarations(statements)) {
40
+ const edit = this.makeDeclarationSinceLine(declaration, jsDocComments, sourceText, version);
41
+ if (edit) {
42
+ edits.push(edit);
43
+ }
44
+ }
45
+ if (edits.length > 0 && write) {
46
+ const updated = applyEditsDescending(sourceText, edits);
47
+ this.fs.writeFileSync(filePath, updated, "utf8");
48
+ }
49
+ return {
50
+ filePath,
51
+ taggedDeclarations: edits.length,
52
+ changed: edits.length > 0,
53
+ };
54
+ }
55
+ /**
56
+ * The taggable declaration a top-level statement introduces, resolving the
57
+ * `export … <decl>` wrapper to the wrapper node — its `start` sits at `export`,
58
+ * matching `ts.getStart` on a modifier-bearing declaration.
59
+ */
60
+ taggableDeclarationOf(statement) {
61
+ if (TAGGABLE_DECLARATION_TYPES.has(statement.type)) {
62
+ return { anchor: statement, names: this.declarationNames(statement) };
63
+ }
64
+ if (statement.type === "ExportNamedDeclaration" || statement.type === "ExportDefaultDeclaration") {
65
+ const declaration = statement.declaration;
66
+ if (isOxcNode(declaration) && TAGGABLE_DECLARATION_TYPES.has(declaration.type)) {
67
+ return { anchor: statement, names: this.declarationNames(declaration) };
68
+ }
69
+ }
70
+ return undefined;
71
+ }
72
+ declarationNames(declaration) {
73
+ if (declaration.type === "VariableDeclaration") {
74
+ const declarators = Array.isArray(declaration.declarations)
75
+ ? declaration.declarations
76
+ : [];
77
+ const names = [];
78
+ for (const declarator of declarators) {
79
+ const name = identifierName(declarator.id);
80
+ if (name !== undefined) {
81
+ names.push(name);
82
+ }
83
+ }
84
+ return names;
85
+ }
86
+ const name = identifierName(declaration.id);
87
+ return name === undefined ? [] : [name];
88
+ }
89
+ addDeclarationName(registry, name, anchor) {
90
+ const bucket = registry.get(name);
91
+ if (bucket === undefined) {
92
+ registry.set(name, new Set([anchor]));
93
+ return;
94
+ }
95
+ bucket.add(anchor);
96
+ }
97
+ collectLocalNamedDeclarations(statements) {
98
+ const declarations = new Map();
99
+ for (const statement of statements) {
100
+ const taggable = this.taggableDeclarationOf(statement);
101
+ if (!taggable) {
102
+ continue;
103
+ }
104
+ for (const name of taggable.names) {
105
+ this.addDeclarationName(declarations, name, taggable.anchor);
106
+ }
107
+ }
108
+ return declarations;
109
+ }
110
+ collectExportedDeclarations(statements) {
111
+ const exported = new Set();
112
+ const localNamed = this.collectLocalNamedDeclarations(statements);
113
+ const addByLocalName = (name) => {
114
+ if (name === undefined) {
115
+ return;
116
+ }
117
+ const anchors = localNamed.get(name);
118
+ if (!anchors) {
119
+ return;
120
+ }
121
+ for (const anchor of anchors) {
122
+ exported.add(anchor);
123
+ }
124
+ };
125
+ for (const statement of statements) {
126
+ if (statement.type === "ExportNamedDeclaration") {
127
+ // `export function foo() {}` — the wrapper is itself the taggable anchor.
128
+ if (isOxcNode(statement.declaration)) {
129
+ const taggable = this.taggableDeclarationOf(statement);
130
+ if (taggable) {
131
+ exported.add(taggable.anchor);
132
+ }
133
+ continue;
134
+ }
135
+ // `export { local }` (no re-export source) — resolve each local binding.
136
+ if (statement.source === null && Array.isArray(statement.specifiers)) {
137
+ for (const specifier of statement.specifiers) {
138
+ addByLocalName(identifierName(specifier.local));
139
+ }
140
+ }
141
+ continue;
142
+ }
143
+ if (TAGGABLE_DECLARATION_TYPES.has(statement.type)) {
144
+ continue;
145
+ }
146
+ // `export default function foo() {}` — declaration is the taggable anchor.
147
+ if (statement.type === "ExportDefaultDeclaration") {
148
+ const taggable = this.taggableDeclarationOf(statement);
149
+ if (taggable) {
150
+ exported.add(taggable.anchor);
151
+ continue;
152
+ }
153
+ // `export default localName` — resolve the referenced declaration.
154
+ addByLocalName(identifierName(statement.declaration));
155
+ continue;
156
+ }
157
+ // `export = localName`.
158
+ if (statement.type === "TSExportAssignment") {
159
+ addByLocalName(identifierName(statement.expression));
160
+ }
161
+ }
162
+ return exported;
163
+ }
164
+ /**
165
+ * The JSDoc block documenting `anchor`: the nearest preceding `/** … *\/` whose
166
+ * gap to the declaration is whitespace only, mirroring TS comment attachment.
167
+ */
168
+ associatedJsDoc(anchor, jsDocComments, sourceText) {
169
+ let associated;
170
+ for (const comment of jsDocComments) {
171
+ if (comment.end > anchor.start) {
172
+ break;
173
+ }
174
+ if (/^\s*$/.test(sourceText.slice(comment.end, anchor.start))) {
175
+ associated = comment;
176
+ }
177
+ }
178
+ return associated;
179
+ }
180
+ jsDocHasSinceTag(comment) {
181
+ return comment.value
182
+ .split("\n")
183
+ .map((line) => line.replace(/^\s*\*?\s?/, ""))
184
+ .some((line) => /^@since\b/.test(line));
185
+ }
186
+ makeJSDocSinceLine(commentStart, commentEnd, sourceText, version) {
187
+ const commentText = sourceText.slice(commentStart, commentEnd);
188
+ const baseIndent = indentOfLineContaining(sourceText, commentStart);
189
+ const rawBody = commentText.replace(/^\/\*\*\s?/, "").replace(/\s*\*\/$/, "");
190
+ const normalizedBodyLines = rawBody
191
+ .split("\n")
192
+ .map((line) => line.replace(/^\s*\*\s?/, "").replace(/\s+$/, ""))
193
+ .filter((line, lineIndex, lines) => {
194
+ if (line.length > 0) {
195
+ return true;
196
+ }
197
+ const hasNonEmptyBefore = lines.slice(0, lineIndex).some((value) => value.length > 0);
198
+ const hasNonEmptyAfter = lines.slice(lineIndex + 1).some((value) => value.length > 0);
199
+ return hasNonEmptyBefore && hasNonEmptyAfter;
200
+ });
201
+ const formattedBody = normalizedBodyLines.length > 0
202
+ ? `${normalizedBodyLines
203
+ .map((line) => (line.length > 0 ? `${baseIndent} * ${line}` : `${baseIndent} *`))
204
+ .join("\n")}\n${baseIndent} *\n`
205
+ : "";
206
+ const tag = this.sinceDocumentationTag;
207
+ const replacement = `/**\n${formattedBody}${baseIndent} * ${tag} ${version}\n${baseIndent} */`;
208
+ return { start: commentStart, end: commentEnd, replacement };
209
+ }
210
+ makeSinceOnlyJSDocBlock(declarationIndent, version) {
211
+ const tag = this.sinceDocumentationTag;
212
+ return `/**\n${declarationIndent} * ${tag} ${version}\n${declarationIndent} */`;
213
+ }
214
+ makeDeclarationSinceLine(anchor, jsDocComments, sourceText, version) {
215
+ const existing = this.associatedJsDoc(anchor, jsDocComments, sourceText);
216
+ if (existing) {
217
+ if (this.jsDocHasSinceTag(existing)) {
218
+ return undefined;
219
+ }
220
+ return this.makeJSDocSinceLine(existing.start, existing.end, sourceText, version);
221
+ }
222
+ const start = anchor.start;
223
+ const indent = indentOfLineContaining(sourceText, start);
224
+ return {
225
+ start,
226
+ end: start,
227
+ replacement: `${indent}${this.makeSinceOnlyJSDocBlock(indent, version)}\n${indent}`,
228
+ };
229
+ }
230
+ }
231
+ //# sourceMappingURL=since-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"since-writer.js","sourceRoot":"","sources":["../../src/tag/since-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import path from "node:path";
2
+ import { AppError } from "#/core/errors";
3
+ import { messageFrom } from "#/core/errors";
4
+ import { createAnyGlobMatcher } from "#/core/glob";
5
+ import { err, ok } from "#/core/result";
6
+ import { resolveTagTargetCandidates } from "#/tag/target-candidates";
7
+ import { runTagOnTarget } from "#/tag/target-runner";
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ export async function runTagSync(fs, input) {
12
+ try {
13
+ const tagConfig = input.config;
14
+ const targetCandidates = await resolveTagTargetCandidates(fs, input.rootDir, input.targetPath);
15
+ const { includedCandidates, skippedPackages } = filterSkippedCandidates(targetCandidates, input.skipPackages);
16
+ const selectedTargets = includedCandidates.map((candidate) => resolveTargetSelection(fs, candidate, input.rootDir));
17
+ const targetExecutionResults = await Promise.all(selectedTargets.map((resolvedTarget) => runOnResolvedTarget(fs, resolvedTarget, input.write, input.listener)));
18
+ const allFileResults = targetExecutionResults.flatMap((targetResult) => targetResult.result?.fileResults ?? []);
19
+ const filesScanned = targetExecutionResults.reduce((sum, targetResult) => sum + (targetResult.result?.filesScanned ?? 0), 0);
20
+ const filesChanged = targetExecutionResults.reduce((sum, targetResult) => sum + (targetResult.result?.filesChanged ?? 0), 0);
21
+ const taggedDeclarations = targetExecutionResults.reduce((sum, targetResult) => sum + (targetResult.result?.taggedDeclarations ?? 0), 0);
22
+ const modifiedFiles = allFileResults.filter((entry) => entry.changed).map((entry) => entry.filePath);
23
+ const hookError = input.write && modifiedFiles.length > 0
24
+ ? await runTagOnAfterWriteHook(tagConfig?.onAfterWrite, modifiedFiles)
25
+ : null;
26
+ const versionsSet = extractDistinctVersions(targetExecutionResults);
27
+ const distinctVersions = [...versionsSet].toSorted((left, right) => left.localeCompare(right));
28
+ return ok({
29
+ mode: input.write ? "applied" : "dry-run",
30
+ selectedTargets,
31
+ skippedPackages,
32
+ targetResults: targetExecutionResults,
33
+ filesScanned,
34
+ filesChanged,
35
+ taggedDeclarations,
36
+ versionSummary: summarizeVersions(versionsSet),
37
+ distinctVersions,
38
+ modifiedFiles,
39
+ hookError,
40
+ });
41
+ }
42
+ catch (caughtError) {
43
+ return err(new AppError("INFRA_FAILURE", messageFrom(caughtError), caughtError));
44
+ }
45
+ }
46
+ async function runTagOnAfterWriteHook(hook, modifiedFiles) {
47
+ if (!hook || modifiedFiles.length === 0) {
48
+ return null;
49
+ }
50
+ try {
51
+ await hook({ files: modifiedFiles });
52
+ return null;
53
+ }
54
+ catch (caughtHookError) {
55
+ return `[tag] onAfterWrite hook failed: ${messageFrom(caughtHookError)}`;
56
+ }
57
+ }
58
+ function summarizeVersions(distinctVersions) {
59
+ if (distinctVersions.size === 0) {
60
+ return "none";
61
+ }
62
+ if (distinctVersions.size > 1) {
63
+ return "mixed";
64
+ }
65
+ return distinctVersions.values().next().value ?? "none";
66
+ }
67
+ function extractDistinctVersions(targetResults) {
68
+ return new Set(targetResults
69
+ .map((targetResult) => targetResult.result?.version)
70
+ .filter((version) => typeof version === "string" && version.length > 0));
71
+ }
72
+ function chooseWorkspacePackageTargetPath(fs, candidate) {
73
+ if (candidate.source !== "workspace-package") {
74
+ return {
75
+ targetPath: candidate.candidatePath,
76
+ source: candidate.source,
77
+ };
78
+ }
79
+ const preferredSourceDir = path.join(candidate.candidatePath, "src");
80
+ try {
81
+ if (fs.statSync(preferredSourceDir).isDirectory()) {
82
+ return { targetPath: preferredSourceDir, source: "workspace-package-selected-src" };
83
+ }
84
+ }
85
+ catch {
86
+ // preferredSourceDir does not exist; fall through to package root
87
+ }
88
+ return {
89
+ targetPath: candidate.candidatePath,
90
+ source: "workspace-package-selected-root",
91
+ };
92
+ }
93
+ function resolveTargetSelection(fs, candidate, rootDir) {
94
+ const selectedTarget = chooseWorkspacePackageTargetPath(fs, candidate);
95
+ const rootRelativeTargetPath = path.relative(rootDir, selectedTarget.targetPath).split(path.sep).join("/");
96
+ return {
97
+ targetPath: selectedTarget.targetPath,
98
+ rootRelativeTargetPath: rootRelativeTargetPath || ".",
99
+ source: selectedTarget.source,
100
+ packageDir: candidate.packageDir,
101
+ packageName: candidate.packageName,
102
+ };
103
+ }
104
+ /**
105
+ * Partition tag target candidates into those to tag and those to skip, matching
106
+ * each candidate's package name against `skipPackages` as glob patterns.
107
+ * Candidates without a package name (e.g. an explicit-target path) are never skipped.
108
+ *
109
+ * @since 0.5.0-canary.0
110
+ */
111
+ export function filterSkippedCandidates(targetCandidates, skipPackages) {
112
+ if (!skipPackages || skipPackages.length === 0) {
113
+ return {
114
+ includedCandidates: targetCandidates,
115
+ skippedPackages: [],
116
+ };
117
+ }
118
+ const isSkipped = createAnyGlobMatcher(skipPackages);
119
+ const includedCandidates = [];
120
+ const skippedPackages = [];
121
+ for (const candidate of targetCandidates) {
122
+ const packageName = candidate.packageName;
123
+ if (packageName && isSkipped(packageName)) {
124
+ skippedPackages.push(packageName);
125
+ continue;
126
+ }
127
+ includedCandidates.push(candidate);
128
+ }
129
+ return { includedCandidates, skippedPackages };
130
+ }
131
+ async function runOnResolvedTarget(fs, resolvedTarget, write, listener) {
132
+ listener?.onTargetStarted(resolvedTarget);
133
+ const absoluteTargetPath = path.resolve(resolvedTarget.targetPath);
134
+ if (!fs.existsSync(absoluteTargetPath)) {
135
+ const missingTargetResult = {
136
+ target: resolvedTarget,
137
+ targetExists: false,
138
+ runError: `Not found: ${absoluteTargetPath}`,
139
+ result: null,
140
+ };
141
+ listener?.onTargetCompleted(resolvedTarget, missingTargetResult);
142
+ return missingTargetResult;
143
+ }
144
+ try {
145
+ const runResult = runTagOnTarget(fs, absoluteTargetPath, { write });
146
+ const targetRunResult = {
147
+ target: resolvedTarget,
148
+ targetExists: true,
149
+ runError: null,
150
+ result: runResult,
151
+ };
152
+ listener?.onTargetCompleted(resolvedTarget, targetRunResult);
153
+ return targetRunResult;
154
+ }
155
+ catch (caughtRunError) {
156
+ const failedTargetRunResult = {
157
+ target: resolvedTarget,
158
+ targetExists: true,
159
+ runError: messageFrom(caughtRunError),
160
+ result: null,
161
+ };
162
+ listener?.onTargetCompleted(resolvedTarget, failedTargetRunResult);
163
+ return failedTargetRunResult;
164
+ }
165
+ }
166
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tag/sync.ts"],"names":[],"mappings":"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"}