@baseplate-dev/project-builder-server 0.2.6 → 0.3.1

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 (92) hide show
  1. package/dist/api/index.d.ts +3 -3
  2. package/dist/api/sync.d.ts +3 -3
  3. package/dist/compiler/app-entry-builder.d.ts.map +1 -1
  4. package/dist/compiler/app-entry-builder.js +3 -5
  5. package/dist/compiler/app-entry-builder.js.map +1 -1
  6. package/dist/compiler/web/index.d.ts.map +1 -1
  7. package/dist/compiler/web/index.js +2 -1
  8. package/dist/compiler/web/index.js.map +1 -1
  9. package/dist/diff/diff-project.d.ts.map +1 -1
  10. package/dist/diff/diff-project.js +22 -5
  11. package/dist/diff/diff-project.js.map +1 -1
  12. package/dist/diff/diff-utils.d.ts +7 -3
  13. package/dist/diff/diff-utils.d.ts.map +1 -1
  14. package/dist/diff/diff-utils.js +80 -22
  15. package/dist/diff/diff-utils.js.map +1 -1
  16. package/dist/diff/index.d.ts +1 -0
  17. package/dist/diff/index.d.ts.map +1 -1
  18. package/dist/diff/index.js +1 -0
  19. package/dist/diff/index.js.map +1 -1
  20. package/dist/diff/snapshot/apply-diff-to-file-contents.d.ts +3 -0
  21. package/dist/diff/snapshot/apply-diff-to-file-contents.d.ts.map +1 -0
  22. package/dist/diff/snapshot/apply-diff-to-file-contents.js +26 -0
  23. package/dist/diff/snapshot/apply-diff-to-file-contents.js.map +1 -0
  24. package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts +4 -0
  25. package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts.map +1 -0
  26. package/dist/diff/snapshot/apply-diff-to-generator-output.js +28 -0
  27. package/dist/diff/snapshot/apply-diff-to-generator-output.js.map +1 -0
  28. package/dist/diff/snapshot/create-snapshot-for-project.d.ts +41 -0
  29. package/dist/diff/snapshot/create-snapshot-for-project.d.ts.map +1 -0
  30. package/dist/diff/snapshot/create-snapshot-for-project.js +48 -0
  31. package/dist/diff/snapshot/create-snapshot-for-project.js.map +1 -0
  32. package/dist/diff/snapshot/index.d.ts +6 -0
  33. package/dist/diff/snapshot/index.d.ts.map +1 -0
  34. package/dist/diff/snapshot/index.js +5 -0
  35. package/dist/diff/snapshot/index.js.map +1 -0
  36. package/dist/diff/snapshot/save-snapshot.d.ts +25 -0
  37. package/dist/diff/snapshot/save-snapshot.d.ts.map +1 -0
  38. package/dist/diff/snapshot/save-snapshot.js +55 -0
  39. package/dist/diff/snapshot/save-snapshot.js.map +1 -0
  40. package/dist/diff/snapshot/snapshot-diff-utils.d.ts +7 -0
  41. package/dist/diff/snapshot/snapshot-diff-utils.d.ts.map +1 -0
  42. package/dist/diff/snapshot/snapshot-diff-utils.js +20 -0
  43. package/dist/diff/snapshot/snapshot-diff-utils.js.map +1 -0
  44. package/dist/diff/snapshot/snapshot-management.d.ts +31 -0
  45. package/dist/diff/snapshot/snapshot-management.d.ts.map +1 -0
  46. package/dist/diff/snapshot/snapshot-management.js +154 -0
  47. package/dist/diff/snapshot/snapshot-management.js.map +1 -0
  48. package/dist/diff/snapshot/snapshot-manifest.d.ts +40 -0
  49. package/dist/diff/snapshot/snapshot-manifest.d.ts.map +1 -0
  50. package/dist/diff/snapshot/snapshot-manifest.js +113 -0
  51. package/dist/diff/snapshot/snapshot-manifest.js.map +1 -0
  52. package/dist/diff/snapshot/snapshot-types.d.ts +165 -0
  53. package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -0
  54. package/dist/diff/snapshot/snapshot-types.js +23 -0
  55. package/dist/diff/snapshot/snapshot-types.js.map +1 -0
  56. package/dist/diff/snapshot/snapshot-utils.d.ts +20 -0
  57. package/dist/diff/snapshot/snapshot-utils.d.ts.map +1 -0
  58. package/dist/diff/snapshot/snapshot-utils.js +51 -0
  59. package/dist/diff/snapshot/snapshot-utils.js.map +1 -0
  60. package/dist/diff/types.d.ts +38 -6
  61. package/dist/diff/types.d.ts.map +1 -1
  62. package/dist/project-definition/get-single-app-directory-for-project.d.ts +11 -0
  63. package/dist/project-definition/get-single-app-directory-for-project.d.ts.map +1 -0
  64. package/dist/project-definition/get-single-app-directory-for-project.js +18 -0
  65. package/dist/project-definition/get-single-app-directory-for-project.js.map +1 -0
  66. package/dist/project-definition/index.d.ts +2 -0
  67. package/dist/project-definition/index.d.ts.map +1 -0
  68. package/dist/project-definition/index.js +2 -0
  69. package/dist/project-definition/index.js.map +1 -0
  70. package/dist/project-definition/load-project-definition.d.ts +12 -0
  71. package/dist/project-definition/load-project-definition.d.ts.map +1 -0
  72. package/dist/project-definition/load-project-definition.js +34 -0
  73. package/dist/project-definition/load-project-definition.js.map +1 -0
  74. package/dist/server/plugin.js +6 -6
  75. package/dist/server/plugin.js.map +1 -1
  76. package/dist/sync/generate-for-directory.d.ts +5 -14
  77. package/dist/sync/generate-for-directory.d.ts.map +1 -1
  78. package/dist/sync/generate-for-directory.js +37 -30
  79. package/dist/sync/generate-for-directory.js.map +1 -1
  80. package/dist/sync/get-previous-generated-payload.d.ts +9 -0
  81. package/dist/sync/get-previous-generated-payload.d.ts.map +1 -0
  82. package/dist/sync/get-previous-generated-payload.js +23 -0
  83. package/dist/sync/get-previous-generated-payload.js.map +1 -0
  84. package/dist/sync/sync-project.d.ts +7 -3
  85. package/dist/sync/sync-project.d.ts.map +1 -1
  86. package/dist/sync/sync-project.js +5 -29
  87. package/dist/sync/sync-project.js.map +1 -1
  88. package/dist/sync/types.d.ts +14 -0
  89. package/dist/sync/types.d.ts.map +1 -0
  90. package/dist/sync/types.js +15 -0
  91. package/dist/sync/types.js.map +1 -0
  92. package/package.json +12 -11
@@ -194,24 +194,24 @@ export declare const appRouter: import("@trpc/server/unstable-core-do-not-import
194
194
  }>;
195
195
  openEditor: import("@trpc/server").TRPCMutationProcedure<{
196
196
  input: {
197
- relativePath: string;
198
197
  id: string;
198
+ relativePath: string;
199
199
  packageId: string;
200
200
  };
201
201
  output: void;
202
202
  }>;
203
203
  deleteConflictFile: import("@trpc/server").TRPCMutationProcedure<{
204
204
  input: {
205
- relativePath: string;
206
205
  id: string;
206
+ relativePath: string;
207
207
  packageId: string;
208
208
  };
209
209
  output: void;
210
210
  }>;
211
211
  keepConflictFile: import("@trpc/server").TRPCMutationProcedure<{
212
212
  input: {
213
- relativePath: string;
214
213
  id: string;
214
+ relativePath: string;
215
215
  packageId: string;
216
216
  };
217
217
  output: void;
@@ -109,24 +109,24 @@ export declare const syncRouter: import("@trpc/server/unstable-core-do-not-impor
109
109
  }>;
110
110
  openEditor: import("@trpc/server").TRPCMutationProcedure<{
111
111
  input: {
112
- relativePath: string;
113
112
  id: string;
113
+ relativePath: string;
114
114
  packageId: string;
115
115
  };
116
116
  output: void;
117
117
  }>;
118
118
  deleteConflictFile: import("@trpc/server").TRPCMutationProcedure<{
119
119
  input: {
120
- relativePath: string;
121
120
  id: string;
121
+ relativePath: string;
122
122
  packageId: string;
123
123
  };
124
124
  output: void;
125
125
  }>;
126
126
  keepConflictFile: import("@trpc/server").TRPCMutationProcedure<{
127
127
  input: {
128
- relativePath: string;
129
128
  id: string;
129
+ relativePath: string;
130
130
  packageId: string;
131
131
  };
132
132
  output: void;
@@ -1 +1 @@
1
- {"version":3,"file":"app-entry-builder.d.ts","sourceRoot":"","sources":["../../src/compiler/app-entry-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,qBAAa,eAAe,CAAC,SAAS,SAAS,aAAa,GAAG,aAAa;IAQjE,mBAAmB,EAAE,0BAA0B;IAC/C,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;IATxC,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,WAAW,EAAE,yBAAyB,CAAC;IAEvC,WAAW,EAAE,WAAW,CAAC;gBAGvB,mBAAmB,EAAE,0BAA0B,EAC/C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;IAoB/C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAK9B;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,eAAe,GAAG,QAAQ;CAUzD;AAED,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"app-entry-builder.d.ts","sourceRoot":"","sources":["../../src/compiler/app-entry-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQ3D,qBAAa,eAAe,CAAC,SAAS,SAAS,aAAa,GAAG,aAAa;IAQjE,mBAAmB,EAAE,0BAA0B;IAC/C,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;IATxC,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,WAAW,EAAE,yBAAyB,CAAC;IAEvC,WAAW,EAAE,WAAW,CAAC;gBAGvB,mBAAmB,EAAE,0BAA0B,EAC/C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;IAoB/C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAK9B;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,eAAe,GAAG,QAAQ;CAQzD;AAED,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { appCompilerSpec, createAppCompiler, } from '@baseplate-dev/project-builder-lib';
1
+ import { appCompilerSpec, AppUtils, createAppCompiler, } from '@baseplate-dev/project-builder-lib';
2
2
  export class AppEntryBuilder {
3
3
  definitionContainer;
4
4
  appConfig;
@@ -34,10 +34,8 @@ export class AppEntryBuilder {
34
34
  buildProjectEntry(rootBundle) {
35
35
  return {
36
36
  id: this.appConfig.id,
37
- name: `${this.projectDefinition.settings.general.name}-${this.appConfig.name}`,
38
- appDirectory: this.appConfig.packageLocation
39
- ? this.appConfig.packageLocation
40
- : `packages/${this.appConfig.name}`,
37
+ name: this.appConfig.name,
38
+ appDirectory: AppUtils.getAppDirectory(this.appConfig),
41
39
  generatorBundle: rootBundle,
42
40
  };
43
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-entry-builder.js","sourceRoot":"","sources":["../../src/compiler/app-entry-builder.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,eAAe,EACf,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,OAAO,eAAe;IAQjB;IACA;IACA;IATF,iBAAiB,CAAoB;IAErC,WAAW,CAA4B;IAEvC,WAAW,CAAc;IAEhC,YACS,mBAA+C,EAC/C,SAAoB,EACpB,aAAsC;QAFtC,wBAAmB,GAAnB,mBAAmB,CAA4B;QAC/C,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAAyB;QAE7C,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;QAEnD,0BAA0B;QAC1B,IAAI,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAEzE,MAAM,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACxE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC;gBACf,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAGD,UAAU,CAAC,EAAsB;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAA2B;QAC3C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YACrB,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAC9E,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe;gBAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe;gBAChC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACrC,eAAe,EAAE,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"app-entry-builder.js","sourceRoot":"","sources":["../../src/compiler/app-entry-builder.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,OAAO,eAAe;IAQjB;IACA;IACA;IATF,iBAAiB,CAAoB;IAErC,WAAW,CAA4B;IAEvC,WAAW,CAAc;IAEhC,YACS,mBAA+C,EAC/C,SAAoB,EACpB,aAAsC;QAFtC,wBAAmB,GAAnB,mBAAmB,CAA4B;QAC/C,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAAyB;QAE7C,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;QAEnD,0BAA0B;QAC1B,IAAI,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAEzE,MAAM,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACxE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC;gBACf,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAGD,UAAU,CAAC,EAAsB;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAA2B;QAC3C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YACzB,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACtD,eAAe,EAAE,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compiler/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACb,MAAM,oCAAoC,CAAC;AA6J5C,wBAAgB,UAAU,CACxB,mBAAmB,EAAE,0BAA0B,EAC/C,GAAG,EAAE,YAAY,GAChB,QAAQ,CA0BV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compiler/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACb,MAAM,oCAAoC,CAAC;AAiK5C,wBAAgB,UAAU,CACxB,mBAAmB,EAAE,0BAA0B,EAC/C,GAAG,EAAE,YAAY,GAChB,QAAQ,CA0BV"}
@@ -22,7 +22,7 @@ function buildAdminNavigationLinks(builder) {
22
22
  }
23
23
  function buildAdminRoutes(builder) {
24
24
  const { adminApp } = builder.appConfig;
25
- const { projectDefinition } = builder;
25
+ const { projectDefinition, definitionContainer } = builder;
26
26
  if (!adminApp?.enabled) {
27
27
  return undefined;
28
28
  }
@@ -51,6 +51,7 @@ function buildAdminRoutes(builder) {
51
51
  ]
52
52
  : []),
53
53
  ],
54
+ requiredRoles: adminApp.allowedRoles?.map((roleId) => definitionContainer.nameFromId(roleId)) ?? [],
54
55
  }),
55
56
  admin: adminHomeGenerator({}),
56
57
  adminRoutes: backendApp.enableBullQueue
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compiler/web/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compiler/web/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff-project.d.ts","sourceRoot":"","sources":["../../src/diff/diff-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAkBlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AA4DlF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAC7B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+F5E"}
1
+ {"version":3,"file":"diff-project.d.ts","sourceRoot":"","sources":["../../src/diff/diff-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmBlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AA+DlF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAC7B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH5E"}
@@ -2,12 +2,16 @@ import { createPluginImplementationStore, runPluginMigrations, runSchemaMigratio
2
2
  import { buildGeneratorEntry, executeGeneratorEntry, formatGeneratorOutput, loadIgnorePatterns, } from '@baseplate-dev/sync';
3
3
  import { enhanceErrorWithContext, hashWithSHA256 } from '@baseplate-dev/utils';
4
4
  import { fileExists } from '@baseplate-dev/utils/node';
5
+ import ignore from 'ignore';
5
6
  import { readFile } from 'node:fs/promises';
6
7
  import path from 'node:path';
7
8
  import { compileApplications } from '#src/compiler/index.js';
8
9
  import { createTemplateMetadataOptions } from '../sync/template-metadata-utils.js';
9
10
  import { compareFiles } from './diff-utils.js';
10
11
  import { formatCompactDiff, formatUnifiedDiff } from './formatters.js';
12
+ import { applySnapshotToGeneratorOutput } from './snapshot/apply-diff-to-generator-output.js';
13
+ import { loadSnapshotManifest } from './snapshot/snapshot-manifest.js';
14
+ import { resolveSnapshotDirectory } from './snapshot/snapshot-utils.js';
11
15
  /**
12
16
  * Load and parse project definition (extracted from build-project.ts)
13
17
  */
@@ -59,10 +63,6 @@ export async function diffProject(options) {
59
63
  for (const app of filteredApps) {
60
64
  const appDirectory = path.join(directory, app.appDirectory);
61
65
  logger.info(`Generating for app: ${app.name} (${app.appDirectory})`);
62
- // Load ignore patterns for this app directory
63
- const ignorePatterns = useIgnoreFile
64
- ? await loadIgnorePatterns(appDirectory)
65
- : undefined;
66
66
  // Generate the output without writing files
67
67
  const generatorEntry = await buildGeneratorEntry(app.generatorBundle);
68
68
  const generatorOutput = await executeGeneratorEntry(generatorEntry, {
@@ -70,8 +70,25 @@ export async function diffProject(options) {
70
70
  });
71
71
  // Format the output
72
72
  const formattedGeneratorOutput = await formatGeneratorOutput(generatorOutput, { outputDirectory: appDirectory });
73
+ // Apply snapshot to generator output
74
+ const snapshotDirectory = resolveSnapshotDirectory(appDirectory);
75
+ const snapshot = await loadSnapshotManifest(snapshotDirectory);
76
+ if (snapshot) {
77
+ logger.info(`Applying snapshot to generator output for ${app.name}...`);
78
+ }
79
+ const diffedGeneratorOutput = snapshot
80
+ ? await applySnapshotToGeneratorOutput(formattedGeneratorOutput, snapshot, snapshotDirectory.diffsPath)
81
+ : formattedGeneratorOutput;
82
+ // Load ignore patterns for this app directory
83
+ const ignorePatterns = useIgnoreFile
84
+ ? await loadIgnorePatterns(appDirectory)
85
+ : ignore();
86
+ // Add added files to ignore pattern
87
+ if (snapshot) {
88
+ ignorePatterns.add(snapshot.files.added);
89
+ }
73
90
  // Compare generated output with working directory
74
- const diffSummary = await compareFiles(appDirectory, formattedGeneratorOutput, globPatterns, ignorePatterns);
91
+ const diffSummary = await compareFiles(appDirectory, diffedGeneratorOutput, globPatterns, ignorePatterns);
75
92
  if (diffSummary.totalFiles > 0) {
76
93
  logger.info(`\n=== Diff for ${app.name} ===`);
77
94
  const output = compact
@@ -1 +1 @@
1
- {"version":3,"file":"diff-project.js","sourceRoot":"","sources":["../../src/diff/diff-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-project.js","sourceRoot":"","sources":["../../src/diff/diff-project.ts"],"names":[],"mappings":"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"}
@@ -12,11 +12,15 @@ export declare function readWorkingFile(directory: string, filePath: string): Pr
12
12
  /**
13
13
  * Determines if content is binary (for generated content)
14
14
  */
15
- export declare function isContentBinary(content: string | Buffer): boolean;
15
+ export declare function isContentBinary(content: string | Buffer): content is Buffer;
16
16
  /**
17
- * Creates a unified diff for text files
17
+ * Creates a unified diff for text files (generated → working)
18
18
  */
19
- export declare function createUnifiedDiff(filePath: string, oldContent: string, newContent: string): string;
19
+ export declare function createUnifiedDiff(filePath: string, generatedContent: string, workingContent: string): string;
20
+ /**
21
+ * Scans the working directory for all files, respecting ignore and glob patterns
22
+ */
23
+ export declare function scanWorkingDirectory(directory: string, globPatterns?: string[], ignoreInstance?: ignore.Ignore): Promise<string[]>;
20
24
  /**
21
25
  * Compares generated output with working directory files
22
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"diff-utils.d.ts","sourceRoot":"","sources":["../../src/diff/diff-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AASjC,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAC7B,OAAO,CAWT;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAYjC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAC7B,OAAO,CAAC,WAAW,CAAC,CAiFtB"}
1
+ {"version":3,"file":"diff-utils.d.ts","sourceRoot":"","sources":["../../src/diff/diff-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAWjC,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAC7B,OAAO,CAWT;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAYjC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,MAAM,CASR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AASD;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAC7B,OAAO,CAAC,WAAW,CAAC,CAwHtB"}
@@ -1,7 +1,9 @@
1
1
  import { shouldIncludeFile as shouldIncludeFileIgnore } from '@baseplate-dev/sync';
2
2
  import * as diff from 'diff';
3
+ import { globby } from 'globby';
3
4
  import { isBinaryFile } from 'isbinaryfile';
4
5
  import micromatch from 'micromatch';
6
+ import fsAdapter from 'node:fs';
5
7
  import { readFile } from 'node:fs/promises';
6
8
  import path from 'node:path';
7
9
  /**
@@ -41,12 +43,34 @@ export function isContentBinary(content) {
41
43
  return Buffer.isBuffer(content);
42
44
  }
43
45
  /**
44
- * Creates a unified diff for text files
46
+ * Creates a unified diff for text files (generated → working)
45
47
  */
46
- export function createUnifiedDiff(filePath, oldContent, newContent) {
47
- const patch = diff.createPatch(filePath, oldContent, newContent, 'working', 'generated');
48
+ export function createUnifiedDiff(filePath, generatedContent, workingContent) {
49
+ const patch = diff.createPatch(filePath, generatedContent, workingContent, 'generated', 'working');
48
50
  return patch;
49
51
  }
52
+ /**
53
+ * Scans the working directory for all files, respecting ignore and glob patterns
54
+ */
55
+ export async function scanWorkingDirectory(directory, globPatterns, ignoreInstance) {
56
+ // Create glob pattern to match all files
57
+ const patterns = globPatterns && globPatterns.length > 0 ? globPatterns : ['**/*'];
58
+ const files = await globby(patterns, {
59
+ cwd: directory,
60
+ onlyFiles: true,
61
+ fs: fsAdapter,
62
+ gitignore: true,
63
+ absolute: false, // Return relative paths
64
+ });
65
+ // Filter files using ignore patterns and glob patterns
66
+ return files.filter((filePath) => shouldIncludeFile(filePath, globPatterns, ignoreInstance));
67
+ }
68
+ function normalizeAsBuffer(content) {
69
+ if (Buffer.isBuffer(content)) {
70
+ return content;
71
+ }
72
+ return Buffer.from(content);
73
+ }
50
74
  /**
51
75
  * Compares generated output with working directory files
52
76
  */
@@ -69,16 +93,24 @@ export async function compareFiles(directory, generatorOutput, globPatterns, ign
69
93
  continue;
70
94
  }
71
95
  if (workingContent === null) {
72
- // File only exists in generated output
73
- diffs.push({
74
- path: filePath,
75
- type: 'added',
76
- generatedContent,
77
- isBinary: generatedIsBinary,
78
- unifiedDiff: generatedIsBinary
79
- ? undefined
80
- : createUnifiedDiff(filePath, '', generatedContent.toString()),
81
- });
96
+ // File only exists in generated output - generator should not create this file
97
+ if (generatedIsBinary) {
98
+ diffs.push({
99
+ path: filePath,
100
+ type: 'deleted',
101
+ isBinary: true,
102
+ generatedContent,
103
+ });
104
+ }
105
+ else {
106
+ diffs.push({
107
+ path: filePath,
108
+ type: 'deleted',
109
+ generatedContent,
110
+ isBinary: false,
111
+ unifiedDiff: createUnifiedDiff(filePath, generatedContent, ''),
112
+ });
113
+ }
82
114
  }
83
115
  else if (generatedIsBinary || workingIsBinary) {
84
116
  // Binary file comparison
@@ -89,9 +121,9 @@ export async function compareFiles(directory, generatorOutput, globPatterns, ign
89
121
  diffs.push({
90
122
  path: filePath,
91
123
  type: 'modified',
92
- generatedContent,
93
- workingContent,
94
124
  isBinary: true,
125
+ generatedContent: normalizeAsBuffer(generatedContent),
126
+ workingContent: normalizeAsBuffer(workingContent),
95
127
  });
96
128
  }
97
129
  }
@@ -102,18 +134,44 @@ export async function compareFiles(directory, generatorOutput, globPatterns, ign
102
134
  if (generatedText !== workingText) {
103
135
  diffs.push({
104
136
  path: filePath,
105
- type: 'modified',
106
- generatedContent,
107
- workingContent,
108
137
  isBinary: false,
109
- unifiedDiff: createUnifiedDiff(filePath, workingText, generatedText),
138
+ type: 'modified',
139
+ generatedContent: generatedText,
140
+ workingContent: workingText,
141
+ unifiedDiff: createUnifiedDiff(filePath, generatedText, workingText),
110
142
  });
111
143
  }
112
144
  }
113
145
  }
114
- // TODO: Check for files that exist in working directory but not in generated output
115
- // This would require scanning the working directory, which might be expensive
116
- // For now, we'll focus on differences in generated files
146
+ // Check for files that exist in working directory but not in generated output
147
+ const workingDirectoryFiles = await scanWorkingDirectory(directory, globPatterns, ignoreInstance);
148
+ // Find files that exist in working directory but not in generated output
149
+ for (const workingFilePath of workingDirectoryFiles) {
150
+ if (!processedFiles.has(workingFilePath)) {
151
+ // This file exists in working directory but not in generated output - generator should create this file
152
+ const workingContent = await readWorkingFile(directory, workingFilePath);
153
+ if (workingContent !== null) {
154
+ const workingIsBinary = isContentBinary(workingContent);
155
+ if (workingIsBinary) {
156
+ diffs.push({
157
+ path: workingFilePath,
158
+ type: 'added',
159
+ workingContent,
160
+ isBinary: true,
161
+ });
162
+ }
163
+ else {
164
+ diffs.push({
165
+ path: workingFilePath,
166
+ type: 'added',
167
+ workingContent,
168
+ isBinary: workingIsBinary,
169
+ unifiedDiff: createUnifiedDiff(workingFilePath, '', workingContent),
170
+ });
171
+ }
172
+ }
173
+ }
174
+ }
117
175
  const summary = {
118
176
  totalFiles: diffs.length,
119
177
  addedFiles: diffs.filter((d) => d.type === 'added').length,
@@ -1 +1 @@
1
- {"version":3,"file":"diff-utils.js","sourceRoot":"","sources":["../../src/diff/diff-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-utils.js","sourceRoot":"","sources":["../../src/diff/diff-utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from './diff-project.js';
2
2
  export * from './diff-utils.js';
3
3
  export * from './formatters.js';
4
+ export * from './snapshot/index.js';
4
5
  export type * from './types.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,mBAAmB,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './diff-project.js';
2
2
  export * from './diff-utils.js';
3
3
  export * from './formatters.js';
4
+ export * from './snapshot/index.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SnapshotManifest } from './snapshot-types.js';
2
+ export declare function applySnapshotToFileContents(relativePath: string, generatedContents: string | Buffer, snapshot: SnapshotManifest, diffDirectory: string): Promise<string | Buffer | undefined | false>;
3
+ //# sourceMappingURL=apply-diff-to-file-contents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-diff-to-file-contents.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/apply-diff-to-file-contents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,GAAG,MAAM,EAClC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,CA4B9C"}
@@ -0,0 +1,26 @@
1
+ import { handleFileNotFoundError } from '@baseplate-dev/utils/node';
2
+ import { applyPatch } from 'diff';
3
+ import { readFile } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ export async function applySnapshotToFileContents(relativePath, generatedContents, snapshot, diffDirectory) {
6
+ // If the file was purposely deleted, we skip the generation
7
+ if (snapshot.files.deleted.includes(relativePath)) {
8
+ return undefined;
9
+ }
10
+ // We do not support applying diffs to binary files
11
+ if (Buffer.isBuffer(generatedContents)) {
12
+ return generatedContents;
13
+ }
14
+ // Check for modified files
15
+ const fileEntry = snapshot.files.modified.find((file) => file.path === relativePath);
16
+ if (!fileEntry) {
17
+ return generatedContents;
18
+ }
19
+ const diffFilePath = path.join(diffDirectory, fileEntry.diffFile);
20
+ const diffFile = await readFile(diffFilePath, 'utf-8').catch(handleFileNotFoundError);
21
+ if (!diffFile) {
22
+ throw new Error(`Diff file not found: ${diffFilePath}`);
23
+ }
24
+ return applyPatch(generatedContents, diffFile);
25
+ }
26
+ //# sourceMappingURL=apply-diff-to-file-contents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-diff-to-file-contents.js","sourceRoot":"","sources":["../../../src/diff/snapshot/apply-diff-to-file-contents.ts"],"names":[],"mappings":"AAAA,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,2BAA2B,CAC/C,YAAoB,EACpB,iBAAkC,EAClC,QAA0B,EAC1B,aAAqB;IAErB,4DAA4D;IAC5D,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CACrC,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAC1D,uBAAuB,CACxB,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,UAAU,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GeneratorOutput } from '@baseplate-dev/sync';
2
+ import type { SnapshotManifest } from './snapshot-types.js';
3
+ export declare function applySnapshotToGeneratorOutput(generatorOutput: GeneratorOutput, snapshot: SnapshotManifest, diffDirectory: string): Promise<GeneratorOutput>;
4
+ //# sourceMappingURL=apply-diff-to-generator-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-diff-to-generator-output.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/apply-diff-to-generator-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CAiC1B"}
@@ -0,0 +1,28 @@
1
+ import { handleFileNotFoundError } from '@baseplate-dev/utils/node';
2
+ import { applyPatch } from 'diff';
3
+ import { readFile } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ export async function applySnapshotToGeneratorOutput(generatorOutput, snapshot, diffDirectory) {
6
+ const generatorFiles = new Map([...generatorOutput.files].filter(([filePath]) => !snapshot.files.deleted.includes(filePath)));
7
+ for (const fileEntry of snapshot.files.modified) {
8
+ const fileData = generatorFiles.get(fileEntry.path);
9
+ if (!fileData) {
10
+ throw new Error(`File not found in generator output: ${fileEntry.path}. Please run snapshot fix-diff to fix the diffs.`);
11
+ }
12
+ const diffFilePath = path.join(diffDirectory, fileEntry.diffFile);
13
+ const diffFile = await readFile(diffFilePath, 'utf-8').catch(handleFileNotFoundError);
14
+ if (!diffFile) {
15
+ throw new Error(`Diff file not found: ${diffFilePath}`);
16
+ }
17
+ const newContents = applyPatch(fileData.contents.toString(), diffFile);
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.`);
20
+ }
21
+ fileData.contents = newContents;
22
+ }
23
+ return {
24
+ ...generatorOutput,
25
+ files: generatorFiles,
26
+ };
27
+ }
28
+ //# sourceMappingURL=apply-diff-to-generator-output.js.map
@@ -0,0 +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"}
@@ -0,0 +1,41 @@
1
+ import type { SchemaParserContext } from '@baseplate-dev/project-builder-lib';
2
+ import type { Logger } from '@baseplate-dev/sync';
3
+ import type { BaseplateUserConfig } from '#src/user-config/user-config-schema.js';
4
+ /**
5
+ * Options for creating snapshots
6
+ */
7
+ export interface CreateSnapshotForProjectOptions {
8
+ /**
9
+ * The directory to create snapshot in.
10
+ */
11
+ projectDirectory: string;
12
+ /**
13
+ * The app to create a snapshot for.
14
+ */
15
+ app: string;
16
+ /**
17
+ * The logger to use for logging.
18
+ */
19
+ logger: Logger;
20
+ /**
21
+ * The context to use for parsing the project.
22
+ */
23
+ context: SchemaParserContext;
24
+ /**
25
+ * The user config to use for building the project.
26
+ */
27
+ userConfig: BaseplateUserConfig;
28
+ /**
29
+ * Whether to use .baseplateignore file for filtering.
30
+ */
31
+ useIgnoreFile?: boolean;
32
+ /**
33
+ * Custom snapshot directory name.
34
+ */
35
+ snapshotDir?: string;
36
+ }
37
+ /**
38
+ * Creates a snapshot of the current diff state for a particular app
39
+ */
40
+ export declare function createSnapshotForProject(options: CreateSnapshotForProjectOptions): Promise<void>;
41
+ //# sourceMappingURL=create-snapshot-for-project.d.ts.map
@@ -0,0 +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,CAiEf"}