@baseplate-dev/project-builder-server 0.4.1 → 0.4.3

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 (185) hide show
  1. package/dist/actions/diff/diff-project.action.d.ts +13 -55
  2. package/dist/actions/diff/diff-project.action.d.ts.map +1 -1
  3. package/dist/actions/diff/diff-project.action.js +4 -4
  4. package/dist/actions/diff/diff-project.action.js.map +1 -1
  5. package/dist/actions/generators/create-generator.action.d.ts +15 -0
  6. package/dist/actions/generators/create-generator.action.d.ts.map +1 -0
  7. package/dist/actions/generators/create-generator.action.js +54 -0
  8. package/dist/actions/generators/create-generator.action.js.map +1 -0
  9. package/dist/actions/generators/index.d.ts +3 -0
  10. package/dist/actions/generators/index.d.ts.map +1 -0
  11. package/dist/actions/generators/index.js +3 -0
  12. package/dist/actions/generators/index.js.map +1 -0
  13. package/dist/actions/index.d.ts +1 -0
  14. package/dist/actions/index.d.ts.map +1 -1
  15. package/dist/actions/index.js +1 -0
  16. package/dist/actions/index.js.map +1 -1
  17. package/dist/actions/registry.d.ts +118 -180
  18. package/dist/actions/registry.d.ts.map +1 -1
  19. package/dist/actions/registry.js +2 -0
  20. package/dist/actions/registry.js.map +1 -1
  21. package/dist/actions/snapshot/snapshot-add.action.d.ts +4 -4
  22. package/dist/actions/snapshot/snapshot-add.action.d.ts.map +1 -1
  23. package/dist/actions/snapshot/snapshot-add.action.js +4 -4
  24. package/dist/actions/snapshot/snapshot-add.action.js.map +1 -1
  25. package/dist/actions/snapshot/snapshot-remove.action.d.ts +4 -4
  26. package/dist/actions/snapshot/snapshot-remove.action.d.ts.map +1 -1
  27. package/dist/actions/snapshot/snapshot-remove.action.js +4 -4
  28. package/dist/actions/snapshot/snapshot-remove.action.js.map +1 -1
  29. package/dist/actions/snapshot/snapshot-save.action.d.ts +3 -3
  30. package/dist/actions/snapshot/snapshot-save.action.d.ts.map +1 -1
  31. package/dist/actions/snapshot/snapshot-save.action.js +4 -4
  32. package/dist/actions/snapshot/snapshot-save.action.js.map +1 -1
  33. package/dist/actions/snapshot/snapshot-show.action.d.ts +7 -27
  34. package/dist/actions/snapshot/snapshot-show.action.d.ts.map +1 -1
  35. package/dist/actions/snapshot/snapshot-show.action.js +4 -4
  36. package/dist/actions/snapshot/snapshot-show.action.js.map +1 -1
  37. package/dist/actions/sync/sync-all-projects.action.d.ts +37 -14
  38. package/dist/actions/sync/sync-all-projects.action.d.ts.map +1 -1
  39. package/dist/actions/sync/sync-all-projects.action.js +12 -5
  40. package/dist/actions/sync/sync-all-projects.action.js.map +1 -1
  41. package/dist/actions/sync/sync-project.action.d.ts +31 -4
  42. package/dist/actions/sync/sync-project.action.d.ts.map +1 -1
  43. package/dist/actions/sync/sync-project.action.js +11 -5
  44. package/dist/actions/sync/sync-project.action.js.map +1 -1
  45. package/dist/actions/template-extractor/discover-generators.action.d.ts +5 -29
  46. package/dist/actions/template-extractor/discover-generators.action.d.ts.map +1 -1
  47. package/dist/actions/template-extractor/discover-generators.action.js +4 -4
  48. package/dist/actions/template-extractor/discover-generators.action.js.map +1 -1
  49. package/dist/actions/template-extractor/extract-templates.action.d.ts +3 -3
  50. package/dist/actions/template-extractor/extract-templates.action.d.ts.map +1 -1
  51. package/dist/actions/template-extractor/extract-templates.action.js +4 -4
  52. package/dist/actions/template-extractor/extract-templates.action.js.map +1 -1
  53. package/dist/actions/template-extractor/generate-templates.action.d.ts +3 -3
  54. package/dist/actions/template-extractor/generate-templates.action.d.ts.map +1 -1
  55. package/dist/actions/template-extractor/generate-templates.action.js +4 -4
  56. package/dist/actions/template-extractor/generate-templates.action.js.map +1 -1
  57. package/dist/actions/templates/configure-raw-template.action.d.ts +3 -3
  58. package/dist/actions/templates/configure-raw-template.action.d.ts.map +1 -1
  59. package/dist/actions/templates/configure-raw-template.action.js +4 -4
  60. package/dist/actions/templates/configure-raw-template.action.js.map +1 -1
  61. package/dist/actions/templates/configure-text-template.action.d.ts +4 -10
  62. package/dist/actions/templates/configure-text-template.action.d.ts.map +1 -1
  63. package/dist/actions/templates/configure-text-template.action.js +5 -5
  64. package/dist/actions/templates/configure-text-template.action.js.map +1 -1
  65. package/dist/actions/templates/configure-ts-template.action.d.ts +4 -4
  66. package/dist/actions/templates/configure-ts-template.action.d.ts.map +1 -1
  67. package/dist/actions/templates/configure-ts-template.action.js +4 -4
  68. package/dist/actions/templates/configure-ts-template.action.js.map +1 -1
  69. package/dist/actions/templates/delete-template.action.d.ts +3 -3
  70. package/dist/actions/templates/delete-template.action.d.ts.map +1 -1
  71. package/dist/actions/templates/delete-template.action.js +4 -4
  72. package/dist/actions/templates/delete-template.action.js.map +1 -1
  73. package/dist/actions/templates/list-templates.action.d.ts +4 -18
  74. package/dist/actions/templates/list-templates.action.d.ts.map +1 -1
  75. package/dist/actions/templates/list-templates.action.js +7 -5
  76. package/dist/actions/templates/list-templates.action.js.map +1 -1
  77. package/dist/actions/templates/show-template-metadata.action.d.ts +3 -3
  78. package/dist/actions/templates/show-template-metadata.action.d.ts.map +1 -1
  79. package/dist/actions/templates/show-template-metadata.action.js +5 -5
  80. package/dist/actions/templates/show-template-metadata.action.js.map +1 -1
  81. package/dist/actions/types.d.ts +6 -6
  82. package/dist/actions/types.d.ts.map +1 -1
  83. package/dist/actions/types.js.map +1 -1
  84. package/dist/actions/utils/cli.d.ts +1 -1
  85. package/dist/actions/utils/cli.d.ts.map +1 -1
  86. package/dist/actions/utils/cli.js +5 -3
  87. package/dist/actions/utils/cli.js.map +1 -1
  88. package/dist/actions/utils/run-in-worker.d.ts +1 -1
  89. package/dist/actions/utils/run-in-worker.d.ts.map +1 -1
  90. package/dist/actions/utils/run-in-worker.js +4 -1
  91. package/dist/actions/utils/run-in-worker.js.map +1 -1
  92. package/dist/actions/utils/trpc.d.ts +9 -7
  93. package/dist/actions/utils/trpc.d.ts.map +1 -1
  94. package/dist/actions/utils/trpc.js +6 -7
  95. package/dist/actions/utils/trpc.js.map +1 -1
  96. package/dist/actions/utils/worker-script.d.ts.map +1 -1
  97. package/dist/actions/utils/worker-script.js +1 -2
  98. package/dist/actions/utils/worker-script.js.map +1 -1
  99. package/dist/api/index.d.ts +44 -27
  100. package/dist/api/index.d.ts.map +1 -1
  101. package/dist/api/plugins.d.ts +5 -4
  102. package/dist/api/plugins.d.ts.map +1 -1
  103. package/dist/api/projects.d.ts +8 -4
  104. package/dist/api/projects.d.ts.map +1 -1
  105. package/dist/api/sync.d.ts +22 -11
  106. package/dist/api/sync.d.ts.map +1 -1
  107. package/dist/api/trpc.d.ts +8 -8
  108. package/dist/api/trpc.d.ts.map +1 -1
  109. package/dist/api/version.d.ts +5 -4
  110. package/dist/api/version.d.ts.map +1 -1
  111. package/dist/compiler/backend/fastify.d.ts.map +1 -1
  112. package/dist/compiler/backend/fastify.js +5 -7
  113. package/dist/compiler/backend/fastify.js.map +1 -1
  114. package/dist/compiler/root/root-package-compiler.d.ts.map +1 -1
  115. package/dist/compiler/root/root-package-compiler.js +1 -0
  116. package/dist/compiler/root/root-package-compiler.js.map +1 -1
  117. package/dist/compiler/web/admin/crud/inputs.d.ts.map +1 -1
  118. package/dist/compiler/web/admin/crud/inputs.js +4 -0
  119. package/dist/compiler/web/admin/crud/inputs.js.map +1 -1
  120. package/dist/compiler/web/web-compiler.d.ts.map +1 -1
  121. package/dist/compiler/web/web-compiler.js +8 -21
  122. package/dist/compiler/web/web-compiler.js.map +1 -1
  123. package/dist/dev-server/api/router.d.ts +93 -60
  124. package/dist/dev-server/api/router.d.ts.map +1 -1
  125. package/dist/dev-server/api/trpc.d.ts +4 -4
  126. package/dist/dev-server/api/trpc.d.ts.map +1 -1
  127. package/dist/dev-server/get-or-create-config.d.ts +1 -7
  128. package/dist/dev-server/get-or-create-config.d.ts.map +1 -1
  129. package/dist/dev-server/mcp/fastify.js +3 -9
  130. package/dist/dev-server/mcp/fastify.js.map +1 -1
  131. package/dist/dev-server/mcp/server.js.map +1 -1
  132. package/dist/dev-server/server.d.ts.map +1 -1
  133. package/dist/dev-server/server.js +5 -3
  134. package/dist/dev-server/server.js.map +1 -1
  135. package/dist/diff/snapshot/snapshot-manifest.js +2 -2
  136. package/dist/diff/snapshot/snapshot-manifest.js.map +1 -1
  137. package/dist/diff/snapshot/snapshot-types.d.ts +10 -76
  138. package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -1
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.js +2 -0
  141. package/dist/plugins/plugin-discovery.js +2 -2
  142. package/dist/plugins/plugin-discovery.js.map +1 -1
  143. package/dist/server/builder-service-manager.d.ts +2 -2
  144. package/dist/server/builder-service-manager.d.ts.map +1 -1
  145. package/dist/server/builder-service-manager.js +4 -6
  146. package/dist/server/builder-service-manager.js.map +1 -1
  147. package/dist/server/plugin.js +2 -2
  148. package/dist/server/plugin.js.map +1 -1
  149. package/dist/server/server.d.ts.map +1 -1
  150. package/dist/server/server.js +3 -1
  151. package/dist/server/server.js.map +1 -1
  152. package/dist/service/builder-service.d.ts +4 -1
  153. package/dist/service/builder-service.d.ts.map +1 -1
  154. package/dist/service/builder-service.js +35 -13
  155. package/dist/service/builder-service.js.map +1 -1
  156. package/dist/sync/file-id-map.js +2 -2
  157. package/dist/sync/file-id-map.js.map +1 -1
  158. package/dist/sync/sync-metadata.d.ts +78 -378
  159. package/dist/sync/sync-metadata.d.ts.map +1 -1
  160. package/dist/sync/sync-project.d.ts +5 -1
  161. package/dist/sync/sync-project.d.ts.map +1 -1
  162. package/dist/sync/sync-project.js +3 -1
  163. package/dist/sync/sync-project.js.map +1 -1
  164. package/dist/template-extractor/discover-generators.d.ts.map +1 -1
  165. package/dist/template-extractor/discover-generators.js +2 -1
  166. package/dist/template-extractor/discover-generators.js.map +1 -1
  167. package/dist/templates/create/create-generator.d.ts +16 -0
  168. package/dist/templates/create/create-generator.d.ts.map +1 -0
  169. package/dist/templates/create/create-generator.js +175 -0
  170. package/dist/templates/create/create-generator.js.map +1 -0
  171. package/dist/templates/create/index.d.ts +2 -0
  172. package/dist/templates/create/index.d.ts.map +1 -0
  173. package/dist/templates/create/index.js +2 -0
  174. package/dist/templates/create/index.js.map +1 -0
  175. package/dist/templates/list/list-templates.d.ts.map +1 -1
  176. package/dist/templates/list/list-templates.js +2 -1
  177. package/dist/templates/list/list-templates.js.map +1 -1
  178. package/dist/user-config/user-config-schema.d.ts +2 -34
  179. package/dist/user-config/user-config-schema.d.ts.map +1 -1
  180. package/dist/utils/find-monorepo-root.d.ts +6 -0
  181. package/dist/utils/find-monorepo-root.d.ts.map +1 -0
  182. package/dist/utils/find-monorepo-root.js +19 -0
  183. package/dist/utils/find-monorepo-root.js.map +1 -0
  184. package/package.json +16 -15
  185. package/dist/index.js.map +0 -1
@@ -0,0 +1,175 @@
1
+ import { camelCase, constantCase } from 'change-case';
2
+ import { execSync } from 'node:child_process';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { findMonorepoRoot } from '#src/utils/find-monorepo-root.js';
6
+ /**
7
+ * Parse a generator name in format "category/kebab-name" into its components
8
+ */
9
+ function parseGeneratorName(name) {
10
+ const [category, kebabName] = name.split('/');
11
+ return {
12
+ category,
13
+ kebabName,
14
+ camelCaseName: camelCase(kebabName),
15
+ screamingSnakeName: constantCase(kebabName),
16
+ };
17
+ }
18
+ /**
19
+ * Generate the main generator file content
20
+ */
21
+ function generateGeneratorFileContent(fullName, parsed) {
22
+ return `import { createGenerator, createGeneratorTask } from '@baseplate-dev/sync';
23
+ import { z } from 'zod';
24
+
25
+ import { ${parsed.screamingSnakeName}_GENERATED } from './generated/index.js';
26
+
27
+ const descriptorSchema = z.object({});
28
+
29
+ /**
30
+ * Generator for ${fullName}
31
+ */
32
+ export const ${parsed.camelCaseName}Generator = createGenerator({
33
+ name: '${fullName}',
34
+ generatorFileUrl: import.meta.url,
35
+ descriptorSchema,
36
+ buildTasks: () => ({
37
+ paths: ${parsed.screamingSnakeName}_GENERATED.paths.task,
38
+ renderers: ${parsed.screamingSnakeName}_GENERATED.renderers.task,
39
+ main: createGeneratorTask({
40
+ dependencies: {
41
+ renderers: ${parsed.screamingSnakeName}_GENERATED.renderers.provider,
42
+ },
43
+ run({ renderers }) {
44
+ return {
45
+ build: async (builder) => {
46
+ // Add your generator logic here
47
+ },
48
+ };
49
+ },
50
+ }),
51
+ }),
52
+ });
53
+ `;
54
+ }
55
+ /**
56
+ * Generate the barrel export (index.ts) content
57
+ */
58
+ function generateIndexFileContent(kebabName) {
59
+ return `export * from './${kebabName}.generator.js';
60
+ `;
61
+ }
62
+ /**
63
+ * Generate the placeholder generated/index.ts content
64
+ */
65
+ function generatePlaceholderGeneratedContent(parsed) {
66
+ return `// This file is auto-generated by \`pnpm generate:templates\`
67
+ // Do not edit manually - run the command after adding templates
68
+ export const ${parsed.screamingSnakeName}_GENERATED = undefined as never;
69
+ `;
70
+ }
71
+ /**
72
+ * Generate the extractor.json content
73
+ */
74
+ function generateExtractorJsonContent(fullName) {
75
+ return JSON.stringify({
76
+ name: fullName,
77
+ templates: {},
78
+ }, null, 2);
79
+ }
80
+ /**
81
+ * Generate the category index.ts content or update existing one
82
+ */
83
+ function generateOrUpdateCategoryIndex(categoryDir, kebabName) {
84
+ const indexPath = path.join(categoryDir, 'index.ts');
85
+ const exportLine = `export * from './${kebabName}/index.js';`;
86
+ if (fs.existsSync(indexPath)) {
87
+ const existingContent = fs.readFileSync(indexPath, 'utf-8');
88
+ if (existingContent.includes(exportLine)) {
89
+ return { content: existingContent, isNew: false };
90
+ }
91
+ // Append the new export
92
+ const newContent = `${existingContent.trimEnd()}\n${exportLine}\n`;
93
+ return { content: newContent, isNew: false };
94
+ }
95
+ // Create new index file
96
+ return { content: `${exportLine}\n`, isNew: true };
97
+ }
98
+ /**
99
+ * Create a new generator with boilerplate code
100
+ */
101
+ export function createGenerator(input) {
102
+ const { name, directory, includeTemplates = true } = input;
103
+ // Parse the generator name
104
+ const parsed = parseGeneratorName(name);
105
+ // Resolve the absolute directory path
106
+ let absoluteDirectory;
107
+ if (path.isAbsolute(directory)) {
108
+ absoluteDirectory = directory;
109
+ }
110
+ else {
111
+ // For relative paths, resolve against monorepo root
112
+ const monorepoRoot = findMonorepoRoot();
113
+ if (!monorepoRoot) {
114
+ throw new Error('Could not find monorepo root. Please run from within a pnpm workspace or provide an absolute path.');
115
+ }
116
+ absoluteDirectory = path.resolve(monorepoRoot, directory);
117
+ }
118
+ // Validate the directory exists
119
+ if (!fs.existsSync(absoluteDirectory)) {
120
+ throw new Error(`Directory does not exist: ${absoluteDirectory}`);
121
+ }
122
+ // Create the generator directory structure
123
+ const categoryDir = path.join(absoluteDirectory, parsed.category);
124
+ const generatorDir = path.join(categoryDir, parsed.kebabName);
125
+ if (fs.existsSync(generatorDir)) {
126
+ throw new Error(`Generator directory already exists: ${generatorDir}`);
127
+ }
128
+ const filesCreated = [];
129
+ // Create directories
130
+ fs.mkdirSync(generatorDir, { recursive: true });
131
+ // Create the main generator file
132
+ const generatorFilePath = path.join(generatorDir, `${parsed.kebabName}.generator.ts`);
133
+ fs.writeFileSync(generatorFilePath, generateGeneratorFileContent(name, parsed));
134
+ filesCreated.push(generatorFilePath);
135
+ // Create the index.ts barrel export
136
+ const indexFilePath = path.join(generatorDir, 'index.ts');
137
+ fs.writeFileSync(indexFilePath, generateIndexFileContent(parsed.kebabName));
138
+ filesCreated.push(indexFilePath);
139
+ if (includeTemplates) {
140
+ // Create the generated directory with placeholder
141
+ const generatedDir = path.join(generatorDir, 'generated');
142
+ fs.mkdirSync(generatedDir, { recursive: true });
143
+ const generatedIndexPath = path.join(generatedDir, 'index.ts');
144
+ fs.writeFileSync(generatedIndexPath, generatePlaceholderGeneratedContent(parsed));
145
+ filesCreated.push(generatedIndexPath);
146
+ // Create extractor.json
147
+ const extractorPath = path.join(generatorDir, 'extractor.json');
148
+ fs.writeFileSync(extractorPath, generateExtractorJsonContent(name));
149
+ filesCreated.push(extractorPath);
150
+ }
151
+ // Update or create the category index.ts
152
+ const { content: categoryIndexContent, isNew: isCategoryNew } = generateOrUpdateCategoryIndex(categoryDir, parsed.kebabName);
153
+ const categoryIndexPath = path.join(categoryDir, 'index.ts');
154
+ fs.writeFileSync(categoryIndexPath, categoryIndexContent);
155
+ if (isCategoryNew) {
156
+ filesCreated.push(categoryIndexPath);
157
+ }
158
+ // Format the generated files with Prettier
159
+ try {
160
+ execSync(`pnpm prettier --write "${generatorDir}/**/*"`, {
161
+ stdio: 'pipe',
162
+ cwd: process.cwd(),
163
+ });
164
+ }
165
+ catch {
166
+ // Prettier formatting is best-effort, don't fail if it doesn't work
167
+ }
168
+ return {
169
+ message: `Successfully created generator '${name}' at ${generatorDir}`,
170
+ generatorName: name,
171
+ generatorPath: generatorDir,
172
+ filesCreated,
173
+ };
174
+ }
175
+ //# sourceMappingURL=create-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-generator.js","sourceRoot":"","sources":["../../../src/templates/create/create-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './create-generator.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/create/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './create-generator.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/create/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list-templates.d.ts","sourceRoot":"","sources":["../../../src/templates/list/list-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,kBAAkB,GACnB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgCnD"}
1
+ {"version":3,"file":"list-templates.d.ts","sourceRoot":"","sources":["../../../src/templates/list/list-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,kBAAkB,GACnB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgCnD"}
@@ -1,3 +1,4 @@
1
+ import { compareStrings } from '@baseplate-dev/utils';
1
2
  import { readExtractorConfig } from '../utils/extractor-config.js';
2
3
  /**
3
4
  * List all templates in a generator's extractor.json
@@ -19,7 +20,7 @@ export async function listTemplates({ generatorDirectory, }) {
19
20
  });
20
21
  }
21
22
  // Sort templates by name for consistent output
22
- templates.sort((a, b) => a.name.localeCompare(b.name));
23
+ templates.sort((a, b) => compareStrings(a.name, b.name));
23
24
  return {
24
25
  generatorName: config.name,
25
26
  templates,
@@ -1 +1 @@
1
- {"version":3,"file":"list-templates.js","sourceRoot":"","sources":["../../../src/templates/list/list-templates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAqBnE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,kBAAkB,GACC;IACnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,kBAAkB,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,SAAS,CAAC,IAAI,CAAC;YACb,IAAI;YACJ,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,KAAK,EAAG,cAA0C,CAAC,KAEtC;YACb,IAAI,EAAG,cAA0C,CAAC,IAErC;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvD,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,IAAI;QAC1B,SAAS;QACT,aAAa,EAAE,SAAS,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"list-templates.js","sourceRoot":"","sources":["../../../src/templates/list/list-templates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAqBnE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,kBAAkB,GACC;IACnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,kBAAkB,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,SAAS,CAAC,IAAI,CAAC;YACb,IAAI;YACJ,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,KAAK,EAAG,cAA0C,CAAC,KAEtC;YACb,IAAI,EAAG,cAA0C,CAAC,IAErC;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,IAAI;QAC1B,SAAS;QACT,aAAa,EAAE,SAAS,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC"}
@@ -5,42 +5,10 @@ import { z } from 'zod';
5
5
  */
6
6
  export declare const userConfigSchema: z.ZodObject<{
7
7
  sync: z.ZodOptional<z.ZodObject<{
8
- /**
9
- * Whether to write the generator steps JSON file
10
- */
11
8
  writeGeneratorStepsJson: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
12
- /**
13
- * The merge driver to use following the custom merge driver command for custom Git merge drivers
14
- * instead of the default 3-way merge driver.
15
- *
16
- * See https://git-scm.com/docs/gitattributes#_defining_a_custom_merge_driver
17
- */
18
9
  customMergeDriver: z.ZodOptional<z.ZodString>;
19
- /**
20
- * Editor to open when the user clicks on a file with conflicts
21
- */
22
10
  editor: z.ZodOptional<z.ZodString>;
23
- }, "strict", z.ZodTypeAny, {
24
- writeGeneratorStepsJson: boolean;
25
- customMergeDriver?: string | undefined;
26
- editor?: string | undefined;
27
- }, {
28
- writeGeneratorStepsJson?: boolean | undefined;
29
- customMergeDriver?: string | undefined;
30
- editor?: string | undefined;
31
- }>>;
32
- }, "strict", z.ZodTypeAny, {
33
- sync?: {
34
- writeGeneratorStepsJson: boolean;
35
- customMergeDriver?: string | undefined;
36
- editor?: string | undefined;
37
- } | undefined;
38
- }, {
39
- sync?: {
40
- writeGeneratorStepsJson?: boolean | undefined;
41
- customMergeDriver?: string | undefined;
42
- editor?: string | undefined;
43
- } | undefined;
44
- }>;
11
+ }, z.core.$strict>>;
12
+ }, z.core.$strict>;
45
13
  export type BaseplateUserConfig = z.infer<typeof userConfigSchema>;
46
14
  //# sourceMappingURL=user-config-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-config-schema.d.ts","sourceRoot":"","sources":["../../src/user-config/user-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;QAIrB;;WAEG;;QAEH;;;;;WAKG;;QAEH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;EAMA,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"user-config-schema.d.ts","sourceRoot":"","sources":["../../src/user-config/user-config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;kBAuBlB,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Find the monorepo root by searching for pnpm-workspace.yaml in ancestor directories.
3
+ * Stops at filesystem root.
4
+ */
5
+ export declare function findMonorepoRoot(startDir?: string): string | undefined;
6
+ //# sourceMappingURL=find-monorepo-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-monorepo-root.d.ts","sourceRoot":"","sources":["../../src/utils/find-monorepo-root.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAsB,GAC/B,MAAM,GAAG,SAAS,CAapB"}
@@ -0,0 +1,19 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ /**
4
+ * Find the monorepo root by searching for pnpm-workspace.yaml in ancestor directories.
5
+ * Stops at filesystem root.
6
+ */
7
+ export function findMonorepoRoot(startDir = process.cwd()) {
8
+ let currentDir = path.resolve(startDir);
9
+ const { root } = path.parse(currentDir);
10
+ while (currentDir !== root) {
11
+ const workspacePath = path.join(currentDir, 'pnpm-workspace.yaml');
12
+ if (fs.existsSync(workspacePath)) {
13
+ return currentDir;
14
+ }
15
+ currentDir = path.dirname(currentDir);
16
+ }
17
+ return undefined;
18
+ }
19
+ //# sourceMappingURL=find-monorepo-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-monorepo-root.js","sourceRoot":"","sources":["../../src/utils/find-monorepo-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,OAAO,CAAC,GAAG,EAAE;IAEhC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baseplate-dev/project-builder-server",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Server for Project Builder using Baseplate generators",
5
5
  "keywords": [
6
6
  "backend",
@@ -36,24 +36,24 @@
36
36
  "LICENSE",
37
37
  "CHANGELOG",
38
38
  "dist/**/*",
39
- "!dist/**/*.d.ts.map",
39
+ "!dist/**/*.map",
40
40
  "!dist/**/*.tsbuildinfo"
41
41
  ],
42
42
  "dependencies": {
43
43
  "@fastify/helmet": "13.0.0",
44
44
  "@fastify/static": "8.0.3",
45
45
  "@fastify/websocket": "11.0.1",
46
- "@modelcontextprotocol/sdk": "^1.17.3",
47
- "@trpc/server": "^11.1.2",
46
+ "@modelcontextprotocol/sdk": "^1.25.1",
47
+ "@trpc/server": "^11.8.0",
48
48
  "chalk": "5.3.0",
49
49
  "change-case": "5.4.4",
50
50
  "chokidar": "4.0.3",
51
51
  "diff": "^8.0.2",
52
52
  "es-toolkit": "1.31.0",
53
53
  "execa": "9.3.0",
54
- "fastify": "5.3.2",
55
- "fastify-plugin": "5.0.1",
56
- "fastify-type-provider-zod": "4.0.1",
54
+ "fastify": "5.6.2",
55
+ "fastify-plugin": "5.1.0",
56
+ "fastify-type-provider-zod": "^6.0.0",
57
57
  "globby": "^14.0.2",
58
58
  "ignore": "^7.0.5",
59
59
  "immer": "10.1.1",
@@ -64,13 +64,13 @@
64
64
  "open": "10.1.0",
65
65
  "pino": "9.5.0",
66
66
  "ts-morph": "26.0.0",
67
- "zod": "3.25.76",
68
- "@baseplate-dev/core-generators": "0.4.1",
69
- "@baseplate-dev/fastify-generators": "0.4.1",
70
- "@baseplate-dev/project-builder-lib": "0.4.1",
71
- "@baseplate-dev/react-generators": "0.4.1",
72
- "@baseplate-dev/sync": "0.4.1",
73
- "@baseplate-dev/utils": "0.4.1"
67
+ "zod": "^4.1.13",
68
+ "@baseplate-dev/core-generators": "0.4.3",
69
+ "@baseplate-dev/fastify-generators": "0.4.3",
70
+ "@baseplate-dev/project-builder-lib": "0.4.3",
71
+ "@baseplate-dev/react-generators": "0.4.3",
72
+ "@baseplate-dev/sync": "0.4.3",
73
+ "@baseplate-dev/utils": "0.4.3"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/micromatch": "^4.0.9",
@@ -78,9 +78,10 @@
78
78
  "eslint": "9.32.0",
79
79
  "memfs": "4.15.1",
80
80
  "prettier": "3.6.2",
81
+ "tsx": "4.20.6",
81
82
  "typescript": "5.8.3",
82
83
  "vitest": "3.2.4",
83
- "@baseplate-dev/tools": "0.4.1"
84
+ "@baseplate-dev/tools": "0.4.3"
84
85
  },
85
86
  "engines": {
86
87
  "node": "^22.0.0"
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}