presetter 3.1.1 → 3.4.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/lib/preset.js CHANGED
@@ -1,325 +1,177 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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;
5
17
  });
6
- exports.assertPresetterRC = assertPresetterRC;
7
- exports.bootstrapContent = bootstrapContent;
8
- exports.bootstrapPreset = bootstrapPreset;
9
- exports.getContext = getContext;
10
- exports.getDestinationMap = getDestinationMap;
11
- exports.getPresetAssets = getPresetAssets;
12
- exports.getPresetterRC = getPresetterRC;
13
- exports.getScripts = getScripts;
14
- exports.setupPreset = setupPreset;
15
- exports.unsetPreset = unsetPreset;
16
- exports.updatePresetterRC = updatePresetterRC;
17
-
18
- var _console = require("console");
19
-
20
- var _fsExtra = require("fs-extra");
21
-
22
- var _lodash = require("lodash");
23
-
24
- var _path = require("path");
25
-
26
- var _readPkg = _interopRequireDefault(require("read-pkg"));
27
-
28
- var _resolvePkg = _interopRequireDefault(require("resolve-pkg"));
29
-
30
- var _writePkg = _interopRequireDefault(require("write-pkg"));
31
-
32
- var _content = require("./content");
33
-
34
- var _io = require("./io");
35
-
36
- var _package = require("./package");
37
-
38
- var _template = require("./template");
39
-
40
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
-
42
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
-
44
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
-
46
- /** presetter configuration filename */
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.getDestinationMap = exports.getContext = exports.unsetPreset = exports.bootstrapContent = exports.bootstrapPreset = exports.setupPreset = exports.getScripts = exports.getPresetGraph = exports.getPresetNode = exports.getPresetAsset = exports.assertPresetterRC = exports.updatePresetterRC = exports.getPresetterRC = void 0;
30
+ const console_1 = require("console");
31
+ const fs_extra_1 = require("fs-extra");
32
+ const lodash_1 = require("lodash");
33
+ const path_1 = require("path");
34
+ const read_pkg_1 = __importDefault(require("read-pkg"));
35
+ const resolve_pkg_1 = __importDefault(require("resolve-pkg"));
36
+ const write_pkg_1 = __importDefault(require("write-pkg"));
37
+ const content_1 = require("./content");
38
+ const io_1 = require("./io");
39
+ const package_1 = require("./package");
40
+ const template_1 = require("./template");
47
41
  const PRESETTERRC = '.presetterrc';
48
42
  const JSON_INDENT = 2;
49
- /**
50
- * get the .presetterrc configuration file content
51
- * @param root the base directory in which the configuration file should be located
52
- * @returns content of the configuration file
53
- */
54
-
55
43
  async function getPresetterRC(root) {
56
- const potentialConfigFiles = ['', '.json'].map(ext => (0, _path.resolve)(root, `${PRESETTERRC}${ext}`));
57
-
58
- for (const path of potentialConfigFiles) {
59
- if (await (0, _fsExtra.pathExists)(path)) {
60
- // return the first customisation file found
61
- const custom = await (0, _io.loadFile)(path, 'json');
62
- assertPresetterRC(custom);
63
- return custom;
44
+ const potentialConfigFiles = ['', '.json'].map((ext) => (0, path_1.resolve)(root, `${PRESETTERRC}${ext}`));
45
+ for (const path of potentialConfigFiles) {
46
+ if (await (0, fs_extra_1.pathExists)(path)) {
47
+ const custom = await (0, io_1.loadFile)(path, 'json');
48
+ assertPresetterRC(custom);
49
+ return custom;
50
+ }
64
51
  }
65
- }
66
-
67
- throw new Error('Missing preset defined in .presetterrc');
52
+ throw new Error('Missing preset defined in .presetterrc');
68
53
  }
69
- /**
70
- * update .presetterrc configuration file content
71
- * @param root the base directory in which the configuration file should be located
72
- * @param config content to be merged with the existing configuration file
73
- */
74
-
75
-
54
+ exports.getPresetterRC = getPresetterRC;
76
55
  async function updatePresetterRC(root, config) {
77
- const existingPresetterRC = await getPresetterRC(root).catch(() => ({}));
78
- await (0, _fsExtra.writeJSON)((0, _path.resolve)(root, `${PRESETTERRC}.json`), (0, _template.merge)(existingPresetterRC, config), {
79
- spaces: JSON_INDENT
80
- });
56
+ const existingPresetterRC = await getPresetterRC(root).catch(() => ({}));
57
+ await (0, fs_extra_1.writeJSON)((0, path_1.resolve)(root, `${PRESETTERRC}.json`), (0, template_1.merge)(existingPresetterRC, config), { spaces: JSON_INDENT });
81
58
  }
82
- /**
83
- * check that the configuration is valid
84
- * @param value content from a configuration file
85
- */
86
-
87
-
59
+ exports.updatePresetterRC = updatePresetterRC;
88
60
  function assertPresetterRC(value) {
89
- if (!(0, _template.isJSON)(value) || typeof value['preset'] !== 'string' && !Array.isArray(value['preset'])) {
90
- throw new Error(`invalid presetter configuration file`);
91
- }
61
+ if (!(0, template_1.isJSON)(value) ||
62
+ (typeof value['preset'] !== 'string' && !Array.isArray(value['preset']))) {
63
+ throw new Error(`invalid presetter configuration file`);
64
+ }
92
65
  }
93
- /**
94
- * get the preset package name from package.json
95
- * @param context context about the target project and any customisation in .presetterrc
96
- * @returns name of the preset package
97
- */
98
-
99
-
100
- async function getPresetAssets(context) {
101
- // get the preset name
102
- const {
103
- preset
104
- } = context.custom;
105
- const presets = Array.isArray(preset) ? preset : [preset];
106
- const assets = [];
107
-
108
- for (const preset of presets) {
66
+ exports.assertPresetterRC = assertPresetterRC;
67
+ async function getPresetAsset(name, context) {
109
68
  try {
110
- var _asset$extends$map, _asset$extends;
111
-
112
- // get the preset
113
- const module = (0, _resolvePkg.default)(preset, {
114
- cwd: context.target.root
115
- });
116
- const {
117
- default: presetPresetAsset
118
- } = await Promise.resolve(`${module}`).then(s => _interopRequireWildcard(require(s)));
119
- const asset = await presetPresetAsset(context); // add extended assets first
120
-
121
- const extensions = (_asset$extends$map = (_asset$extends = asset.extends) === null || _asset$extends === void 0 ? void 0 : _asset$extends.map(async extension => getPresetAssets({ ...context,
122
- custom: { ...context.custom,
123
- preset: extension
124
- }
125
- }))) !== null && _asset$extends$map !== void 0 ? _asset$extends$map : [];
126
- assets.push(...(await Promise.all(extensions)).flat()); // then asset from this preset so that this preset can override the extended ones
127
-
128
- assets.push(asset);
129
- } catch {
130
- throw new Error(`cannot resolve preset ${preset}`);
69
+ const module = (0, resolve_pkg_1.default)(name, {
70
+ cwd: context.target.root,
71
+ });
72
+ const { default: presetPresetAsset } = (await Promise.resolve().then(() => __importStar(require(module))));
73
+ return await presetPresetAsset(context);
74
+ }
75
+ catch (_a) {
76
+ throw new Error(`cannot resolve preset ${name}`);
131
77
  }
132
- }
133
-
134
- return assets;
135
78
  }
136
- /**
137
- * merge all scripts templates
138
- * @param context context about the target project and any customisation in .presetterrc
139
- * @returns scripts template
140
- */
141
-
142
-
143
- async function getScripts(context) {
144
- const {
145
- custom
146
- } = context; // get assets from all configured presets
147
-
148
- const assets = await getPresetAssets(context); // compute the final variable to be used in the scripts template
149
-
150
- const variable = (0, _content.getVariable)(assets, context); // load templated scripts from presets
151
-
152
- const scripts = await Promise.all(assets.map(asset => asset.scripts).filter(path => typeof path === 'string').map(async path => await (0, _io.loadFile)(path, 'yaml'))); // merge all template scripts from presets
153
-
154
- const scriptsFromPreset = scripts.reduce((merged, scripts) => (0, _template.merge)(merged, scripts), {}); // merge customised scripts with the preset scripts
155
-
156
- const scriptsWithCustomConfig = (0, _template.merge)(scriptsFromPreset, custom.scripts); // replace the template variables
157
-
158
- return (0, _template.template)(scriptsWithCustomConfig, variable);
79
+ exports.getPresetAsset = getPresetAsset;
80
+ async function getPresetNode(name, context) {
81
+ var _a;
82
+ const asset = await getPresetAsset(name, context);
83
+ const nodes = await Promise.all(((_a = asset.extends) !== null && _a !== void 0 ? _a : []).map(async (extension) => getPresetNode(extension, context)));
84
+ return { name, asset, nodes };
159
85
  }
160
- /**
161
- * adopt a preset to the project
162
- * @param uris list of name or git url of the preset
163
- */
164
-
165
-
166
- async function setupPreset(...uris) {
167
- // NOTE: comparing packages before and after installation is the only reliable way
168
- // to extract the name of the preset in case it's given as a git url or file path etc.
169
- const {
170
- path
171
- } = await (0, _package.getPackage)();
172
- const root = (0, _path.dirname)(path);
173
- const packageBefore = (await (0, _readPkg.default)({
174
- cwd: root
175
- })).devDependencies; // install presetter & the preset
176
-
177
- (0, _console.info)(`Installing ${uris.join(' ')}... it may take a few moment...`);
178
- await (0, _package.reifyDependencies)({
179
- root,
180
- add: ['presetter', ...uris],
181
- saveAs: 'dev',
182
- lockFile: true
183
- }); // extract the name of the installed preset
184
-
185
- const packageAfter = (await (0, _readPkg.default)({
186
- cwd: root
187
- })).devDependencies;
188
- const newPackages = getNewPackages({ ...packageBefore
189
- }, { ...packageAfter
190
- });
191
- const preset = newPackages.filter(name => name !== 'presetter');
192
- (0, _console.info)('Updating .presetterrc.json & package.json'); // update .presetterrc.json
193
-
194
- await updatePresetterRC(root, {
195
- preset
196
- }); // bootstrap configuration files with the new .presetterrc.json
197
-
198
- const context = await getContext();
199
- await bootstrapContent(context); // insert post install script if not preset
200
-
201
- await (0, _writePkg.default)(root, (0, _lodash.defaultsDeep)(context.target.package, {
202
- scripts: {
203
- prepare: 'presetter bootstrap'
204
- }
205
- }));
206
- (0, _console.info)('Done. Enjoy coding!');
86
+ exports.getPresetNode = getPresetNode;
87
+ async function getPresetGraph(context) {
88
+ const { preset } = context.custom;
89
+ const presets = Array.isArray(preset) ? preset : [preset];
90
+ return Promise.all(presets.map(async (name) => getPresetNode(name, context)));
207
91
  }
208
- /**
209
- * bootstrap the preset to the current project root
210
- * @param options options on how to bootstrap the preset
211
- * @param options.force do all steps despite potential step saving
212
- */
213
-
214
-
215
- async function bootstrapPreset(options) {
216
- const {
217
- force = false
218
- } = { ...options
219
- };
220
- const context = await getContext(); // install all related packages first
221
-
222
- if (force || !(0, _package.arePeerPackagesAutoInstalled)()) {
223
- await (0, _package.reifyDependencies)({
224
- root: context.target.root
92
+ exports.getPresetGraph = getPresetGraph;
93
+ async function getScripts() {
94
+ const context = await getContext();
95
+ const graph = await getPresetGraph(context);
96
+ const resolvedContext = await (0, content_1.resolveContext)({ graph, context });
97
+ return (0, content_1.resolveScripts)({ graph, context: resolvedContext });
98
+ }
99
+ exports.getScripts = getScripts;
100
+ async function setupPreset(...uris) {
101
+ const { path } = await (0, package_1.getPackage)();
102
+ const root = (0, path_1.dirname)(path);
103
+ const packageBefore = (await (0, read_pkg_1.default)({ cwd: root })).devDependencies;
104
+ (0, console_1.info)(`Installing ${uris.join(' ')}... it may take a few moment...`);
105
+ await (0, package_1.reifyDependencies)({
106
+ root,
107
+ add: ['presetter', ...uris],
108
+ saveAs: 'dev',
109
+ lockFile: true,
225
110
  });
226
- } // generate configurations
227
-
228
-
229
- await bootstrapContent(context);
111
+ const packageAfter = (await (0, read_pkg_1.default)({ cwd: root })).devDependencies;
112
+ const newPackages = getNewPackages(Object.assign({}, packageBefore), Object.assign({}, packageAfter));
113
+ const preset = newPackages.filter((name) => name !== 'presetter');
114
+ (0, console_1.info)('Updating .presetterrc.json & package.json');
115
+ await updatePresetterRC(root, { preset });
116
+ const context = await getContext();
117
+ await bootstrapContent(context);
118
+ await (0, write_pkg_1.default)(root, (0, lodash_1.defaultsDeep)(context.target.package, {
119
+ scripts: { prepare: 'presetter bootstrap' },
120
+ }));
121
+ (0, console_1.info)('Done. Enjoy coding!');
122
+ }
123
+ exports.setupPreset = setupPreset;
124
+ async function bootstrapPreset() {
125
+ const context = await getContext();
126
+ if (!(0, package_1.arePeerPackagesAutoInstalled)()) {
127
+ await (0, package_1.reifyDependencies)({ root: context.target.root });
128
+ }
129
+ await bootstrapContent(context);
230
130
  }
231
- /**
232
- * generate files from templates and link them to the target project root
233
- * @param context context about the target project and any customisation in .presetterrc
234
- */
235
-
236
-
131
+ exports.bootstrapPreset = bootstrapPreset;
237
132
  async function bootstrapContent(context) {
238
- var _context$custom$ignor;
239
-
240
- const assets = await getPresetAssets(context);
241
- const content = await (0, _content.generateContent)(assets, context);
242
- const resolvedContext = await (0, _content.resolveContext)(assets, context);
243
- const userIgnores = (_context$custom$ignor = context.custom.ignores) !== null && _context$custom$ignor !== void 0 ? _context$custom$ignor : [];
244
- const presetIgnores = (await Promise.all(assets.map(({
245
- supplementaryIgnores
246
- }) => supplementaryIgnores instanceof Function ? supplementaryIgnores(resolvedContext) : supplementaryIgnores))).filter(rules => !!rules).flat();
247
- const filteredContent = (0, _template.filter)(content, ...presetIgnores, ...userIgnores);
248
- const destinationMap = await getDestinationMap(filteredContent, resolvedContext);
249
- await (0, _io.writeFiles)(context.target.root, filteredContent, destinationMap);
250
- await (0, _io.linkFiles)(context.target.root, destinationMap);
133
+ const graph = await getPresetGraph(context);
134
+ const resolvedContext = await (0, content_1.resolveContext)({ graph, context });
135
+ const content = await (0, content_1.resolveTemplate)({ graph, context: resolvedContext });
136
+ const destinationMap = await getDestinationMap(content, resolvedContext);
137
+ await (0, io_1.writeFiles)(context.target.root, content, destinationMap);
138
+ await (0, io_1.linkFiles)(context.target.root, destinationMap);
251
139
  }
252
- /**
253
- * uninstall the preset from the current project root
254
- */
255
-
256
-
140
+ exports.bootstrapContent = bootstrapContent;
257
141
  async function unsetPreset() {
258
- const context = await getContext();
259
- const assets = await getPresetAssets(context);
260
- const content = await (0, _content.generateContent)(assets, context);
261
- const resolvedContext = await (0, _content.resolveContext)(assets, context);
262
- const configurationLink = await getDestinationMap(content, resolvedContext);
263
- await (0, _io.unlinkFiles)(context.target.root, configurationLink);
142
+ const context = await getContext();
143
+ const graph = await getPresetGraph(context);
144
+ const resolvedContext = await (0, content_1.resolveContext)({ graph, context });
145
+ const content = await (0, content_1.resolveTemplate)({ graph, context: resolvedContext });
146
+ const configurationLink = await getDestinationMap(content, resolvedContext);
147
+ await (0, io_1.unlinkFiles)(context.target.root, configurationLink);
264
148
  }
265
- /**
266
- * get context about the target project and any customisation in .presetterrc
267
- * @returns context about the target project and any customisation in .presetterrc
268
- */
269
-
270
-
149
+ exports.unsetPreset = unsetPreset;
271
150
  async function getContext() {
272
- const {
273
- json,
274
- path
275
- } = await (0, _package.getPackage)();
276
- const root = (0, _path.dirname)(path);
277
- const target = {
278
- name: json.name,
279
- root,
280
- package: json
281
- };
282
- const custom = await getPresetterRC(root);
283
- return {
284
- target,
285
- custom
286
- };
151
+ const { json, path } = await (0, package_1.getPackage)();
152
+ const root = (0, path_1.dirname)(path);
153
+ const target = { name: json.name, root, package: json };
154
+ const custom = await getPresetterRC(root);
155
+ return {
156
+ target,
157
+ custom,
158
+ };
287
159
  }
288
- /**
289
- * compute the output paths of all configuration files to be generated
290
- * @param template resolved template map
291
- * @param context resolved context about the target project and customisation
292
- * @returns mapping of configuration symlinks to its real path
293
- */
294
-
295
-
160
+ exports.getContext = getContext;
296
161
  async function getDestinationMap(template, context) {
297
- const {
298
- custom: {
299
- noSymlinks
300
- },
301
- target: {
302
- root
303
- }
304
- } = context; // make sure we use the path of presetter under the target project, not the one via npx
305
-
306
- const presetterDir = (0, _resolvePkg.default)('presetter', {
307
- cwd: root
308
- });
309
- const outDir = (0, _path.resolve)(presetterDir, 'generated', context.target.name);
310
- const relativePaths = [...Object.keys(template)];
311
- return Object.fromEntries([...relativePaths.map(relativePath => [relativePath, (0, _path.resolve)( // output on the project root if it's specified as not a symlink
312
- noSymlinks.includes(relativePath) ? context.target.root : outDir, relativePath)])]);
162
+ const { custom: { noSymlinks }, target: { root }, } = context;
163
+ const presetterDir = (0, resolve_pkg_1.default)('presetter', { cwd: root });
164
+ const outDir = (0, path_1.resolve)(presetterDir, 'generated', context.target.name);
165
+ const relativePaths = [...Object.keys(template)];
166
+ return Object.fromEntries([
167
+ ...relativePaths.map((relativePath) => [
168
+ relativePath,
169
+ (0, path_1.resolve)(noSymlinks.includes(relativePath) ? context.target.root : outDir, relativePath),
170
+ ]),
171
+ ]);
313
172
  }
314
- /**
315
- * get a list of new packages installed by comparing the before and after state of devDependencies in package.json
316
- * @param before before state of devDependencies in package.json
317
- * @param after after state of devDependencies in package.json
318
- * @returns list of new package names
319
- */
320
-
321
-
173
+ exports.getDestinationMap = getDestinationMap;
322
174
  function getNewPackages(before, after) {
323
- return Object.keys(after).filter(name => !before[name]);
175
+ return Object.keys(after).filter((name) => !before[name]);
324
176
  }
325
- //# sourceMappingURL=preset.js.map
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3ByZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLHFDQUErQjtBQUMvQix1Q0FBaUQ7QUFDakQsbUNBQXNDO0FBQ3RDLCtCQUF3QztBQUN4Qyx3REFBbUM7QUFDbkMsOERBQXlDO0FBQ3pDLDBEQUFxQztBQUVyQyx1Q0FBNEU7QUFDNUUsNkJBQW9FO0FBQ3BFLHVDQUltQjtBQUNuQix5Q0FBMkM7QUFjM0MsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDO0FBRW5DLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQWtCZixLQUFLLFVBQVUsY0FBYyxDQUFDLElBQVk7SUFDL0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNyRCxJQUFBLGNBQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FDdEMsQ0FBQztJQUVGLEtBQUssTUFBTSxJQUFJLElBQUksb0JBQW9CLEVBQUU7UUFDdkMsSUFBSSxNQUFNLElBQUEscUJBQVUsRUFBQyxJQUFJLENBQUMsRUFBRTtZQUUxQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsYUFBUSxFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1QyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxQixPQUFPLE1BQU0sQ0FBQztTQUNmO0tBQ0Y7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQWhCRCx3Q0FnQkM7QUFPTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLElBQVksRUFDWixNQUF1QjtJQUV2QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFD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
@@ -0,0 +1,4 @@
1
+ import type { DynamicAsset, DynamicAssetField, Generator, PresetAsset, PresetterConfig, RequiredResolution, ResolvedPresetContext, Template } from './types';
2
+ export declare function getConfigKey(filename: string): string;
3
+ export declare function loadDynamicMap<F extends DynamicAssetField>(map: PresetAsset[F], context: ResolvedPresetContext<RequiredResolution<F>>): Promise<Record<string, DynamicAsset<F>>>;
4
+ export declare function loadDynamic<R extends Template | string[], K extends keyof PresetterConfig>(value: string | R | Generator<R, K>, context: ResolvedPresetContext<K>): Promise<R>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadDynamic = exports.loadDynamicMap = exports.getConfigKey = void 0;
4
+ const fs_extra_1 = require("fs-extra");
5
+ const path_1 = require("path");
6
+ const io_1 = require("./io");
7
+ function getConfigKey(filename) {
8
+ return (0, path_1.basename)(filename, (0, path_1.extname)(filename))
9
+ .replace(/^\./, '')
10
+ .replace(/rc$/, '')
11
+ .replace(/\.config$/, '');
12
+ }
13
+ exports.getConfigKey = getConfigKey;
14
+ async function loadDynamicMap(map, context) {
15
+ return Object.fromEntries(await Promise.all(Object.entries(map instanceof Function
16
+ ? await map(context)
17
+ : Object.assign({}, map)).map(async ([relativePath, value]) => [
18
+ relativePath,
19
+ await loadDynamic(value, context),
20
+ ])));
21
+ }
22
+ exports.loadDynamicMap = loadDynamicMap;
23
+ async function loadDynamic(value, context) {
24
+ if (typeof value === 'function') {
25
+ return value(context);
26
+ }
27
+ else if (typeof value === 'string' && (await (0, fs_extra_1.pathExists)(value))) {
28
+ return (await (0, io_1.loadFile)(value));
29
+ }
30
+ else {
31
+ return value;
32
+ }
33
+ }
34
+ exports.loadDynamic = loadDynamic;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLHVDQUFzQztBQUN0QywrQkFBeUM7QUFFekMsNkJBQWdDO0FBa0JoQyxTQUFnQixZQUFZLENBQUMsUUFBZ0I7SUFDM0MsT0FBTyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDekMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDbEIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDbEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBTEQsb0NBS0M7QUFRTSxLQUFLLFVBQVUsY0FBYyxDQUNsQyxHQUFtQixFQUNuQixPQUFxRDtJQUdyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsT0FBTyxDQUNaLEdBQUcsWUFBWSxRQUFRO1FBQ3JCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFnQyxDQUFDO1FBQzdDLENBQUMsbUJBQU0sR0FBRyxDQUFFLENBQ2YsQ0FBQyxHQUFHLENBQ0gsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUEwQixFQUFFLENBQUM7UUFDdkQsWUFBWTtRQUNaLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFnQyxDQUFDO0tBQzNELENBQ0YsQ0FDRixDQUNGLENBQUM7QUFDSixDQUFDO0FBbkJELHdDQW1CQztBQVFNLEtBQUssVUFBVSxXQUFXLENBSS9CLEtBR21CLEVBQ25CLE9BQWlDO0lBRWpDLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUEscUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLElBQUEsYUFBUSxFQUFDLEtBQUssQ0FBQyxDQUFNLENBQUM7S0FDckM7U0FBTTtRQUNMLE9BQU8sS0FBVSxDQUFDO0tBQ25CO0FBQ0gsQ0FBQztBQWpCRCxrQ0FpQkMifQ==