@baseplate-dev/project-builder-server 0.5.3 → 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.
- package/CHANGELOG.md +55 -0
- package/dist/actions/__tests__/action-test-utils.d.ts +24 -0
- package/dist/actions/__tests__/action-test-utils.d.ts.map +1 -0
- package/dist/actions/__tests__/action-test-utils.js +33 -0
- package/dist/actions/__tests__/action-test-utils.js.map +1 -0
- package/dist/actions/definition/commit-draft.action.d.ts +16 -0
- package/dist/actions/definition/commit-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/commit-draft.action.js +65 -0
- package/dist/actions/definition/commit-draft.action.js.map +1 -0
- package/dist/actions/definition/discard-draft.action.d.ts +7 -0
- package/dist/actions/definition/discard-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/discard-draft.action.js +30 -0
- package/dist/actions/definition/discard-draft.action.js.map +1 -0
- package/dist/actions/definition/draft-session.d.ts +41 -0
- package/dist/actions/definition/draft-session.d.ts.map +1 -0
- package/dist/actions/definition/draft-session.js +117 -0
- package/dist/actions/definition/draft-session.js.map +1 -0
- package/dist/actions/definition/get-entity-schema.action.d.ts +10 -0
- package/dist/actions/definition/get-entity-schema.action.d.ts.map +1 -0
- package/dist/actions/definition/get-entity-schema.action.js +48 -0
- package/dist/actions/definition/get-entity-schema.action.js.map +1 -0
- package/dist/actions/definition/get-entity.action.d.ts +8 -0
- package/dist/actions/definition/get-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/get-entity.action.js +37 -0
- package/dist/actions/definition/get-entity.action.js.map +1 -0
- package/dist/actions/definition/index.d.ts +11 -0
- package/dist/actions/definition/index.d.ts.map +1 -0
- package/dist/actions/definition/index.js +11 -0
- package/dist/actions/definition/index.js.map +1 -0
- package/dist/actions/definition/list-entities.action.d.ts +13 -0
- package/dist/actions/definition/list-entities.action.d.ts.map +1 -0
- package/dist/actions/definition/list-entities.action.js +43 -0
- package/dist/actions/definition/list-entities.action.js.map +1 -0
- package/dist/actions/definition/list-entity-types.action.d.ts +10 -0
- package/dist/actions/definition/list-entity-types.action.d.ts.map +1 -0
- package/dist/actions/definition/list-entity-types.action.js +42 -0
- package/dist/actions/definition/list-entity-types.action.js.map +1 -0
- package/dist/actions/definition/load-entity-service-context.d.ts +14 -0
- package/dist/actions/definition/load-entity-service-context.d.ts.map +1 -0
- package/dist/actions/definition/load-entity-service-context.js +18 -0
- package/dist/actions/definition/load-entity-service-context.js.map +1 -0
- package/dist/actions/definition/show-draft.action.d.ts +18 -0
- package/dist/actions/definition/show-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/show-draft.action.js +117 -0
- package/dist/actions/definition/show-draft.action.js.map +1 -0
- package/dist/actions/definition/stage-create-entity.action.d.ts +19 -0
- package/dist/actions/definition/stage-create-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-create-entity.action.js +60 -0
- package/dist/actions/definition/stage-create-entity.action.js.map +1 -0
- package/dist/actions/definition/stage-delete-entity.action.d.ts +18 -0
- package/dist/actions/definition/stage-delete-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-delete-entity.action.js +55 -0
- package/dist/actions/definition/stage-delete-entity.action.js.map +1 -0
- package/dist/actions/definition/stage-update-entity.action.d.ts +19 -0
- package/dist/actions/definition/stage-update-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-update-entity.action.js +59 -0
- package/dist/actions/definition/stage-update-entity.action.js.map +1 -0
- package/dist/actions/definition/validate-draft.d.ts +17 -0
- package/dist/actions/definition/validate-draft.d.ts.map +1 -0
- package/dist/actions/definition/validate-draft.js +25 -0
- package/dist/actions/definition/validate-draft.js.map +1 -0
- package/dist/actions/index.d.ts +3 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +3 -0
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts +169 -92
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +17 -1
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.d.ts +0 -1
- package/dist/actions/snapshot/snapshot-add.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.js +3 -7
- package/dist/actions/snapshot/snapshot-add.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.d.ts +0 -1
- package/dist/actions/snapshot/snapshot-remove.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.js +3 -7
- package/dist/actions/snapshot/snapshot-remove.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.d.ts +2 -2
- package/dist/actions/snapshot/snapshot-save.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.js +23 -11
- package/dist/actions/snapshot/snapshot-save.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.d.ts +5 -2
- package/dist/actions/snapshot/snapshot-show.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.js +17 -19
- package/dist/actions/snapshot/snapshot-show.action.js.map +1 -1
- package/dist/actions/sync/sync-all-projects.action.d.ts.map +1 -1
- package/dist/actions/sync/sync-all-projects.action.js +3 -2
- package/dist/actions/sync/sync-all-projects.action.js.map +1 -1
- package/dist/actions/sync/sync-file.action.js +1 -1
- package/dist/actions/sync/sync-file.action.js.map +1 -1
- package/dist/actions/sync/sync-project.action.d.ts +1 -1
- package/dist/actions/sync/sync-project.action.d.ts.map +1 -1
- package/dist/actions/sync/sync-project.action.js +20 -6
- package/dist/actions/sync/sync-project.action.js.map +1 -1
- package/dist/actions/test-project/index.d.ts +2 -0
- package/dist/actions/test-project/index.d.ts.map +1 -0
- package/dist/actions/test-project/index.js +2 -0
- package/dist/actions/test-project/index.js.map +1 -0
- package/dist/actions/test-project/test-project-init.action.d.ts +17 -0
- package/dist/actions/test-project/test-project-init.action.d.ts.map +1 -0
- package/dist/actions/test-project/test-project-init.action.js +97 -0
- package/dist/actions/test-project/test-project-init.action.js.map +1 -0
- package/dist/actions/types.d.ts +2 -0
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.js.map +1 -1
- package/dist/actions/utils/generation-manifest.d.ts +12 -0
- package/dist/actions/utils/generation-manifest.d.ts.map +1 -0
- package/dist/actions/utils/generation-manifest.js +142 -0
- package/dist/actions/utils/generation-manifest.js.map +1 -0
- package/dist/actions/utils/index.d.ts +1 -1
- package/dist/actions/utils/index.d.ts.map +1 -1
- package/dist/actions/utils/index.js +1 -1
- package/dist/actions/utils/index.js.map +1 -1
- package/dist/actions/utils/project-discovery.d.ts +23 -9
- package/dist/actions/utils/project-discovery.d.ts.map +1 -1
- package/dist/actions/utils/project-discovery.js +57 -31
- package/dist/actions/utils/project-discovery.js.map +1 -1
- package/dist/actions/utils/projects.d.ts.map +1 -1
- package/dist/actions/utils/projects.js +2 -1
- package/dist/actions/utils/projects.js.map +1 -1
- package/dist/compiler/backend/{authorizers.d.ts → authorizer-compiler.d.ts} +22 -2
- package/dist/compiler/backend/authorizer-compiler.d.ts.map +1 -0
- package/dist/compiler/backend/authorizer-compiler.js +165 -0
- package/dist/compiler/backend/authorizer-compiler.js.map +1 -0
- package/dist/compiler/backend/feature.d.ts.map +1 -1
- package/dist/compiler/backend/feature.js +3 -1
- package/dist/compiler/backend/feature.js.map +1 -1
- package/dist/compiler/backend/graphql.d.ts.map +1 -1
- package/dist/compiler/backend/graphql.js +108 -49
- package/dist/compiler/backend/graphql.js.map +1 -1
- package/dist/compiler/backend/models.d.ts.map +1 -1
- package/dist/compiler/backend/models.js +13 -13
- package/dist/compiler/backend/models.js.map +1 -1
- package/dist/compiler/backend/query-filter-compiler.d.ts +40 -0
- package/dist/compiler/backend/query-filter-compiler.d.ts.map +1 -0
- package/dist/compiler/backend/query-filter-compiler.js +168 -0
- package/dist/compiler/backend/query-filter-compiler.js.map +1 -0
- package/dist/compiler/backend/services.d.ts.map +1 -1
- package/dist/compiler/backend/services.js +24 -1
- package/dist/compiler/backend/services.js.map +1 -1
- package/dist/compiler/index.d.ts +1 -0
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/root/root-package-compiler.js +6 -6
- package/dist/compiler/root/root-package-compiler.js.map +1 -1
- package/dist/compiler/web/admin/crud/index.js +1 -1
- package/dist/compiler/web/admin/crud/index.js.map +1 -1
- package/dist/compiler/web/admin/index.js +1 -1
- package/dist/compiler/web/admin/index.js.map +1 -1
- package/dist/compiler/web/admin/sections.d.ts.map +1 -1
- package/dist/compiler/web/admin/sections.js +2 -2
- package/dist/compiler/web/admin/sections.js.map +1 -1
- package/dist/compiler/web/web-compiler.d.ts.map +1 -1
- package/dist/compiler/web/web-compiler.js +4 -4
- package/dist/compiler/web/web-compiler.js.map +1 -1
- package/dist/core-modules/admin-crud-column-compiler.js +1 -1
- package/dist/core-modules/admin-crud-column-compiler.js.map +1 -1
- package/dist/core-modules/admin-crud-input-compiler.d.ts.map +1 -1
- package/dist/core-modules/admin-crud-input-compiler.js +13 -3
- package/dist/core-modules/admin-crud-input-compiler.js.map +1 -1
- package/dist/dev-server/api/router.d.ts +8 -7
- package/dist/dev-server/api/router.d.ts.map +1 -1
- package/dist/dev-server/mcp/stdio.d.ts +2 -2
- package/dist/dev-server/mcp/stdio.d.ts.map +1 -1
- package/dist/dev-server/mcp/stdio.js +2 -2
- package/dist/dev-server/mcp/stdio.js.map +1 -1
- package/dist/diff/diff-project.d.ts.map +1 -1
- package/dist/diff/diff-project.js +4 -4
- package/dist/diff/diff-project.js.map +1 -1
- package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts.map +1 -1
- package/dist/diff/snapshot/apply-diff-to-generator-output.js +17 -2
- package/dist/diff/snapshot/apply-diff-to-generator-output.js.map +1 -1
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts +12 -6
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts.map +1 -1
- package/dist/diff/snapshot/create-snapshot-for-project.js +58 -26
- package/dist/diff/snapshot/create-snapshot-for-project.js.map +1 -1
- package/dist/diff/snapshot/index.d.ts +4 -1
- package/dist/diff/snapshot/index.d.ts.map +1 -1
- package/dist/diff/snapshot/index.js +4 -0
- package/dist/diff/snapshot/index.js.map +1 -1
- package/dist/diff/snapshot/save-snapshot.d.ts +11 -3
- package/dist/diff/snapshot/save-snapshot.d.ts.map +1 -1
- package/dist/diff/snapshot/save-snapshot.js +29 -10
- package/dist/diff/snapshot/save-snapshot.js.map +1 -1
- package/dist/diff/snapshot/snapshot-management.d.ts +7 -6
- package/dist/diff/snapshot/snapshot-management.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-management.js +18 -22
- package/dist/diff/snapshot/snapshot-management.js.map +1 -1
- package/dist/diff/snapshot/snapshot-manifest.d.ts +1 -1
- package/dist/diff/snapshot/snapshot-manifest.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-manifest.js +7 -7
- package/dist/diff/snapshot/snapshot-manifest.js.map +1 -1
- package/dist/diff/snapshot/snapshot-types.d.ts +22 -8
- package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-types.js +6 -2
- package/dist/diff/snapshot/snapshot-types.js.map +1 -1
- package/dist/diff/snapshot/snapshot-utils.d.ts +14 -5
- package/dist/diff/snapshot/snapshot-utils.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-utils.js +25 -8
- package/dist/diff/snapshot/snapshot-utils.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/plugins/node-plugin-store.d.ts +1 -1
- package/dist/plugins/node-plugin-store.d.ts.map +1 -1
- package/dist/plugins/node-plugin-store.js +2 -2
- package/dist/plugins/node-plugin-store.js.map +1 -1
- package/dist/project-definition/load-project-definition.d.ts +2 -2
- package/dist/project-definition/load-project-definition.d.ts.map +1 -1
- package/dist/project-definition/load-project-definition.js +3 -3
- package/dist/project-definition/load-project-definition.js.map +1 -1
- package/dist/sync/generate-for-directory.d.ts +3 -2
- package/dist/sync/generate-for-directory.d.ts.map +1 -1
- package/dist/sync/generate-for-directory.js +24 -11
- package/dist/sync/generate-for-directory.js.map +1 -1
- package/dist/sync/sync-project.d.ts +3 -3
- package/dist/sync/sync-project.d.ts.map +1 -1
- package/dist/sync/sync-project.js +9 -3
- package/dist/sync/sync-project.js.map +1 -1
- package/dist/templates/create/create-generator.d.ts.map +1 -1
- package/dist/templates/create/create-generator.js +3 -3
- package/dist/templates/create/create-generator.js.map +1 -1
- package/dist/user-config/user-config-schema.d.ts +12 -0
- package/dist/user-config/user-config-schema.d.ts.map +1 -1
- package/dist/user-config/user-config-schema.js +29 -0
- package/dist/user-config/user-config-schema.js.map +1 -1
- package/package.json +17 -14
- package/dist/actions/utils/is-example-project.d.ts +0 -7
- package/dist/actions/utils/is-example-project.d.ts.map +0 -1
- package/dist/actions/utils/is-example-project.js +0 -22
- package/dist/actions/utils/is-example-project.js.map +0 -1
- package/dist/compiler/backend/authorizers.d.ts.map +0 -1
- package/dist/compiler/backend/authorizers.js +0 -75
- package/dist/compiler/backend/authorizers.js.map +0 -1
- package/dist/project-definition/get-single-app-directory-for-project.d.ts +0 -11
- package/dist/project-definition/get-single-app-directory-for-project.d.ts.map +0 -1
- package/dist/project-definition/get-single-app-directory-for-project.js +0 -19
- 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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
33
|
+
* Custom baseplate directory. Defaults to `path.join(projectDirectory, 'baseplate')`.
|
|
34
34
|
*/
|
|
35
|
-
|
|
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
|
|
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<
|
|
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,
|
|
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
|
|
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,
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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":"
|
|
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,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
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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;
|
|
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(
|
|
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(
|
|
22
|
+
const diffSummary = await compareFiles(appDirectory, generatorOutput, undefined, ignoreInstance);
|
|
16
23
|
// Create snapshot directory structure
|
|
17
|
-
const snapshotDirectory = await createSnapshotDirectory(
|
|
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:
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
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;
|
|
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,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,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,EACtB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAqB7B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAAoB,EACpB,gBAAwB,EACxB,OAAe,EACf,eAAgC,EAChC,EACE,cAAc,EACd,kBAAkB,EAClB,wBAAwB,GAAG,KAAK,MACT,EAAE;IAE3B,MAAM,oBAAoB,GAAG,mBAAmB,CAC9C,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;IAEF,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,YAAY,EACZ,eAAe,EACf,SAAS,EACT,cAAc,CACf,CAAC;IAEF,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CACrD,oBAAoB,EACpB,OAAO,CACR,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,cAAc,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAClD,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,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,CAAC,wBAAwB,IAAI;oBAC9B,WAAW,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC/C,CAAC;aACH,CAAC,CAAC;YACH,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,gCAAgC;IAChC,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,2EAA2E;IAC3E,IAAI,wBAAwB,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,iBAAiB,CAAC,SAAS,EAC3B,eAAe,CAChB,CAAC;YACF,MAAM,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC;IACH,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"}
|
|
@@ -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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
24
|
-
|
|
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,
|
|
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;
|
|
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,
|
|
15
|
+
export async function addFilesToSnapshot(relativePaths, isDeleted, { projectDirectory, baseplateDirectory, appName, context, logger, generatorOperations = DEFAULT_GENERATOR_OPERATIONS, }) {
|
|
17
16
|
try {
|
|
18
|
-
const
|
|
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(
|
|
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
|
|
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,
|
|
80
|
+
export async function removeFilesFromSnapshot(relativePaths, { projectDirectory, appName, baseplateDirectory, logger, }) {
|
|
83
81
|
try {
|
|
84
|
-
const
|
|
85
|
-
const
|
|
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,
|
|
112
|
+
export async function listSnapshotContents({ projectDirectory, baseplateDirectory, appName, logger, }) {
|
|
114
113
|
try {
|
|
115
|
-
const
|
|
116
|
-
const
|
|
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
|
|
135
|
-
logger.info(` ${
|
|
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
|
|
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,
|
|
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: [
|
|
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((
|
|
98
|
+
added: manifest.files.added.filter((entry) => entry.path !== filePath),
|
|
99
99
|
deleted: manifest.files.deleted.filter((path) => path !== filePath),
|
|
100
100
|
},
|
|
101
101
|
};
|