@baseplate-dev/project-builder-server 0.2.6 → 0.3.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.
- package/dist/api/index.d.ts +3 -3
- package/dist/api/sync.d.ts +3 -3
- package/dist/compiler/app-entry-builder.d.ts.map +1 -1
- package/dist/compiler/app-entry-builder.js +3 -5
- package/dist/compiler/app-entry-builder.js.map +1 -1
- package/dist/compiler/web/index.d.ts.map +1 -1
- package/dist/compiler/web/index.js +2 -1
- package/dist/compiler/web/index.js.map +1 -1
- package/dist/diff/diff-project.d.ts.map +1 -1
- package/dist/diff/diff-project.js +22 -5
- package/dist/diff/diff-project.js.map +1 -1
- package/dist/diff/diff-utils.d.ts +7 -3
- package/dist/diff/diff-utils.d.ts.map +1 -1
- package/dist/diff/diff-utils.js +80 -22
- package/dist/diff/diff-utils.js.map +1 -1
- package/dist/diff/index.d.ts +1 -0
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +1 -0
- package/dist/diff/index.js.map +1 -1
- package/dist/diff/snapshot/apply-diff-to-file-contents.d.ts +3 -0
- package/dist/diff/snapshot/apply-diff-to-file-contents.d.ts.map +1 -0
- package/dist/diff/snapshot/apply-diff-to-file-contents.js +26 -0
- package/dist/diff/snapshot/apply-diff-to-file-contents.js.map +1 -0
- package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts +4 -0
- package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts.map +1 -0
- package/dist/diff/snapshot/apply-diff-to-generator-output.js +28 -0
- package/dist/diff/snapshot/apply-diff-to-generator-output.js.map +1 -0
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts +41 -0
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts.map +1 -0
- package/dist/diff/snapshot/create-snapshot-for-project.js +48 -0
- package/dist/diff/snapshot/create-snapshot-for-project.js.map +1 -0
- package/dist/diff/snapshot/index.d.ts +6 -0
- package/dist/diff/snapshot/index.d.ts.map +1 -0
- package/dist/diff/snapshot/index.js +5 -0
- package/dist/diff/snapshot/index.js.map +1 -0
- package/dist/diff/snapshot/save-snapshot.d.ts +25 -0
- package/dist/diff/snapshot/save-snapshot.d.ts.map +1 -0
- package/dist/diff/snapshot/save-snapshot.js +55 -0
- package/dist/diff/snapshot/save-snapshot.js.map +1 -0
- package/dist/diff/snapshot/snapshot-diff-utils.d.ts +7 -0
- package/dist/diff/snapshot/snapshot-diff-utils.d.ts.map +1 -0
- package/dist/diff/snapshot/snapshot-diff-utils.js +20 -0
- package/dist/diff/snapshot/snapshot-diff-utils.js.map +1 -0
- package/dist/diff/snapshot/snapshot-management.d.ts +31 -0
- package/dist/diff/snapshot/snapshot-management.d.ts.map +1 -0
- package/dist/diff/snapshot/snapshot-management.js +154 -0
- package/dist/diff/snapshot/snapshot-management.js.map +1 -0
- package/dist/diff/snapshot/snapshot-manifest.d.ts +40 -0
- package/dist/diff/snapshot/snapshot-manifest.d.ts.map +1 -0
- package/dist/diff/snapshot/snapshot-manifest.js +113 -0
- package/dist/diff/snapshot/snapshot-manifest.js.map +1 -0
- package/dist/diff/snapshot/snapshot-types.d.ts +165 -0
- package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -0
- package/dist/diff/snapshot/snapshot-types.js +23 -0
- package/dist/diff/snapshot/snapshot-types.js.map +1 -0
- package/dist/diff/snapshot/snapshot-utils.d.ts +20 -0
- package/dist/diff/snapshot/snapshot-utils.d.ts.map +1 -0
- package/dist/diff/snapshot/snapshot-utils.js +51 -0
- package/dist/diff/snapshot/snapshot-utils.js.map +1 -0
- package/dist/diff/types.d.ts +38 -6
- package/dist/diff/types.d.ts.map +1 -1
- package/dist/project-definition/get-single-app-directory-for-project.d.ts +11 -0
- package/dist/project-definition/get-single-app-directory-for-project.d.ts.map +1 -0
- package/dist/project-definition/get-single-app-directory-for-project.js +18 -0
- package/dist/project-definition/get-single-app-directory-for-project.js.map +1 -0
- package/dist/project-definition/index.d.ts +2 -0
- package/dist/project-definition/index.d.ts.map +1 -0
- package/dist/project-definition/index.js +2 -0
- package/dist/project-definition/index.js.map +1 -0
- package/dist/project-definition/load-project-definition.d.ts +12 -0
- package/dist/project-definition/load-project-definition.d.ts.map +1 -0
- package/dist/project-definition/load-project-definition.js +34 -0
- package/dist/project-definition/load-project-definition.js.map +1 -0
- package/dist/server/plugin.js +6 -6
- package/dist/server/plugin.js.map +1 -1
- package/dist/sync/generate-for-directory.d.ts +5 -14
- package/dist/sync/generate-for-directory.d.ts.map +1 -1
- package/dist/sync/generate-for-directory.js +37 -30
- package/dist/sync/generate-for-directory.js.map +1 -1
- package/dist/sync/get-previous-generated-payload.d.ts +9 -0
- package/dist/sync/get-previous-generated-payload.d.ts.map +1 -0
- package/dist/sync/get-previous-generated-payload.js +23 -0
- package/dist/sync/get-previous-generated-payload.js.map +1 -0
- package/dist/sync/sync-project.d.ts +7 -3
- package/dist/sync/sync-project.d.ts.map +1 -1
- package/dist/sync/sync-project.js +5 -29
- package/dist/sync/sync-project.js.map +1 -1
- package/dist/sync/types.d.ts +14 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +15 -0
- package/dist/sync/types.js.map +1 -0
- package/package.json +12 -11
package/dist/api/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/api/sync.d.ts
CHANGED
|
@@ -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;
|
|
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:
|
|
38
|
-
appDirectory: this.appConfig
|
|
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,
|
|
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;
|
|
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":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,SAAS,yBAAyB,CAChC,OAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;QAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,IAC1B,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC;aACtE,IACL,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;KACnC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;
|
|
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;
|
|
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,
|
|
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":"AAMA,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
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):
|
|
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,
|
|
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;
|
|
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"}
|
package/dist/diff/diff-utils.js
CHANGED
|
@@ -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,
|
|
47
|
-
const patch = diff.createPatch(filePath,
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
138
|
+
type: 'modified',
|
|
139
|
+
generatedContent: generatedText,
|
|
140
|
+
workingContent: workingText,
|
|
141
|
+
unifiedDiff: createUnifiedDiff(filePath, generatedText, workingText),
|
|
110
142
|
});
|
|
111
143
|
}
|
|
112
144
|
}
|
|
113
145
|
}
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
//
|
|
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":"AAGA,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,YAAuB,EACvB,cAA8B;IAE9B,oDAAoD;IACpD,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE9C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"diff-utils.js","sourceRoot":"","sources":["../../src/diff/diff-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/index.d.ts
CHANGED
package/dist/diff/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/diff/index.js
CHANGED
package/dist/diff/index.js.map
CHANGED
|
@@ -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"}
|