outfitter 0.2.5 → 0.2.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 (175) hide show
  1. package/README.md +60 -31
  2. package/dist/actions.d.ts +2 -0
  3. package/dist/actions.js +35 -0
  4. package/dist/cli.js +3 -2
  5. package/dist/commands/add.d.ts +54 -0
  6. package/dist/commands/add.js +16 -0
  7. package/dist/commands/check-tsdoc.d.ts +22 -0
  8. package/dist/commands/check-tsdoc.js +8 -0
  9. package/dist/commands/check.d.ts +91 -0
  10. package/dist/commands/check.js +14 -0
  11. package/dist/commands/demo.d.ts +21 -0
  12. package/dist/commands/demo.js +8 -0
  13. package/dist/commands/docs-module-loader.d.ts +2 -0
  14. package/dist/commands/docs-module-loader.js +8 -0
  15. package/dist/commands/doctor.d.ts +2 -0
  16. package/dist/commands/doctor.js +25 -0
  17. package/dist/commands/init.d.ts +7 -0
  18. package/dist/commands/init.js +32 -0
  19. package/dist/commands/repo.d.ts +3 -0
  20. package/dist/commands/repo.js +9 -0
  21. package/dist/commands/scaffold.d.ts +4 -0
  22. package/dist/commands/scaffold.js +32 -0
  23. package/dist/commands/shared-deps.d.ts +21 -0
  24. package/dist/commands/shared-deps.js +11 -0
  25. package/dist/commands/upgrade-codemods.d.ts +42 -0
  26. package/dist/commands/upgrade-codemods.js +15 -0
  27. package/dist/commands/upgrade-planner.d.ts +58 -0
  28. package/dist/commands/upgrade-planner.js +8 -0
  29. package/dist/commands/upgrade-workspace.d.ts +2 -0
  30. package/dist/commands/upgrade-workspace.js +16 -0
  31. package/dist/commands/upgrade.d.ts +221 -0
  32. package/dist/commands/upgrade.js +25 -0
  33. package/dist/create/index.d.ts +5 -0
  34. package/dist/create/index.js +30 -0
  35. package/dist/create/planner.d.ts +3 -0
  36. package/dist/create/planner.js +22 -0
  37. package/dist/create/presets.d.ts +3 -0
  38. package/dist/create/presets.js +12 -0
  39. package/dist/create/types.d.ts +2 -0
  40. package/dist/create/types.js +1 -0
  41. package/dist/engine/blocks.d.ts +3 -0
  42. package/dist/engine/blocks.js +12 -0
  43. package/dist/engine/collector.d.ts +2 -0
  44. package/dist/engine/collector.js +8 -0
  45. package/dist/engine/config.d.ts +3 -0
  46. package/dist/engine/config.js +15 -0
  47. package/dist/engine/dependency-versions.d.ts +12 -0
  48. package/dist/engine/dependency-versions.js +12 -0
  49. package/dist/engine/executor.d.ts +3 -0
  50. package/dist/engine/executor.js +19 -0
  51. package/dist/engine/index.d.ts +8 -0
  52. package/dist/engine/index.js +68 -0
  53. package/dist/engine/names.d.ts +2 -0
  54. package/dist/engine/names.js +24 -0
  55. package/dist/engine/post-scaffold.d.ts +3 -0
  56. package/dist/engine/post-scaffold.js +8 -0
  57. package/dist/engine/render-plan.d.ts +7 -0
  58. package/dist/engine/render-plan.js +9 -0
  59. package/dist/engine/template.d.ts +3 -0
  60. package/dist/engine/template.js +17 -0
  61. package/dist/engine/types.d.ts +2 -0
  62. package/dist/engine/types.js +8 -0
  63. package/dist/engine/workspace.d.ts +3 -0
  64. package/dist/engine/workspace.js +20 -0
  65. package/dist/index.d.ts +100 -129
  66. package/dist/index.js +1 -9
  67. package/dist/manifest.d.ts +71 -0
  68. package/dist/manifest.js +16 -0
  69. package/dist/output-mode.d.ts +2 -0
  70. package/dist/output-mode.js +10 -0
  71. package/dist/shared/{chunk-tpwtpa74.js → chunk-x6644tk8.js} +3840 -2881
  72. package/dist/shared/outfitter-109s75x0.d.ts +76 -0
  73. package/dist/shared/outfitter-1fy7byz5.js +170 -0
  74. package/dist/shared/outfitter-1h7k8xxt.js +29 -0
  75. package/dist/shared/outfitter-20f6a2n4.js +35 -0
  76. package/dist/shared/outfitter-344t1r38.js +1 -0
  77. package/dist/shared/outfitter-4q1zfmvc.js +154 -0
  78. package/dist/shared/outfitter-4s9meh3j.js +221 -0
  79. package/dist/shared/outfitter-5akzvppx.js +125 -0
  80. package/dist/shared/outfitter-5y646xzk.js +301 -0
  81. package/dist/shared/outfitter-5yjr404v.d.ts +22 -0
  82. package/dist/shared/outfitter-63gse8fv.js +316 -0
  83. package/dist/shared/outfitter-6bkqjk86.d.ts +3 -0
  84. package/dist/shared/outfitter-6fgk6adm.d.ts +40 -0
  85. package/dist/shared/outfitter-79vfxt6y.js +269 -0
  86. package/dist/shared/outfitter-7ch26yq8.js +885 -0
  87. package/dist/shared/outfitter-7r12fj7f.js +30 -0
  88. package/dist/shared/outfitter-8y2dfx6n.js +11 -0
  89. package/dist/shared/outfitter-9x1brcmq.js +184 -0
  90. package/dist/shared/outfitter-a79xrm12.d.ts +17 -0
  91. package/dist/shared/outfitter-amc4jbs1.d.ts +50 -0
  92. package/dist/shared/outfitter-bn9c8p2e.js +204 -0
  93. package/dist/shared/outfitter-bpr28y54.js +70 -0
  94. package/dist/shared/outfitter-dpj9erew.d.ts +4 -0
  95. package/dist/shared/outfitter-e9rrfekb.d.ts +51 -0
  96. package/dist/shared/outfitter-ehp18x1n.js +1 -0
  97. package/dist/shared/outfitter-f9znfhkn.d.ts +5 -0
  98. package/dist/shared/outfitter-fhnjpjwc.d.ts +18 -0
  99. package/dist/shared/outfitter-fn20r49x.d.ts +5 -0
  100. package/dist/shared/outfitter-h3q6ae6d.d.ts +48 -0
  101. package/dist/shared/outfitter-ha89qf8q.js +132 -0
  102. package/dist/shared/outfitter-hsp8vy5m.d.ts +146 -0
  103. package/dist/shared/outfitter-hvsaxgcp.js +1 -0
  104. package/dist/shared/outfitter-j833sxws.js +61 -0
  105. package/dist/shared/outfitter-ksyvwmb5.js +191 -0
  106. package/dist/shared/outfitter-m3ehh37q.d.ts +22 -0
  107. package/dist/shared/outfitter-m44n0qzw.js +161 -0
  108. package/dist/shared/outfitter-mdt37hqm.js +4 -0
  109. package/dist/shared/outfitter-mt7d1ek2.js +698 -0
  110. package/dist/shared/outfitter-mtbpabf3.js +91 -0
  111. package/dist/shared/outfitter-n9g1zk4x.d.ts +66 -0
  112. package/dist/shared/outfitter-p71qb0f0.js +82 -0
  113. package/dist/shared/outfitter-pcj9gg2g.js +909 -0
  114. package/dist/shared/outfitter-pj9vp00r.js +601 -0
  115. package/dist/shared/outfitter-qakwgrrh.d.ts +4 -0
  116. package/dist/shared/outfitter-r419zfgs.d.ts +30 -0
  117. package/dist/shared/outfitter-s7jetkge.d.ts +18 -0
  118. package/dist/shared/outfitter-ttjr95y9.js +98 -0
  119. package/dist/shared/outfitter-vh4xgb93.js +35 -0
  120. package/dist/shared/outfitter-w1j80j1r.js +326 -0
  121. package/dist/shared/outfitter-xe5mzgdc.js +208 -0
  122. package/dist/shared/outfitter-ybbazsxq.d.ts +14 -0
  123. package/dist/shared/outfitter-yraebrmw.d.ts +5 -0
  124. package/dist/shared/outfitter-yvksv5qb.js +322 -0
  125. package/dist/shared/outfitter-z0we32cp.d.ts +63 -0
  126. package/dist/shared/outfitter-z5sx06qe.d.ts +25 -0
  127. package/dist/shared/outfitter-zwyvewr1.js +36 -0
  128. package/dist/targets/index.d.ts +4 -0
  129. package/dist/targets/index.js +29 -0
  130. package/dist/targets/registry.d.ts +3 -0
  131. package/dist/targets/registry.js +28 -0
  132. package/dist/targets/types.d.ts +2 -0
  133. package/dist/targets/types.js +1 -0
  134. package/package.json +45 -28
  135. package/template-versions.json +22 -0
  136. package/templates/basic/package.json.template +6 -6
  137. package/templates/cli/biome.json.template +1 -1
  138. package/templates/cli/package.json.template +17 -9
  139. package/templates/daemon/biome.json.template +1 -1
  140. package/templates/daemon/package.json.template +18 -10
  141. package/templates/full-stack/.gitignore.template +30 -0
  142. package/templates/full-stack/README.md.template +30 -0
  143. package/templates/full-stack/apps/cli/package.json.template +39 -0
  144. package/templates/full-stack/apps/cli/src/cli.ts.template +24 -0
  145. package/templates/full-stack/apps/cli/src/index.test.ts.template +18 -0
  146. package/templates/full-stack/apps/cli/src/index.ts.template +5 -0
  147. package/templates/full-stack/apps/cli/tsconfig.json.template +37 -0
  148. package/templates/full-stack/apps/mcp/package.json.template +40 -0
  149. package/templates/full-stack/apps/mcp/src/index.test.ts.template +18 -0
  150. package/templates/full-stack/apps/mcp/src/index.ts.template +6 -0
  151. package/templates/full-stack/apps/mcp/src/mcp.ts.template +22 -0
  152. package/templates/full-stack/apps/mcp/src/server.ts.template +10 -0
  153. package/templates/full-stack/apps/mcp/tsconfig.json.template +37 -0
  154. package/templates/full-stack/package.json.template +16 -0
  155. package/templates/full-stack/packages/core/package.json.template +36 -0
  156. package/templates/full-stack/packages/core/src/handlers.ts.template +31 -0
  157. package/templates/full-stack/packages/core/src/index.test.ts.template +30 -0
  158. package/templates/full-stack/packages/core/src/index.ts.template +8 -0
  159. package/templates/full-stack/packages/core/src/types.ts.template +13 -0
  160. package/templates/full-stack/packages/core/tsconfig.json.template +34 -0
  161. package/templates/library/.gitignore.template +30 -0
  162. package/templates/library/README.md.template +29 -0
  163. package/templates/library/bunup.config.ts.template +20 -0
  164. package/templates/library/package.json.template +55 -0
  165. package/templates/library/src/handlers.ts.template +31 -0
  166. package/templates/library/src/index.test.ts.template +35 -0
  167. package/templates/library/src/index.ts.template +8 -0
  168. package/templates/library/src/types.ts.template +13 -0
  169. package/templates/library/tsconfig.json.template +34 -0
  170. package/templates/mcp/biome.json.template +1 -1
  171. package/templates/mcp/package.json.template +17 -9
  172. package/templates/mcp/src/index.ts.template +1 -1
  173. package/templates/mcp/src/mcp.ts.template +28 -74
  174. package/templates/mcp/src/server.ts.template +2 -9
  175. package/templates/minimal/package.json.template +13 -6
@@ -0,0 +1,161 @@
1
+ // @bun
2
+ // apps/outfitter/src/engine/dependency-versions.ts
3
+ import { existsSync, readdirSync, readFileSync } from "fs";
4
+ import { dirname, join, resolve } from "path";
5
+ import { fileURLToPath } from "url";
6
+ var DEPENDENCY_SECTIONS = [
7
+ "dependencies",
8
+ "devDependencies",
9
+ "peerDependencies",
10
+ "optionalDependencies"
11
+ ];
12
+ var cachedResolvedVersions;
13
+ function clearResolvedVersionsCache() {
14
+ cachedResolvedVersions = undefined;
15
+ }
16
+ function readJsonFile(path) {
17
+ return JSON.parse(readFileSync(path, "utf-8"));
18
+ }
19
+ function isRecord(value) {
20
+ return typeof value === "object" && value !== null && !Array.isArray(value);
21
+ }
22
+ function normalizeRange(value) {
23
+ const trimmed = value.trim();
24
+ if (trimmed.length === 0 || trimmed === "workspace:*") {
25
+ return;
26
+ }
27
+ if (/^\d+\.\d+\.\d+(?:[-+].+)?$/.test(trimmed)) {
28
+ return `^${trimmed}`;
29
+ }
30
+ return trimmed;
31
+ }
32
+ function findOutfitterPackageRoot() {
33
+ let currentDir = dirname(fileURLToPath(import.meta.url));
34
+ for (let i = 0;i < 10; i += 1) {
35
+ const packageJsonPath = join(currentDir, "package.json");
36
+ if (existsSync(packageJsonPath)) {
37
+ try {
38
+ const parsed = readJsonFile(packageJsonPath);
39
+ if (isRecord(parsed) && typeof parsed["name"] === "string" && parsed["name"] === "outfitter") {
40
+ return currentDir;
41
+ }
42
+ } catch {}
43
+ }
44
+ currentDir = dirname(currentDir);
45
+ }
46
+ throw new Error(`Unable to find outfitter package root (walked 10 levels up from ${dirname(fileURLToPath(import.meta.url))}). ` + "Ensure this module is running from within the outfitter package tree.");
47
+ }
48
+ function collectDependencyRangesFromPackageJson(packageJson) {
49
+ const collected = {};
50
+ for (const section of DEPENDENCY_SECTIONS) {
51
+ const sectionValue = packageJson[section];
52
+ if (!isRecord(sectionValue)) {
53
+ continue;
54
+ }
55
+ for (const [name, value] of Object.entries(sectionValue)) {
56
+ if (typeof value !== "string" || !name.startsWith("@outfitter/")) {
57
+ continue;
58
+ }
59
+ const normalized = normalizeRange(value);
60
+ if (normalized) {
61
+ collected[name] = normalized;
62
+ }
63
+ }
64
+ }
65
+ return collected;
66
+ }
67
+ function collectWorkspacePackageRanges(packageRoot) {
68
+ const repoRoot = resolve(packageRoot, "..", "..");
69
+ const expectedPackageRoot = join(repoRoot, "apps", "outfitter");
70
+ if (resolve(expectedPackageRoot) !== resolve(packageRoot)) {
71
+ return {};
72
+ }
73
+ const packagesDir = join(repoRoot, "packages");
74
+ if (!existsSync(packagesDir)) {
75
+ return {};
76
+ }
77
+ const collected = {};
78
+ for (const entry of readdirSync(packagesDir)) {
79
+ const packageJsonPath = join(packagesDir, entry, "package.json");
80
+ if (!existsSync(packageJsonPath)) {
81
+ continue;
82
+ }
83
+ try {
84
+ const parsed = readJsonFile(packageJsonPath);
85
+ if (!isRecord(parsed)) {
86
+ continue;
87
+ }
88
+ const name = parsed["name"];
89
+ const version = parsed["version"];
90
+ if (typeof name === "string" && typeof version === "string" && name.startsWith("@outfitter/")) {
91
+ const normalized = normalizeRange(version);
92
+ if (normalized) {
93
+ collected[name] = normalized;
94
+ }
95
+ }
96
+ } catch {}
97
+ }
98
+ return collected;
99
+ }
100
+ function loadTemplateVersionManifest(packageRoot) {
101
+ const manifestPath = join(packageRoot, "template-versions.json");
102
+ const parsed = readJsonFile(manifestPath);
103
+ if (!isRecord(parsed)) {
104
+ throw new Error("template-versions.json must be a JSON object");
105
+ }
106
+ const internalDependencies = parsed["internalDependencies"];
107
+ const externalDependencies = parsed["externalDependencies"];
108
+ if (!(isRecord(internalDependencies) && isRecord(externalDependencies))) {
109
+ throw new Error("template-versions.json must include internalDependencies and externalDependencies objects");
110
+ }
111
+ return {
112
+ internalDependencies: Object.fromEntries(Object.entries(internalDependencies).filter(([, value]) => typeof value === "string")),
113
+ externalDependencies: Object.fromEntries(Object.entries(externalDependencies).filter(([, value]) => typeof value === "string"))
114
+ };
115
+ }
116
+ function resolveTemplateDependencyVersions() {
117
+ if (cachedResolvedVersions) {
118
+ return cachedResolvedVersions;
119
+ }
120
+ const packageRoot = findOutfitterPackageRoot();
121
+ const manifest = loadTemplateVersionManifest(packageRoot);
122
+ const packageJsonPath = join(packageRoot, "package.json");
123
+ const raw = existsSync(packageJsonPath) ? readJsonFile(packageJsonPath) : undefined;
124
+ const fromOutfitterPackage = raw !== undefined && isRecord(raw) ? collectDependencyRangesFromPackageJson(raw) : {};
125
+ const fromWorkspacePackages = collectWorkspacePackageRanges(packageRoot);
126
+ const internal = {};
127
+ for (const [name, fallbackRange] of Object.entries(manifest.internalDependencies)) {
128
+ internal[name] = fromOutfitterPackage[name] ?? fromWorkspacePackages[name] ?? fallbackRange;
129
+ }
130
+ cachedResolvedVersions = {
131
+ internal,
132
+ external: { ...manifest.externalDependencies }
133
+ };
134
+ return cachedResolvedVersions;
135
+ }
136
+ function applyResolvedDependencyVersions(parsedPackageJson, versions) {
137
+ for (const section of DEPENDENCY_SECTIONS) {
138
+ const sectionValue = parsedPackageJson[section];
139
+ if (!isRecord(sectionValue)) {
140
+ continue;
141
+ }
142
+ for (const [name, value] of Object.entries(sectionValue)) {
143
+ if (typeof value !== "string") {
144
+ continue;
145
+ }
146
+ if (name.startsWith("@outfitter/")) {
147
+ const resolvedInternal = versions.internal[name];
148
+ if (resolvedInternal) {
149
+ sectionValue[name] = resolvedInternal;
150
+ }
151
+ continue;
152
+ }
153
+ const resolvedExternal = versions.external[name];
154
+ if (resolvedExternal) {
155
+ sectionValue[name] = resolvedExternal;
156
+ }
157
+ }
158
+ }
159
+ }
160
+
161
+ export { clearResolvedVersionsCache, resolveTemplateDependencyVersions, applyResolvedDependencyVersions };
@@ -0,0 +1,4 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ export { __require };