@jakubmazanec/carson 1.2.5 → 1.3.0-next.c8df116c
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/build/template/CarsonTemplateError.d.ts +2 -2
- package/build/template/CarsonTemplateError.js +2 -1
- package/build/template/CarsonTemplateError.js.map +2 -2
- package/build/template/applyTemplateRenders.js +7 -7
- package/build/template/applyTemplateRenders.js.map +2 -2
- package/build/template/internals/TemplateRenderSnapshot.d.ts +3 -16
- package/build/template/internals/TemplateRenderSnapshot.js +1 -4
- package/build/template/internals/TemplateRenderSnapshot.js.map +2 -2
- package/build/template/internals/TemplateRenderSnapshots.d.ts +3 -16
- package/build/template/internals/createUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/createUsingTemplateRender.js.map +2 -2
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.d.ts +5 -0
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.js +24 -0
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals/insertUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/insertUsingTemplateRender.js.map +2 -2
- package/build/template/internals/loadTemplateRenderSnapshots.d.ts +1 -4
- package/build/template/internals/mergeUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/mergeUsingTemplateRender.js.map +2 -2
- package/build/template/internals/overwriteUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/overwriteUsingTemplateRender.js.map +2 -2
- package/build/template/internals/saveTemplateRenderSnapshots.js +40 -3
- package/build/template/internals/saveTemplateRenderSnapshots.js.map +2 -2
- package/build/template/internals/simplify.d.ts +4 -0
- package/build/template/internals/simplify.js +20 -0
- package/build/template/internals/simplify.js.map +7 -0
- package/build/template/internals/uninsertUsingTemplateRenderSnapshot.d.ts +2 -0
- package/build/template/internals/{uninsertUsingTemplateRender.js → uninsertUsingTemplateRenderSnapshot.js} +7 -16
- package/build/template/internals/uninsertUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals/unmergeUsingTemplateRenderSnapshot.d.ts +2 -0
- package/build/template/internals/{unmergeUsingTemplateRender.js → unmergeUsingTemplateRenderSnapshot.js} +9 -15
- package/build/template/internals/unmergeUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals.d.ts +4 -3
- package/build/template/internals.js +4 -3
- package/build/template/internals.js.map +2 -2
- package/package.json +2 -2
- package/source/template/CarsonTemplateError.ts +1 -0
- package/source/template/applyTemplateRenders.ts +7 -7
- package/source/template/internals/TemplateRenderSnapshot.ts +1 -6
- package/source/template/internals/createUsingTemplateRender.ts +1 -5
- package/source/template/internals/{deleteUsingTemplateRender.ts → deleteUsingTemplateRenderSnapshot.ts} +9 -5
- package/source/template/internals/insertUsingTemplateRender.ts +1 -5
- package/source/template/internals/mergeUsingTemplateRender.ts +1 -5
- package/source/template/internals/overwriteUsingTemplateRender.ts +1 -2
- package/source/template/internals/saveTemplateRenderSnapshots.ts +49 -3
- package/source/template/internals/simplify.ts +30 -0
- package/source/template/internals/{uninsertUsingTemplateRender.ts → uninsertUsingTemplateRenderSnapshot.ts} +7 -17
- package/source/template/internals/{unmergeUsingTemplateRender.ts → unmergeUsingTemplateRenderSnapshot.ts} +10 -16
- package/source/template/internals.ts +4 -3
- package/build/template/internals/deleteUsingTemplateRender.d.ts +0 -6
- package/build/template/internals/deleteUsingTemplateRender.js +0 -20
- package/build/template/internals/deleteUsingTemplateRender.js.map +0 -7
- package/build/template/internals/uninsertUsingTemplateRender.d.ts +0 -3
- package/build/template/internals/uninsertUsingTemplateRender.js.map +0 -7
- package/build/template/internals/unmergeUsingTemplateRender.d.ts +0 -3
- package/build/template/internals/unmergeUsingTemplateRender.js.map +0 -7
|
@@ -6,36 +6,30 @@ import yaml from "yaml";
|
|
|
6
6
|
import { CarsonTemplateError } from "../CarsonTemplateError.js";
|
|
7
7
|
import { prettify } from "./prettify.js";
|
|
8
8
|
import { unmerge } from "./unmerge.js";
|
|
9
|
-
export async function
|
|
10
|
-
let to = path.join(outputPath,
|
|
9
|
+
export async function unmergeUsingTemplateRenderSnapshot(templateRenderSnapshot, outputPath) {
|
|
10
|
+
let to = path.join(outputPath, templateRenderSnapshot.attributes.to);
|
|
11
11
|
let extension = path.extname(to);
|
|
12
|
+
if (!templateRenderSnapshot.content) {
|
|
13
|
+
throw new CarsonTemplateError("INVALID_SNAPSHOT");
|
|
14
|
+
}
|
|
12
15
|
switch (extension) {
|
|
13
16
|
case ".json": {
|
|
14
17
|
let targetFile = await fs.readJson(to);
|
|
15
|
-
let fileToMerge = json.parse(
|
|
18
|
+
let fileToMerge = json.parse(templateRenderSnapshot.content);
|
|
16
19
|
let newFile = JSON.stringify(unmerge(targetFile, fileToMerge));
|
|
17
20
|
await fs.writeFile(to, await prettify(newFile, to), { encoding: "utf8" });
|
|
18
21
|
break;
|
|
19
22
|
}
|
|
20
23
|
case ".yaml": {
|
|
21
24
|
let targetFile = yaml.parse(await fs.readFile(to, { encoding: "utf8" }));
|
|
22
|
-
let fileToMerge = yaml.parse(
|
|
25
|
+
let fileToMerge = yaml.parse(templateRenderSnapshot.content);
|
|
23
26
|
let newFile = yaml.stringify(unmerge(targetFile, fileToMerge));
|
|
24
27
|
await fs.writeFile(to, await prettify(newFile, to), { encoding: "utf8" });
|
|
25
28
|
break;
|
|
26
29
|
}
|
|
27
30
|
default: {
|
|
28
|
-
throw new CarsonTemplateError("
|
|
29
|
-
messageParameters: [
|
|
30
|
-
templateRender.attributes.strategy,
|
|
31
|
-
templateRender.template.path,
|
|
32
|
-
extension
|
|
33
|
-
],
|
|
34
|
-
data: {
|
|
35
|
-
path: templateRender.template.path
|
|
36
|
-
}
|
|
37
|
-
});
|
|
31
|
+
throw new CarsonTemplateError("INVALID_SNAPSHOT");
|
|
38
32
|
}
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=unmergeUsingTemplateRenderSnapshot.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../source/template/internals/unmergeUsingTemplateRenderSnapshot.ts"],
|
|
4
|
+
"sourcesContent": ["import {type Json} from '@jakubmazanec/zod-utils';\nimport fs from 'fs-extra';\nimport json from 'json5';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {unmerge} from './unmerge.js';\n\nexport async function unmergeUsingTemplateRenderSnapshot(\n templateRenderSnapshot: TemplateRenderSnapshot,\n outputPath: string,\n) {\n let to = path.join(outputPath, templateRenderSnapshot.attributes.to);\n let extension = path.extname(to);\n\n if (!templateRenderSnapshot.content) {\n throw new CarsonTemplateError('INVALID_SNAPSHOT');\n }\n\n switch (extension) {\n case '.json': {\n let targetFile = (await fs.readJson(to)) as Json;\n let fileToMerge = json.parse<Json>(templateRenderSnapshot.content);\n let newFile = JSON.stringify(unmerge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n\n break;\n }\n\n case '.yaml': {\n let targetFile = yaml.parse(await fs.readFile(to, {encoding: 'utf8'})) as unknown;\n let fileToMerge = yaml.parse(templateRenderSnapshot.content) as unknown;\n let newFile = yaml.stringify(unmerge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n\n break;\n }\n\n default: {\n throw new CarsonTemplateError('INVALID_SNAPSHOT');\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,UAAU;AAEjB,SAAQ,2BAA0B;AAClC,SAAQ,gBAAe;AAEvB,SAAQ,eAAc;AAEtB,sBAAsB,mCACpB,wBACA,YACA;AACA,MAAI,KAAK,KAAK,KAAK,YAAY,uBAAuB,WAAW,EAAE;AACnE,MAAI,YAAY,KAAK,QAAQ,EAAE;AAE/B,MAAI,CAAC,uBAAuB,SAAS;AACnC,UAAM,IAAI,oBAAoB,kBAAkB;AAAA,EAClD;AAEA,UAAQ,WAAW;AAAA,IACjB,KAAK,SAAS;AACZ,UAAI,aAAc,MAAM,GAAG,SAAS,EAAE;AACtC,UAAI,cAAc,KAAK,MAAY,uBAAuB,OAAO;AACjE,UAAI,UAAU,KAAK,UAAU,QAAQ,YAAY,WAAW,CAAC;AAE7D,YAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAEtE;AAAA,IACF;AAAA,IAEA,KAAK,SAAS;AACZ,UAAI,aAAa,KAAK,MAAM,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC,CAAC;AACrE,UAAI,cAAc,KAAK,MAAM,uBAAuB,OAAO;AAC3D,UAAI,UAAU,KAAK,UAAU,QAAQ,YAAY,WAAW,CAAC;AAE7D,YAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAEtE;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,IAAI,oBAAoB,kBAAkB;AAAA,IAClD;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './internals/createUsingTemplateRender.js';
|
|
2
|
-
export * from './internals/
|
|
2
|
+
export * from './internals/deleteUsingTemplateRenderSnapshot.js';
|
|
3
3
|
export * from './internals/importCarsonTemplate.js';
|
|
4
4
|
export * from './internals/insertUsingTemplateRender.js';
|
|
5
5
|
export * from './internals/loadTemplateRenderSnapshots.js';
|
|
@@ -11,8 +11,9 @@ export * from './internals/prettify.js';
|
|
|
11
11
|
export * from './internals/readCarsonTemplate.js';
|
|
12
12
|
export * from './internals/resolveModule.js';
|
|
13
13
|
export * from './internals/saveTemplateRenderSnapshots.js';
|
|
14
|
+
export * from './internals/simplify.js';
|
|
14
15
|
export * from './internals/TemplateRenderSnapshot.js';
|
|
15
16
|
export * from './internals/TemplateRenderSnapshots.js';
|
|
16
|
-
export * from './internals/
|
|
17
|
+
export * from './internals/uninsertUsingTemplateRenderSnapshot.js';
|
|
17
18
|
export * from './internals/unmerge.js';
|
|
18
|
-
export * from './internals/
|
|
19
|
+
export * from './internals/unmergeUsingTemplateRenderSnapshot.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
export * from "./internals/createUsingTemplateRender.js";
|
|
3
|
-
export * from "./internals/
|
|
3
|
+
export * from "./internals/deleteUsingTemplateRenderSnapshot.js";
|
|
4
4
|
export * from "./internals/importCarsonTemplate.js";
|
|
5
5
|
export * from "./internals/insertUsingTemplateRender.js";
|
|
6
6
|
export * from "./internals/loadTemplateRenderSnapshots.js";
|
|
@@ -12,9 +12,10 @@ export * from "./internals/prettify.js";
|
|
|
12
12
|
export * from "./internals/readCarsonTemplate.js";
|
|
13
13
|
export * from "./internals/resolveModule.js";
|
|
14
14
|
export * from "./internals/saveTemplateRenderSnapshots.js";
|
|
15
|
+
export * from "./internals/simplify.js";
|
|
15
16
|
export * from "./internals/TemplateRenderSnapshot.js";
|
|
16
17
|
export * from "./internals/TemplateRenderSnapshots.js";
|
|
17
|
-
export * from "./internals/
|
|
18
|
+
export * from "./internals/uninsertUsingTemplateRenderSnapshot.js";
|
|
18
19
|
export * from "./internals/unmerge.js";
|
|
19
|
-
export * from "./internals/
|
|
20
|
+
export * from "./internals/unmergeUsingTemplateRenderSnapshot.js";
|
|
20
21
|
//# sourceMappingURL=internals.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/template/internals.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './internals/createUsingTemplateRender.js';\nexport * from './internals/
|
|
5
|
-
"mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"sourcesContent": ["export * from './internals/createUsingTemplateRender.js';\nexport * from './internals/deleteUsingTemplateRenderSnapshot.js';\nexport * from './internals/importCarsonTemplate.js';\nexport * from './internals/insertUsingTemplateRender.js';\nexport * from './internals/loadTemplateRenderSnapshots.js';\nexport * from './internals/merge.js';\nexport * from './internals/mergeUsingTemplateRender.js';\nexport * from './internals/overwriteUsingTemplateRender.js';\nexport * from './internals/parseCarsonTemplateId.js';\nexport * from './internals/prettify.js';\nexport * from './internals/readCarsonTemplate.js';\nexport * from './internals/resolveModule.js';\nexport * from './internals/saveTemplateRenderSnapshots.js';\nexport * from './internals/simplify.js';\nexport * from './internals/TemplateRenderSnapshot.js';\nexport * from './internals/TemplateRenderSnapshots.js';\nexport * from './internals/uninsertUsingTemplateRenderSnapshot.js';\nexport * from './internals/unmerge.js';\nexport * from './internals/unmergeUsingTemplateRenderSnapshot.js';\n"],
|
|
5
|
+
"mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jakubmazanec/carson",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0-next.c8df116c",
|
|
4
4
|
"description": "Tool for managing workspace and project configuration.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"zod": "^3.23.8"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@jakubmazanec/eslint-config": "
|
|
58
|
+
"@jakubmazanec/eslint-config": "4.1.2-next.c8df116c",
|
|
59
59
|
"@types/fs-extra": "^11.0.4",
|
|
60
60
|
"@types/lodash": "^4.17.13",
|
|
61
61
|
"@types/micromatch": "^4.0.9",
|
|
@@ -12,6 +12,7 @@ export const CarsonTemplateError = createCustomErrorWithData(
|
|
|
12
12
|
STRATEGY_UNSUPPORTED_EXTENSION:
|
|
13
13
|
'Strategy "{0}" in the template file "{1}" doesn\'t support extension "{2}".',
|
|
14
14
|
STRATEGY_MISSING_FILE: 'Strategy "{0}" in the template file "{1}" is missing file "{2}".',
|
|
15
|
+
INVALID_SNAPSHOT: 'Invalid Carson template render snapshot.',
|
|
15
16
|
},
|
|
16
17
|
class CarsonTemplateErrorData {
|
|
17
18
|
path?: string;
|
|
@@ -6,14 +6,14 @@ import {CARSON_CONFIG_DIRECTORY} from '../constants.js';
|
|
|
6
6
|
import {CarsonTemplateError} from './CarsonTemplateError.js';
|
|
7
7
|
import {
|
|
8
8
|
createUsingTemplateRender,
|
|
9
|
-
|
|
9
|
+
deleteUsingTemplateRenderSnapshot,
|
|
10
10
|
insertUsingTemplateRender,
|
|
11
11
|
loadTemplateRenderSnapshots,
|
|
12
12
|
mergeUsingTemplateRender,
|
|
13
13
|
overwriteUsingTemplateRender,
|
|
14
14
|
saveTemplateRenderSnapshots,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
uninsertUsingTemplateRenderSnapshot,
|
|
16
|
+
unmergeUsingTemplateRenderSnapshot,
|
|
17
17
|
} from './internals.js';
|
|
18
18
|
import {type TemplateRenders} from './TemplateRenders.js';
|
|
19
19
|
|
|
@@ -51,21 +51,21 @@ export async function applyTemplateRenders({
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
if (templateRenderSnapshot.attributes.strategy === 'ensure') {
|
|
54
|
-
await
|
|
54
|
+
await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath, {
|
|
55
55
|
onlyDeleteWhenContentsMatch: true,
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
if (templateRenderSnapshot.attributes.strategy === 'overwrite') {
|
|
60
|
-
await
|
|
60
|
+
await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (templateRenderSnapshot.attributes.strategy === 'merge') {
|
|
64
|
-
await
|
|
64
|
+
await unmergeUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
if (templateRenderSnapshot.attributes.strategy[0] === 'insert') {
|
|
68
|
-
await
|
|
68
|
+
await uninsertUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -6,12 +6,7 @@ import {templateAttributesSchema} from '../TemplateAttributes.js';
|
|
|
6
6
|
export const templateRenderSnapshotSchema = z
|
|
7
7
|
.object({
|
|
8
8
|
attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),
|
|
9
|
-
content: z.string(),
|
|
10
|
-
template: z
|
|
11
|
-
.object({
|
|
12
|
-
path: z.string(),
|
|
13
|
-
})
|
|
14
|
-
.strict(),
|
|
9
|
+
content: z.string().optional(),
|
|
15
10
|
})
|
|
16
11
|
.strict();
|
|
17
12
|
|
|
@@ -7,12 +7,8 @@ import yaml from 'yaml';
|
|
|
7
7
|
import {type TemplateRender} from '../TemplateRender.js';
|
|
8
8
|
import {merge} from './merge.js';
|
|
9
9
|
import {prettify} from './prettify.js';
|
|
10
|
-
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
11
10
|
|
|
12
|
-
export async function createUsingTemplateRender(
|
|
13
|
-
templateRender: TemplateRender | TemplateRenderSnapshot,
|
|
14
|
-
basePath: string,
|
|
15
|
-
) {
|
|
11
|
+
export async function createUsingTemplateRender(templateRender: TemplateRender, basePath: string) {
|
|
16
12
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
17
13
|
let extension = path.extname(to);
|
|
18
14
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {CarsonTemplateError} from '../CarsonTemplateError.js';
|
|
5
5
|
import {prettify} from './prettify.js';
|
|
6
6
|
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
7
7
|
|
|
@@ -9,20 +9,24 @@ export type DeleteUsingTemplateRenderOptions = {
|
|
|
9
9
|
onlyDeleteWhenContentsMatch?: boolean;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
export async function
|
|
13
|
-
|
|
12
|
+
export async function deleteUsingTemplateRenderSnapshot(
|
|
13
|
+
templateRenderSnapshot: TemplateRenderSnapshot,
|
|
14
14
|
basePath: string,
|
|
15
15
|
options?: DeleteUsingTemplateRenderOptions,
|
|
16
16
|
) {
|
|
17
|
-
let to = path.join(basePath,
|
|
17
|
+
let to = path.join(basePath, templateRenderSnapshot.attributes.to);
|
|
18
18
|
|
|
19
19
|
if (!(await fs.pathExists(to))) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
if (options?.onlyDeleteWhenContentsMatch) {
|
|
24
|
+
if (!templateRenderSnapshot.content) {
|
|
25
|
+
throw new CarsonTemplateError('INVALID_SNAPSHOT');
|
|
26
|
+
}
|
|
27
|
+
|
|
24
28
|
let existingContent = await fs.readFile(to, {encoding: 'utf8'});
|
|
25
|
-
let newContent = await prettify(
|
|
29
|
+
let newContent = await prettify(templateRenderSnapshot.content, to);
|
|
26
30
|
|
|
27
31
|
if (existingContent.trim() === newContent.trim()) {
|
|
28
32
|
await fs.rm(to);
|
|
@@ -5,12 +5,8 @@ import path from 'node:path';
|
|
|
5
5
|
import {CarsonTemplateError} from '../CarsonTemplateError.js';
|
|
6
6
|
import {type TemplateRender} from '../TemplateRender.js';
|
|
7
7
|
import {prettify} from './prettify.js';
|
|
8
|
-
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
9
8
|
|
|
10
|
-
export async function insertUsingTemplateRender(
|
|
11
|
-
templateRender: TemplateRender | TemplateRenderSnapshot,
|
|
12
|
-
basePath: string,
|
|
13
|
-
) {
|
|
9
|
+
export async function insertUsingTemplateRender(templateRender: TemplateRender, basePath: string) {
|
|
14
10
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
15
11
|
let extension = path.extname(to);
|
|
16
12
|
|
|
@@ -8,12 +8,8 @@ import {CarsonTemplateError} from '../CarsonTemplateError.js';
|
|
|
8
8
|
import {type TemplateRender} from '../TemplateRender.js';
|
|
9
9
|
import {merge} from './merge.js';
|
|
10
10
|
import {prettify} from './prettify.js';
|
|
11
|
-
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
12
11
|
|
|
13
|
-
export async function mergeUsingTemplateRender(
|
|
14
|
-
templateRender: TemplateRender | TemplateRenderSnapshot,
|
|
15
|
-
basePath: string,
|
|
16
|
-
) {
|
|
12
|
+
export async function mergeUsingTemplateRender(templateRender: TemplateRender, basePath: string) {
|
|
17
13
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
18
14
|
let extension = path.extname(to);
|
|
19
15
|
|
|
@@ -3,10 +3,9 @@ import path from 'node:path';
|
|
|
3
3
|
|
|
4
4
|
import {type TemplateRender} from '../TemplateRender.js';
|
|
5
5
|
import {prettify} from './prettify.js';
|
|
6
|
-
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
7
6
|
|
|
8
7
|
export async function overwriteUsingTemplateRender(
|
|
9
|
-
templateRender: TemplateRender
|
|
8
|
+
templateRender: TemplateRender,
|
|
10
9
|
basePath: string,
|
|
11
10
|
) {
|
|
12
11
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import {deflateSync, strToU8} from 'fflate';
|
|
2
2
|
import fs from 'fs-extra';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import yaml from 'yaml';
|
|
3
5
|
|
|
4
6
|
import {type TemplateRenders} from '../TemplateRenders.js';
|
|
7
|
+
import {simplify} from './simplify.js';
|
|
5
8
|
import {type TemplateRenderSnapshots} from './TemplateRenderSnapshots.js';
|
|
6
9
|
|
|
7
10
|
export async function saveTemplateRenderSnapshots(
|
|
@@ -12,19 +15,62 @@ export async function saveTemplateRenderSnapshots(
|
|
|
12
15
|
|
|
13
16
|
for (let templateRender of templateRenders) {
|
|
14
17
|
if (
|
|
15
|
-
templateRender.attributes.strategy === 'ensure' ||
|
|
16
18
|
templateRender.attributes.strategy === 'overwrite' ||
|
|
17
|
-
templateRender.attributes.strategy === 'merge' ||
|
|
18
19
|
templateRender.attributes.strategy[0] === 'insert'
|
|
19
20
|
) {
|
|
21
|
+
templateRendersSnapshots.push({
|
|
22
|
+
attributes: {
|
|
23
|
+
to: templateRender.attributes.to,
|
|
24
|
+
strategy: templateRender.attributes.strategy,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (templateRender.attributes.strategy === 'ensure') {
|
|
20
32
|
templateRendersSnapshots.push({
|
|
21
33
|
attributes: {
|
|
22
34
|
to: templateRender.attributes.to,
|
|
23
35
|
strategy: templateRender.attributes.strategy,
|
|
24
36
|
},
|
|
25
37
|
content: templateRender.content,
|
|
26
|
-
template: templateRender.template,
|
|
27
38
|
});
|
|
39
|
+
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (templateRender.attributes.strategy === 'merge') {
|
|
44
|
+
let extension = path.extname(templateRender.attributes.to);
|
|
45
|
+
let content;
|
|
46
|
+
|
|
47
|
+
switch (extension) {
|
|
48
|
+
case '.json': {
|
|
49
|
+
content = JSON.stringify(simplify(JSON.parse(templateRender.content)));
|
|
50
|
+
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
case '.yaml': {
|
|
55
|
+
content = yaml.stringify(simplify(yaml.parse(templateRender.content)));
|
|
56
|
+
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
default: {
|
|
61
|
+
content = templateRender.content;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
templateRendersSnapshots.push({
|
|
66
|
+
attributes: {
|
|
67
|
+
to: templateRender.attributes.to,
|
|
68
|
+
strategy: templateRender.attributes.strategy,
|
|
69
|
+
},
|
|
70
|
+
content,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
continue;
|
|
28
74
|
}
|
|
29
75
|
}
|
|
30
76
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplifies JSON for usage in snapshots: string, number or boolean values are replaced with `null`.
|
|
3
|
+
*/
|
|
4
|
+
export function simplify(a: unknown) {
|
|
5
|
+
if (a === undefined || a == null) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (typeof a !== 'object' || Array.isArray(a)) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const newA: Record<string, unknown> = {...a};
|
|
14
|
+
|
|
15
|
+
for (let [key] of Object.entries(a)) {
|
|
16
|
+
if (
|
|
17
|
+
(a as Record<string, unknown>)[key] &&
|
|
18
|
+
typeof (a as Record<string, unknown>)[key] === 'object' &&
|
|
19
|
+
!Array.isArray((a as Record<string, unknown>)[key])
|
|
20
|
+
) {
|
|
21
|
+
const result = simplify((a as Record<string, unknown>)[key]);
|
|
22
|
+
|
|
23
|
+
newA[key] = result;
|
|
24
|
+
} else {
|
|
25
|
+
newA[key] = null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return newA;
|
|
30
|
+
}
|
|
@@ -3,26 +3,25 @@ import _ from 'lodash';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
|
|
5
5
|
import {CarsonTemplateError} from '../CarsonTemplateError.js';
|
|
6
|
-
import {type TemplateRender} from '../TemplateRender.js';
|
|
7
6
|
import {prettify} from './prettify.js';
|
|
8
7
|
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
9
8
|
|
|
10
|
-
export async function
|
|
11
|
-
|
|
9
|
+
export async function uninsertUsingTemplateRenderSnapshot(
|
|
10
|
+
templateRenderSnapshot: TemplateRenderSnapshot,
|
|
12
11
|
basePath: string,
|
|
13
12
|
) {
|
|
14
|
-
let to = path.join(basePath,
|
|
13
|
+
let to = path.join(basePath, templateRenderSnapshot.attributes.to);
|
|
15
14
|
let extension = path.extname(to);
|
|
16
15
|
|
|
17
16
|
switch (extension) {
|
|
18
17
|
case '.md': {
|
|
19
18
|
if (await fs.pathExists(to)) {
|
|
20
19
|
let targetFile = await fs.readFile(to, {encoding: 'utf8'});
|
|
21
|
-
let newContent = `<!-- ${
|
|
20
|
+
let newContent = `<!-- ${templateRenderSnapshot.attributes.strategy[1]} --><!-- ${templateRenderSnapshot.attributes.strategy[1]} -->`;
|
|
22
21
|
let oldContentRegexp = new RegExp(
|
|
23
22
|
`<!--\\s*${_.escapeRegExp(
|
|
24
|
-
|
|
25
|
-
)}\\s-->[\\s\\S]*<!--\\s*${_.escapeRegExp(
|
|
23
|
+
templateRenderSnapshot.attributes.strategy[1],
|
|
24
|
+
)}\\s-->[\\s\\S]*<!--\\s*${_.escapeRegExp(templateRenderSnapshot.attributes.strategy[1])}\\s-->`,
|
|
26
25
|
'u',
|
|
27
26
|
);
|
|
28
27
|
let newFile = targetFile.replace(oldContentRegexp, newContent);
|
|
@@ -34,16 +33,7 @@ export async function uninsertUsingTemplateRender(
|
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
default: {
|
|
37
|
-
throw new CarsonTemplateError('
|
|
38
|
-
messageParameters: [
|
|
39
|
-
templateRender.attributes.strategy,
|
|
40
|
-
templateRender.template.path,
|
|
41
|
-
extension,
|
|
42
|
-
],
|
|
43
|
-
data: {
|
|
44
|
-
path: templateRender.template.path,
|
|
45
|
-
},
|
|
46
|
-
});
|
|
36
|
+
throw new CarsonTemplateError('INVALID_SNAPSHOT');
|
|
47
37
|
}
|
|
48
38
|
}
|
|
49
39
|
}
|
|
@@ -5,22 +5,25 @@ import path from 'node:path';
|
|
|
5
5
|
import yaml from 'yaml';
|
|
6
6
|
|
|
7
7
|
import {CarsonTemplateError} from '../CarsonTemplateError.js';
|
|
8
|
-
import {type TemplateRender} from '../TemplateRender.js';
|
|
9
8
|
import {prettify} from './prettify.js';
|
|
10
9
|
import {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';
|
|
11
10
|
import {unmerge} from './unmerge.js';
|
|
12
11
|
|
|
13
|
-
export async function
|
|
14
|
-
|
|
12
|
+
export async function unmergeUsingTemplateRenderSnapshot(
|
|
13
|
+
templateRenderSnapshot: TemplateRenderSnapshot,
|
|
15
14
|
outputPath: string,
|
|
16
15
|
) {
|
|
17
|
-
let to = path.join(outputPath,
|
|
16
|
+
let to = path.join(outputPath, templateRenderSnapshot.attributes.to);
|
|
18
17
|
let extension = path.extname(to);
|
|
19
18
|
|
|
19
|
+
if (!templateRenderSnapshot.content) {
|
|
20
|
+
throw new CarsonTemplateError('INVALID_SNAPSHOT');
|
|
21
|
+
}
|
|
22
|
+
|
|
20
23
|
switch (extension) {
|
|
21
24
|
case '.json': {
|
|
22
25
|
let targetFile = (await fs.readJson(to)) as Json;
|
|
23
|
-
let fileToMerge = json.parse<Json>(
|
|
26
|
+
let fileToMerge = json.parse<Json>(templateRenderSnapshot.content);
|
|
24
27
|
let newFile = JSON.stringify(unmerge(targetFile, fileToMerge));
|
|
25
28
|
|
|
26
29
|
await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});
|
|
@@ -30,7 +33,7 @@ export async function unmergeUsingTemplateRender(
|
|
|
30
33
|
|
|
31
34
|
case '.yaml': {
|
|
32
35
|
let targetFile = yaml.parse(await fs.readFile(to, {encoding: 'utf8'})) as unknown;
|
|
33
|
-
let fileToMerge = yaml.parse(
|
|
36
|
+
let fileToMerge = yaml.parse(templateRenderSnapshot.content) as unknown;
|
|
34
37
|
let newFile = yaml.stringify(unmerge(targetFile, fileToMerge));
|
|
35
38
|
|
|
36
39
|
await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});
|
|
@@ -39,16 +42,7 @@ export async function unmergeUsingTemplateRender(
|
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
default: {
|
|
42
|
-
throw new CarsonTemplateError('
|
|
43
|
-
messageParameters: [
|
|
44
|
-
templateRender.attributes.strategy,
|
|
45
|
-
templateRender.template.path,
|
|
46
|
-
extension,
|
|
47
|
-
],
|
|
48
|
-
data: {
|
|
49
|
-
path: templateRender.template.path,
|
|
50
|
-
},
|
|
51
|
-
});
|
|
45
|
+
throw new CarsonTemplateError('INVALID_SNAPSHOT');
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './internals/createUsingTemplateRender.js';
|
|
2
|
-
export * from './internals/
|
|
2
|
+
export * from './internals/deleteUsingTemplateRenderSnapshot.js';
|
|
3
3
|
export * from './internals/importCarsonTemplate.js';
|
|
4
4
|
export * from './internals/insertUsingTemplateRender.js';
|
|
5
5
|
export * from './internals/loadTemplateRenderSnapshots.js';
|
|
@@ -11,8 +11,9 @@ export * from './internals/prettify.js';
|
|
|
11
11
|
export * from './internals/readCarsonTemplate.js';
|
|
12
12
|
export * from './internals/resolveModule.js';
|
|
13
13
|
export * from './internals/saveTemplateRenderSnapshots.js';
|
|
14
|
+
export * from './internals/simplify.js';
|
|
14
15
|
export * from './internals/TemplateRenderSnapshot.js';
|
|
15
16
|
export * from './internals/TemplateRenderSnapshots.js';
|
|
16
|
-
export * from './internals/
|
|
17
|
+
export * from './internals/uninsertUsingTemplateRenderSnapshot.js';
|
|
17
18
|
export * from './internals/unmerge.js';
|
|
18
|
-
export * from './internals/
|
|
19
|
+
export * from './internals/unmergeUsingTemplateRenderSnapshot.js';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type TemplateRender } from '../TemplateRender.js';
|
|
2
|
-
import { type TemplateRenderSnapshot } from './TemplateRenderSnapshot.js';
|
|
3
|
-
export type DeleteUsingTemplateRenderOptions = {
|
|
4
|
-
onlyDeleteWhenContentsMatch?: boolean;
|
|
5
|
-
};
|
|
6
|
-
export declare function deleteUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, basePath: string, options?: DeleteUsingTemplateRenderOptions): Promise<void>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { prettify } from "./prettify.js";
|
|
5
|
-
export async function deleteUsingTemplateRender(templateRender, basePath, options) {
|
|
6
|
-
let to = path.join(basePath, templateRender.attributes.to);
|
|
7
|
-
if (!await fs.pathExists(to)) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (options?.onlyDeleteWhenContentsMatch) {
|
|
11
|
-
let existingContent = await fs.readFile(to, { encoding: "utf8" });
|
|
12
|
-
let newContent = await prettify(templateRender.content, to);
|
|
13
|
-
if (existingContent.trim() === newContent.trim()) {
|
|
14
|
-
await fs.rm(to);
|
|
15
|
-
}
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
await fs.rm(to);
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=deleteUsingTemplateRender.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../source/template/internals/deleteUsingTemplateRender.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {type TemplateRender} from '../TemplateRender.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\n\nexport type DeleteUsingTemplateRenderOptions = {\n onlyDeleteWhenContentsMatch?: boolean;\n};\n\nexport async function deleteUsingTemplateRender(\n templateRender: TemplateRender | TemplateRenderSnapshot,\n basePath: string,\n options?: DeleteUsingTemplateRenderOptions,\n) {\n let to = path.join(basePath, templateRender.attributes.to);\n\n if (!(await fs.pathExists(to))) {\n return;\n }\n\n if (options?.onlyDeleteWhenContentsMatch) {\n let existingContent = await fs.readFile(to, {encoding: 'utf8'});\n let newContent = await prettify(templateRender.content, to);\n\n if (existingContent.trim() === newContent.trim()) {\n await fs.rm(to);\n }\n\n return;\n }\n\n await fs.rm(to);\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAGjB,SAAQ,gBAAe;AAOvB,sBAAsB,0BACpB,gBACA,UACA,SACA;AACA,MAAI,KAAK,KAAK,KAAK,UAAU,eAAe,WAAW,EAAE;AAEzD,MAAI,CAAE,MAAM,GAAG,WAAW,EAAE,GAAI;AAC9B;AAAA,EACF;AAEA,MAAI,SAAS,6BAA6B;AACxC,QAAI,kBAAkB,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC;AAC9D,QAAI,aAAa,MAAM,SAAS,eAAe,SAAS,EAAE;AAE1D,QAAI,gBAAgB,KAAK,MAAM,WAAW,KAAK,GAAG;AAChD,YAAM,GAAG,GAAG,EAAE;AAAA,IAChB;AAEA;AAAA,EACF;AAEA,QAAM,GAAG,GAAG,EAAE;AAChB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { type TemplateRender } from '../TemplateRender.js';
|
|
2
|
-
import { type TemplateRenderSnapshot } from './TemplateRenderSnapshot.js';
|
|
3
|
-
export declare function uninsertUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, basePath: string): Promise<void>;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../source/template/internals/uninsertUsingTemplateRender.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'fs-extra';\nimport _ from 'lodash';\nimport path from 'node:path';\n\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {type TemplateRender} from '../TemplateRender.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\n\nexport async function uninsertUsingTemplateRender(\n templateRender: TemplateRender | TemplateRenderSnapshot,\n basePath: string,\n) {\n let to = path.join(basePath, templateRender.attributes.to);\n let extension = path.extname(to);\n\n switch (extension) {\n case '.md': {\n if (await fs.pathExists(to)) {\n let targetFile = await fs.readFile(to, {encoding: 'utf8'});\n let newContent = `<!-- ${templateRender.attributes.strategy[1]} --><!-- ${templateRender.attributes.strategy[1]} -->`;\n let oldContentRegexp = new RegExp(\n `<!--\\\\s*${_.escapeRegExp(\n templateRender.attributes.strategy[1],\n )}\\\\s-->[\\\\s\\\\S]*<!--\\\\s*${_.escapeRegExp(templateRender.attributes.strategy[1])}\\\\s-->`,\n 'u',\n );\n let newFile = targetFile.replace(oldContentRegexp, newContent);\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n }\n\n break;\n }\n\n default: {\n throw new CarsonTemplateError('STRATEGY_UNSUPPORTED_EXTENSION', {\n messageParameters: [\n templateRender.attributes.strategy,\n templateRender.template.path,\n extension,\n ],\n data: {\n path: templateRender.template.path,\n },\n });\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,QAAQ;AACf,OAAO,OAAO;AACd,OAAO,UAAU;AAEjB,SAAQ,2BAA0B;AAElC,SAAQ,gBAAe;AAGvB,sBAAsB,4BACpB,gBACA,UACA;AACA,MAAI,KAAK,KAAK,KAAK,UAAU,eAAe,WAAW,EAAE;AACzD,MAAI,YAAY,KAAK,QAAQ,EAAE;AAE/B,UAAQ,WAAW;AAAA,IACjB,KAAK,OAAO;AACV,UAAI,MAAM,GAAG,WAAW,EAAE,GAAG;AAC3B,YAAI,aAAa,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC;AACzD,YAAI,aAAa,QAAQ,eAAe,WAAW,SAAS,CAAC,CAAC,YAAY,eAAe,WAAW,SAAS,CAAC,CAAC;AAC/G,YAAI,mBAAmB,IAAI;AAAA,UACzB,WAAW,EAAE;AAAA,YACX,eAAe,WAAW,SAAS,CAAC;AAAA,UACtC,CAAC,0BAA0B,EAAE,aAAa,eAAe,WAAW,SAAS,CAAC,CAAC,CAAC;AAAA,UAChF;AAAA,QACF;AACA,YAAI,UAAU,WAAW,QAAQ,kBAAkB,UAAU;AAE7D,cAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,MACxE;AAEA;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,IAAI,oBAAoB,kCAAkC;AAAA,QAC9D,mBAAmB;AAAA,UACjB,eAAe,WAAW;AAAA,UAC1B,eAAe,SAAS;AAAA,UACxB;AAAA,QACF;AAAA,QACA,MAAM;AAAA,UACJ,MAAM,eAAe,SAAS;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { type TemplateRender } from '../TemplateRender.js';
|
|
2
|
-
import { type TemplateRenderSnapshot } from './TemplateRenderSnapshot.js';
|
|
3
|
-
export declare function unmergeUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, outputPath: string): Promise<void>;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../source/template/internals/unmergeUsingTemplateRender.ts"],
|
|
4
|
-
"sourcesContent": ["import {type Json} from '@jakubmazanec/zod-utils';\nimport fs from 'fs-extra';\nimport json from 'json5';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {type TemplateRender} from '../TemplateRender.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {unmerge} from './unmerge.js';\n\nexport async function unmergeUsingTemplateRender(\n templateRender: TemplateRender | TemplateRenderSnapshot,\n outputPath: string,\n) {\n let to = path.join(outputPath, templateRender.attributes.to);\n let extension = path.extname(to);\n\n switch (extension) {\n case '.json': {\n let targetFile = (await fs.readJson(to)) as Json;\n let fileToMerge = json.parse<Json>(templateRender.content);\n let newFile = JSON.stringify(unmerge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n\n break;\n }\n\n case '.yaml': {\n let targetFile = yaml.parse(await fs.readFile(to, {encoding: 'utf8'})) as unknown;\n let fileToMerge = yaml.parse(templateRender.content) as unknown;\n let newFile = yaml.stringify(unmerge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n\n break;\n }\n\n default: {\n throw new CarsonTemplateError('STRATEGY_UNSUPPORTED_EXTENSION', {\n messageParameters: [\n templateRender.attributes.strategy,\n templateRender.template.path,\n extension,\n ],\n data: {\n path: templateRender.template.path,\n },\n });\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,UAAU;AAEjB,SAAQ,2BAA0B;AAElC,SAAQ,gBAAe;AAEvB,SAAQ,eAAc;AAEtB,sBAAsB,2BACpB,gBACA,YACA;AACA,MAAI,KAAK,KAAK,KAAK,YAAY,eAAe,WAAW,EAAE;AAC3D,MAAI,YAAY,KAAK,QAAQ,EAAE;AAE/B,UAAQ,WAAW;AAAA,IACjB,KAAK,SAAS;AACZ,UAAI,aAAc,MAAM,GAAG,SAAS,EAAE;AACtC,UAAI,cAAc,KAAK,MAAY,eAAe,OAAO;AACzD,UAAI,UAAU,KAAK,UAAU,QAAQ,YAAY,WAAW,CAAC;AAE7D,YAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAEtE;AAAA,IACF;AAAA,IAEA,KAAK,SAAS;AACZ,UAAI,aAAa,KAAK,MAAM,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC,CAAC;AACrE,UAAI,cAAc,KAAK,MAAM,eAAe,OAAO;AACnD,UAAI,UAAU,KAAK,UAAU,QAAQ,YAAY,WAAW,CAAC;AAE7D,YAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAEtE;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,IAAI,oBAAoB,kCAAkC;AAAA,QAC9D,mBAAmB;AAAA,UACjB,eAAe,WAAW;AAAA,UAC1B,eAAe,SAAS;AAAA,UACxB;AAAA,QACF;AAAA,QACA,MAAM;AAAA,UACJ,MAAM,eAAe,SAAS;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|