@baseplate-dev/project-builder-server 0.5.2 → 0.6.0

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 (237) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/actions/__tests__/action-test-utils.d.ts +24 -0
  3. package/dist/actions/__tests__/action-test-utils.d.ts.map +1 -0
  4. package/dist/actions/__tests__/action-test-utils.js +33 -0
  5. package/dist/actions/__tests__/action-test-utils.js.map +1 -0
  6. package/dist/actions/definition/commit-draft.action.d.ts +16 -0
  7. package/dist/actions/definition/commit-draft.action.d.ts.map +1 -0
  8. package/dist/actions/definition/commit-draft.action.js +65 -0
  9. package/dist/actions/definition/commit-draft.action.js.map +1 -0
  10. package/dist/actions/definition/discard-draft.action.d.ts +7 -0
  11. package/dist/actions/definition/discard-draft.action.d.ts.map +1 -0
  12. package/dist/actions/definition/discard-draft.action.js +30 -0
  13. package/dist/actions/definition/discard-draft.action.js.map +1 -0
  14. package/dist/actions/definition/draft-session.d.ts +41 -0
  15. package/dist/actions/definition/draft-session.d.ts.map +1 -0
  16. package/dist/actions/definition/draft-session.js +117 -0
  17. package/dist/actions/definition/draft-session.js.map +1 -0
  18. package/dist/actions/definition/get-entity-schema.action.d.ts +10 -0
  19. package/dist/actions/definition/get-entity-schema.action.d.ts.map +1 -0
  20. package/dist/actions/definition/get-entity-schema.action.js +48 -0
  21. package/dist/actions/definition/get-entity-schema.action.js.map +1 -0
  22. package/dist/actions/definition/get-entity.action.d.ts +8 -0
  23. package/dist/actions/definition/get-entity.action.d.ts.map +1 -0
  24. package/dist/actions/definition/get-entity.action.js +37 -0
  25. package/dist/actions/definition/get-entity.action.js.map +1 -0
  26. package/dist/actions/definition/index.d.ts +11 -0
  27. package/dist/actions/definition/index.d.ts.map +1 -0
  28. package/dist/actions/definition/index.js +11 -0
  29. package/dist/actions/definition/index.js.map +1 -0
  30. package/dist/actions/definition/list-entities.action.d.ts +13 -0
  31. package/dist/actions/definition/list-entities.action.d.ts.map +1 -0
  32. package/dist/actions/definition/list-entities.action.js +43 -0
  33. package/dist/actions/definition/list-entities.action.js.map +1 -0
  34. package/dist/actions/definition/list-entity-types.action.d.ts +10 -0
  35. package/dist/actions/definition/list-entity-types.action.d.ts.map +1 -0
  36. package/dist/actions/definition/list-entity-types.action.js +42 -0
  37. package/dist/actions/definition/list-entity-types.action.js.map +1 -0
  38. package/dist/actions/definition/load-entity-service-context.d.ts +14 -0
  39. package/dist/actions/definition/load-entity-service-context.d.ts.map +1 -0
  40. package/dist/actions/definition/load-entity-service-context.js +18 -0
  41. package/dist/actions/definition/load-entity-service-context.js.map +1 -0
  42. package/dist/actions/definition/show-draft.action.d.ts +18 -0
  43. package/dist/actions/definition/show-draft.action.d.ts.map +1 -0
  44. package/dist/actions/definition/show-draft.action.js +117 -0
  45. package/dist/actions/definition/show-draft.action.js.map +1 -0
  46. package/dist/actions/definition/stage-create-entity.action.d.ts +19 -0
  47. package/dist/actions/definition/stage-create-entity.action.d.ts.map +1 -0
  48. package/dist/actions/definition/stage-create-entity.action.js +60 -0
  49. package/dist/actions/definition/stage-create-entity.action.js.map +1 -0
  50. package/dist/actions/definition/stage-delete-entity.action.d.ts +18 -0
  51. package/dist/actions/definition/stage-delete-entity.action.d.ts.map +1 -0
  52. package/dist/actions/definition/stage-delete-entity.action.js +55 -0
  53. package/dist/actions/definition/stage-delete-entity.action.js.map +1 -0
  54. package/dist/actions/definition/stage-update-entity.action.d.ts +19 -0
  55. package/dist/actions/definition/stage-update-entity.action.d.ts.map +1 -0
  56. package/dist/actions/definition/stage-update-entity.action.js +59 -0
  57. package/dist/actions/definition/stage-update-entity.action.js.map +1 -0
  58. package/dist/actions/definition/validate-draft.d.ts +17 -0
  59. package/dist/actions/definition/validate-draft.d.ts.map +1 -0
  60. package/dist/actions/definition/validate-draft.js +25 -0
  61. package/dist/actions/definition/validate-draft.js.map +1 -0
  62. package/dist/actions/index.d.ts +3 -0
  63. package/dist/actions/index.d.ts.map +1 -1
  64. package/dist/actions/index.js +3 -0
  65. package/dist/actions/index.js.map +1 -1
  66. package/dist/actions/registry.d.ts +169 -92
  67. package/dist/actions/registry.d.ts.map +1 -1
  68. package/dist/actions/registry.js +17 -1
  69. package/dist/actions/registry.js.map +1 -1
  70. package/dist/actions/snapshot/snapshot-add.action.d.ts +0 -1
  71. package/dist/actions/snapshot/snapshot-add.action.d.ts.map +1 -1
  72. package/dist/actions/snapshot/snapshot-add.action.js +3 -7
  73. package/dist/actions/snapshot/snapshot-add.action.js.map +1 -1
  74. package/dist/actions/snapshot/snapshot-remove.action.d.ts +0 -1
  75. package/dist/actions/snapshot/snapshot-remove.action.d.ts.map +1 -1
  76. package/dist/actions/snapshot/snapshot-remove.action.js +3 -7
  77. package/dist/actions/snapshot/snapshot-remove.action.js.map +1 -1
  78. package/dist/actions/snapshot/snapshot-save.action.d.ts +2 -2
  79. package/dist/actions/snapshot/snapshot-save.action.d.ts.map +1 -1
  80. package/dist/actions/snapshot/snapshot-save.action.js +23 -11
  81. package/dist/actions/snapshot/snapshot-save.action.js.map +1 -1
  82. package/dist/actions/snapshot/snapshot-show.action.d.ts +5 -2
  83. package/dist/actions/snapshot/snapshot-show.action.d.ts.map +1 -1
  84. package/dist/actions/snapshot/snapshot-show.action.js +17 -19
  85. package/dist/actions/snapshot/snapshot-show.action.js.map +1 -1
  86. package/dist/actions/sync/sync-all-projects.action.d.ts.map +1 -1
  87. package/dist/actions/sync/sync-all-projects.action.js +3 -2
  88. package/dist/actions/sync/sync-all-projects.action.js.map +1 -1
  89. package/dist/actions/sync/sync-file.action.js +1 -1
  90. package/dist/actions/sync/sync-file.action.js.map +1 -1
  91. package/dist/actions/sync/sync-project.action.d.ts +1 -1
  92. package/dist/actions/sync/sync-project.action.d.ts.map +1 -1
  93. package/dist/actions/sync/sync-project.action.js +20 -6
  94. package/dist/actions/sync/sync-project.action.js.map +1 -1
  95. package/dist/actions/test-project/index.d.ts +2 -0
  96. package/dist/actions/test-project/index.d.ts.map +1 -0
  97. package/dist/actions/test-project/index.js +2 -0
  98. package/dist/actions/test-project/index.js.map +1 -0
  99. package/dist/actions/test-project/test-project-init.action.d.ts +17 -0
  100. package/dist/actions/test-project/test-project-init.action.d.ts.map +1 -0
  101. package/dist/actions/test-project/test-project-init.action.js +97 -0
  102. package/dist/actions/test-project/test-project-init.action.js.map +1 -0
  103. package/dist/actions/types.d.ts +2 -0
  104. package/dist/actions/types.d.ts.map +1 -1
  105. package/dist/actions/types.js.map +1 -1
  106. package/dist/actions/utils/generation-manifest.d.ts +12 -0
  107. package/dist/actions/utils/generation-manifest.d.ts.map +1 -0
  108. package/dist/actions/utils/generation-manifest.js +142 -0
  109. package/dist/actions/utils/generation-manifest.js.map +1 -0
  110. package/dist/actions/utils/index.d.ts +1 -1
  111. package/dist/actions/utils/index.d.ts.map +1 -1
  112. package/dist/actions/utils/index.js +1 -1
  113. package/dist/actions/utils/index.js.map +1 -1
  114. package/dist/actions/utils/project-discovery.d.ts +23 -9
  115. package/dist/actions/utils/project-discovery.d.ts.map +1 -1
  116. package/dist/actions/utils/project-discovery.js +57 -31
  117. package/dist/actions/utils/project-discovery.js.map +1 -1
  118. package/dist/actions/utils/projects.d.ts.map +1 -1
  119. package/dist/actions/utils/projects.js +2 -1
  120. package/dist/actions/utils/projects.js.map +1 -1
  121. package/dist/compiler/backend/{authorizers.d.ts → authorizer-compiler.d.ts} +22 -2
  122. package/dist/compiler/backend/authorizer-compiler.d.ts.map +1 -0
  123. package/dist/compiler/backend/authorizer-compiler.js +165 -0
  124. package/dist/compiler/backend/authorizer-compiler.js.map +1 -0
  125. package/dist/compiler/backend/feature.d.ts.map +1 -1
  126. package/dist/compiler/backend/feature.js +3 -1
  127. package/dist/compiler/backend/feature.js.map +1 -1
  128. package/dist/compiler/backend/graphql.d.ts.map +1 -1
  129. package/dist/compiler/backend/graphql.js +108 -49
  130. package/dist/compiler/backend/graphql.js.map +1 -1
  131. package/dist/compiler/backend/models.d.ts.map +1 -1
  132. package/dist/compiler/backend/models.js +13 -13
  133. package/dist/compiler/backend/models.js.map +1 -1
  134. package/dist/compiler/backend/query-filter-compiler.d.ts +40 -0
  135. package/dist/compiler/backend/query-filter-compiler.d.ts.map +1 -0
  136. package/dist/compiler/backend/query-filter-compiler.js +168 -0
  137. package/dist/compiler/backend/query-filter-compiler.js.map +1 -0
  138. package/dist/compiler/backend/services.d.ts.map +1 -1
  139. package/dist/compiler/backend/services.js +24 -1
  140. package/dist/compiler/backend/services.js.map +1 -1
  141. package/dist/compiler/index.d.ts +1 -0
  142. package/dist/compiler/index.d.ts.map +1 -1
  143. package/dist/compiler/index.js.map +1 -1
  144. package/dist/compiler/root/root-package-compiler.js +8 -9
  145. package/dist/compiler/root/root-package-compiler.js.map +1 -1
  146. package/dist/compiler/web/admin/crud/index.js +1 -1
  147. package/dist/compiler/web/admin/crud/index.js.map +1 -1
  148. package/dist/compiler/web/admin/index.js +1 -1
  149. package/dist/compiler/web/admin/index.js.map +1 -1
  150. package/dist/compiler/web/admin/sections.d.ts.map +1 -1
  151. package/dist/compiler/web/admin/sections.js +2 -2
  152. package/dist/compiler/web/admin/sections.js.map +1 -1
  153. package/dist/compiler/web/web-compiler.d.ts.map +1 -1
  154. package/dist/compiler/web/web-compiler.js +4 -4
  155. package/dist/compiler/web/web-compiler.js.map +1 -1
  156. package/dist/core-modules/admin-crud-column-compiler.js +1 -1
  157. package/dist/core-modules/admin-crud-column-compiler.js.map +1 -1
  158. package/dist/core-modules/admin-crud-input-compiler.d.ts.map +1 -1
  159. package/dist/core-modules/admin-crud-input-compiler.js +13 -3
  160. package/dist/core-modules/admin-crud-input-compiler.js.map +1 -1
  161. package/dist/dev-server/api/router.d.ts +8 -7
  162. package/dist/dev-server/api/router.d.ts.map +1 -1
  163. package/dist/dev-server/mcp/stdio.d.ts +2 -2
  164. package/dist/dev-server/mcp/stdio.d.ts.map +1 -1
  165. package/dist/dev-server/mcp/stdio.js +2 -2
  166. package/dist/dev-server/mcp/stdio.js.map +1 -1
  167. package/dist/diff/diff-project.d.ts.map +1 -1
  168. package/dist/diff/diff-project.js +4 -4
  169. package/dist/diff/diff-project.js.map +1 -1
  170. package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts.map +1 -1
  171. package/dist/diff/snapshot/apply-diff-to-generator-output.js +17 -2
  172. package/dist/diff/snapshot/apply-diff-to-generator-output.js.map +1 -1
  173. package/dist/diff/snapshot/create-snapshot-for-project.d.ts +12 -6
  174. package/dist/diff/snapshot/create-snapshot-for-project.d.ts.map +1 -1
  175. package/dist/diff/snapshot/create-snapshot-for-project.js +58 -26
  176. package/dist/diff/snapshot/create-snapshot-for-project.js.map +1 -1
  177. package/dist/diff/snapshot/index.d.ts +4 -1
  178. package/dist/diff/snapshot/index.d.ts.map +1 -1
  179. package/dist/diff/snapshot/index.js +4 -0
  180. package/dist/diff/snapshot/index.js.map +1 -1
  181. package/dist/diff/snapshot/save-snapshot.d.ts +11 -3
  182. package/dist/diff/snapshot/save-snapshot.d.ts.map +1 -1
  183. package/dist/diff/snapshot/save-snapshot.js +29 -10
  184. package/dist/diff/snapshot/save-snapshot.js.map +1 -1
  185. package/dist/diff/snapshot/snapshot-management.d.ts +7 -6
  186. package/dist/diff/snapshot/snapshot-management.d.ts.map +1 -1
  187. package/dist/diff/snapshot/snapshot-management.js +18 -22
  188. package/dist/diff/snapshot/snapshot-management.js.map +1 -1
  189. package/dist/diff/snapshot/snapshot-manifest.d.ts +1 -1
  190. package/dist/diff/snapshot/snapshot-manifest.d.ts.map +1 -1
  191. package/dist/diff/snapshot/snapshot-manifest.js +7 -7
  192. package/dist/diff/snapshot/snapshot-manifest.js.map +1 -1
  193. package/dist/diff/snapshot/snapshot-types.d.ts +22 -8
  194. package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -1
  195. package/dist/diff/snapshot/snapshot-types.js +6 -2
  196. package/dist/diff/snapshot/snapshot-types.js.map +1 -1
  197. package/dist/diff/snapshot/snapshot-utils.d.ts +14 -5
  198. package/dist/diff/snapshot/snapshot-utils.d.ts.map +1 -1
  199. package/dist/diff/snapshot/snapshot-utils.js +25 -8
  200. package/dist/diff/snapshot/snapshot-utils.js.map +1 -1
  201. package/dist/index.d.ts +1 -0
  202. package/dist/index.js +1 -0
  203. package/dist/plugins/node-plugin-store.d.ts +1 -1
  204. package/dist/plugins/node-plugin-store.d.ts.map +1 -1
  205. package/dist/plugins/node-plugin-store.js +2 -2
  206. package/dist/plugins/node-plugin-store.js.map +1 -1
  207. package/dist/project-definition/load-project-definition.d.ts +2 -2
  208. package/dist/project-definition/load-project-definition.d.ts.map +1 -1
  209. package/dist/project-definition/load-project-definition.js +3 -3
  210. package/dist/project-definition/load-project-definition.js.map +1 -1
  211. package/dist/sync/generate-for-directory.d.ts +3 -2
  212. package/dist/sync/generate-for-directory.d.ts.map +1 -1
  213. package/dist/sync/generate-for-directory.js +24 -11
  214. package/dist/sync/generate-for-directory.js.map +1 -1
  215. package/dist/sync/sync-project.d.ts +3 -3
  216. package/dist/sync/sync-project.d.ts.map +1 -1
  217. package/dist/sync/sync-project.js +9 -3
  218. package/dist/sync/sync-project.js.map +1 -1
  219. package/dist/templates/create/create-generator.d.ts.map +1 -1
  220. package/dist/templates/create/create-generator.js +3 -3
  221. package/dist/templates/create/create-generator.js.map +1 -1
  222. package/dist/user-config/user-config-schema.d.ts +12 -0
  223. package/dist/user-config/user-config-schema.d.ts.map +1 -1
  224. package/dist/user-config/user-config-schema.js +29 -0
  225. package/dist/user-config/user-config-schema.js.map +1 -1
  226. package/package.json +17 -14
  227. package/dist/actions/utils/is-example-project.d.ts +0 -7
  228. package/dist/actions/utils/is-example-project.d.ts.map +0 -1
  229. package/dist/actions/utils/is-example-project.js +0 -22
  230. package/dist/actions/utils/is-example-project.js.map +0 -1
  231. package/dist/compiler/backend/authorizers.d.ts.map +0 -1
  232. package/dist/compiler/backend/authorizers.js +0 -75
  233. package/dist/compiler/backend/authorizers.js.map +0 -1
  234. package/dist/project-definition/get-single-app-directory-for-project.d.ts +0 -11
  235. package/dist/project-definition/get-single-app-directory-for-project.d.ts.map +0 -1
  236. package/dist/project-definition/get-single-app-directory-for-project.js +0 -19
  237. package/dist/project-definition/get-single-app-directory-for-project.js.map +0 -1
@@ -7,7 +7,7 @@ export async function applySnapshotToGeneratorOutput(generatorOutput, snapshot,
7
7
  for (const fileEntry of snapshot.files.modified) {
8
8
  const fileData = generatorFiles.get(fileEntry.path);
9
9
  if (!fileData) {
10
- throw new Error(`File not found in generator output: ${fileEntry.path}. Please run snapshot fix-diff to fix the diffs.`);
10
+ throw new Error(`File not found in generator output: ${fileEntry.path}. Please fix the diffs and save the snapshot again to fix the diffs.`);
11
11
  }
12
12
  const diffFilePath = path.join(diffDirectory, fileEntry.diffFile);
13
13
  const diffFile = await readFile(diffFilePath, 'utf-8').catch(handleFileNotFoundError);
@@ -16,10 +16,25 @@ export async function applySnapshotToGeneratorOutput(generatorOutput, snapshot,
16
16
  }
17
17
  const newContents = applyPatch(fileData.contents.toString(), diffFile);
18
18
  if (!newContents) {
19
- throw new Error(`Failed to apply patch to file ${fileEntry.path}. The patch may be invalid. Please run snapshot fix-diff to fix the diffs.`);
19
+ throw new Error(`Failed to apply patch to file ${fileEntry.path}. The patch may be invalid. Please fix the diffs and save the snapshot again to fix the diffs.`);
20
20
  }
21
21
  fileData.contents = newContents;
22
22
  }
23
+ // Inject added files that have stored content (user-created files not produced by generator)
24
+ for (const addedEntry of snapshot.files.added) {
25
+ if (!addedEntry.contentFile) {
26
+ continue; // path-only entry, file exists on disk
27
+ }
28
+ const contentFilePath = path.join(diffDirectory, addedEntry.contentFile);
29
+ const contents = await readFile(contentFilePath, 'utf-8').catch(handleFileNotFoundError);
30
+ if (contents === undefined) {
31
+ throw new Error(`Content file not found: ${contentFilePath}`);
32
+ }
33
+ generatorFiles.set(addedEntry.path, {
34
+ id: addedEntry.path,
35
+ contents,
36
+ });
37
+ }
23
38
  return {
24
39
  ...generatorOutput,
25
40
  files: generatorFiles,
@@ -1 +1 @@
1
- {"version":3,"file":"apply-diff-to-generator-output.js","sourceRoot":"","sources":["../../../src/diff/snapshot/apply-diff-to-generator-output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,eAAgC,EAChC,QAA0B,EAC1B,aAAqB;IAErB,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/B,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC3D,CACF,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,CAAC,IAAI,kDAAkD,CACxG,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAC1D,uBAAuB,CACxB,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,CAAC,IAAI,4EAA4E,CAC5H,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;IAClC,CAAC;IACD,OAAO;QACL,GAAG,eAAe;QAClB,KAAK,EAAE,cAAc;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"apply-diff-to-generator-output.js","sourceRoot":"","sources":["../../../src/diff/snapshot/apply-diff-to-generator-output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,eAAgC,EAChC,QAA0B,EAC1B,aAAqB;IAErB,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/B,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC3D,CACF,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,CAAC,IAAI,sEAAsE,CAC5H,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAC1D,uBAAuB,CACxB,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,CAAC,IAAI,gGAAgG,CAChJ,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,6FAA6F;IAC7F,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,SAAS,CAAC,uCAAuC;QACnD,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,KAAK,CAC7D,uBAAuB,CACxB,CAAC;QACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,UAAU,CAAC,IAAI;YACnB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,eAAe;QAClB,KAAK,EAAE,cAAc;KACtB,CAAC;AACJ,CAAC"}
@@ -10,9 +10,9 @@ export interface CreateSnapshotForProjectOptions {
10
10
  */
11
11
  projectDirectory: string;
12
12
  /**
13
- * The app to create a snapshot for.
13
+ * The app to create a snapshot for. If omitted, saves snapshots for all apps.
14
14
  */
15
- app: string;
15
+ app?: string;
16
16
  /**
17
17
  * The logger to use for logging.
18
18
  */
@@ -30,12 +30,18 @@ export interface CreateSnapshotForProjectOptions {
30
30
  */
31
31
  useIgnoreFile?: boolean;
32
32
  /**
33
- * Custom snapshot directory name.
33
+ * Custom baseplate directory. Defaults to `path.join(projectDirectory, 'baseplate')`.
34
34
  */
35
- snapshotDir?: string;
35
+ baseplateDirectory?: string;
36
+ /**
37
+ * When true, store full content of added files in the snapshot.
38
+ * Use for test cases where files aren't committed. Default: false.
39
+ */
40
+ includeAddedFileContents?: boolean;
36
41
  }
37
42
  /**
38
- * Creates a snapshot of the current diff state for a particular app
43
+ * Creates snapshots for one or all apps in a project.
44
+ * Returns the list of app names that were processed.
39
45
  */
40
- export declare function createSnapshotForProject(options: CreateSnapshotForProjectOptions): Promise<void>;
46
+ export declare function createSnapshotForProject(options: CreateSnapshotForProjectOptions): Promise<string[]>;
41
47
  //# sourceMappingURL=create-snapshot-for-project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-snapshot-for-project.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/create-snapshot-for-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAQlF;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAC7B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CAmEf"}
1
+ {"version":3,"file":"create-snapshot-for-project.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/create-snapshot-for-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAWlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AASlF;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAC7B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAiED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC,CA6DnB"}
@@ -1,44 +1,76 @@
1
1
  import { buildGeneratorEntry, executeGeneratorEntry, formatGeneratorOutput, loadIgnorePatterns, } from '@baseplate-dev/sync';
2
2
  import path from 'node:path';
3
3
  import { compilePackages } from '#src/compiler/index.js';
4
+ import { writeGenerationManifest } from '#src/index.js';
4
5
  import { loadProjectDefinition } from '#src/project-definition/index.js';
5
6
  import { createTemplateMetadataOptions } from '#src/sync/template-metadata-utils.js';
6
7
  import { saveSnapshot } from './save-snapshot.js';
7
8
  /**
8
- * Creates a snapshot of the current diff state for a particular app
9
+ * Creates a snapshot for a single app entry.
10
+ */
11
+ async function createSnapshotForApp({ app, directory, projectJson, logger, useIgnoreFile, baseplateDirectory, includeAddedFileContents, }) {
12
+ const appDirectory = path.join(directory, app.packageDirectory);
13
+ logger.info(`Creating snapshot for app: ${app.name} (${app.packageDirectory})`);
14
+ // Load ignore patterns for this app directory
15
+ const ignoreInstance = useIgnoreFile
16
+ ? await loadIgnorePatterns(appDirectory)
17
+ : undefined;
18
+ // Generate the output without writing files
19
+ const generatorEntry = await buildGeneratorEntry(app.generatorBundle);
20
+ const generatorOutput = await executeGeneratorEntry(generatorEntry, {
21
+ templateMetadataOptions: createTemplateMetadataOptions(projectJson),
22
+ });
23
+ // Format the output
24
+ const formattedGeneratorOutput = await formatGeneratorOutput(generatorOutput, { outputDirectory: appDirectory });
25
+ // Create snapshot
26
+ const result = await saveSnapshot(appDirectory, directory, app.name, formattedGeneratorOutput, {
27
+ baseplateDirectory,
28
+ ignoreInstance,
29
+ includeAddedFileContents,
30
+ });
31
+ logger.info(`✓ Snapshot created at ${result.snapshotPath} (${result.fileCount.modified} modified, ${result.fileCount.added} added, ${result.fileCount.deleted} deleted)`);
32
+ }
33
+ /**
34
+ * Creates snapshots for one or all apps in a project.
35
+ * Returns the list of app names that were processed.
9
36
  */
10
37
  export async function createSnapshotForProject(options) {
11
- const { projectDirectory: directory, app: appName, logger, context, useIgnoreFile = true, snapshotDir, } = options;
38
+ const { projectDirectory: directory, app: appName, logger, context, useIgnoreFile = true, baseplateDirectory, includeAddedFileContents, } = options;
12
39
  try {
13
40
  logger.info('Loading project definition...');
14
- const { definition: projectJson } = await loadProjectDefinition(directory, context);
41
+ const { definition: projectJson } = await loadProjectDefinition(baseplateDirectory ?? path.join(directory, 'baseplate'), context);
15
42
  logger.info('Compiling applications...');
16
43
  const apps = compilePackages(projectJson, context);
17
- // Filter apps if specified
18
- const app = apps.find((app) => appName === app.name);
19
- if (!app) {
20
- throw new Error(`No applications found named ${appName}. Available apps: ${apps.map((a) => a.name).join(', ')}`);
44
+ let appsToProcess;
45
+ if (appName) {
46
+ const app = apps.find((a) => appName === a.name);
47
+ if (!app) {
48
+ throw new Error(`No applications found named ${appName}. Available apps: ${apps.map((a) => a.name).join(', ')}`);
49
+ }
50
+ appsToProcess = [app];
51
+ }
52
+ else {
53
+ appsToProcess = apps;
54
+ }
55
+ const savedApps = [];
56
+ for (const app of appsToProcess) {
57
+ await createSnapshotForApp({
58
+ app,
59
+ directory,
60
+ projectJson,
61
+ logger,
62
+ useIgnoreFile,
63
+ baseplateDirectory,
64
+ includeAddedFileContents,
65
+ });
66
+ savedApps.push(app.name);
67
+ }
68
+ // Write generation manifest for test projects so staleness can be detected
69
+ if (context.project.type === 'test') {
70
+ await writeGenerationManifest(directory);
21
71
  }
22
- const appDirectory = path.join(directory, app.packageDirectory);
23
- logger.info(`Creating snapshot for app: ${app.name} (${app.packageDirectory})`);
24
- // Load ignore patterns for this app directory
25
- const ignoreInstance = useIgnoreFile
26
- ? await loadIgnorePatterns(appDirectory)
27
- : undefined;
28
- // Generate the output without writing files
29
- const generatorEntry = await buildGeneratorEntry(app.generatorBundle);
30
- const generatorOutput = await executeGeneratorEntry(generatorEntry, {
31
- templateMetadataOptions: createTemplateMetadataOptions(projectJson),
32
- });
33
- // Format the output
34
- const formattedGeneratorOutput = await formatGeneratorOutput(generatorOutput, { outputDirectory: appDirectory });
35
- // Create snapshot
36
- const result = await saveSnapshot(appDirectory, formattedGeneratorOutput, {
37
- snapshotDir,
38
- ignoreInstance,
39
- });
40
- logger.info(`✓ Snapshot created at ${result.snapshotPath} (${result.fileCount.modified} modified, ${result.fileCount.added} added, ${result.fileCount.deleted} deleted)`);
41
72
  logger.info('✓ Snapshots created successfully');
73
+ return savedApps;
42
74
  }
43
75
  catch (error) {
44
76
  logger.error(`Error creating snapshot: ${String(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"create-snapshot-for-project.js","sourceRoot":"","sources":["../../../src/diff/snapshot/create-snapshot-for-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-snapshot-for-project.js","sourceRoot":"","sources":["../../../src/diff/snapshot/create-snapshot-for-project.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmDlD;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,EAClC,GAAG,EACH,SAAS,EACT,WAAW,EACX,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,wBAAwB,GACI;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEhE,MAAM,CAAC,IAAI,CACT,8BAA8B,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,gBAAgB,GAAG,CACnE,CAAC;IAEF,8CAA8C;IAC9C,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC,MAAM,kBAAkB,CAAC,YAAY,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC;IAEd,4CAA4C;IAC5C,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC,cAAc,EAAE;QAClE,uBAAuB,EAAE,6BAA6B,CAAC,WAAW,CAAC;KACpE,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,wBAAwB,GAAG,MAAM,qBAAqB,CAC1D,eAAe,EACf,EAAE,eAAe,EAAE,YAAY,EAAE,CAClC,CAAC;IAEF,kBAAkB;IAClB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,YAAY,EACZ,SAAS,EACT,GAAG,CAAC,IAAI,EACR,wBAAwB,EACxB;QACE,kBAAkB;QAClB,cAAc;QACd,wBAAwB;KACzB,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,cAAc,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW,MAAM,CAAC,SAAS,CAAC,OAAO,WAAW,CAC7J,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAwC;IAExC,MAAM,EACJ,gBAAgB,EAAE,SAAS,EAC3B,GAAG,EAAE,OAAO,EACZ,MAAM,EACN,OAAO,EACP,aAAa,GAAG,IAAI,EACpB,kBAAkB,EAClB,wBAAwB,GACzB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,qBAAqB,CAC7D,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACvD,OAAO,CACR,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,aAA6B,CAAC;QAElC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,qBAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CAAC;YACJ,CAAC;YACD,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,oBAAoB,CAAC;gBACzB,GAAG;gBACH,SAAS;gBACT,WAAW;gBACX,MAAM;gBACN,aAAa;gBACb,kBAAkB;gBAClB,wBAAwB;aACzB,CAAC,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,2EAA2E;QAC3E,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,6 +1,9 @@
1
1
  export * from './apply-diff-to-file-contents.js';
2
2
  export * from './apply-diff-to-generator-output.js';
3
3
  export * from './create-snapshot-for-project.js';
4
+ export * from './save-snapshot.js';
4
5
  export * from './snapshot-management.js';
5
- export type * from './snapshot-types.js';
6
+ export * from './snapshot-manifest.js';
7
+ export * from './snapshot-types.js';
8
+ export * from './snapshot-utils.js';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,mBAAmB,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -1,5 +1,9 @@
1
1
  export * from './apply-diff-to-file-contents.js';
2
2
  export * from './apply-diff-to-generator-output.js';
3
3
  export * from './create-snapshot-for-project.js';
4
+ export * from './save-snapshot.js';
4
5
  export * from './snapshot-management.js';
6
+ export * from './snapshot-manifest.js';
7
+ export * from './snapshot-types.js';
8
+ export * from './snapshot-utils.js';
5
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/diff/snapshot/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/diff/snapshot/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -5,7 +5,10 @@ import type { GeneratorOutput } from '@baseplate-dev/sync';
5
5
  import type ignore from 'ignore';
6
6
  interface SaveSnapshotOptions {
7
7
  ignoreInstance?: ignore.Ignore;
8
- snapshotDir?: string;
8
+ /** Custom baseplate directory for snapshot storage. Defaults to `path.join(projectDirectory, 'baseplate')`. */
9
+ baseplateDirectory?: string;
10
+ /** When true, store full content of added files in the snapshot. Default: false. */
11
+ includeAddedFileContents?: boolean;
9
12
  }
10
13
  interface SaveSnapshotResult {
11
14
  /** Path to the created snapshot directory */
@@ -18,8 +21,13 @@ interface SaveSnapshotResult {
18
21
  };
19
22
  }
20
23
  /**
21
- * Creates a snapshot from the current diff state
24
+ * Creates a snapshot from the current diff state.
25
+ * @param appDirectory - The app directory to compare files against
26
+ * @param projectDirectory - The project root directory
27
+ * @param appName - The app name within the project
28
+ * @param generatorOutput - The generated output to diff against
29
+ * @param options - Optional snapshot options
22
30
  */
23
- export declare function saveSnapshot(directory: string, generatorOutput: GeneratorOutput, { ignoreInstance, snapshotDir }?: SaveSnapshotOptions): Promise<SaveSnapshotResult>;
31
+ export declare function saveSnapshot(appDirectory: string, projectDirectory: string, appName: string, generatorOutput: GeneratorOutput, { ignoreInstance, baseplateDirectory, includeAddedFileContents, }?: SaveSnapshotOptions): Promise<SaveSnapshotResult>;
24
32
  export {};
25
33
  //# sourceMappingURL=save-snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"save-snapshot.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAejC,UAAU,mBAAmB;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,EAAE,cAAc,EAAE,WAAW,EAAE,GAAE,mBAAwB,GACxD,OAAO,CAAC,kBAAkB,CAAC,CA+D7B"}
1
+ {"version":3,"file":"save-snapshot.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAiBjC,UAAU,mBAAmB;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IAC/B,+GAA+G;IAC/G,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,UAAU,kBAAkB;IAC1B,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,EACE,cAAc,EACd,kBAAkB,EAClB,wBAAgC,GACjC,GAAE,mBAAwB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAsF7B"}
@@ -1,24 +1,32 @@
1
1
  /**
2
2
  * Snapshot creation functionality
3
3
  */
4
- import { mkdir, rm } from 'node:fs/promises';
4
+ import { mkdir, rm, writeFile } from 'node:fs/promises';
5
+ import path from 'node:path';
5
6
  import { compareFiles } from '../diff-utils.js';
6
7
  import { saveSnapshotDiffFile } from './snapshot-diff-utils.js';
7
8
  import { saveSnapshotManifest } from './snapshot-manifest.js';
8
9
  import { SNAPSHOT_VERSION } from './snapshot-types.js';
9
- import { createSnapshotDirectory, pathToSafeDiffFilename, } from './snapshot-utils.js';
10
+ import { createSnapshotDirectory, pathToSafeDiffFilename, resolveBaseplateDir, } from './snapshot-utils.js';
10
11
  /**
11
- * Creates a snapshot from the current diff state
12
+ * Creates a snapshot from the current diff state.
13
+ * @param appDirectory - The app directory to compare files against
14
+ * @param projectDirectory - The project root directory
15
+ * @param appName - The app name within the project
16
+ * @param generatorOutput - The generated output to diff against
17
+ * @param options - Optional snapshot options
12
18
  */
13
- export async function saveSnapshot(directory, generatorOutput, { ignoreInstance, snapshotDir } = {}) {
19
+ export async function saveSnapshot(appDirectory, projectDirectory, appName, generatorOutput, { ignoreInstance, baseplateDirectory, includeAddedFileContents = false, } = {}) {
20
+ const resolvedBaseplateDir = resolveBaseplateDir(projectDirectory, baseplateDirectory);
14
21
  // Get current diff state
15
- const diffSummary = await compareFiles(directory, generatorOutput, undefined, ignoreInstance);
22
+ const diffSummary = await compareFiles(appDirectory, generatorOutput, undefined, ignoreInstance);
16
23
  // Create snapshot directory structure
17
- const snapshotDirectory = await createSnapshotDirectory(directory, snapshotDir);
24
+ const snapshotDirectory = await createSnapshotDirectory(resolvedBaseplateDir, appName);
18
25
  // Create manifest
19
26
  const { diffs } = diffSummary;
20
27
  // For now, we ignore binary modifications
21
28
  const modifiedTextDiffs = diffs.filter((diff) => diff.type === 'modified' && !diff.isBinary);
29
+ const addedTextDiffs = diffs.filter((diff) => diff.type === 'added' && !diff.isBinary);
22
30
  const manifest = {
23
31
  version: SNAPSHOT_VERSION,
24
32
  files: {
@@ -26,9 +34,12 @@ export async function saveSnapshot(directory, generatorOutput, { ignoreInstance,
26
34
  path: diff.path,
27
35
  diffFile: pathToSafeDiffFilename(diff.path),
28
36
  })),
29
- added: diffs
30
- .filter((diff) => diff.type === 'added')
31
- .map((diff) => diff.path),
37
+ added: addedTextDiffs.map((diff) => ({
38
+ path: diff.path,
39
+ ...(includeAddedFileContents && {
40
+ contentFile: pathToSafeDiffFilename(diff.path),
41
+ }),
42
+ })),
32
43
  deleted: diffs
33
44
  .filter((diff) => diff.type === 'deleted')
34
45
  .map((diff) => diff.path),
@@ -37,10 +48,18 @@ export async function saveSnapshot(directory, generatorOutput, { ignoreInstance,
37
48
  // Clear out existing diffs
38
49
  await rm(snapshotDirectory.diffsPath, { recursive: true });
39
50
  await mkdir(snapshotDirectory.diffsPath, { recursive: true });
40
- // Save diffs to diffs folder
51
+ // Save diffs for modified files
41
52
  for (const diff of modifiedTextDiffs) {
42
53
  await saveSnapshotDiffFile(snapshotDirectory, diff.path, diff.generatedContent, diff.workingContent);
43
54
  }
55
+ // Save full content for added files (only when content storage is enabled)
56
+ if (includeAddedFileContents) {
57
+ for (const diff of addedTextDiffs) {
58
+ const contentFileName = pathToSafeDiffFilename(diff.path);
59
+ const contentFilePath = path.join(snapshotDirectory.diffsPath, contentFileName);
60
+ await writeFile(contentFilePath, diff.workingContent, 'utf8');
61
+ }
62
+ }
44
63
  // Save manifest
45
64
  await saveSnapshotManifest(snapshotDirectory, manifest);
46
65
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"save-snapshot.js","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAkB7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,eAAgC,EAChC,EAAE,cAAc,EAAE,WAAW,KAA0B,EAAE;IAEzD,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,SAAS,EACT,eAAe,EACf,SAAS,EACT,cAAc,CACf,CAAC;IAEF,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CACrD,SAAS,EACT,WAAW,CACZ,CAAC;IAEF,kBAAkB;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAE9B,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CACrD,CAAC;IACF,MAAM,QAAQ,GAAqB;QACjC,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE;YACL,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5C,CAAC,CAAC;YACH,KAAK,EAAE,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;iBACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,KAAK;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;iBACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5B;KACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,6BAA6B;IAC7B,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,oBAAoB,CACxB,iBAAiB,EACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExD,OAAO;QACL,YAAY,EAAE,iBAAiB,CAAC,IAAI;QACpC,SAAS,EAAE;YACT,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACxC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAClC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;SACvC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"save-snapshot.js","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ import type { GeneratorOperations } from '#src/sync/types.js';
4
4
  export interface SnapshotManagementOptions {
5
5
  projectDirectory: string;
6
6
  appName: string;
7
- snapshotDirectory?: string;
7
+ /** Custom baseplate directory. Defaults to `path.join(projectDirectory, 'baseplate')`. */
8
+ baseplateDirectory?: string;
8
9
  context: SchemaParserContext;
9
10
  logger: Logger;
10
11
  generatorOperations?: GeneratorOperations;
@@ -12,20 +13,20 @@ export interface SnapshotManagementOptions {
12
13
  /**
13
14
  * Adds files to snapshot
14
15
  */
15
- export declare function addFilesToSnapshot(relativePaths: string[], isDeleted: boolean, { projectDirectory, snapshotDirectory, appName, context, logger, generatorOperations, }: SnapshotManagementOptions): Promise<void>;
16
+ export declare function addFilesToSnapshot(relativePaths: string[], isDeleted: boolean, { projectDirectory, baseplateDirectory, appName, context, logger, generatorOperations, }: SnapshotManagementOptions): Promise<void>;
16
17
  /**
17
18
  * Removes files from snapshot
18
19
  */
19
- export declare function removeFilesFromSnapshot(relativePaths: string[], { projectDirectory, appName, snapshotDirectory, context, logger, }: SnapshotManagementOptions): Promise<void>;
20
+ export declare function removeFilesFromSnapshot(relativePaths: string[], { projectDirectory, appName, baseplateDirectory, logger, }: SnapshotManagementOptions): Promise<void>;
20
21
  export interface SnapshotListOptions {
21
22
  projectDirectory: string;
22
23
  appName: string;
23
- snapshotDirectory?: string;
24
- context: SchemaParserContext;
24
+ /** Custom baseplate directory. Defaults to `path.join(projectDirectory, 'baseplate')`. */
25
+ baseplateDirectory?: string;
25
26
  logger: Logger;
26
27
  }
27
28
  /**
28
29
  * Lists snapshot contents
29
30
  */
30
- export declare function listSnapshotContents({ projectDirectory, snapshotDirectory, appName, context, logger, }: SnapshotListOptions): Promise<void>;
31
+ export declare function listSnapshotContents({ projectDirectory, baseplateDirectory, appName, logger, }: SnapshotListOptions): Promise<void>;
31
32
  //# sourceMappingURL=snapshot-management.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-management.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAOlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoB9D,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,EACE,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,EACN,mBAAkD,GACnD,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoGf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EAAE,EACvB,EACE,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,MAAM,GACP,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDrC"}
1
+ {"version":3,"file":"snapshot-management.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAOlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAsB9D,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,EACE,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,MAAM,EACN,mBAAkD,GACnD,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAyGf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EAAE,EACvB,EACE,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,MAAM,GACP,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,MAAM,GACP,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDrC"}
@@ -3,28 +3,26 @@ import { handleFileNotFoundError } from '@baseplate-dev/utils/node';
3
3
  import { readFile } from 'node:fs/promises';
4
4
  import path from 'node:path';
5
5
  import { compilePackages } from '#src/compiler/index.js';
6
- import { getSingleAppDirectoryForProject } from '#src/project-definition/get-single-app-directory-for-project.js';
7
6
  import { loadProjectDefinition } from '#src/project-definition/index.js';
8
7
  import { createTemplateMetadataOptions } from '#src/sync/template-metadata-utils.js';
9
8
  import { DEFAULT_GENERATOR_OPERATIONS } from '#src/sync/types.js';
10
9
  import { removeSnapshotDiffFile, saveSnapshotDiffFile, } from './snapshot-diff-utils.js';
11
10
  import { initializeSnapshotManifest, loadSnapshotManifest, saveSnapshotManifest, snapshotManifestUtils, } from './snapshot-manifest.js';
12
- import { resolveSnapshotDirectory } from './snapshot-utils.js';
11
+ import { resolveBaseplateDir, resolveSnapshotDirectory, } from './snapshot-utils.js';
13
12
  /**
14
13
  * Adds files to snapshot
15
14
  */
16
- export async function addFilesToSnapshot(relativePaths, isDeleted, { projectDirectory, snapshotDirectory, appName, context, logger, generatorOperations = DEFAULT_GENERATOR_OPERATIONS, }) {
15
+ export async function addFilesToSnapshot(relativePaths, isDeleted, { projectDirectory, baseplateDirectory, appName, context, logger, generatorOperations = DEFAULT_GENERATOR_OPERATIONS, }) {
17
16
  try {
18
- const { definition } = await loadProjectDefinition(projectDirectory, context);
17
+ const resolvedBaseplateDir = resolveBaseplateDir(projectDirectory, baseplateDirectory);
18
+ const { definition } = await loadProjectDefinition(resolvedBaseplateDir, context);
19
19
  const compiledApps = compilePackages(definition, context);
20
20
  const compiledApp = compiledApps.find((a) => a.name === appName);
21
21
  if (!compiledApp) {
22
22
  throw new Error(`App ${appName} not found`);
23
23
  }
24
24
  const appDirectory = path.join(projectDirectory, compiledApp.packageDirectory);
25
- const snapshotDirectories = resolveSnapshotDirectory(appDirectory, {
26
- snapshotDir: snapshotDirectory,
27
- });
25
+ const snapshotDirectories = resolveSnapshotDirectory(resolvedBaseplateDir, appName);
28
26
  logger.info(`Generating project to create snapshot...`);
29
27
  const appEntry = await generatorOperations.buildGeneratorEntry(compiledApp.generatorBundle);
30
28
  const { files: generatedFiles } = await generatorOperations.executeGeneratorEntry(appEntry, {
@@ -62,7 +60,7 @@ export async function addFilesToSnapshot(relativePaths, isDeleted, { projectDire
62
60
  manifest = snapshotManifestUtils.addModifiedFile(manifest, relativePath, diffFileName);
63
61
  }
64
62
  else {
65
- // Mark file as added
63
+ // Mark as added (path only, no content stored)
66
64
  manifest = snapshotManifestUtils.addAddedFile(manifest, relativePath);
67
65
  }
68
66
  logger.info(`Adding file to snapshot: ${relativePath}`);
@@ -79,13 +77,10 @@ export async function addFilesToSnapshot(relativePaths, isDeleted, { projectDire
79
77
  /**
80
78
  * Removes files from snapshot
81
79
  */
82
- export async function removeFilesFromSnapshot(relativePaths, { projectDirectory, appName, snapshotDirectory, context, logger, }) {
80
+ export async function removeFilesFromSnapshot(relativePaths, { projectDirectory, appName, baseplateDirectory, logger, }) {
83
81
  try {
84
- const { definition } = await loadProjectDefinition(projectDirectory, context);
85
- const appDirectory = getSingleAppDirectoryForProject(projectDirectory, definition, appName);
86
- const snapshotDir = resolveSnapshotDirectory(appDirectory, {
87
- snapshotDir: snapshotDirectory,
88
- });
82
+ const resolvedBaseplateDir = resolveBaseplateDir(projectDirectory, baseplateDirectory);
83
+ const snapshotDir = resolveSnapshotDirectory(resolvedBaseplateDir, appName);
89
84
  // Load existing manifest
90
85
  let manifest = await loadSnapshotManifest(snapshotDir);
91
86
  if (!manifest) {
@@ -96,6 +91,10 @@ export async function removeFilesFromSnapshot(relativePaths, { projectDirectory,
96
91
  if (modifiedFile?.diffFile) {
97
92
  await removeSnapshotDiffFile(snapshotDir, modifiedFile.diffFile);
98
93
  }
94
+ const addedFile = manifest.files.added.find((entry) => entry.path === relativePath);
95
+ if (addedFile?.contentFile) {
96
+ await removeSnapshotDiffFile(snapshotDir, addedFile.contentFile);
97
+ }
99
98
  manifest = snapshotManifestUtils.removeFile(manifest, relativePath);
100
99
  }
101
100
  // Save updated manifest
@@ -110,13 +109,10 @@ export async function removeFilesFromSnapshot(relativePaths, { projectDirectory,
110
109
  /**
111
110
  * Lists snapshot contents
112
111
  */
113
- export async function listSnapshotContents({ projectDirectory, snapshotDirectory, appName, context, logger, }) {
112
+ export async function listSnapshotContents({ projectDirectory, baseplateDirectory, appName, logger, }) {
114
113
  try {
115
- const { definition } = await loadProjectDefinition(projectDirectory, context);
116
- const appDirectory = getSingleAppDirectoryForProject(projectDirectory, definition, appName);
117
- const snapshotDir = resolveSnapshotDirectory(appDirectory, {
118
- snapshotDir: snapshotDirectory,
119
- });
114
+ const resolvedBaseplateDir = resolveBaseplateDir(projectDirectory, baseplateDirectory);
115
+ const snapshotDir = resolveSnapshotDirectory(resolvedBaseplateDir, appName);
120
116
  // Load manifest
121
117
  const manifest = await loadSnapshotManifest(snapshotDir);
122
118
  if (!manifest) {
@@ -131,8 +127,8 @@ export async function listSnapshotContents({ projectDirectory, snapshotDirectory
131
127
  }
132
128
  if (manifest.files.added.length > 0) {
133
129
  logger.info(`\nAdded files (${manifest.files.added.length}):`);
134
- for (const file of manifest.files.added) {
135
- logger.info(` ${file}`);
130
+ for (const entry of manifest.files.added) {
131
+ logger.info(` ${entry.path}`);
136
132
  }
137
133
  }
138
134
  if (manifest.files.deleted.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-management.js","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-management.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAW/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,aAAuB,EACvB,SAAkB,EAClB,EACE,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,EACN,mBAAmB,GAAG,4BAA4B,GACxB;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAChD,gBAAgB,EAChB,OAAO,CACR,CAAC;QACF,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,gBAAgB,EAChB,WAAW,CAAC,gBAAgB,CAC7B,CAAC;QAEF,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,YAAY,EAAE;YACjE,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,CAC5D,WAAW,CAAC,eAAe,CAC5B,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAC7B,MAAM,mBAAmB,CAAC,qBAAqB,CAAC,QAAQ,EAAE;YACxD,uBAAuB,EAAE,6BAA6B,CAAC,UAAU,CAAC;SACnE,CAAC,CAAC;QAEL,yBAAyB;QACzB,IAAI,QAAQ,GACV,CAAC,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YACjD,0BAA0B,EAAE,CAAC;QAE/B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAE3D,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,EAAE,CACtD,CAAC;gBACJ,CAAC;gBACD,qCAAqC;gBACrC,MAAM,CAAC,IAAI,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;gBAChE,QAAQ,GAAG,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,CAC/D,uBAAuB,CACxB,CAAC;gBAEF,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CACb,mBAAmB,YAAY,yCAAyC,CACzE,CAAC;gBACJ,CAAC;gBAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;gBACpE,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACtC,MAAM,IAAI,SAAS,CACjB,qDAAqD,CACtD,CAAC;oBACJ,CAAC;oBACD,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CACT,QAAQ,YAAY,8CAA8C,CACnE,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAC7C,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,cAAc,CACf,CAAC;oBACF,QAAQ,GAAG,qBAAqB,CAAC,eAAe,CAC9C,QAAQ,EACR,YAAY,EACZ,YAAY,CACb,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,qBAAqB;oBACrB,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACxE,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,oBAAoB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAE1D,MAAM,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,MAAM,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,uBAAuB,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAuB,EACvB,EACE,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,MAAM,GACoB;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAChD,gBAAgB,EAChB,OAAO,CACR,CAAC;QACF,MAAM,YAAY,GAAG,+BAA+B,CAClD,gBAAgB,EAChB,UAAU,EACV,OAAO,CACR,CAAC;QAEF,MAAM,WAAW,GAAG,wBAAwB,CAAC,YAAY,EAAE;YACzD,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,QAAQ,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CACvC,CAAC;YACF,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;gBAC3B,MAAM,sBAAsB,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YACnE,CAAC;YAED,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtE,CAAC;QAED,wBAAwB;QACxB,MAAM,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,aAAa,aAAa,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,yCAA0C,KAAe,CAAC,OAAO,EAAE,CACpE,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAUD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,GACc;IACpB,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAChD,gBAAgB,EAChB,OAAO,CACR,CAAC;QACF,MAAM,YAAY,GAAG,+BAA+B,CAClD,gBAAgB,EAChB,UAAU,EACV,OAAO,CACR,CAAC;QAEF,MAAM,WAAW,GAAG,wBAAwB,CAAC,YAAY,EAAE;YACzD,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,sBAAsB,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;YACrE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YACnE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IACE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACpC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACjC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EACnC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,uBAAuB,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"snapshot-management.js","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-management.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ declare function addModifiedFile(manifest: SnapshotManifest, filePath: string, d
18
18
  /**
19
19
  * Adds an added file to the manifest
20
20
  */
21
- declare function addAddedFile(manifest: SnapshotManifest, filePath: string): SnapshotManifest;
21
+ declare function addAddedFile(manifest: SnapshotManifest, filePath: string, contentFile?: string): SnapshotManifest;
22
22
  /**
23
23
  * Adds a deleted file to the manifest
24
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-manifest.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-manifest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI/E;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,gBAAgB,CAS7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;AAED;;GAEG;AACH,iBAAS,eAAe,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAWlB;AAED;;GAEG;AACH,iBAAS,YAAY,CACnB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAYlB;AAED;;GAEG;AACH,iBAAS,cAAc,CACrB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAYlB;AAED;;GAEG;AACH,iBAAS,UAAU,CACjB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAYlB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;CAMjC,CAAC"}
1
+ {"version":3,"file":"snapshot-manifest.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-manifest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI/E;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,gBAAgB,CAS7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;AAED;;GAEG;AACH,iBAAS,eAAe,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAWlB;AAED;;GAEG;AACH,iBAAS,YAAY,CACnB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,gBAAgB,CAWlB;AAED;;GAEG;AACH,iBAAS,cAAc,CACrB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAYlB;AAED;;GAEG;AACH,iBAAS,UAAU,CACjB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAYlB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;CAMjC,CAAC"}
@@ -23,7 +23,7 @@ export async function saveSnapshotManifest(snapshotDirectory, manifest) {
23
23
  const sortedManifest = {
24
24
  version: manifest.version,
25
25
  files: {
26
- added: manifest.files.added.toSorted(),
26
+ added: manifest.files.added.toSorted((a, b) => compareStrings(a.path, b.path)),
27
27
  deleted: manifest.files.deleted.toSorted(),
28
28
  modified: manifest.files.modified.toSorted((a, b) => compareStrings(a.path, b.path)),
29
29
  },
@@ -59,15 +59,15 @@ function addModifiedFile(manifest, filePath, diffFile) {
59
59
  /**
60
60
  * Adds an added file to the manifest
61
61
  */
62
- function addAddedFile(manifest, filePath) {
63
- if (manifest.files.added.includes(filePath)) {
64
- return manifest;
65
- }
62
+ function addAddedFile(manifest, filePath, contentFile) {
66
63
  return {
67
64
  ...manifest,
68
65
  files: {
69
66
  ...manifest.files,
70
- added: [...manifest.files.added, filePath],
67
+ added: [
68
+ ...manifest.files.added.filter((entry) => entry.path !== filePath),
69
+ { path: filePath, ...(contentFile && { contentFile }) },
70
+ ],
71
71
  },
72
72
  };
73
73
  }
@@ -95,7 +95,7 @@ function removeFile(manifest, filePath) {
95
95
  files: {
96
96
  ...manifest.files,
97
97
  modified: manifest.files.modified.filter((entry) => entry.path !== filePath),
98
- added: manifest.files.added.filter((path) => path !== filePath),
98
+ added: manifest.files.added.filter((entry) => entry.path !== filePath),
99
99
  deleted: manifest.files.deleted.filter((path) => path !== filePath),
100
100
  },
101
101
  };