@baseplate-dev/project-builder-server 0.2.5 → 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 +1 -2
- 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/index.d.ts.map +1 -1
- package/dist/compiler/index.js +0 -4
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/web/admin/crud/displays.d.ts +5 -0
- package/dist/compiler/web/admin/crud/displays.d.ts.map +1 -0
- package/dist/compiler/web/admin/crud/displays.js.map +1 -0
- package/dist/compiler/web/admin/crud/index.d.ts +5 -0
- package/dist/compiler/web/admin/crud/index.d.ts.map +1 -0
- package/dist/compiler/web/admin/crud/index.js.map +1 -0
- package/dist/compiler/web/admin/crud/inputs.d.ts +5 -0
- package/dist/compiler/web/admin/crud/inputs.d.ts.map +1 -0
- package/dist/compiler/web/admin/crud/inputs.js.map +1 -0
- package/dist/compiler/web/admin/index.d.ts +5 -0
- package/dist/compiler/web/admin/index.d.ts.map +1 -0
- package/dist/compiler/web/admin/index.js +10 -0
- package/dist/compiler/web/admin/index.js.map +1 -0
- package/dist/compiler/web/admin/sections.d.ts +5 -0
- package/dist/compiler/web/admin/sections.d.ts.map +1 -0
- package/dist/compiler/{admin → web/admin}/sections.js +2 -1
- package/dist/compiler/web/admin/sections.js.map +1 -0
- package/dist/compiler/web/index.d.ts.map +1 -1
- package/dist/compiler/web/index.js +72 -6
- 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/compiler/admin/crud/displays.d.ts +0 -5
- package/dist/compiler/admin/crud/displays.d.ts.map +0 -1
- package/dist/compiler/admin/crud/displays.js.map +0 -1
- package/dist/compiler/admin/crud/index.d.ts +0 -5
- package/dist/compiler/admin/crud/index.d.ts.map +0 -1
- package/dist/compiler/admin/crud/index.js.map +0 -1
- package/dist/compiler/admin/crud/inputs.d.ts +0 -5
- package/dist/compiler/admin/crud/inputs.d.ts.map +0 -1
- package/dist/compiler/admin/crud/inputs.js.map +0 -1
- package/dist/compiler/admin/index.d.ts +0 -3
- package/dist/compiler/admin/index.d.ts.map +0 -1
- package/dist/compiler/admin/index.js +0 -102
- package/dist/compiler/admin/index.js.map +0 -1
- package/dist/compiler/admin/sections.d.ts +0 -5
- package/dist/compiler/admin/sections.d.ts.map +0 -1
- package/dist/compiler/admin/sections.js.map +0 -1
- /package/dist/compiler/{admin → web/admin}/crud/displays.js +0 -0
- /package/dist/compiler/{admin → web/admin}/crud/index.js +0 -0
- /package/dist/compiler/{admin → web/admin}/crud/inputs.js +0 -0
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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { buildGeneratorEntry, executeGeneratorEntry, formatGeneratorOutput, loadIgnorePatterns, } from '@baseplate-dev/sync';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { compileApplications } from '#src/compiler/index.js';
|
|
4
|
+
import { loadProjectDefinition } from '#src/project-definition/index.js';
|
|
5
|
+
import { createTemplateMetadataOptions } from '#src/sync/template-metadata-utils.js';
|
|
6
|
+
import { saveSnapshot } from './save-snapshot.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a snapshot of the current diff state for a particular app
|
|
9
|
+
*/
|
|
10
|
+
export async function createSnapshotForProject(options) {
|
|
11
|
+
const { projectDirectory: directory, app: appName, logger, context, useIgnoreFile = true, snapshotDir, } = options;
|
|
12
|
+
try {
|
|
13
|
+
logger.info('Loading project definition...');
|
|
14
|
+
const { definition: projectJson } = await loadProjectDefinition(directory, context);
|
|
15
|
+
logger.info('Compiling applications...');
|
|
16
|
+
const apps = compileApplications(projectJson, context);
|
|
17
|
+
// Filter apps if specified
|
|
18
|
+
const app = apps.find((app) => appName === app.name);
|
|
19
|
+
if (!app) {
|
|
20
|
+
throw new Error(`No applications found named ${appName}. Available apps: ${apps.map((a) => a.name).join(', ')}`);
|
|
21
|
+
}
|
|
22
|
+
const appDirectory = path.join(directory, app.appDirectory);
|
|
23
|
+
logger.info(`Creating snapshot for app: ${app.name} (${app.appDirectory})`);
|
|
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
|
+
logger.info('✓ Snapshots created successfully');
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger.error(`Error creating snapshot: ${String(error)}`);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=create-snapshot-for-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-snapshot-for-project.js","sourceRoot":"","sources":["../../../src/diff/snapshot/create-snapshot-for-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './apply-diff-to-file-contents.js';
|
|
2
|
+
export * from './apply-diff-to-generator-output.js';
|
|
3
|
+
export * from './create-snapshot-for-project.js';
|
|
4
|
+
export * from './snapshot-management.js';
|
|
5
|
+
export type * from './snapshot-types.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,mBAAmB,qBAAqB,CAAC"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot creation functionality
|
|
3
|
+
*/
|
|
4
|
+
import type { GeneratorOutput } from '@baseplate-dev/sync';
|
|
5
|
+
import type ignore from 'ignore';
|
|
6
|
+
interface SaveSnapshotOptions {
|
|
7
|
+
ignoreInstance?: ignore.Ignore;
|
|
8
|
+
snapshotDir?: string;
|
|
9
|
+
}
|
|
10
|
+
interface SaveSnapshotResult {
|
|
11
|
+
/** Path to the created snapshot directory */
|
|
12
|
+
snapshotPath: string;
|
|
13
|
+
/** Number of files included in the snapshot */
|
|
14
|
+
fileCount: {
|
|
15
|
+
modified: number;
|
|
16
|
+
added: number;
|
|
17
|
+
deleted: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates a snapshot from the current diff state
|
|
22
|
+
*/
|
|
23
|
+
export declare function saveSnapshot(directory: string, generatorOutput: GeneratorOutput, { ignoreInstance, snapshotDir }?: SaveSnapshotOptions): Promise<SaveSnapshotResult>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=save-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-snapshot.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAejC,UAAU,mBAAmB;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,EAAE,cAAc,EAAE,WAAW,EAAE,GAAE,mBAAwB,GACxD,OAAO,CAAC,kBAAkB,CAAC,CA+D7B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot creation functionality
|
|
3
|
+
*/
|
|
4
|
+
import { mkdir, rm } from 'node:fs/promises';
|
|
5
|
+
import { compareFiles } from '../diff-utils.js';
|
|
6
|
+
import { saveSnapshotDiffFile } from './snapshot-diff-utils.js';
|
|
7
|
+
import { saveSnapshotManifest } from './snapshot-manifest.js';
|
|
8
|
+
import { SNAPSHOT_VERSION } from './snapshot-types.js';
|
|
9
|
+
import { createSnapshotDirectory, pathToSafeDiffFilename, } from './snapshot-utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Creates a snapshot from the current diff state
|
|
12
|
+
*/
|
|
13
|
+
export async function saveSnapshot(directory, generatorOutput, { ignoreInstance, snapshotDir } = {}) {
|
|
14
|
+
// Get current diff state
|
|
15
|
+
const diffSummary = await compareFiles(directory, generatorOutput, undefined, ignoreInstance);
|
|
16
|
+
// Create snapshot directory structure
|
|
17
|
+
const snapshotDirectory = await createSnapshotDirectory(directory, snapshotDir);
|
|
18
|
+
// Create manifest
|
|
19
|
+
const { diffs } = diffSummary;
|
|
20
|
+
// For now, we ignore binary modifications
|
|
21
|
+
const modifiedTextDiffs = diffs.filter((diff) => diff.type === 'modified' && !diff.isBinary);
|
|
22
|
+
const manifest = {
|
|
23
|
+
version: SNAPSHOT_VERSION,
|
|
24
|
+
files: {
|
|
25
|
+
modified: modifiedTextDiffs.map((diff) => ({
|
|
26
|
+
path: diff.path,
|
|
27
|
+
diffFile: pathToSafeDiffFilename(diff.path),
|
|
28
|
+
})),
|
|
29
|
+
added: diffs
|
|
30
|
+
.filter((diff) => diff.type === 'added')
|
|
31
|
+
.map((diff) => diff.path),
|
|
32
|
+
deleted: diffs
|
|
33
|
+
.filter((diff) => diff.type === 'deleted')
|
|
34
|
+
.map((diff) => diff.path),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
// Clear out existing diffs
|
|
38
|
+
await rm(snapshotDirectory.diffsPath, { recursive: true });
|
|
39
|
+
await mkdir(snapshotDirectory.diffsPath, { recursive: true });
|
|
40
|
+
// Save diffs to diffs folder
|
|
41
|
+
for (const diff of modifiedTextDiffs) {
|
|
42
|
+
await saveSnapshotDiffFile(snapshotDirectory, diff.path, diff.generatedContent, diff.workingContent);
|
|
43
|
+
}
|
|
44
|
+
// Save manifest
|
|
45
|
+
await saveSnapshotManifest(snapshotDirectory, manifest);
|
|
46
|
+
return {
|
|
47
|
+
snapshotPath: snapshotDirectory.path,
|
|
48
|
+
fileCount: {
|
|
49
|
+
modified: manifest.files.modified.length,
|
|
50
|
+
added: manifest.files.added.length,
|
|
51
|
+
deleted: manifest.files.deleted.length,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=save-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-snapshot.js","sourceRoot":"","sources":["../../../src/diff/snapshot/save-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAkB7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,eAAgC,EAChC,EAAE,cAAc,EAAE,WAAW,KAA0B,EAAE;IAEzD,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,SAAS,EACT,eAAe,EACf,SAAS,EACT,cAAc,CACf,CAAC;IAEF,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CACrD,SAAS,EACT,WAAW,CACZ,CAAC;IAEF,kBAAkB;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAE9B,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CACrD,CAAC;IACF,MAAM,QAAQ,GAAqB;QACjC,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE;YACL,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5C,CAAC,CAAC;YACH,KAAK,EAAE,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;iBACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,KAAK;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;iBACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5B;KACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,6BAA6B;IAC7B,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,oBAAoB,CACxB,iBAAiB,EACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExD,OAAO;QACL,YAAY,EAAE,iBAAiB,CAAC,IAAI;QACpC,SAAS,EAAE;YACT,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACxC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAClC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;SACvC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SnapshotDirectory } from './snapshot-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates and saves a diff file for a modified file
|
|
4
|
+
*/
|
|
5
|
+
export declare function saveSnapshotDiffFile(snapshotDirectory: SnapshotDirectory, relativePath: string, generatedContent: string, workingContent: string): Promise<string>;
|
|
6
|
+
export declare function removeSnapshotDiffFile(snapshotDirectory: SnapshotDirectory, diffFileName: string): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=snapshot-diff-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-diff-utils.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-diff-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createPatch } from 'diff';
|
|
2
|
+
import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { pathToSafeDiffFilename } from './snapshot-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates and saves a diff file for a modified file
|
|
7
|
+
*/
|
|
8
|
+
export async function saveSnapshotDiffFile(snapshotDirectory, relativePath, generatedContent, workingContent) {
|
|
9
|
+
const diffContent = createPatch(relativePath, generatedContent, workingContent);
|
|
10
|
+
const diffFileName = pathToSafeDiffFilename(relativePath);
|
|
11
|
+
const diffFilePath = path.join(snapshotDirectory.diffsPath, diffFileName);
|
|
12
|
+
await mkdir(path.dirname(diffFilePath), { recursive: true });
|
|
13
|
+
await writeFile(diffFilePath, diffContent, 'utf8');
|
|
14
|
+
return diffFileName;
|
|
15
|
+
}
|
|
16
|
+
export async function removeSnapshotDiffFile(snapshotDirectory, diffFileName) {
|
|
17
|
+
const diffFilePath = path.join(snapshotDirectory.diffsPath, diffFileName);
|
|
18
|
+
await rm(diffFilePath);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=snapshot-diff-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-diff-utils.js","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-diff-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,iBAAoC,EACpC,YAAoB,EACpB,gBAAwB,EACxB,cAAsB;IAEtB,MAAM,WAAW,GAAG,WAAW,CAC7B,YAAY,EACZ,gBAAgB,EAChB,cAAc,CACf,CAAC;IACF,MAAM,YAAY,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE1E,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,iBAAoC,EACpC,YAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SchemaParserContext } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import type { Logger } from '@baseplate-dev/sync';
|
|
3
|
+
import type { GeneratorOperations } from '#src/sync/types.js';
|
|
4
|
+
export interface SnapshotManagementOptions {
|
|
5
|
+
projectDirectory: string;
|
|
6
|
+
appName: string;
|
|
7
|
+
snapshotDirectory?: string;
|
|
8
|
+
context: SchemaParserContext;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
generatorOperations?: GeneratorOperations;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Adds files to snapshot
|
|
14
|
+
*/
|
|
15
|
+
export declare function addFilesToSnapshot(relativePaths: string[], isDeleted: boolean, { projectDirectory, snapshotDirectory, appName, context, logger, generatorOperations, }: SnapshotManagementOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Removes files from snapshot
|
|
18
|
+
*/
|
|
19
|
+
export declare function removeFilesFromSnapshot(relativePaths: string[], { projectDirectory, appName, snapshotDirectory, context, logger, }: SnapshotManagementOptions): Promise<void>;
|
|
20
|
+
export interface SnapshotListOptions {
|
|
21
|
+
projectDirectory: string;
|
|
22
|
+
appName: string;
|
|
23
|
+
snapshotDirectory?: string;
|
|
24
|
+
context: SchemaParserContext;
|
|
25
|
+
logger: Logger;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Lists snapshot contents
|
|
29
|
+
*/
|
|
30
|
+
export declare function listSnapshotContents({ projectDirectory, snapshotDirectory, appName, context, logger, }: SnapshotListOptions): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=snapshot-management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-management.d.ts","sourceRoot":"","sources":["../../../src/diff/snapshot/snapshot-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAOlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoB9D,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,EACE,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,EACN,mBAAkD,GACnD,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiGf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EAAE,EACvB,EACE,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,MAAM,GACP,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDrC"}
|