@jakubmazanec/carson 0.1.0-c5ebb6f → 0.1.0-next.336fe21
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/README.md +65 -10
- package/dist/commands/create-project/CreateProject.js.map +1 -1
- package/dist/commands/create-project/CreateProjectInput.js +1 -1
- package/dist/commands/create-project/CreateProjectInput.js.map +1 -1
- package/dist/commands/create-project/createProjectCommand.js +3 -4
- package/dist/commands/create-project/createProjectCommand.js.map +1 -1
- package/dist/commands/create-project/runCreateProject.js +3 -13
- package/dist/commands/create-project/runCreateProject.js.map +1 -1
- package/dist/commands/create-workspace/CreateWorkspace.d.ts +1 -2
- package/dist/commands/create-workspace/CreateWorkspace.js +7 -5
- package/dist/commands/create-workspace/CreateWorkspace.js.map +1 -1
- package/dist/commands/create-workspace/createWorkspaceCommand.js +1 -11
- package/dist/commands/create-workspace/createWorkspaceCommand.js.map +1 -1
- package/dist/commands/create-workspace/runCreateWorkspace.js +3 -12
- package/dist/commands/create-workspace/runCreateWorkspace.js.map +1 -1
- package/dist/commands/internals/CommandStatus.d.ts +1 -0
- package/dist/commands/internals/CommandStatus.js +3 -0
- package/dist/commands/internals/CommandStatus.js.map +1 -0
- package/dist/commands/internals.d.ts +1 -0
- package/dist/commands/internals.js +1 -0
- package/dist/commands/internals.js.map +1 -1
- package/dist/commands/update-workspace/UpdateWorkspace.js +1 -1
- package/dist/commands/update-workspace/UpdateWorkspace.js.map +1 -1
- package/dist/commands/update-workspace/updateWorkspaceCommand.js +3 -4
- package/dist/commands/update-workspace/updateWorkspaceCommand.js.map +1 -1
- package/dist/template/CarsonTemplate.d.ts +1 -1
- package/dist/template/CarsonTemplate.js.map +1 -1
- package/dist/template/CarsonTemplateConfig.d.ts +1 -1
- package/dist/template/CarsonTemplateConfig.js.map +1 -1
- package/dist/template/CarsonTemplateError.d.ts +8 -0
- package/dist/template/CarsonTemplateError.js +13 -0
- package/dist/template/CarsonTemplateError.js.map +1 -0
- package/dist/template/TemplateAttributes.d.ts +3 -3
- package/dist/template/TemplateAttributes.js +2 -1
- package/dist/template/TemplateAttributes.js.map +1 -1
- package/dist/template/TemplateRender.d.ts +6 -2
- package/dist/template/TemplateRender.js.map +1 -1
- package/dist/template/TemplateRenders.d.ts +1 -1
- package/dist/template/TemplateRenders.js.map +1 -1
- package/dist/template/applyTemplateRenders.d.ts +3 -0
- package/dist/template/applyTemplateRenders.js +36 -6
- package/dist/template/applyTemplateRenders.js.map +1 -1
- package/dist/template/internals/TemplateRenderSnapshot.d.ts +18 -5
- package/dist/template/internals/TemplateRenderSnapshot.js +4 -1
- package/dist/template/internals/TemplateRenderSnapshot.js.map +1 -1
- package/dist/template/internals/TemplateRenderSnapshots.d.ts +18 -5
- package/dist/template/internals/deleteUsingTemplateRender.d.ts +4 -1
- package/dist/template/internals/deleteUsingTemplateRender.js +16 -3
- package/dist/template/internals/deleteUsingTemplateRender.js.map +1 -1
- package/dist/template/internals/insertUsingTemplateRender.js +11 -1
- package/dist/template/internals/insertUsingTemplateRender.js.map +1 -1
- package/dist/template/internals/loadTemplateRenderSnapshots.d.ts +4 -1
- package/dist/template/internals/mergeUsingTemplateRender.js +11 -1
- package/dist/template/internals/mergeUsingTemplateRender.js.map +1 -1
- package/dist/template/internals/parseCarsonTemplateId.js +6 -1
- package/dist/template/internals/parseCarsonTemplateId.js.map +1 -1
- package/dist/template/internals/readCarsonTemplate.js +7 -1
- package/dist/template/internals/readCarsonTemplate.js.map +1 -1
- package/dist/template/internals/saveTemplateRenderSnapshots.js +4 -4
- package/dist/template/internals/saveTemplateRenderSnapshots.js.map +1 -1
- package/dist/template/internals/uninsertUsingTemplateRender.js +11 -1
- package/dist/template/internals/uninsertUsingTemplateRender.js.map +1 -1
- package/dist/template/internals/unmerge.d.ts +1 -1
- package/dist/template/internals/unmerge.js +1 -1
- package/dist/template/internals/unmerge.js.map +1 -1
- package/dist/template/internals/unmergeUsingTemplateRender.js +11 -1
- package/dist/template/internals/unmergeUsingTemplateRender.js.map +1 -1
- package/dist/template/renderCarsonTemplate.d.ts +3 -0
- package/dist/template/renderCarsonTemplate.js +15 -4
- package/dist/template/renderCarsonTemplate.js.map +1 -1
- package/dist/template.d.ts +1 -0
- package/dist/template.js +1 -0
- package/dist/template.js.map +1 -1
- package/dist/workspace/Project.d.ts +2 -2
- package/dist/workspace/Project.js +19 -4
- package/dist/workspace/Project.js.map +1 -1
- package/dist/workspace/ProjectConfig.d.ts +3 -0
- package/dist/workspace/ProjectConfig.js.map +1 -1
- package/dist/workspace/ProjectCreateOptions.d.ts +3 -0
- package/dist/workspace/ProjectCreateOptions.js.map +1 -1
- package/dist/workspace/ProjectError.d.ts +5 -2
- package/dist/workspace/ProjectError.js +6 -2
- package/dist/workspace/ProjectError.js.map +1 -1
- package/dist/workspace/ProjectOptions.d.ts +1 -1
- package/dist/workspace/ProjectOptions.js.map +1 -1
- package/dist/workspace/ProjectUpdateOptions.d.ts +3 -0
- package/dist/workspace/ProjectUpdateOptions.js +3 -1
- package/dist/workspace/ProjectUpdateOptions.js.map +1 -1
- package/dist/workspace/Workspace.d.ts +8 -6
- package/dist/workspace/Workspace.js +106 -33
- package/dist/workspace/Workspace.js.map +1 -1
- package/dist/workspace/WorkspaceConfig.d.ts +3 -0
- package/dist/workspace/WorkspaceConfig.js.map +1 -1
- package/dist/workspace/WorkspaceCreateOptions.d.ts +3 -0
- package/dist/workspace/WorkspaceCreateOptions.js +3 -1
- package/dist/workspace/WorkspaceCreateOptions.js.map +1 -1
- package/dist/workspace/WorkspaceCreateProjectOptions.d.ts +3 -0
- package/dist/workspace/WorkspaceCreateProjectOptions.js +3 -1
- package/dist/workspace/WorkspaceCreateProjectOptions.js.map +1 -1
- package/dist/workspace/WorkspaceDependencies.d.ts +26 -19
- package/dist/workspace/WorkspaceDependencies.js +27 -9
- package/dist/workspace/WorkspaceDependencies.js.map +1 -1
- package/dist/workspace/WorkspaceDependenciesFromWorkspaceOptions.d.ts +8 -0
- package/dist/workspace/WorkspaceDependenciesFromWorkspaceOptions.js +5 -0
- package/dist/workspace/WorkspaceDependenciesFromWorkspaceOptions.js.map +1 -0
- package/dist/workspace/WorkspaceDependenciesGetVersionsOptions.d.ts +6 -0
- package/dist/workspace/WorkspaceDependenciesGetVersionsOptions.js +5 -0
- package/dist/workspace/WorkspaceDependenciesGetVersionsOptions.js.map +1 -0
- package/dist/workspace/WorkspaceDependency.d.ts +14 -0
- package/dist/workspace/WorkspaceDependency.js +3 -0
- package/dist/workspace/WorkspaceDependency.js.map +1 -0
- package/dist/workspace/WorkspaceDependencyProject.d.ts +11 -0
- package/dist/workspace/WorkspaceDependencyProject.js +5 -0
- package/dist/workspace/WorkspaceDependencyProject.js.map +1 -0
- package/dist/workspace/WorkspaceError.d.ts +5 -2
- package/dist/workspace/WorkspaceError.js +10 -3
- package/dist/workspace/WorkspaceError.js.map +1 -1
- package/dist/workspace/WorkspaceFindAndReadOptions.d.ts +6 -0
- package/dist/workspace/WorkspaceFindAndReadOptions.js +5 -0
- package/dist/workspace/WorkspaceFindAndReadOptions.js.map +1 -0
- package/dist/workspace/WorkspaceOptions.d.ts +4 -4
- package/dist/workspace/WorkspaceOptions.js.map +1 -1
- package/dist/workspace/{WorkspaceOptionsProjectOptions.d.ts → WorkspaceOptionsProject.d.ts} +4 -1
- package/dist/workspace/WorkspaceOptionsProject.js +3 -0
- package/dist/workspace/WorkspaceOptionsProject.js.map +1 -0
- package/dist/workspace/WorkspacePackageJson.d.ts +3 -0
- package/dist/workspace/WorkspacePackageJson.js.map +1 -1
- package/dist/workspace/WorkspaceProjectGlobs.d.ts +3 -0
- package/dist/workspace/WorkspaceProjectGlobs.js +3 -1
- package/dist/workspace/WorkspaceProjectGlobs.js.map +1 -1
- package/dist/workspace/WorkspaceProjects.d.ts +3 -0
- package/dist/workspace/WorkspaceProjects.js.map +1 -1
- package/dist/workspace/WorkspaceRepository.d.ts +4 -1
- package/dist/workspace/WorkspaceRepository.js +3 -1
- package/dist/workspace/WorkspaceRepository.js.map +1 -1
- package/dist/workspace/WorkspaceUpdateOptions.d.ts +3 -0
- package/dist/workspace/WorkspaceUpdateOptions.js +3 -1
- package/dist/workspace/WorkspaceUpdateOptions.js.map +1 -1
- package/dist/workspace/internals/compareProjectPath.d.ts +2 -0
- package/dist/workspace/internals/compareProjectPath.js +10 -0
- package/dist/workspace/internals/compareProjectPath.js.map +1 -0
- package/dist/workspace/internals/compareWorkspaceDependencyProjectName.d.ts +2 -0
- package/dist/workspace/internals/compareWorkspaceDependencyProjectName.js +10 -0
- package/dist/workspace/internals/compareWorkspaceDependencyProjectName.js.map +1 -0
- package/dist/workspace/internals/getRepositoryBranches.js +6 -0
- package/dist/workspace/internals/getRepositoryBranches.js.map +1 -1
- package/dist/workspace/internals/getRepositoryUrl.js +0 -1
- package/dist/workspace/internals/getRepositoryUrl.js.map +1 -1
- package/dist/workspace/internals.d.ts +2 -0
- package/dist/workspace/internals.js +2 -0
- package/dist/workspace/internals.js.map +1 -1
- package/dist/workspace/saveProjectConfig.d.ts +8 -0
- package/dist/workspace/saveProjectConfig.js +5 -1
- package/dist/workspace/saveProjectConfig.js.map +1 -1
- package/dist/workspace/saveWorkspaceConfig.d.ts +8 -0
- package/dist/workspace/saveWorkspaceConfig.js +5 -1
- package/dist/workspace/saveWorkspaceConfig.js.map +1 -1
- package/dist/workspace.d.ts +12 -0
- package/dist/workspace.js +12 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +10 -10
- package/src/commands/create-project/CreateProject.tsx +2 -2
- package/src/commands/create-project/CreateProjectInput.ts +1 -1
- package/src/commands/create-project/createProjectCommand.tsx +1 -5
- package/src/commands/create-project/runCreateProject.ts +4 -17
- package/src/commands/create-workspace/CreateWorkspace.tsx +8 -6
- package/src/commands/create-workspace/createWorkspaceCommand.tsx +1 -14
- package/src/commands/create-workspace/runCreateWorkspace.ts +4 -16
- package/src/commands/internals/CommandStatus.ts +1 -0
- package/src/commands/internals.ts +1 -0
- package/src/commands/update-workspace/UpdateWorkspace.tsx +1 -1
- package/src/commands/update-workspace/updateWorkspaceCommand.tsx +1 -5
- package/src/template/CarsonTemplate.ts +1 -2
- package/src/template/CarsonTemplateConfig.ts +1 -1
- package/src/template/CarsonTemplateError.ts +19 -0
- package/src/template/TemplateAttributes.ts +2 -1
- package/src/template/TemplateRender.ts +6 -2
- package/src/template/TemplateRenders.ts +1 -1
- package/src/template/applyTemplateRenders.ts +40 -4
- package/src/template/internals/TemplateRenderSnapshot.ts +5 -0
- package/src/template/internals/deleteUsingTemplateRender.ts +21 -2
- package/src/template/internals/insertUsingTemplateRender.ts +11 -1
- package/src/template/internals/mergeUsingTemplateRender.ts +11 -1
- package/src/template/internals/parseCarsonTemplateId.ts +5 -1
- package/src/template/internals/readCarsonTemplate.ts +4 -1
- package/src/template/internals/saveTemplateRenderSnapshots.ts +3 -2
- package/src/template/internals/uninsertUsingTemplateRender.ts +11 -1
- package/src/template/internals/unmerge.ts +1 -1
- package/src/template/internals/unmergeUsingTemplateRender.ts +11 -1
- package/src/template/renderCarsonTemplate.ts +28 -7
- package/src/template.ts +1 -0
- package/src/workspace/Project.ts +16 -4
- package/src/workspace/ProjectConfig.ts +3 -0
- package/src/workspace/ProjectCreateOptions.ts +3 -0
- package/src/workspace/ProjectError.ts +5 -0
- package/src/workspace/ProjectOptions.ts +1 -1
- package/src/workspace/ProjectUpdateOptions.ts +3 -0
- package/src/workspace/Workspace.ts +125 -42
- package/src/workspace/WorkspaceConfig.ts +3 -0
- package/src/workspace/WorkspaceCreateOptions.ts +3 -0
- package/src/workspace/WorkspaceCreateProjectOptions.ts +3 -0
- package/src/workspace/WorkspaceDependencies.ts +30 -27
- package/src/workspace/WorkspaceDependenciesFromWorkspaceOptions.ts +8 -0
- package/src/workspace/WorkspaceDependenciesGetVersionsOptions.ts +6 -0
- package/src/workspace/WorkspaceDependency.ts +18 -0
- package/src/workspace/WorkspaceDependencyProject.ts +13 -0
- package/src/workspace/WorkspaceError.ts +10 -1
- package/src/workspace/WorkspaceFindAndReadOptions.ts +6 -0
- package/src/workspace/WorkspaceOptions.ts +4 -4
- package/src/workspace/{WorkspaceOptionsProjectOptions.ts → WorkspaceOptionsProject.ts} +4 -1
- package/src/workspace/WorkspacePackageJson.ts +3 -0
- package/src/workspace/WorkspaceProjectGlobs.ts +3 -0
- package/src/workspace/WorkspaceProjects.ts +3 -0
- package/src/workspace/WorkspaceRepository.ts +4 -1
- package/src/workspace/WorkspaceUpdateOptions.ts +3 -0
- package/src/workspace/internals/compareProjectPath.ts +14 -0
- package/src/workspace/internals/compareWorkspaceDependencyProjectName.ts +14 -0
- package/src/workspace/internals/getRepositoryBranches.ts +8 -0
- package/src/workspace/internals/getRepositoryUrl.ts +0 -1
- package/src/workspace/internals.ts +2 -0
- package/src/workspace/saveProjectConfig.ts +8 -0
- package/src/workspace/saveWorkspaceConfig.ts +8 -0
- package/src/workspace.ts +12 -0
- package/dist/workspace/WorkspaceOptionsProjectOptions.js +0 -3
- package/dist/workspace/WorkspaceOptionsProjectOptions.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const templateAttributesSchema: z.ZodObject<{
|
|
3
|
-
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
3
|
+
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"ensure">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
4
4
|
}, "strict", z.ZodTypeAny, {
|
|
5
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
5
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
6
6
|
}, {
|
|
7
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
7
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
8
8
|
}>;
|
|
9
9
|
export type TemplateAttributes = z.infer<typeof templateAttributesSchema>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
// TODO: add strategy 'none' so when you using template A that extends template B, you can overwrite template files to no-op
|
|
2
3
|
let strategyTemplateAttributeSchema = z.union([
|
|
3
4
|
z.literal('create'),
|
|
5
|
+
z.literal('ensure'),
|
|
4
6
|
z.literal('overwrite'),
|
|
5
7
|
z.literal('merge'),
|
|
6
8
|
z.literal('check'),
|
|
@@ -10,7 +12,6 @@ let strategyTemplateAttributeSchema = z.union([
|
|
|
10
12
|
])
|
|
11
13
|
]);
|
|
12
14
|
export const templateAttributesSchema = z.object({
|
|
13
|
-
// TODO: add strategy 'none' so when you using template A that extends template B, you can overwrite template files to no-op
|
|
14
15
|
strategy: strategyTemplateAttributeSchema
|
|
15
16
|
}).strict();
|
|
16
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/template/TemplateAttributes.ts"],"sourcesContent":["import {z} from 'zod';\n\nlet strategyTemplateAttributeSchema = z.union([\n z.literal('create'),\n z.literal('overwrite'),\n z.literal('merge'),\n z.literal('check'),\n z.tuple([z.literal('insert'), z.string()]),\n]);\n\nexport const templateAttributesSchema = z\n .object({\n
|
|
1
|
+
{"version":3,"sources":["../../src/template/TemplateAttributes.ts"],"sourcesContent":["import {z} from 'zod';\n\n// TODO: add strategy 'none' so when you using template A that extends template B, you can overwrite template files to no-op\nlet strategyTemplateAttributeSchema = z.union([\n z.literal('create'),\n z.literal('ensure'),\n z.literal('overwrite'),\n z.literal('merge'),\n z.literal('check'),\n z.tuple([z.literal('insert'), z.string()]),\n]);\n\nexport const templateAttributesSchema = z\n .object({\n strategy: strategyTemplateAttributeSchema,\n })\n .strict();\n\nexport type TemplateAttributes = z.infer<typeof templateAttributesSchema>;\n"],"names":["z","strategyTemplateAttributeSchema","union","literal","tuple","string","templateAttributesSchema","object","strategy","strict"],"mappings":"AAAA,SAAQA,CAAC,QAAO,MAAM;AAEtB,4HAA4H;AAC5H,IAAIC,kCAAkCD,EAAEE,KAAK,CAAC;IAC5CF,EAAEG,OAAO,CAAC;IACVH,EAAEG,OAAO,CAAC;IACVH,EAAEG,OAAO,CAAC;IACVH,EAAEG,OAAO,CAAC;IACVH,EAAEG,OAAO,CAAC;IACVH,EAAEI,KAAK,CAAC;QAACJ,EAAEG,OAAO,CAAC;QAAWH,EAAEK,MAAM;KAAG;CAC1C;AAED,OAAO,MAAMC,2BAA2BN,EACrCO,MAAM,CAAC;IACNC,UAAUP;AACZ,GACCQ,MAAM,GAAG"}
|
|
@@ -2,6 +2,10 @@ import { type TemplateRender as BaseTemplateRender } from '@jakubmazanec/templat
|
|
|
2
2
|
import { type templateAttributesSchema } from './TemplateAttributes.js';
|
|
3
3
|
import { type templateDataSchema } from './TemplateData.js';
|
|
4
4
|
/**
|
|
5
|
-
* A template
|
|
5
|
+
* A result of rendering a Carson template file.
|
|
6
6
|
*/
|
|
7
|
-
export type TemplateRender = BaseTemplateRender<typeof templateAttributesSchema, typeof templateDataSchema
|
|
7
|
+
export type TemplateRender = BaseTemplateRender<typeof templateAttributesSchema, typeof templateDataSchema> & {
|
|
8
|
+
template: {
|
|
9
|
+
path: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/template/TemplateRender.ts"],"sourcesContent":["import {type TemplateRender as BaseTemplateRender} from '@jakubmazanec/template';\n\nimport {type templateAttributesSchema} from './TemplateAttributes.js';\nimport {type templateDataSchema} from './TemplateData.js';\n\n/**\n * A template
|
|
1
|
+
{"version":3,"sources":["../../src/template/TemplateRender.ts"],"sourcesContent":["import {type TemplateRender as BaseTemplateRender} from '@jakubmazanec/template';\n\nimport {type templateAttributesSchema} from './TemplateAttributes.js';\nimport {type templateDataSchema} from './TemplateData.js';\n\n/**\n * A result of rendering a Carson template file.\n */\nexport type TemplateRender = BaseTemplateRender<\n typeof templateAttributesSchema,\n typeof templateDataSchema\n> & {\n template: {\n path: string;\n };\n};\n"],"names":[],"mappings":"AAAA,WAeE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/template/TemplateRenders.ts"],"sourcesContent":["import {type TemplateRender} from './TemplateRender.js';\n\n/**\n * A
|
|
1
|
+
{"version":3,"sources":["../../src/template/TemplateRenders.ts"],"sourcesContent":["import {type TemplateRender} from './TemplateRender.js';\n\n/**\n * A {@link TemplateRender} collection.\n */\nexport type TemplateRenders = TemplateRender[];\n"],"names":[],"mappings":"AAAA,WAK+C"}
|
|
@@ -4,4 +4,7 @@ export type ApplyTemplateRendersOptions = {
|
|
|
4
4
|
path: string;
|
|
5
5
|
ignoreStrategies: string[];
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Applies rendered Carson template to a specified path, i.e. creates and updates files based on the result of rendering each Carson template file.
|
|
9
|
+
*/
|
|
7
10
|
export declare function applyTemplateRenders({ templateRenders, path: targetPath, ignoreStrategies, }: ApplyTemplateRendersOptions): Promise<void>;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
// TODO: can this be fixed?
|
|
2
|
+
/* eslint-disable complexity -- TODO */ import fs from 'fs-extra';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import prettier from 'prettier';
|
|
5
|
+
import { CarsonTemplateError } from './CarsonTemplateError.js';
|
|
4
6
|
import { createUsingTemplateRender, deleteUsingTemplateRender, insertUsingTemplateRender, loadTemplateRenderSnapshots, mergeUsingTemplateRender, overwriteUsingTemplateRender, saveTemplateRenderSnapshots, uninsertUsingTemplateRender, unmergeUsingTemplateRender } from './internals.js';
|
|
5
7
|
import { CARSON_CONFIG_DIRECTORY, SNAPSHOTS_FILENAME } from '../constants.js';
|
|
6
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Applies rendered Carson template to a specified path, i.e. creates and updates files based on the result of rendering each Carson template file.
|
|
10
|
+
*/ export async function applyTemplateRenders({ templateRenders, path: targetPath, ignoreStrategies }) {
|
|
7
11
|
// we need to clear Prettier cache, because we are changing file system
|
|
8
12
|
prettier.clearConfigCache();
|
|
13
|
+
// first, we read the existing snapshots and use them to undo previous changes
|
|
9
14
|
let templateRenderSnapshotsPath = path.join(targetPath, CARSON_CONFIG_DIRECTORY, SNAPSHOTS_FILENAME);
|
|
10
15
|
if (await fs.pathExists(templateRenderSnapshotsPath)) {
|
|
11
16
|
let templateRenderSnapshots = await loadTemplateRenderSnapshots(templateRenderSnapshotsPath);
|
|
@@ -14,6 +19,11 @@ export async function applyTemplateRenders({ templateRenders, path: targetPath,
|
|
|
14
19
|
if (ignoreStrategies.includes(strategy)) {
|
|
15
20
|
continue;
|
|
16
21
|
}
|
|
22
|
+
if (templateRenderSnapshot.attributes.strategy === 'ensure') {
|
|
23
|
+
await deleteUsingTemplateRender(templateRenderSnapshot, targetPath, {
|
|
24
|
+
onlyDeleteWhenContentsMatch: true
|
|
25
|
+
});
|
|
26
|
+
}
|
|
17
27
|
if (templateRenderSnapshot.attributes.strategy === 'overwrite') {
|
|
18
28
|
await deleteUsingTemplateRender(templateRenderSnapshot, targetPath);
|
|
19
29
|
}
|
|
@@ -25,13 +35,24 @@ export async function applyTemplateRenders({ templateRenders, path: targetPath,
|
|
|
25
35
|
}
|
|
26
36
|
}
|
|
27
37
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
// second, we apply strategies that create files
|
|
39
|
+
for (let templateRender of templateRenders){
|
|
40
|
+
let strategy = typeof templateRender.attributes.strategy === 'string' ? templateRender.attributes.strategy : templateRender.attributes.strategy[0];
|
|
41
|
+
if (ignoreStrategies.includes(strategy)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (templateRender.attributes.strategy === 'create') {
|
|
45
|
+
await createUsingTemplateRender(templateRender, targetPath);
|
|
46
|
+
}
|
|
47
|
+
if (templateRender.attributes.strategy === 'ensure') {
|
|
48
|
+
let to = path.join(targetPath, templateRender.attributes.to);
|
|
49
|
+
let doesToExist = await fs.pathExists(to);
|
|
50
|
+
if (!doesToExist) {
|
|
31
51
|
await createUsingTemplateRender(templateRender, targetPath);
|
|
32
52
|
}
|
|
33
53
|
}
|
|
34
54
|
}
|
|
55
|
+
// third, we apply strategies that change files
|
|
35
56
|
for (let templateRender of templateRenders){
|
|
36
57
|
let strategy = typeof templateRender.attributes.strategy === 'string' ? templateRender.attributes.strategy : templateRender.attributes.strategy[0];
|
|
37
58
|
if (ignoreStrategies.includes(strategy)) {
|
|
@@ -50,7 +71,16 @@ export async function applyTemplateRenders({ templateRenders, path: targetPath,
|
|
|
50
71
|
let to = path.join(targetPath, templateRender.attributes.to);
|
|
51
72
|
let doesToExist = await fs.pathExists(to);
|
|
52
73
|
if (!doesToExist) {
|
|
53
|
-
throw new
|
|
74
|
+
throw new CarsonTemplateError('STRATEGY_MISSING_FILE', {
|
|
75
|
+
messageParameters: [
|
|
76
|
+
templateRender.attributes.strategy,
|
|
77
|
+
templateRender.template.path,
|
|
78
|
+
to
|
|
79
|
+
],
|
|
80
|
+
data: {
|
|
81
|
+
path: to
|
|
82
|
+
}
|
|
83
|
+
});
|
|
54
84
|
}
|
|
55
85
|
}
|
|
56
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/template/applyTemplateRenders.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/template/applyTemplateRenders.ts"],"sourcesContent":["// TODO: can this be fixed?\n/* eslint-disable complexity -- TODO */\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport prettier from 'prettier';\n\nimport {CarsonTemplateError} from './CarsonTemplateError.js';\nimport {\n createUsingTemplateRender,\n deleteUsingTemplateRender,\n insertUsingTemplateRender,\n loadTemplateRenderSnapshots,\n mergeUsingTemplateRender,\n overwriteUsingTemplateRender,\n saveTemplateRenderSnapshots,\n uninsertUsingTemplateRender,\n unmergeUsingTemplateRender,\n} from './internals.js';\nimport {type TemplateRenders} from './TemplateRenders.js';\nimport {CARSON_CONFIG_DIRECTORY, SNAPSHOTS_FILENAME} from '../constants.js';\n\nexport type ApplyTemplateRendersOptions = {\n templateRenders: TemplateRenders;\n path: string;\n ignoreStrategies: string[];\n};\n\n/**\n * Applies rendered Carson template to a specified path, i.e. creates and updates files based on the result of rendering each Carson template file.\n */\nexport async function applyTemplateRenders({\n templateRenders,\n path: targetPath,\n ignoreStrategies,\n}: ApplyTemplateRendersOptions) {\n // we need to clear Prettier cache, because we are changing file system\n prettier.clearConfigCache();\n\n // first, we read the existing snapshots and use them to undo previous changes\n let templateRenderSnapshotsPath = path.join(\n targetPath,\n CARSON_CONFIG_DIRECTORY,\n SNAPSHOTS_FILENAME,\n );\n\n if (await fs.pathExists(templateRenderSnapshotsPath)) {\n let templateRenderSnapshots = await loadTemplateRenderSnapshots(templateRenderSnapshotsPath);\n\n for (let templateRenderSnapshot of templateRenderSnapshots) {\n let strategy =\n typeof templateRenderSnapshot.attributes.strategy === 'string'\n ? templateRenderSnapshot.attributes.strategy\n : templateRenderSnapshot.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'ensure') {\n await deleteUsingTemplateRender(templateRenderSnapshot, targetPath, {\n onlyDeleteWhenContentsMatch: true,\n });\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'overwrite') {\n await deleteUsingTemplateRender(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'merge') {\n await unmergeUsingTemplateRender(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy[0] === 'insert') {\n await uninsertUsingTemplateRender(templateRenderSnapshot, targetPath);\n }\n }\n }\n\n // second, we apply strategies that create files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string'\n ? templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'create') {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'ensure') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n }\n }\n\n // third, we apply strategies that change files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string'\n ? templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'overwrite') {\n await overwriteUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'merge') {\n await mergeUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy[0] === 'insert') {\n await insertUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'check') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n throw new CarsonTemplateError('STRATEGY_MISSING_FILE', {\n messageParameters: [templateRender.attributes.strategy, templateRender.template.path, to],\n data: {\n path: to,\n },\n });\n }\n }\n }\n\n await saveTemplateRenderSnapshots(templateRenders, templateRenderSnapshotsPath);\n}\n"],"names":["fs","path","prettier","CarsonTemplateError","createUsingTemplateRender","deleteUsingTemplateRender","insertUsingTemplateRender","loadTemplateRenderSnapshots","mergeUsingTemplateRender","overwriteUsingTemplateRender","saveTemplateRenderSnapshots","uninsertUsingTemplateRender","unmergeUsingTemplateRender","CARSON_CONFIG_DIRECTORY","SNAPSHOTS_FILENAME","applyTemplateRenders","templateRenders","targetPath","ignoreStrategies","clearConfigCache","templateRenderSnapshotsPath","join","pathExists","templateRenderSnapshots","templateRenderSnapshot","strategy","attributes","includes","onlyDeleteWhenContentsMatch","templateRender","to","doesToExist","messageParameters","template","data"],"mappings":"AAAA,2BAA2B;AAC3B,qCAAqC,GACrC,OAAOA,QAAQ,WAAW;AAC1B,OAAOC,UAAU,YAAY;AAC7B,OAAOC,cAAc,WAAW;AAEhC,SAAQC,mBAAmB,QAAO,2BAA2B;AAC7D,SACEC,yBAAyB,EACzBC,yBAAyB,EACzBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,wBAAwB,EACxBC,4BAA4B,EAC5BC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,0BAA0B,QACrB,iBAAiB;AAExB,SAAQC,uBAAuB,EAAEC,kBAAkB,QAAO,kBAAkB;AAQ5E;;CAEC,GACD,OAAO,eAAeC,qBAAqB,EACzCC,eAAe,EACff,MAAMgB,UAAU,EAChBC,gBAAgB,EACY;IAC5B,uEAAuE;IACvEhB,SAASiB,gBAAgB;IAEzB,8EAA8E;IAC9E,IAAIC,8BAA8BnB,KAAKoB,IAAI,CACzCJ,YACAJ,yBACAC;IAGF,IAAI,MAAMd,GAAGsB,UAAU,CAACF,8BAA8B;QACpD,IAAIG,0BAA0B,MAAMhB,4BAA4Ba;QAEhE,KAAK,IAAII,0BAA0BD,wBAAyB;YAC1D,IAAIE,WACF,OAAOD,uBAAuBE,UAAU,CAACD,QAAQ,KAAK,WAClDD,uBAAuBE,UAAU,CAACD,QAAQ,GAC1CD,uBAAuBE,UAAU,CAACD,QAAQ,CAAC,EAAE;YAEnD,IAAIP,iBAAiBS,QAAQ,CAACF,WAAW;gBACvC;YACF;YAEA,IAAID,uBAAuBE,UAAU,CAACD,QAAQ,KAAK,UAAU;gBAC3D,MAAMpB,0BAA0BmB,wBAAwBP,YAAY;oBAClEW,6BAA6B;gBAC/B;YACF;YAEA,IAAIJ,uBAAuBE,UAAU,CAACD,QAAQ,KAAK,aAAa;gBAC9D,MAAMpB,0BAA0BmB,wBAAwBP;YAC1D;YAEA,IAAIO,uBAAuBE,UAAU,CAACD,QAAQ,KAAK,SAAS;gBAC1D,MAAMb,2BAA2BY,wBAAwBP;YAC3D;YAEA,IAAIO,uBAAuBE,UAAU,CAACD,QAAQ,CAAC,EAAE,KAAK,UAAU;gBAC9D,MAAMd,4BAA4Ba,wBAAwBP;YAC5D;QACF;IACF;IAEA,gDAAgD;IAChD,KAAK,IAAIY,kBAAkBb,gBAAiB;QAC1C,IAAIS,WACF,OAAOI,eAAeH,UAAU,CAACD,QAAQ,KAAK,WAC1CI,eAAeH,UAAU,CAACD,QAAQ,GAClCI,eAAeH,UAAU,CAACD,QAAQ,CAAC,EAAE;QAE3C,IAAIP,iBAAiBS,QAAQ,CAACF,WAAW;YACvC;QACF;QAEA,IAAII,eAAeH,UAAU,CAACD,QAAQ,KAAK,UAAU;YACnD,MAAMrB,0BAA0ByB,gBAAgBZ;QAClD;QAEA,IAAIY,eAAeH,UAAU,CAACD,QAAQ,KAAK,UAAU;YACnD,IAAIK,KAAK7B,KAAKoB,IAAI,CAACJ,YAAYY,eAAeH,UAAU,CAACI,EAAE;YAC3D,IAAIC,cAAc,MAAM/B,GAAGsB,UAAU,CAACQ;YAEtC,IAAI,CAACC,aAAa;gBAChB,MAAM3B,0BAA0ByB,gBAAgBZ;YAClD;QACF;IACF;IAEA,+CAA+C;IAC/C,KAAK,IAAIY,kBAAkBb,gBAAiB;QAC1C,IAAIS,WACF,OAAOI,eAAeH,UAAU,CAACD,QAAQ,KAAK,WAC1CI,eAAeH,UAAU,CAACD,QAAQ,GAClCI,eAAeH,UAAU,CAACD,QAAQ,CAAC,EAAE;QAE3C,IAAIP,iBAAiBS,QAAQ,CAACF,WAAW;YACvC;QACF;QAEA,IAAII,eAAeH,UAAU,CAACD,QAAQ,KAAK,aAAa;YACtD,MAAMhB,6BAA6BoB,gBAAgBZ;QACrD;QAEA,IAAIY,eAAeH,UAAU,CAACD,QAAQ,KAAK,SAAS;YAClD,MAAMjB,yBAAyBqB,gBAAgBZ;QACjD;QAEA,IAAIY,eAAeH,UAAU,CAACD,QAAQ,CAAC,EAAE,KAAK,UAAU;YACtD,MAAMnB,0BAA0BuB,gBAAgBZ;QAClD;QAEA,IAAIY,eAAeH,UAAU,CAACD,QAAQ,KAAK,SAAS;YAClD,IAAIK,KAAK7B,KAAKoB,IAAI,CAACJ,YAAYY,eAAeH,UAAU,CAACI,EAAE;YAC3D,IAAIC,cAAc,MAAM/B,GAAGsB,UAAU,CAACQ;YAEtC,IAAI,CAACC,aAAa;gBAChB,MAAM,IAAI5B,oBAAoB,yBAAyB;oBACrD6B,mBAAmB;wBAACH,eAAeH,UAAU,CAACD,QAAQ;wBAAEI,eAAeI,QAAQ,CAAChC,IAAI;wBAAE6B;qBAAG;oBACzFI,MAAM;wBACJjC,MAAM6B;oBACR;gBACF;YACF;QACF;IACF;IAEA,MAAMpB,4BAA4BM,iBAAiBI;AACrD"}
|
|
@@ -2,24 +2,37 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const templateRenderSnapshotSchema: z.ZodObject<{
|
|
3
3
|
attributes: z.ZodObject<{
|
|
4
4
|
to: z.ZodString;
|
|
5
|
-
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
5
|
+
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"ensure">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
6
6
|
}, "strict", z.ZodTypeAny, {
|
|
7
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
7
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
8
8
|
to: string;
|
|
9
9
|
}, {
|
|
10
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
10
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
11
11
|
to: string;
|
|
12
12
|
}>;
|
|
13
13
|
content: z.ZodString;
|
|
14
|
+
template: z.ZodObject<{
|
|
15
|
+
path: z.ZodString;
|
|
16
|
+
}, "strict", z.ZodTypeAny, {
|
|
17
|
+
path: string;
|
|
18
|
+
}, {
|
|
19
|
+
path: string;
|
|
20
|
+
}>;
|
|
14
21
|
}, "strict", z.ZodTypeAny, {
|
|
22
|
+
template: {
|
|
23
|
+
path: string;
|
|
24
|
+
};
|
|
15
25
|
attributes: {
|
|
16
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
26
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
17
27
|
to: string;
|
|
18
28
|
};
|
|
19
29
|
content: string;
|
|
20
30
|
}, {
|
|
31
|
+
template: {
|
|
32
|
+
path: string;
|
|
33
|
+
};
|
|
21
34
|
attributes: {
|
|
22
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
35
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
23
36
|
to: string;
|
|
24
37
|
};
|
|
25
38
|
content: string;
|
|
@@ -5,7 +5,10 @@ export const templateRenderSnapshotSchema = z.object({
|
|
|
5
5
|
attributes: baseTemplateAttributesSchema.pick({
|
|
6
6
|
to: true
|
|
7
7
|
}).merge(templateAttributesSchema),
|
|
8
|
-
content: z.string()
|
|
8
|
+
content: z.string(),
|
|
9
|
+
template: z.object({
|
|
10
|
+
path: z.string()
|
|
11
|
+
}).strict()
|
|
9
12
|
}).strict();
|
|
10
13
|
|
|
11
14
|
//# sourceMappingURL=TemplateRenderSnapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/TemplateRenderSnapshot.ts"],"sourcesContent":["import {templateAttributesSchema as baseTemplateAttributesSchema} from '@jakubmazanec/template';\nimport {z} from 'zod';\n\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport const templateRenderSnapshotSchema = z\n .object({\n attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),\n content: z.string(),\n })\n .strict();\n\nexport type TemplateRenderSnapshot = z.infer<typeof templateRenderSnapshotSchema>;\n"],"names":["templateAttributesSchema","baseTemplateAttributesSchema","z","templateRenderSnapshotSchema","object","attributes","pick","to","merge","content","string","strict"],"mappings":"AAAA,SAAQA,4BAA4BC,4BAA4B,QAAO,yBAAyB;AAChG,SAAQC,CAAC,QAAO,MAAM;AAEtB,SAAQF,wBAAwB,QAAO,2BAA2B;AAElE,OAAO,MAAMG,+BAA+BD,EACzCE,MAAM,CAAC;IACNC,YAAYJ,6BAA6BK,IAAI,CAAC;QAACC,IAAI;IAAI,GAAGC,KAAK,CAACR;IAChES,SAASP,EAAEQ,MAAM;
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/TemplateRenderSnapshot.ts"],"sourcesContent":["import {templateAttributesSchema as baseTemplateAttributesSchema} from '@jakubmazanec/template';\nimport {z} from 'zod';\n\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport const templateRenderSnapshotSchema = z\n .object({\n attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),\n content: z.string(),\n template: z\n .object({\n path: z.string(),\n })\n .strict(),\n })\n .strict();\n\nexport type TemplateRenderSnapshot = z.infer<typeof templateRenderSnapshotSchema>;\n"],"names":["templateAttributesSchema","baseTemplateAttributesSchema","z","templateRenderSnapshotSchema","object","attributes","pick","to","merge","content","string","template","path","strict"],"mappings":"AAAA,SAAQA,4BAA4BC,4BAA4B,QAAO,yBAAyB;AAChG,SAAQC,CAAC,QAAO,MAAM;AAEtB,SAAQF,wBAAwB,QAAO,2BAA2B;AAElE,OAAO,MAAMG,+BAA+BD,EACzCE,MAAM,CAAC;IACNC,YAAYJ,6BAA6BK,IAAI,CAAC;QAACC,IAAI;IAAI,GAAGC,KAAK,CAACR;IAChES,SAASP,EAAEQ,MAAM;IACjBC,UAAUT,EACPE,MAAM,CAAC;QACNQ,MAAMV,EAAEQ,MAAM;IAChB,GACCG,MAAM;AACX,GACCA,MAAM,GAAG"}
|
|
@@ -2,24 +2,37 @@ import { type z } from 'zod';
|
|
|
2
2
|
export declare const templateRenderSnapshotsSchema: z.ZodArray<z.ZodObject<{
|
|
3
3
|
attributes: z.ZodObject<{
|
|
4
4
|
to: z.ZodString;
|
|
5
|
-
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
5
|
+
strategy: z.ZodUnion<[z.ZodLiteral<"create">, z.ZodLiteral<"ensure">, z.ZodLiteral<"overwrite">, z.ZodLiteral<"merge">, z.ZodLiteral<"check">, z.ZodTuple<[z.ZodLiteral<"insert">, z.ZodString], null>]>;
|
|
6
6
|
}, "strict", z.ZodTypeAny, {
|
|
7
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
7
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
8
8
|
to: string;
|
|
9
9
|
}, {
|
|
10
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
10
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
11
11
|
to: string;
|
|
12
12
|
}>;
|
|
13
13
|
content: z.ZodString;
|
|
14
|
+
template: z.ZodObject<{
|
|
15
|
+
path: z.ZodString;
|
|
16
|
+
}, "strict", z.ZodTypeAny, {
|
|
17
|
+
path: string;
|
|
18
|
+
}, {
|
|
19
|
+
path: string;
|
|
20
|
+
}>;
|
|
14
21
|
}, "strict", z.ZodTypeAny, {
|
|
22
|
+
template: {
|
|
23
|
+
path: string;
|
|
24
|
+
};
|
|
15
25
|
attributes: {
|
|
16
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
26
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
17
27
|
to: string;
|
|
18
28
|
};
|
|
19
29
|
content: string;
|
|
20
30
|
}, {
|
|
31
|
+
template: {
|
|
32
|
+
path: string;
|
|
33
|
+
};
|
|
21
34
|
attributes: {
|
|
22
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
35
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
23
36
|
to: string;
|
|
24
37
|
};
|
|
25
38
|
content: string;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { type TemplateRenderSnapshot } from './TemplateRenderSnapshot.js';
|
|
2
2
|
import { type TemplateRender } from '../TemplateRender.js';
|
|
3
|
-
export
|
|
3
|
+
export type DeleteUsingTemplateRenderOptions = {
|
|
4
|
+
onlyDeleteWhenContentsMatch?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function deleteUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, basePath: string, options?: DeleteUsingTemplateRenderOptions): Promise<void>;
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
|
|
3
|
+
import { prettify } from './prettify.js';
|
|
4
|
+
export async function deleteUsingTemplateRender(templateRender, basePath, options) {
|
|
5
|
+
var _options;
|
|
4
6
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
5
|
-
if (await fs.pathExists(to)) {
|
|
6
|
-
|
|
7
|
+
if (!await fs.pathExists(to)) {
|
|
8
|
+
return;
|
|
7
9
|
}
|
|
10
|
+
if ((_options = options) === null || _options === void 0 ? void 0 : _options.onlyDeleteWhenContentsMatch) {
|
|
11
|
+
let existingContent = await fs.readFile(to, {
|
|
12
|
+
encoding: 'utf8'
|
|
13
|
+
});
|
|
14
|
+
let newContent = await prettify(templateRender.content, to);
|
|
15
|
+
if (existingContent.trim() === newContent.trim()) {
|
|
16
|
+
await fs.rm(to);
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
await fs.rm(to);
|
|
8
21
|
}
|
|
9
22
|
|
|
10
23
|
//# sourceMappingURL=deleteUsingTemplateRender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/deleteUsingTemplateRender.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {type TemplateRender} from '../TemplateRender.js';\n\nexport async function deleteUsingTemplateRender(\n templateRender: TemplateRender | TemplateRenderSnapshot,\n basePath: string,\n) {\n let to = path.join(basePath, templateRender.attributes.to);\n\n if (await fs.pathExists(to)) {\n await fs.rm(to);\n }\n}\n"],"names":["fs","path","deleteUsingTemplateRender","templateRender","basePath","to","join","attributes","pathExists","rm"],"mappings":"AAAA,OAAOA,QAAQ,WAAW;AAC1B,OAAOC,UAAU,YAAY;
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/deleteUsingTemplateRender.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {type TemplateRender} from '../TemplateRender.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"],"names":["fs","path","prettify","deleteUsingTemplateRender","templateRender","basePath","options","to","join","attributes","pathExists","onlyDeleteWhenContentsMatch","existingContent","readFile","encoding","newContent","content","trim","rm"],"mappings":"AAAA,OAAOA,QAAQ,WAAW;AAC1B,OAAOC,UAAU,YAAY;AAE7B,SAAQC,QAAQ,QAAO,gBAAgB;AAQvC,OAAO,eAAeC,0BACpBC,cAAuD,EACvDC,QAAgB,EAChBC,OAA0C;QAQtCA;IANJ,IAAIC,KAAKN,KAAKO,IAAI,CAACH,UAAUD,eAAeK,UAAU,CAACF,EAAE;IAEzD,IAAI,CAAE,MAAMP,GAAGU,UAAU,CAACH,KAAM;QAC9B;IACF;IAEA,KAAID,WAAAA,qBAAAA,+BAAAA,SAASK,2BAA2B,EAAE;QACxC,IAAIC,kBAAkB,MAAMZ,GAAGa,QAAQ,CAACN,IAAI;YAACO,UAAU;QAAM;QAC7D,IAAIC,aAAa,MAAMb,SAASE,eAAeY,OAAO,EAAET;QAExD,IAAIK,gBAAgBK,IAAI,OAAOF,WAAWE,IAAI,IAAI;YAChD,MAAMjB,GAAGkB,EAAE,CAACX;QACd;QAEA;IACF;IAEA,MAAMP,GAAGkB,EAAE,CAACX;AACd"}
|
|
@@ -2,6 +2,7 @@ import fs from 'fs-extra';
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { prettify } from './prettify.js';
|
|
5
|
+
import { CarsonTemplateError } from '../CarsonTemplateError.js';
|
|
5
6
|
export async function insertUsingTemplateRender(templateRender, basePath) {
|
|
6
7
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
7
8
|
let extension = path.extname(to);
|
|
@@ -23,7 +24,16 @@ export async function insertUsingTemplateRender(templateRender, basePath) {
|
|
|
23
24
|
}
|
|
24
25
|
default:
|
|
25
26
|
{
|
|
26
|
-
throw new
|
|
27
|
+
throw new CarsonTemplateError('STRATEGY_UNSUPPORTED_EXTENSION', {
|
|
28
|
+
messageParameters: [
|
|
29
|
+
templateRender.attributes.strategy,
|
|
30
|
+
templateRender.template.path,
|
|
31
|
+
extension
|
|
32
|
+
],
|
|
33
|
+
data: {
|
|
34
|
+
path: templateRender.template.path
|
|
35
|
+
}
|
|
36
|
+
});
|
|
27
37
|
}
|
|
28
38
|
}
|
|
29
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/insertUsingTemplateRender.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport _ from 'lodash';\nimport path from 'node:path';\n\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {type TemplateRender} from '../TemplateRender.js';\n\nexport async function insertUsingTemplateRender(\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.content}<!-- ${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
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/insertUsingTemplateRender.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport _ from 'lodash';\nimport path from 'node:path';\n\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {type TemplateRender} from '../TemplateRender.js';\n\nexport async function insertUsingTemplateRender(\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.content}<!-- ${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"],"names":["fs","_","path","prettify","CarsonTemplateError","insertUsingTemplateRender","templateRender","basePath","to","join","attributes","extension","extname","pathExists","targetFile","readFile","encoding","newContent","strategy","content","oldContentRegexp","RegExp","escapeRegExp","newFile","replace","writeFile","messageParameters","template","data"],"mappings":"AAAA,OAAOA,QAAQ,WAAW;AAC1B,OAAOC,OAAO,SAAS;AACvB,OAAOC,UAAU,YAAY;AAE7B,SAAQC,QAAQ,QAAO,gBAAgB;AAEvC,SAAQC,mBAAmB,QAAO,4BAA4B;AAG9D,OAAO,eAAeC,0BACpBC,cAAuD,EACvDC,QAAgB;IAEhB,IAAIC,KAAKN,KAAKO,IAAI,CAACF,UAAUD,eAAeI,UAAU,CAACF,EAAE;IACzD,IAAIG,YAAYT,KAAKU,OAAO,CAACJ;IAE7B,OAAQG;QACN,KAAK;YAAO;gBACV,IAAI,MAAMX,GAAGa,UAAU,CAACL,KAAK;oBAC3B,IAAIM,aAAa,MAAMd,GAAGe,QAAQ,CAACP,IAAI;wBAACQ,UAAU;oBAAM;oBACxD,IAAIC,aAAa,CAAC,KAAK,EAAEX,eAAeI,UAAU,CAACQ,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAEZ,eAAea,OAAO,CAAC,KAAK,EAAEb,eAAeI,UAAU,CAACQ,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;oBAC9I,IAAIE,mBAAmB,IAAIC,OACzB,CAAC,QAAQ,EAAEpB,EAAEqB,YAAY,CACvBhB,eAAeI,UAAU,CAACQ,QAAQ,CAAC,EAAE,EACrC,uBAAuB,EAAEjB,EAAEqB,YAAY,CAAChB,eAAeI,UAAU,CAACQ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EACxF;oBAEF,IAAIK,UAAUT,WAAWU,OAAO,CAACJ,kBAAkBH;oBAEnD,MAAMjB,GAAGyB,SAAS,CAACjB,IAAI,MAAML,SAASoB,SAASf,KAAK;wBAACQ,UAAU;oBAAM;gBACvE;gBAEA;YACF;QAEA;YAAS;gBACP,MAAM,IAAIZ,oBAAoB,kCAAkC;oBAC9DsB,mBAAmB;wBACjBpB,eAAeI,UAAU,CAACQ,QAAQ;wBAClCZ,eAAeqB,QAAQ,CAACzB,IAAI;wBAC5BS;qBACD;oBACDiB,MAAM;wBACJ1B,MAAMI,eAAeqB,QAAQ,CAACzB,IAAI;oBACpC;gBACF;YACF;IACF;AACF"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export declare function loadTemplateRenderSnapshots(templateRenderSnapshotsPath: string): Promise<{
|
|
2
|
+
template: {
|
|
3
|
+
path: string;
|
|
4
|
+
};
|
|
2
5
|
attributes: {
|
|
3
|
-
strategy: ("create" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
6
|
+
strategy: ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string]) & ("create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string] | undefined);
|
|
4
7
|
to: string;
|
|
5
8
|
};
|
|
6
9
|
content: string;
|
|
@@ -4,6 +4,7 @@ import path from 'node:path';
|
|
|
4
4
|
import yaml from 'yaml';
|
|
5
5
|
import { merge } from './merge.js';
|
|
6
6
|
import { prettify } from './prettify.js';
|
|
7
|
+
import { CarsonTemplateError } from '../CarsonTemplateError.js';
|
|
7
8
|
export async function mergeUsingTemplateRender(templateRender, basePath) {
|
|
8
9
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
9
10
|
let extension = path.extname(to);
|
|
@@ -32,7 +33,16 @@ export async function mergeUsingTemplateRender(templateRender, basePath) {
|
|
|
32
33
|
}
|
|
33
34
|
default:
|
|
34
35
|
{
|
|
35
|
-
throw new
|
|
36
|
+
throw new CarsonTemplateError('STRATEGY_UNSUPPORTED_EXTENSION', {
|
|
37
|
+
messageParameters: [
|
|
38
|
+
templateRender.attributes.strategy,
|
|
39
|
+
templateRender.template.path,
|
|
40
|
+
extension
|
|
41
|
+
],
|
|
42
|
+
data: {
|
|
43
|
+
path: templateRender.template.path
|
|
44
|
+
}
|
|
45
|
+
});
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/mergeUsingTemplateRender.ts"],"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 {merge} from './merge.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {type TemplateRender} from '../TemplateRender.js';\n\nexport async function mergeUsingTemplateRender(\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 '.json': {\n let targetFile = (await fs.readJson(to)) as Json;\n let fileToMerge = json.parse<Json>(templateRender.content);\n let newFile = JSON.stringify(merge(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(merge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n\n break;\n }\n\n default: {\n throw new
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/mergeUsingTemplateRender.ts"],"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 {merge} from './merge.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {type TemplateRender} from '../TemplateRender.js';\n\nexport async function mergeUsingTemplateRender(\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 '.json': {\n let targetFile = (await fs.readJson(to)) as Json;\n let fileToMerge = json.parse<Json>(templateRender.content);\n let newFile = JSON.stringify(merge(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(merge(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"],"names":["fs","json","path","yaml","merge","prettify","CarsonTemplateError","mergeUsingTemplateRender","templateRender","basePath","to","join","attributes","extension","extname","targetFile","readJson","fileToMerge","parse","content","newFile","JSON","stringify","writeFile","encoding","readFile","messageParameters","strategy","template","data"],"mappings":"AACA,OAAOA,QAAQ,WAAW;AAC1B,OAAOC,UAAU,QAAQ;AACzB,OAAOC,UAAU,YAAY;AAC7B,OAAOC,UAAU,OAAO;AAExB,SAAQC,KAAK,QAAO,aAAa;AACjC,SAAQC,QAAQ,QAAO,gBAAgB;AAEvC,SAAQC,mBAAmB,QAAO,4BAA4B;AAG9D,OAAO,eAAeC,yBACpBC,cAAuD,EACvDC,QAAgB;IAEhB,IAAIC,KAAKR,KAAKS,IAAI,CAACF,UAAUD,eAAeI,UAAU,CAACF,EAAE;IACzD,IAAIG,YAAYX,KAAKY,OAAO,CAACJ;IAE7B,OAAQG;QACN,KAAK;YAAS;gBACZ,IAAIE,aAAc,MAAMf,GAAGgB,QAAQ,CAACN;gBACpC,IAAIO,cAAchB,KAAKiB,KAAK,CAAOV,eAAeW,OAAO;gBACzD,IAAIC,UAAUC,KAAKC,SAAS,CAAClB,MAAMW,YAAYE;gBAE/C,MAAMjB,GAAGuB,SAAS,CAACb,IAAI,MAAML,SAASe,SAASV,KAAK;oBAACc,UAAU;gBAAM;gBAErE;YACF;QAEA,KAAK;YAAS;gBACZ,IAAIT,aAAaZ,KAAKe,KAAK,CAAC,MAAMlB,GAAGyB,QAAQ,CAACf,IAAI;oBAACc,UAAU;gBAAM;gBACnE,IAAIP,cAAcd,KAAKe,KAAK,CAACV,eAAeW,OAAO;gBACnD,IAAIC,UAAUjB,KAAKmB,SAAS,CAAClB,MAAMW,YAAYE;gBAE/C,MAAMjB,GAAGuB,SAAS,CAACb,IAAI,MAAML,SAASe,SAASV,KAAK;oBAACc,UAAU;gBAAM;gBAErE;YACF;QAEA;YAAS;gBACP,MAAM,IAAIlB,oBAAoB,kCAAkC;oBAC9DoB,mBAAmB;wBACjBlB,eAAeI,UAAU,CAACe,QAAQ;wBAClCnB,eAAeoB,QAAQ,CAAC1B,IAAI;wBAC5BW;qBACD;oBACDgB,MAAM;wBACJ3B,MAAMM,eAAeoB,QAAQ,CAAC1B,IAAI;oBACpC;gBACF;YACF;IACF;AACF"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { CarsonTemplateError } from '../CarsonTemplateError.js';
|
|
1
2
|
export function parseCarsonTemplateId(value) {
|
|
2
3
|
let parts = value.split(':');
|
|
3
4
|
if (!parts[0] || !parts[1]) {
|
|
4
|
-
throw new
|
|
5
|
+
throw new CarsonTemplateError('INVALID_CARSON_TEMPLATE_ID', {
|
|
6
|
+
messageParameters: [
|
|
7
|
+
value
|
|
8
|
+
]
|
|
9
|
+
});
|
|
5
10
|
}
|
|
6
11
|
return [
|
|
7
12
|
parts[0],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/parseCarsonTemplateId.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/parseCarsonTemplateId.ts"],"sourcesContent":["import {CarsonTemplateError} from '../CarsonTemplateError.js';\n\nexport function parseCarsonTemplateId(value: string): [moduleId: string, templateName: string] {\n let parts = value.split(':');\n\n if (!parts[0] || !parts[1]) {\n throw new CarsonTemplateError('INVALID_CARSON_TEMPLATE_ID', {\n messageParameters: [value],\n });\n }\n\n return [parts[0], parts[1]];\n}\n"],"names":["CarsonTemplateError","parseCarsonTemplateId","value","parts","split","messageParameters"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,4BAA4B;AAE9D,OAAO,SAASC,sBAAsBC,KAAa;IACjD,IAAIC,QAAQD,MAAME,KAAK,CAAC;IAExB,IAAI,CAACD,KAAK,CAAC,EAAE,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,IAAIH,oBAAoB,8BAA8B;YAC1DK,mBAAmB;gBAACH;aAAM;QAC5B;IACF;IAEA,OAAO;QAACC,KAAK,CAAC,EAAE;QAAEA,KAAK,CAAC,EAAE;KAAC;AAC7B"}
|
|
@@ -7,6 +7,7 @@ import { parseCarsonTemplateId } from './parseCarsonTemplateId.js';
|
|
|
7
7
|
import { resolveModule } from './resolveModule.js';
|
|
8
8
|
import { TEMPLATES_PATH, TEMPLATE_CONFIG_FILENAME } from '../../constants.js';
|
|
9
9
|
import { carsonTemplateConfigSchema } from '../CarsonTemplateConfig.js';
|
|
10
|
+
import { CarsonTemplateError } from '../CarsonTemplateError.js';
|
|
10
11
|
import { templateAttributesSchema } from '../TemplateAttributes.js';
|
|
11
12
|
export async function readCarsonTemplate(templateId) {
|
|
12
13
|
let [moduleId, templateName] = parseCarsonTemplateId(templateId);
|
|
@@ -33,7 +34,12 @@ export async function readCarsonTemplate(templateId) {
|
|
|
33
34
|
}
|
|
34
35
|
return carsonTemplate;
|
|
35
36
|
}
|
|
36
|
-
throw new
|
|
37
|
+
throw new CarsonTemplateError('CARSON_TEMPLATE_NOT_FOUND', {
|
|
38
|
+
messageParameters: [
|
|
39
|
+
templateId,
|
|
40
|
+
moduleId
|
|
41
|
+
]
|
|
42
|
+
});
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
//# sourceMappingURL=readCarsonTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/readCarsonTemplate.ts"],"sourcesContent":["import {Template} from '@jakubmazanec/template';\nimport {readFile} from '@jakubmazanec/zod-utils';\nimport glob from 'fast-glob';\nimport fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {parseCarsonTemplateId} from './parseCarsonTemplateId.js';\nimport {resolveModule} from './resolveModule.js';\nimport {TEMPLATES_PATH, TEMPLATE_CONFIG_FILENAME} from '../../constants.js';\nimport {type CarsonTemplate} from '../CarsonTemplate.js';\nimport {carsonTemplateConfigSchema} from '../CarsonTemplateConfig.js';\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport async function readCarsonTemplate(templateId: string): Promise<CarsonTemplate> {\n let [moduleId, templateName] = parseCarsonTemplateId(templateId);\n let modulePath = await resolveModule(moduleId);\n let carsonTemplatePath = path.join(modulePath, TEMPLATES_PATH, templateName);\n\n if (await fs.pathExists(carsonTemplatePath)) {\n let templateConfigPath = path.join(carsonTemplatePath, TEMPLATE_CONFIG_FILENAME);\n let templateConfig = await readFile(templateConfigPath, carsonTemplateConfigSchema, {\n throwOnZodError: true,\n });\n let templateFilePaths = await glob('**/*.ejs', {\n cwd: carsonTemplatePath,\n dot: true,\n });\n let carsonTemplate: CarsonTemplate = {\n name: templateName,\n config: templateConfig,\n files: [],\n };\n\n for (let templateFilePath of templateFilePaths) {\n carsonTemplate.files.push(\n await Template.read(path.join(carsonTemplatePath, templateFilePath), {\n attributesSchema: templateAttributesSchema,\n }),\n );\n }\n\n return carsonTemplate;\n }\n\n throw new
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/readCarsonTemplate.ts"],"sourcesContent":["import {Template} from '@jakubmazanec/template';\nimport {readFile} from '@jakubmazanec/zod-utils';\nimport glob from 'fast-glob';\nimport fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {parseCarsonTemplateId} from './parseCarsonTemplateId.js';\nimport {resolveModule} from './resolveModule.js';\nimport {TEMPLATES_PATH, TEMPLATE_CONFIG_FILENAME} from '../../constants.js';\nimport {type CarsonTemplate} from '../CarsonTemplate.js';\nimport {carsonTemplateConfigSchema} from '../CarsonTemplateConfig.js';\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport async function readCarsonTemplate(templateId: string): Promise<CarsonTemplate> {\n let [moduleId, templateName] = parseCarsonTemplateId(templateId);\n let modulePath = await resolveModule(moduleId);\n let carsonTemplatePath = path.join(modulePath, TEMPLATES_PATH, templateName);\n\n if (await fs.pathExists(carsonTemplatePath)) {\n let templateConfigPath = path.join(carsonTemplatePath, TEMPLATE_CONFIG_FILENAME);\n let templateConfig = await readFile(templateConfigPath, carsonTemplateConfigSchema, {\n throwOnZodError: true,\n });\n let templateFilePaths = await glob('**/*.ejs', {\n cwd: carsonTemplatePath,\n dot: true,\n });\n let carsonTemplate: CarsonTemplate = {\n name: templateName,\n config: templateConfig,\n files: [],\n };\n\n for (let templateFilePath of templateFilePaths) {\n carsonTemplate.files.push(\n await Template.read(path.join(carsonTemplatePath, templateFilePath), {\n attributesSchema: templateAttributesSchema,\n }),\n );\n }\n\n return carsonTemplate;\n }\n\n throw new CarsonTemplateError('CARSON_TEMPLATE_NOT_FOUND', {\n messageParameters: [templateId, moduleId],\n });\n}\n"],"names":["Template","readFile","glob","fs","path","parseCarsonTemplateId","resolveModule","TEMPLATES_PATH","TEMPLATE_CONFIG_FILENAME","carsonTemplateConfigSchema","CarsonTemplateError","templateAttributesSchema","readCarsonTemplate","templateId","moduleId","templateName","modulePath","carsonTemplatePath","join","pathExists","templateConfigPath","templateConfig","throwOnZodError","templateFilePaths","cwd","dot","carsonTemplate","name","config","files","templateFilePath","push","read","attributesSchema","messageParameters"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,yBAAyB;AAChD,SAAQC,QAAQ,QAAO,0BAA0B;AACjD,OAAOC,UAAU,YAAY;AAC7B,OAAOC,QAAQ,WAAW;AAC1B,OAAOC,UAAU,YAAY;AAE7B,SAAQC,qBAAqB,QAAO,6BAA6B;AACjE,SAAQC,aAAa,QAAO,qBAAqB;AACjD,SAAQC,cAAc,EAAEC,wBAAwB,QAAO,qBAAqB;AAE5E,SAAQC,0BAA0B,QAAO,6BAA6B;AACtE,SAAQC,mBAAmB,QAAO,4BAA4B;AAC9D,SAAQC,wBAAwB,QAAO,2BAA2B;AAElE,OAAO,eAAeC,mBAAmBC,UAAkB;IACzD,IAAI,CAACC,UAAUC,aAAa,GAAGV,sBAAsBQ;IACrD,IAAIG,aAAa,MAAMV,cAAcQ;IACrC,IAAIG,qBAAqBb,KAAKc,IAAI,CAACF,YAAYT,gBAAgBQ;IAE/D,IAAI,MAAMZ,GAAGgB,UAAU,CAACF,qBAAqB;QAC3C,IAAIG,qBAAqBhB,KAAKc,IAAI,CAACD,oBAAoBT;QACvD,IAAIa,iBAAiB,MAAMpB,SAASmB,oBAAoBX,4BAA4B;YAClFa,iBAAiB;QACnB;QACA,IAAIC,oBAAoB,MAAMrB,KAAK,YAAY;YAC7CsB,KAAKP;YACLQ,KAAK;QACP;QACA,IAAIC,iBAAiC;YACnCC,MAAMZ;YACNa,QAAQP;YACRQ,OAAO,EAAE;QACX;QAEA,KAAK,IAAIC,oBAAoBP,kBAAmB;YAC9CG,eAAeG,KAAK,CAACE,IAAI,CACvB,MAAM/B,SAASgC,IAAI,CAAC5B,KAAKc,IAAI,CAACD,oBAAoBa,mBAAmB;gBACnEG,kBAAkBtB;YACpB;QAEJ;QAEA,OAAOe;IACT;IAEA,MAAM,IAAIhB,oBAAoB,6BAA6B;QACzDwB,mBAAmB;YAACrB;YAAYC;SAAS;IAC3C;AACF"}
|
|
@@ -3,18 +3,18 @@ import fs from 'fs-extra';
|
|
|
3
3
|
export async function saveTemplateRenderSnapshots(templateRenders, templateRenderSnapshotsPath) {
|
|
4
4
|
let templateRendersSnapshots = [];
|
|
5
5
|
for (let templateRender of templateRenders){
|
|
6
|
-
if (templateRender.attributes.strategy === 'overwrite' || templateRender.attributes.strategy === 'merge' || templateRender.attributes.strategy[0] === 'insert') {
|
|
6
|
+
if (templateRender.attributes.strategy === 'ensure' || templateRender.attributes.strategy === 'overwrite' || templateRender.attributes.strategy === 'merge' || templateRender.attributes.strategy[0] === 'insert') {
|
|
7
7
|
templateRendersSnapshots.push({
|
|
8
8
|
attributes: {
|
|
9
9
|
to: templateRender.attributes.to,
|
|
10
10
|
strategy: templateRender.attributes.strategy
|
|
11
11
|
},
|
|
12
|
-
content: templateRender.content
|
|
12
|
+
content: templateRender.content,
|
|
13
|
+
template: templateRender.template
|
|
13
14
|
});
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
await fs.writeFile(templateRenderSnapshotsPath, deflateSync(strToU8(uncompressedSnapshots), {
|
|
17
|
+
await fs.writeFile(templateRenderSnapshotsPath, deflateSync(strToU8(JSON.stringify(templateRendersSnapshots)), {
|
|
18
18
|
level: 1,
|
|
19
19
|
mem: 0
|
|
20
20
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/template/internals/saveTemplateRenderSnapshots.ts"],"sourcesContent":["import {deflateSync, strToU8} from 'fflate';\nimport fs from 'fs-extra';\n\nimport {type TemplateRenderSnapshots} from './TemplateRenderSnapshots.js';\nimport {type TemplateRenders} from '../TemplateRenders.js';\n\nexport async function saveTemplateRenderSnapshots(\n templateRenders: TemplateRenders,\n templateRenderSnapshotsPath: string,\n) {\n let templateRendersSnapshots: TemplateRenderSnapshots = [];\n\n for (let templateRender of templateRenders) {\n if (\n templateRender.attributes.strategy === 'overwrite' ||\n templateRender.attributes.strategy === 'merge' ||\n templateRender.attributes.strategy[0] === 'insert'\n ) {\n templateRendersSnapshots.push({\n attributes: {\n to: templateRender.attributes.to,\n strategy: templateRender.attributes.strategy,\n },\n content: templateRender.content,\n });\n }\n }\n
|
|
1
|
+
{"version":3,"sources":["../../../src/template/internals/saveTemplateRenderSnapshots.ts"],"sourcesContent":["import {deflateSync, strToU8} from 'fflate';\nimport fs from 'fs-extra';\n\nimport {type TemplateRenderSnapshots} from './TemplateRenderSnapshots.js';\nimport {type TemplateRenders} from '../TemplateRenders.js';\n\nexport async function saveTemplateRenderSnapshots(\n templateRenders: TemplateRenders,\n templateRenderSnapshotsPath: string,\n) {\n let templateRendersSnapshots: TemplateRenderSnapshots = [];\n\n for (let templateRender of templateRenders) {\n if (\n templateRender.attributes.strategy === 'ensure' ||\n templateRender.attributes.strategy === 'overwrite' ||\n templateRender.attributes.strategy === 'merge' ||\n templateRender.attributes.strategy[0] === 'insert'\n ) {\n templateRendersSnapshots.push({\n attributes: {\n to: templateRender.attributes.to,\n strategy: templateRender.attributes.strategy,\n },\n content: templateRender.content,\n template: templateRender.template,\n });\n }\n }\n\n await fs.writeFile(\n templateRenderSnapshotsPath,\n deflateSync(strToU8(JSON.stringify(templateRendersSnapshots)), {level: 1, mem: 0}),\n );\n}\n"],"names":["deflateSync","strToU8","fs","saveTemplateRenderSnapshots","templateRenders","templateRenderSnapshotsPath","templateRendersSnapshots","templateRender","attributes","strategy","push","to","content","template","writeFile","JSON","stringify","level","mem"],"mappings":"AAAA,SAAQA,WAAW,EAAEC,OAAO,QAAO,SAAS;AAC5C,OAAOC,QAAQ,WAAW;AAK1B,OAAO,eAAeC,4BACpBC,eAAgC,EAChCC,2BAAmC;IAEnC,IAAIC,2BAAoD,EAAE;IAE1D,KAAK,IAAIC,kBAAkBH,gBAAiB;QAC1C,IACEG,eAAeC,UAAU,CAACC,QAAQ,KAAK,YACvCF,eAAeC,UAAU,CAACC,QAAQ,KAAK,eACvCF,eAAeC,UAAU,CAACC,QAAQ,KAAK,WACvCF,eAAeC,UAAU,CAACC,QAAQ,CAAC,EAAE,KAAK,UAC1C;YACAH,yBAAyBI,IAAI,CAAC;gBAC5BF,YAAY;oBACVG,IAAIJ,eAAeC,UAAU,CAACG,EAAE;oBAChCF,UAAUF,eAAeC,UAAU,CAACC,QAAQ;gBAC9C;gBACAG,SAASL,eAAeK,OAAO;gBAC/BC,UAAUN,eAAeM,QAAQ;YACnC;QACF;IACF;IAEA,MAAMX,GAAGY,SAAS,CAChBT,6BACAL,YAAYC,QAAQc,KAAKC,SAAS,CAACV,4BAA4B;QAACW,OAAO;QAAGC,KAAK;IAAC;AAEpF"}
|
|
@@ -2,6 +2,7 @@ import fs from 'fs-extra';
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { prettify } from './prettify.js';
|
|
5
|
+
import { CarsonTemplateError } from '../CarsonTemplateError.js';
|
|
5
6
|
export async function uninsertUsingTemplateRender(templateRender, basePath) {
|
|
6
7
|
let to = path.join(basePath, templateRender.attributes.to);
|
|
7
8
|
let extension = path.extname(to);
|
|
@@ -23,7 +24,16 @@ export async function uninsertUsingTemplateRender(templateRender, basePath) {
|
|
|
23
24
|
}
|
|
24
25
|
default:
|
|
25
26
|
{
|
|
26
|
-
throw new
|
|
27
|
+
throw new CarsonTemplateError('STRATEGY_UNSUPPORTED_EXTENSION', {
|
|
28
|
+
messageParameters: [
|
|
29
|
+
templateRender.attributes.strategy,
|
|
30
|
+
templateRender.template.path,
|
|
31
|
+
extension
|
|
32
|
+
],
|
|
33
|
+
data: {
|
|
34
|
+
path: templateRender.template.path
|
|
35
|
+
}
|
|
36
|
+
});
|
|
27
37
|
}
|
|
28
38
|
}
|
|
29
39
|
}
|