@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.8aea589

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 (111) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
  4. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +36 -183
  5. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +34 -0
  6. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
  7. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
  8. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
  9. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  10. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  11. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  12. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  13. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  14. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  15. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +6 -2
  16. package/analyzer-template/project/writeUniversalMocks.ts +6 -2
  17. package/background/src/lib/virtualized/project/writeUniversalMocks.js +3 -2
  18. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  19. package/codeyam-cli/scripts/apply-setup.js +288 -0
  20. package/codeyam-cli/scripts/apply-setup.js.map +1 -0
  21. package/codeyam-cli/scripts/extract-setup.js +130 -0
  22. package/codeyam-cli/scripts/extract-setup.js.map +1 -0
  23. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
  24. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
  25. package/codeyam-cli/src/utils/analysisRunner.js +4 -3
  26. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  27. package/codeyam-cli/src/utils/backgroundServer.js +25 -5
  28. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  29. package/codeyam-cli/src/utils/fileWatcher.js +75 -5
  30. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  31. package/codeyam-cli/src/utils/queue/job.js +3 -2
  32. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  33. package/codeyam-cli/src/webserver/app/lib/database.js +13 -0
  34. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  35. package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
  36. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  37. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +1 -0
  38. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-B0oiPem-.js} +1 -1
  39. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +3 -0
  40. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-BKKG1s2B.js} +1 -1
  41. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-xwuhwsZH.js → SafeScreenshot-DU_jxCPD.js} +1 -1
  42. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +6 -0
  43. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-M2QuSHKC.js → ScenarioViewer-DmjXUj6m.js} +2 -2
  44. package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +1 -0
  45. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +10 -0
  46. package/codeyam-cli/src/webserver/build/client/assets/chart-column-VXBS6qOn.js +1 -0
  47. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-n5GUC2AS.js +1 -0
  48. package/codeyam-cli/src/webserver/build/client/assets/clock-DKqtX8js.js +1 -0
  49. package/codeyam-cli/src/webserver/build/client/assets/{components-CAx5ONX_.js → components-Dj-Ggnl2.js} +1 -1
  50. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DGy3zrli.js → dev.empty-BbR3FwNc.js} +1 -1
  51. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BHiWkb_W.js} +7 -7
  52. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-ChAdTrrU.js → entity._sha_.create-scenario-L7M9Vr5z.js} +1 -1
  53. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-D9L7267w.js → entity._sha_.edit._scenarioId-C9w-q7P3.js} +1 -1
  54. package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
  55. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-C6FRgjPr.js → entry.client-CdGoUs8A.js} +1 -1
  56. package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +1 -0
  57. package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +1 -0
  58. package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +12 -0
  59. package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +1 -0
  60. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-v3c6DFp4.js +1 -0
  61. package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +1 -0
  62. package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +16 -0
  63. package/codeyam-cli/src/webserver/build/client/assets/search-DA14wXpu.js +1 -0
  64. package/codeyam-cli/src/webserver/build/client/assets/settings-COJUrwGu.js +1 -0
  65. package/codeyam-cli/src/webserver/build/client/assets/{settings-Hbf8b7J_.js → settings-NU_ZquhK.js} +1 -1
  66. package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +1 -0
  67. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-Lumm1t01.js} +1 -1
  68. package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +1 -0
  69. package/codeyam-cli/src/webserver/build/client/assets/zap-BvukH0eN.js +1 -0
  70. package/codeyam-cli/src/webserver/build/client/favicon.svg +13 -0
  71. package/codeyam-cli/src/webserver/build/server/assets/{index-eAULANMV.js → index-DHr4rT4u.js} +1 -1
  72. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +166 -0
  73. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  74. package/codeyam-cli/src/webserver/build-info.json +5 -5
  75. package/codeyam-cli/src/webserver/public/favicon.svg +13 -0
  76. package/codeyam-cli/templates/codeyam-setup-skill.md +24 -18
  77. package/package.json +1 -1
  78. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
  79. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  80. package/packages/ai/src/lib/generateEntityKeyAttributes.js +36 -183
  81. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  82. package/packages/analyze/src/lib/FileAnalyzer.js +28 -0
  83. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  84. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
  85. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
  86. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
  87. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
  88. package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
  89. package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
  90. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  91. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  92. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
  93. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
  94. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
  95. package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
  96. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
  97. package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
  99. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
  100. package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
  101. package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
  102. package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
  103. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
  104. package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
  105. package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
  106. package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
  107. package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
  108. package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
  109. package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
  110. package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
  111. package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
@@ -0,0 +1,288 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Apply project setup configuration from fixtures to a target project.
4
+ *
5
+ * Usage:
6
+ * npx tsx codeyam-cli/scripts/apply-setup.ts --project cal.com --target /path/to/target-project
7
+ *
8
+ * This script:
9
+ * 1. Reads setup.json from codeyam-cli/scripts/fixtures/{project}/
10
+ * 2. Creates/updates .codeyam/ directory structure in target
11
+ * 3. Writes .codeyam/config.json
12
+ * 4. Copies universal mock files to .codeyam/universal-mocks/
13
+ * 5. Creates/updates SQLite database with project metadata
14
+ */
15
+ import * as fs from 'fs';
16
+ import * as path from 'path';
17
+ import { fileURLToPath } from 'url';
18
+ import { parseArgs } from 'util';
19
+ import { randomUUID } from 'crypto';
20
+ import { getSqliteDatabase, createSqliteSchema, upsertProjects, upsertBranches, loadBranches, } from "../../packages/supabase/index.js";
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = path.dirname(__filename);
23
+ async function main() {
24
+ const { values } = parseArgs({
25
+ options: {
26
+ project: { type: 'string', short: 'p' },
27
+ target: { type: 'string', short: 't' },
28
+ },
29
+ });
30
+ const projectName = values.project;
31
+ const targetPath = values.target;
32
+ if (!projectName || !targetPath) {
33
+ console.error('Usage: npx tsx apply-setup.ts --project <name> --target <path>');
34
+ console.error(' --project, -p Name of the fixture to apply (e.g., "cal.com")');
35
+ console.error(' --target, -t Path to the target project');
36
+ process.exit(1);
37
+ }
38
+ const fixturesDir = path.join(__dirname, 'fixtures', projectName);
39
+ const setupJsonPath = path.join(fixturesDir, 'setup.json');
40
+ const fixtureMocksDir = path.join(fixturesDir, 'universal-mocks');
41
+ const codeyamDir = path.join(targetPath, '.codeyam');
42
+ const configJsonPath = path.join(codeyamDir, 'config.json');
43
+ const targetMocksDir = path.join(codeyamDir, 'universal-mocks');
44
+ const dbPath = path.join(codeyamDir, 'db.sqlite3');
45
+ // Validate fixture exists
46
+ if (!fs.existsSync(setupJsonPath)) {
47
+ console.error(`Error: Fixture not found at ${setupJsonPath}`);
48
+ console.error(`Available fixtures:`);
49
+ const fixtures = fs.readdirSync(path.join(__dirname, 'fixtures'));
50
+ for (const f of fixtures) {
51
+ console.error(` - ${f}`);
52
+ }
53
+ process.exit(1);
54
+ }
55
+ // Validate target exists
56
+ if (!fs.existsSync(targetPath)) {
57
+ console.error(`Error: Target path does not exist: ${targetPath}`);
58
+ process.exit(1);
59
+ }
60
+ console.log(`Applying fixture: ${projectName}`);
61
+ console.log(`Target project: ${targetPath}`);
62
+ // Read fixture
63
+ const fixture = JSON.parse(await fs.promises.readFile(setupJsonPath, 'utf-8'));
64
+ // Create .codeyam directory structure
65
+ console.log('\n1. Creating .codeyam directory structure...');
66
+ await fs.promises.mkdir(codeyamDir, { recursive: true });
67
+ await fs.promises.mkdir(path.join(codeyamDir, 'results'), {
68
+ recursive: true,
69
+ });
70
+ await fs.promises.mkdir(path.join(codeyamDir, 'captures'), {
71
+ recursive: true,
72
+ });
73
+ console.log(` Created: ${codeyamDir}`);
74
+ // Write config.json
75
+ console.log('\n2. Writing config.json...');
76
+ const configJson = {
77
+ projectSlug: fixture.projectSlug,
78
+ packageManager: fixture.packageManager,
79
+ webapps: fixture.webapps,
80
+ environmentVariables: [],
81
+ createdAt: new Date().toISOString(),
82
+ branchId: null, // Will be set when branch is created
83
+ };
84
+ await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
85
+ console.log(` Wrote: ${configJsonPath}`);
86
+ // Copy universal mocks
87
+ console.log('\n3. Copying universal mocks...');
88
+ if (fs.existsSync(fixtureMocksDir)) {
89
+ // Remove existing mocks dir if it exists
90
+ if (fs.existsSync(targetMocksDir)) {
91
+ await fs.promises.rm(targetMocksDir, { recursive: true });
92
+ }
93
+ // Copy fixture mocks to target
94
+ await fs.promises.cp(fixtureMocksDir, targetMocksDir, { recursive: true });
95
+ // Count files copied
96
+ const countFiles = (dir) => {
97
+ let count = 0;
98
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
99
+ for (const entry of entries) {
100
+ if (entry.isDirectory()) {
101
+ count += countFiles(path.join(dir, entry.name));
102
+ }
103
+ else {
104
+ count++;
105
+ }
106
+ }
107
+ return count;
108
+ };
109
+ const fileCount = countFiles(targetMocksDir);
110
+ console.log(` Copied: ${fileCount} mock file(s)`);
111
+ }
112
+ else {
113
+ console.log(' No universal mocks in fixture');
114
+ }
115
+ // Read mock file contents to build full universalMocks array
116
+ const universalMocksWithContent = await readMocksWithContent(targetMocksDir, fixture.universalMocks);
117
+ // Setup SQLite database
118
+ console.log('\n4. Setting up SQLite database...');
119
+ // Set the SQLITE_PATH so getSqliteDatabase knows where to look
120
+ process.env.SQLITE_PATH = dbPath;
121
+ const db = getSqliteDatabase(dbPath);
122
+ try {
123
+ // Check if tables exist, create if not
124
+ const tableCheck = await db
125
+ .selectFrom('projects')
126
+ .select(db.fn.count('id').as('count'))
127
+ .executeTakeFirst()
128
+ .catch(() => { });
129
+ if (!tableCheck) {
130
+ console.log(' Creating database schema...');
131
+ await createSqliteSchema(db);
132
+ }
133
+ // Create/update project
134
+ const projectId = randomUUID();
135
+ const project = {
136
+ id: projectId,
137
+ name: fixture.projectSlug,
138
+ slug: fixture.projectSlug,
139
+ path: `local:${targetPath}`,
140
+ metadata: {
141
+ packageManager: fixture.packageManager,
142
+ webapps: fixture.webapps,
143
+ universalMocks: universalMocksWithContent,
144
+ unapprovedPaths: fixture.unapprovedPaths,
145
+ },
146
+ };
147
+ // Check if project already exists
148
+ const existingProject = await db
149
+ .selectFrom('projects')
150
+ .selectAll()
151
+ .where('slug', '=', fixture.projectSlug)
152
+ .executeTakeFirst();
153
+ let finalProjectId;
154
+ if (existingProject) {
155
+ // Update existing project's metadata
156
+ console.log(` Updating existing project: ${fixture.projectSlug}`);
157
+ await db
158
+ .updateTable('projects')
159
+ .set({
160
+ metadata: JSON.stringify(project.metadata),
161
+ updated_at: new Date().toISOString(),
162
+ })
163
+ .where('slug', '=', fixture.projectSlug)
164
+ .execute();
165
+ finalProjectId = existingProject.id;
166
+ }
167
+ else {
168
+ // Insert new project
169
+ console.log(` Creating new project: ${fixture.projectSlug}`);
170
+ await upsertProjects([project]);
171
+ finalProjectId = projectId;
172
+ }
173
+ // Create/update _local branch
174
+ console.log('\n5. Creating _local branch...');
175
+ const existingBranches = await loadBranches({
176
+ projectId: finalProjectId,
177
+ names: ['_local'],
178
+ });
179
+ let branchId;
180
+ if (existingBranches && existingBranches.length > 0) {
181
+ console.log(' Using existing _local branch');
182
+ branchId = existingBranches[0].id;
183
+ }
184
+ else {
185
+ console.log(' Creating new _local branch');
186
+ const localBranch = {
187
+ projectId: finalProjectId,
188
+ name: '_local',
189
+ ref: '_local',
190
+ primary: true,
191
+ activeAt: new Date().toISOString(),
192
+ contentChangedAt: new Date().toISOString(),
193
+ metadata: {
194
+ contributors: [
195
+ {
196
+ username: 'local-dev',
197
+ avatarUrl: 'https://github.com/identicons/local-dev.png',
198
+ },
199
+ ],
200
+ commits: { total: 0, last7Days: [] },
201
+ timeline: [
202
+ {
203
+ title: 'Local branch created',
204
+ date: new Date().toISOString(),
205
+ authors: [
206
+ {
207
+ username: 'local-dev',
208
+ avatarUrl: 'https://github.com/identicons/local-dev.png',
209
+ },
210
+ ],
211
+ sha: 'local-init',
212
+ },
213
+ ],
214
+ },
215
+ };
216
+ const createdBranches = await upsertBranches([localBranch]);
217
+ if (!createdBranches || createdBranches.length === 0) {
218
+ throw new Error('Failed to create _local branch');
219
+ }
220
+ branchId = createdBranches[0].id;
221
+ }
222
+ // Update config.json with the branch ID
223
+ configJson.branchId = branchId;
224
+ await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
225
+ console.log(` Updated config.json with branchId: ${branchId}`);
226
+ console.log(' Database updated successfully');
227
+ }
228
+ finally {
229
+ await db.destroy();
230
+ }
231
+ console.log('\nSetup complete!');
232
+ console.log(`\nNext steps:`);
233
+ console.log(` cd ${targetPath}`);
234
+ console.log(` codeyam start`);
235
+ }
236
+ /**
237
+ * Read mock files and merge content with fixture metadata
238
+ */
239
+ async function readMocksWithContent(mocksDir, mockMetadata) {
240
+ if (!fs.existsSync(mocksDir)) {
241
+ return mockMetadata;
242
+ }
243
+ // Build a map of file contents by path
244
+ const fileContents = new Map();
245
+ const readAllFiles = async (dir, basePath = '') => {
246
+ const entries = await fs.promises.readdir(dir, { withFileTypes: true });
247
+ for (const entry of entries) {
248
+ const fullPath = path.join(dir, entry.name);
249
+ const relativePath = path.join(basePath, entry.name);
250
+ if (entry.isDirectory()) {
251
+ await readAllFiles(fullPath, relativePath);
252
+ }
253
+ else if (/\.(ts|tsx|js|jsx)$/.test(entry.name)) {
254
+ const content = await fs.promises.readFile(fullPath, 'utf-8');
255
+ // Normalize path separators
256
+ const normalizedPath = relativePath.replace(/\\/g, '/');
257
+ fileContents.set(normalizedPath, content);
258
+ }
259
+ }
260
+ };
261
+ await readAllFiles(mocksDir);
262
+ // Merge content into metadata
263
+ // For each mock, find its content by matching filePath
264
+ return mockMetadata.map((mock) => {
265
+ // The filePath in metadata might not have the full path structure
266
+ // Try to find matching file content
267
+ let content = '';
268
+ for (const [filePath, fileContent] of fileContents) {
269
+ if (filePath.endsWith(mock.filePath) ||
270
+ mock.filePath.endsWith(filePath)) {
271
+ // Extract just this entity's code from the file
272
+ // For now, use the full file content - the sync logic will handle extraction
273
+ content = fileContent;
274
+ break;
275
+ }
276
+ }
277
+ return {
278
+ ...mock,
279
+ content,
280
+ projectId: '', // Will be set by database
281
+ };
282
+ });
283
+ }
284
+ main().catch((error) => {
285
+ console.error('Error:', error);
286
+ process.exit(1);
287
+ });
288
+ //# sourceMappingURL=apply-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-setup.js","sourceRoot":"","sources":["../../../scripts/apply-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Extract project setup configuration from a .codeyam database and save as fixtures.
4
+ *
5
+ * Usage:
6
+ * npx tsx codeyam-cli/scripts/extract-setup.ts --project cal.com --source /path/to/cal.com
7
+ *
8
+ * This script:
9
+ * 1. Connects to the SQLite database at {source}/.codeyam/db.sqlite3
10
+ * 2. Extracts project metadata (webapps, universalMocks, etc.)
11
+ * 3. Writes setup.json to codeyam-cli/scripts/fixtures/{project}/
12
+ * 4. Copies universal mock files to fixtures/{project}/universal-mocks/
13
+ */
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ import { parseArgs } from 'util';
18
+ import { getSqliteDatabase } from "../../packages/supabase/index.js";
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const __dirname = path.dirname(__filename);
21
+ async function main() {
22
+ const { values } = parseArgs({
23
+ options: {
24
+ project: { type: 'string', short: 'p' },
25
+ source: { type: 'string', short: 's' },
26
+ },
27
+ });
28
+ const projectName = values.project;
29
+ const sourcePath = values.source;
30
+ if (!projectName || !sourcePath) {
31
+ console.error('Usage: npx tsx extract-setup.ts --project <name> --source <path>');
32
+ console.error(' --project, -p Name for the fixture (e.g., "cal.com")');
33
+ console.error(' --source, -s Path to the project with .codeyam folder');
34
+ process.exit(1);
35
+ }
36
+ const dbPath = path.join(sourcePath, '.codeyam', 'db.sqlite3');
37
+ const sourceMocksDir = path.join(sourcePath, '.codeyam', 'universal-mocks');
38
+ const fixturesDir = path.join(__dirname, 'fixtures', projectName);
39
+ const targetMocksDir = path.join(fixturesDir, 'universal-mocks');
40
+ // Validate source exists
41
+ if (!fs.existsSync(dbPath)) {
42
+ console.error(`Error: Database not found at ${dbPath}`);
43
+ process.exit(1);
44
+ }
45
+ console.log(`Extracting setup from: ${sourcePath}`);
46
+ console.log(`Writing fixtures to: ${fixturesDir}`);
47
+ // Connect to SQLite
48
+ const db = getSqliteDatabase(dbPath);
49
+ try {
50
+ // Query project metadata
51
+ const project = await db
52
+ .selectFrom('projects')
53
+ .selectAll()
54
+ .executeTakeFirst();
55
+ if (!project) {
56
+ console.error('Error: No project found in database');
57
+ process.exit(1);
58
+ }
59
+ // Parse metadata (it's stored as JSON string in SQLite)
60
+ const metadata = typeof project.metadata === 'string'
61
+ ? JSON.parse(project.metadata)
62
+ : (project.metadata ?? {});
63
+ // Also check configuration column (some projects use this)
64
+ const configuration = typeof project.configuration === 'string'
65
+ ? JSON.parse(project.configuration)
66
+ : (project.configuration ?? {});
67
+ // Merge metadata and configuration (configuration takes precedence)
68
+ const mergedConfig = { ...metadata, ...configuration };
69
+ // Build fixture data
70
+ const fixture = {
71
+ projectSlug: project.slug,
72
+ packageManager: mergedConfig.packageManager ?? 'npm',
73
+ webapps: mergedConfig.webapps ?? [],
74
+ universalMocks: (mergedConfig.universalMocks ?? []).map((mock) => ({
75
+ // Strip content from mocks - we'll store files separately
76
+ filePath: mock.filePath,
77
+ entityName: mock.entityName,
78
+ nodeModule: mock.nodeModule,
79
+ metadata: mock.metadata,
80
+ })),
81
+ unapprovedPaths: mergedConfig.unapprovedPaths,
82
+ pathsToIgnore: mergedConfig.pathsToIgnore,
83
+ };
84
+ // Create fixtures directory
85
+ await fs.promises.mkdir(fixturesDir, { recursive: true });
86
+ // Write setup.json
87
+ const setupJsonPath = path.join(fixturesDir, 'setup.json');
88
+ await fs.promises.writeFile(setupJsonPath, JSON.stringify(fixture, null, 2), 'utf-8');
89
+ console.log(` Wrote: ${setupJsonPath}`);
90
+ // Copy universal mocks directory if it exists
91
+ if (fs.existsSync(sourceMocksDir)) {
92
+ // Remove existing target mocks dir if it exists
93
+ if (fs.existsSync(targetMocksDir)) {
94
+ await fs.promises.rm(targetMocksDir, { recursive: true });
95
+ }
96
+ // Copy the directory
97
+ await fs.promises.cp(sourceMocksDir, targetMocksDir, { recursive: true });
98
+ // Count files copied
99
+ const countFiles = (dir) => {
100
+ let count = 0;
101
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
102
+ for (const entry of entries) {
103
+ if (entry.isDirectory()) {
104
+ count += countFiles(path.join(dir, entry.name));
105
+ }
106
+ else {
107
+ count++;
108
+ }
109
+ }
110
+ return count;
111
+ };
112
+ const fileCount = countFiles(targetMocksDir);
113
+ console.log(` Copied: ${fileCount} mock file(s) to ${targetMocksDir}`);
114
+ }
115
+ else {
116
+ console.log(' No universal-mocks directory found to copy');
117
+ }
118
+ console.log('\nExtraction complete!');
119
+ console.log(`\nTo commit fixtures to git:`);
120
+ console.log(` git add codeyam-cli/scripts/fixtures/${projectName}/`);
121
+ }
122
+ finally {
123
+ await db.destroy();
124
+ }
125
+ }
126
+ main().catch((error) => {
127
+ console.error('Error:', error);
128
+ process.exit(1);
129
+ });
130
+ //# sourceMappingURL=extract-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-setup.js","sourceRoot":"","sources":["../../../scripts/extract-setup.ts"],"names":[],"mappings":"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"}