simple-scaffold 2.3.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/config.js DELETED
@@ -1,242 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getOptionValueForFile = getOptionValueForFile;
30
- exports.parseAppendData = parseAppendData;
31
- exports.getConfigFile = getConfigFile;
32
- exports.parseConfigFile = parseConfigFile;
33
- exports.githubPartToUrl = githubPartToUrl;
34
- exports.getLocalConfig = getLocalConfig;
35
- exports.getRemoteConfig = getRemoteConfig;
36
- exports.findConfigFile = findConfigFile;
37
- const node_path_1 = __importDefault(require("node:path"));
38
- const promises_1 = __importDefault(require("node:fs/promises"));
39
- const types_1 = require("./types");
40
- const parser_1 = require("./parser");
41
- const logger_1 = require("./logger");
42
- const utils_1 = require("./utils");
43
- const git_1 = require("./git");
44
- const file_1 = require("./file");
45
- const node_child_process_1 = require("node:child_process");
46
- /** @internal */
47
- function getOptionValueForFile(config, filePath, fn, defaultValue) {
48
- if (typeof fn !== "function") {
49
- return defaultValue ?? fn;
50
- }
51
- return fn(filePath, node_path_1.default.dirname((0, parser_1.handlebarsParse)(config, filePath, { asPath: true }).toString()), node_path_1.default.basename((0, parser_1.handlebarsParse)(config, filePath, { asPath: true }).toString()));
52
- }
53
- /** @internal */
54
- function parseAppendData(value, options) {
55
- const data = options.data ?? {};
56
- const [key, val] = value.split(/:?=/);
57
- // raw
58
- if (value.includes(":=") && !val.includes(":=")) {
59
- return { ...data, [key]: JSON.parse(val) };
60
- }
61
- return { ...data, [key]: isWrappedWithQuotes(val) ? val.substring(1, val.length - 1) : val };
62
- }
63
- function isWrappedWithQuotes(string) {
64
- return (string.startsWith('"') && string.endsWith('"')) || (string.startsWith("'") && string.endsWith("'"));
65
- }
66
- /** @internal */
67
- async function getConfigFile(config) {
68
- if (config.git && !config.git.includes("://")) {
69
- (0, logger_1.log)(config, types_1.LogLevel.info, `Loading config from GitHub ${config.git}`);
70
- config.git = githubPartToUrl(config.git);
71
- }
72
- const isGit = Boolean(config.git);
73
- const configFilename = config.config;
74
- const configPath = isGit ? config.git : configFilename;
75
- (0, logger_1.log)(config, types_1.LogLevel.info, `Loading config from file ${configFilename}`);
76
- const configPromise = await (isGit
77
- ? getRemoteConfig({ git: configPath, config: configFilename, logLevel: config.logLevel, tmpDir: config.tmpDir })
78
- : getLocalConfig({ config: configFilename, logLevel: config.logLevel }));
79
- // resolve the config
80
- let configImport = await (0, utils_1.resolve)(configPromise, config);
81
- // If the config is a function or promise, return the output
82
- if (typeof configImport.default === "function" || configImport.default instanceof Promise) {
83
- (0, logger_1.log)(config, types_1.LogLevel.debug, "Config is a function or promise, resolving...");
84
- configImport = await (0, utils_1.resolve)(configImport.default, config);
85
- }
86
- return configImport;
87
- }
88
- /** @internal */
89
- async function parseConfigFile(config) {
90
- let output = {
91
- name: config.name,
92
- templates: config.templates ?? [],
93
- output: config.output,
94
- logLevel: config.logLevel,
95
- dryRun: config.dryRun,
96
- data: config.data,
97
- subdir: config.subdir,
98
- overwrite: config.overwrite,
99
- subdirHelper: config.subdirHelper,
100
- beforeWrite: undefined,
101
- tmpDir: config.tmpDir,
102
- };
103
- if (config.quiet) {
104
- config.logLevel = types_1.LogLevel.none;
105
- }
106
- const shouldLoadConfig = Boolean(config.config || config.git);
107
- if (shouldLoadConfig) {
108
- const key = config.key ?? "default";
109
- const configImport = await getConfigFile(config);
110
- if (!configImport[key]) {
111
- throw new Error(`Template "${key}" not found in ${config.config}`);
112
- }
113
- const imported = configImport[key];
114
- (0, logger_1.log)(config, types_1.LogLevel.debug, "Imported result", imported);
115
- output = {
116
- ...output,
117
- ...imported,
118
- beforeWrite: undefined,
119
- data: {
120
- ...imported.data,
121
- ...config.data,
122
- },
123
- };
124
- }
125
- output.data = { ...output.data, ...config.appendData };
126
- const cmdBeforeWrite = config.beforeWrite ? wrapBeforeWrite(config, config.beforeWrite) : undefined;
127
- output.beforeWrite = cmdBeforeWrite ?? output.beforeWrite;
128
- if (!output.name) {
129
- throw new Error("simple-scaffold: Missing required option: name");
130
- }
131
- (0, logger_1.log)(output, types_1.LogLevel.debug, "Parsed config", output);
132
- return output;
133
- }
134
- /** @internal */
135
- function githubPartToUrl(part) {
136
- const gitUrl = new URL(`https://github.com/${part}`);
137
- if (!gitUrl.pathname.endsWith(".git")) {
138
- gitUrl.pathname += ".git";
139
- }
140
- return gitUrl.toString();
141
- }
142
- /** @internal */
143
- async function getLocalConfig(config) {
144
- const { config: configFile, ...logConfig } = config;
145
- const absolutePath = node_path_1.default.resolve(process.cwd(), configFile);
146
- const _isDir = await (0, file_1.isDir)(absolutePath);
147
- if (_isDir) {
148
- (0, logger_1.log)(logConfig, types_1.LogLevel.debug, `Resolving config file from directory ${absolutePath}`);
149
- const file = await findConfigFile(absolutePath);
150
- const exists = await (0, file_1.pathExists)(file);
151
- if (!exists) {
152
- throw new Error(`Could not find config file in directory ${absolutePath}`);
153
- }
154
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Loading config from: ${node_path_1.default.resolve(absolutePath, file)}`);
155
- return (0, utils_1.wrapNoopResolver)(Promise.resolve(`${node_path_1.default.resolve(absolutePath, file)}`).then(s => __importStar(require(s))));
156
- }
157
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Loading config from: ${absolutePath}`);
158
- return (0, utils_1.wrapNoopResolver)(Promise.resolve(`${absolutePath}`).then(s => __importStar(require(s))));
159
- }
160
- /** @internal */
161
- async function getRemoteConfig(config) {
162
- const { config: configFile, git, tmpDir, ...logConfig } = config;
163
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Loading config from remote ${git}, file ${configFile}`);
164
- const url = new URL(git);
165
- const isHttp = url.protocol === "http:" || url.protocol === "https:";
166
- const isGit = url.protocol === "git:" || (isHttp && url.pathname.endsWith(".git"));
167
- if (!isGit) {
168
- throw new Error(`Unsupported protocol ${url.protocol}`);
169
- }
170
- return (0, git_1.getGitConfig)(url, configFile, tmpDir, logConfig);
171
- }
172
- /** @internal */
173
- async function findConfigFile(root) {
174
- const allowed = ["mjs", "cjs", "js", "json"].reduce((acc, ext) => {
175
- acc.push(`scaffold.config.${ext}`);
176
- acc.push(`scaffold.${ext}`);
177
- return acc;
178
- }, []);
179
- for (const file of allowed) {
180
- const exists = await (0, file_1.pathExists)(node_path_1.default.resolve(root, file));
181
- if (exists) {
182
- return file;
183
- }
184
- }
185
- throw new Error(`Could not find config file in git repo`);
186
- }
187
- function wrapBeforeWrite(config, beforeWrite) {
188
- return async (content, rawContent, outputFile) => {
189
- const tmpDir = node_path_1.default.join((0, file_1.getUniqueTmpPath)(), node_path_1.default.basename(outputFile));
190
- await (0, file_1.createDirIfNotExists)(node_path_1.default.dirname(tmpDir), config);
191
- const ext = node_path_1.default.extname(outputFile);
192
- const rawTmpPath = tmpDir.replace(ext, ".raw" + ext);
193
- try {
194
- (0, logger_1.log)(config, types_1.LogLevel.debug, "Parsing beforeWrite command", beforeWrite);
195
- const cmd = await prepareBeforeWriteCmd({ beforeWrite, tmpDir, content, rawTmpPath, rawContent });
196
- const result = await new Promise((resolve, reject) => {
197
- (0, logger_1.log)(config, types_1.LogLevel.debug, "Running parsed beforeWrite command:", cmd);
198
- const proc = (0, node_child_process_1.exec)(cmd);
199
- proc.stdout.on("data", (data) => {
200
- if (data.trim()) {
201
- resolve(data.toString());
202
- }
203
- else {
204
- resolve(undefined);
205
- }
206
- });
207
- proc.stderr.on("data", (data) => {
208
- reject(data.toString());
209
- });
210
- });
211
- return result;
212
- }
213
- catch (e) {
214
- (0, logger_1.log)(config, types_1.LogLevel.debug, e);
215
- (0, logger_1.log)(config, types_1.LogLevel.warning, "Error running beforeWrite command, returning original content");
216
- return undefined;
217
- }
218
- finally {
219
- await promises_1.default.rm(tmpDir, { force: true });
220
- await promises_1.default.rm(rawTmpPath, { force: true });
221
- }
222
- };
223
- }
224
- async function prepareBeforeWriteCmd({ beforeWrite, tmpDir, content, rawTmpPath, rawContent, }) {
225
- let cmd = "";
226
- const pathReg = /\{\{\s*path\s*\}\}/gi;
227
- const rawPathReg = /\{\{\s*rawpath\s*\}\}/gi;
228
- if (pathReg.test(beforeWrite)) {
229
- await promises_1.default.writeFile(tmpDir, content);
230
- cmd = beforeWrite.replaceAll(pathReg, tmpDir);
231
- }
232
- if (rawPathReg.test(beforeWrite)) {
233
- await promises_1.default.writeFile(rawTmpPath, rawContent);
234
- cmd = beforeWrite.replaceAll(rawPathReg, rawTmpPath);
235
- }
236
- if (!cmd) {
237
- await promises_1.default.writeFile(tmpDir, content);
238
- cmd = [beforeWrite, tmpDir].join(" ");
239
- }
240
- return cmd;
241
- }
242
- //# sourceMappingURL=config.js.map
package/config.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/file.js DELETED
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createDirIfNotExists = createDirIfNotExists;
7
- exports.pathExists = pathExists;
8
- exports.isDir = isDir;
9
- exports.removeGlob = removeGlob;
10
- exports.makeRelativePath = makeRelativePath;
11
- exports.getBasePath = getBasePath;
12
- exports.getFileList = getFileList;
13
- exports.getTemplateGlobInfo = getTemplateGlobInfo;
14
- exports.getTemplateFileInfo = getTemplateFileInfo;
15
- exports.copyFileTransformed = copyFileTransformed;
16
- exports.getOutputDir = getOutputDir;
17
- exports.handleTemplateFile = handleTemplateFile;
18
- exports.getUniqueTmpPath = getUniqueTmpPath;
19
- const node_os_1 = __importDefault(require("node:os"));
20
- const node_path_1 = __importDefault(require("node:path"));
21
- const promises_1 = __importDefault(require("node:fs/promises"));
22
- const node_constants_1 = require("node:constants");
23
- const types_1 = require("./types");
24
- const glob_1 = require("glob");
25
- const logger_1 = require("./logger");
26
- const config_1 = require("./config");
27
- const parser_1 = require("./parser");
28
- const utils_1 = require("./utils");
29
- const { stat, access, mkdir, readFile, writeFile } = promises_1.default;
30
- async function createDirIfNotExists(dir, config) {
31
- if (config.dryRun) {
32
- (0, logger_1.log)(config, types_1.LogLevel.info, `Dry Run. Not creating dir ${dir}`);
33
- return;
34
- }
35
- const parentDir = node_path_1.default.dirname(dir);
36
- if (!(await pathExists(parentDir))) {
37
- await createDirIfNotExists(parentDir, config);
38
- }
39
- if (!(await pathExists(dir))) {
40
- try {
41
- (0, logger_1.log)(config, types_1.LogLevel.debug, `Creating dir ${dir}`);
42
- await mkdir(dir);
43
- return;
44
- }
45
- catch (e) {
46
- if (e.code !== "EEXIST") {
47
- throw e;
48
- }
49
- return;
50
- }
51
- }
52
- }
53
- async function pathExists(filePath) {
54
- try {
55
- await access(filePath, node_constants_1.F_OK);
56
- return true;
57
- }
58
- catch (e) {
59
- if (e.code === "ENOENT") {
60
- return false;
61
- }
62
- throw e;
63
- }
64
- }
65
- async function isDir(path) {
66
- const tplStat = await stat(path);
67
- return tplStat.isDirectory();
68
- }
69
- function removeGlob(template) {
70
- return node_path_1.default.normalize(template.replace(/\*/g, ""));
71
- }
72
- function makeRelativePath(str) {
73
- return str.startsWith(node_path_1.default.sep) ? str.slice(1) : str;
74
- }
75
- function getBasePath(relPath) {
76
- return node_path_1.default
77
- .resolve(process.cwd(), relPath)
78
- .replace(process.cwd() + node_path_1.default.sep, "")
79
- .replace(process.cwd(), "");
80
- }
81
- async function getFileList(config, templates) {
82
- (0, logger_1.log)(config, types_1.LogLevel.debug, `Getting file list for glob list: ${templates}`);
83
- return (await (0, glob_1.glob)(templates, {
84
- dot: true,
85
- nodir: true,
86
- })).map(node_path_1.default.normalize);
87
- }
88
- async function getTemplateGlobInfo(config, template) {
89
- const isGlob = (0, glob_1.hasMagic)(template);
90
- (0, logger_1.log)(config, types_1.LogLevel.debug, "before isDir", "isGlob:", isGlob, template);
91
- let _template = template;
92
- let nonGlobTemplate = isGlob ? removeGlob(template) : template;
93
- nonGlobTemplate = node_path_1.default.normalize(nonGlobTemplate);
94
- const isDirOrGlob = isGlob ? true : await isDir(template);
95
- const _shouldAddGlob = !isGlob && isDirOrGlob;
96
- (0, logger_1.log)(config, types_1.LogLevel.debug, "after", { isDirOrGlob, _shouldAddGlob });
97
- const origTemplate = template;
98
- if (_shouldAddGlob) {
99
- _template = node_path_1.default.join(template, "**", "*");
100
- }
101
- return { nonGlobTemplate, origTemplate, isDirOrGlob, isGlob, template: _template };
102
- }
103
- async function getTemplateFileInfo(config, { templatePath, basePath }) {
104
- const inputPath = node_path_1.default.resolve(process.cwd(), templatePath);
105
- const outputPathOpt = (0, config_1.getOptionValueForFile)(config, inputPath, config.output);
106
- const outputDir = getOutputDir(config, outputPathOpt, basePath.replace(config.tmpDir, "./"));
107
- const rawOutputPath = node_path_1.default.join(outputDir, node_path_1.default.basename(inputPath));
108
- const outputPath = (0, parser_1.handlebarsParse)(config, rawOutputPath, { asPath: true }).toString();
109
- const exists = await pathExists(outputPath);
110
- return { inputPath, outputPathOpt, outputDir, outputPath, exists };
111
- }
112
- async function copyFileTransformed(config, { exists, overwrite, outputPath, inputPath, }) {
113
- if (!exists || overwrite) {
114
- if (exists && overwrite) {
115
- (0, logger_1.log)(config, types_1.LogLevel.info, `File ${outputPath} exists, overwriting`);
116
- }
117
- (0, logger_1.log)(config, types_1.LogLevel.debug, `Processing file ${inputPath}`);
118
- const templateBuffer = await readFile(inputPath);
119
- const unprocessedOutputContents = (0, parser_1.handlebarsParse)(config, templateBuffer);
120
- const finalOutputContents = (await config.beforeWrite?.(unprocessedOutputContents, templateBuffer, outputPath)) ?? unprocessedOutputContents;
121
- if (!config.dryRun) {
122
- await writeFile(outputPath, finalOutputContents);
123
- }
124
- else {
125
- (0, logger_1.log)(config, types_1.LogLevel.info, "Dry Run. Output should be:");
126
- (0, logger_1.log)(config, types_1.LogLevel.info, finalOutputContents.toString());
127
- }
128
- }
129
- else if (exists) {
130
- (0, logger_1.log)(config, types_1.LogLevel.info, `File ${outputPath} already exists, skipping`);
131
- }
132
- (0, logger_1.log)(config, types_1.LogLevel.info, "Done.");
133
- }
134
- function getOutputDir(config, outputPathOpt, basePath) {
135
- return node_path_1.default.resolve(process.cwd(), ...[
136
- outputPathOpt,
137
- basePath,
138
- config.subdir
139
- ? config.subdirHelper
140
- ? (0, parser_1.handlebarsParse)(config, `{{ ${config.subdirHelper} name }}`).toString()
141
- : config.name
142
- : undefined,
143
- ].filter(Boolean));
144
- }
145
- async function handleTemplateFile(config, { templatePath, basePath }) {
146
- return new Promise(async (resolve, reject) => {
147
- try {
148
- const { inputPath, outputPathOpt, outputDir, outputPath, exists } = await getTemplateFileInfo(config, {
149
- templatePath,
150
- basePath,
151
- });
152
- const overwrite = (0, config_1.getOptionValueForFile)(config, inputPath, config.overwrite ?? false);
153
- (0, logger_1.log)(config, types_1.LogLevel.debug, `\nParsing ${templatePath}`, `\nBase path: ${basePath}`, `\nFull input path: ${inputPath}`, `\nOutput Path Opt: ${outputPathOpt}`, `\nFull output dir: ${outputDir}`, `\nFull output path: ${outputPath}`, `\n`);
154
- await createDirIfNotExists(node_path_1.default.dirname(outputPath), config);
155
- (0, logger_1.log)(config, types_1.LogLevel.info, `Writing to ${outputPath}`);
156
- await copyFileTransformed(config, { exists, overwrite, outputPath, inputPath });
157
- resolve();
158
- }
159
- catch (e) {
160
- (0, utils_1.handleErr)(e);
161
- reject(e);
162
- }
163
- });
164
- }
165
- /** @internal */
166
- function getUniqueTmpPath() {
167
- return node_path_1.default.resolve(node_os_1.default.tmpdir(), `scaffold-config-${Date.now()}-${Math.random().toString(36).slice(2)}`);
168
- }
169
- //# sourceMappingURL=file.js.map
package/file.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
package/git.js DELETED
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getGitConfig = getGitConfig;
30
- exports.loadGitConfig = loadGitConfig;
31
- const node_path_1 = __importDefault(require("node:path"));
32
- const logger_1 = require("./logger");
33
- const types_1 = require("./types");
34
- const node_child_process_1 = require("node:child_process");
35
- const utils_1 = require("./utils");
36
- const config_1 = require("./config");
37
- async function getGitConfig(url, file, tmpPath, logConfig) {
38
- const repoUrl = `${url.protocol}//${url.host}${url.pathname}`;
39
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Cloning git repo ${repoUrl}`);
40
- return new Promise((res, reject) => {
41
- (0, logger_1.log)(logConfig, types_1.LogLevel.debug, `Cloning git repo to ${tmpPath}`);
42
- const clone = (0, node_child_process_1.spawn)("git", ["clone", "--recurse-submodules", "--depth", "1", repoUrl, tmpPath]);
43
- clone.on("error", reject);
44
- clone.on("close", async (code) => {
45
- if (code === 0) {
46
- res(await loadGitConfig({ logConfig, url: repoUrl, file, tmpPath }));
47
- return;
48
- }
49
- reject(new Error(`Git clone failed with code ${code}`));
50
- });
51
- });
52
- }
53
- /** @internal */
54
- async function loadGitConfig({ logConfig, url: repoUrl, file, tmpPath, }) {
55
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Loading config from git repo: ${repoUrl}`);
56
- const filename = file || (await (0, config_1.findConfigFile)(tmpPath));
57
- const absolutePath = node_path_1.default.resolve(tmpPath, filename);
58
- (0, logger_1.log)(logConfig, types_1.LogLevel.debug, `Resolving config file: ${absolutePath}`);
59
- const loadedConfig = await (0, utils_1.resolve)(async () => (await Promise.resolve(`${absolutePath}`).then(s => __importStar(require(s)))).default, logConfig);
60
- (0, logger_1.log)(logConfig, types_1.LogLevel.info, `Loaded config from git`);
61
- (0, logger_1.log)(logConfig, types_1.LogLevel.debug, `Raw config:`, loadedConfig);
62
- const fixedConfig = {};
63
- for (const [k, v] of Object.entries(loadedConfig)) {
64
- fixedConfig[k] = {
65
- ...v,
66
- templates: v.templates.map((t) => node_path_1.default.resolve(tmpPath, t)),
67
- };
68
- }
69
- return (0, utils_1.wrapNoopResolver)(fixedConfig);
70
- }
71
- //# sourceMappingURL=git.js.map
package/git.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
package/logger.js DELETED
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.log = log;
7
- exports.logInputFile = logInputFile;
8
- exports.logInitStep = logInitStep;
9
- const util_1 = __importDefault(require("util"));
10
- const types_1 = require("./types");
11
- const utils_1 = require("./utils");
12
- function log(config, level, ...obj) {
13
- const priority = {
14
- [types_1.LogLevel.none]: 0,
15
- [types_1.LogLevel.debug]: 1,
16
- [types_1.LogLevel.info]: 2,
17
- [types_1.LogLevel.warning]: 3,
18
- [types_1.LogLevel.error]: 4,
19
- };
20
- if (config.logLevel === types_1.LogLevel.none || priority[level] < priority[config.logLevel ?? types_1.LogLevel.info]) {
21
- return;
22
- }
23
- const levelColor = {
24
- [types_1.LogLevel.none]: "reset",
25
- [types_1.LogLevel.debug]: "blue",
26
- [types_1.LogLevel.info]: "dim",
27
- [types_1.LogLevel.warning]: "yellow",
28
- [types_1.LogLevel.error]: "red",
29
- };
30
- const colorFn = utils_1.colorize[levelColor[level]];
31
- const key = level === types_1.LogLevel.error ? "error" : level === types_1.LogLevel.warning ? "warn" : "log";
32
- const logFn = console[key];
33
- logFn(...obj.map((i) => i instanceof Error
34
- ? colorFn(i, JSON.stringify(i, undefined, 1), i.stack)
35
- : typeof i === "object"
36
- ? util_1.default.inspect(i, { depth: null, colors: true })
37
- : colorFn(i)));
38
- }
39
- function logInputFile(config, data) {
40
- log(config, types_1.LogLevel.debug, data);
41
- }
42
- function logInitStep(config) {
43
- log(config, types_1.LogLevel.debug, "Full config:", {
44
- name: config.name,
45
- templates: config.templates,
46
- output: config.output,
47
- subdir: config.subdir,
48
- data: config.data,
49
- overwrite: config.overwrite,
50
- subdirHelper: config.subdirHelper,
51
- helpers: Object.keys(config.helpers ?? {}),
52
- logLevel: config.logLevel,
53
- dryRun: config.dryRun,
54
- beforeWrite: config.beforeWrite,
55
- });
56
- log(config, types_1.LogLevel.info, "Data:", config.data);
57
- }
58
- //# sourceMappingURL=logger.js.map
package/logger.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}