presetter 3.5.5 → 4.0.1
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/LICENSE +21 -0
 - package/README.md +3 -3
 - package/bin/cli.js +5 -0
 - package/bin/run-p.js +6 -0
 - package/bin/run-s.js +6 -0
 - package/bin/{run → run.js} +4 -2
 - package/lib/content.d.ts +1 -1
 - package/lib/content.js +58 -66
 - package/lib/directive.d.ts +3 -3
 - package/lib/directive.js +12 -17
 - package/lib/error.js +2 -6
 - package/lib/executable/entry.d.ts +1 -1
 - package/lib/executable/entry.js +57 -24
 - package/lib/executable/error.js +12 -19
 - package/lib/executable/index.js +5 -6
 - package/lib/index.d.ts +6 -6
 - package/lib/index.js +7 -23
 - package/lib/io.d.ts +7 -4
 - package/lib/io.js +53 -57
 - package/lib/package.d.ts +3 -5
 - package/lib/package.js +18 -31
 - package/lib/preset/content.d.ts +6 -0
 - package/lib/preset/content.js +13 -0
 - package/lib/preset/context.d.ts +2 -0
 - package/lib/preset/context.js +14 -0
 - package/lib/preset/graph.d.ts +4 -0
 - package/lib/preset/graph.js +20 -0
 - package/lib/preset/index.d.ts +3 -0
 - package/lib/preset/index.js +4 -0
 - package/lib/preset/mapping.d.ts +2 -0
 - package/lib/preset/mapping.js +15 -0
 - package/lib/preset/presetterRC.d.ts +5 -0
 - package/lib/preset/presetterRC.js +38 -0
 - package/lib/preset/scripts.d.ts +1 -0
 - package/lib/preset/scripts.js +10 -0
 - package/lib/preset/setup.d.ts +6 -0
 - package/lib/preset/setup.js +43 -0
 - package/lib/preset/unset.d.ts +1 -0
 - package/lib/preset/unset.js +14 -0
 - package/lib/resolution.d.ts +1 -1
 - package/lib/resolution.js +11 -17
 - package/lib/run.d.ts +5 -1
 - package/lib/run.js +68 -74
 - package/lib/scripts.d.ts +3 -3
 - package/lib/scripts.js +13 -15
 - package/lib/task.d.ts +8 -0
 - package/lib/task.js +37 -0
 - package/lib/template.d.ts +6 -6
 - package/lib/template.js +25 -35
 - package/lib/utilities/index.d.ts +1 -0
 - package/lib/utilities/index.js +2 -0
 - package/lib/utilities/mapValues.d.ts +1 -0
 - package/lib/utilities/mapValues.js +4 -0
 - package/package.json +35 -43
 - package/bin/cli +0 -3
 - package/lib/preset.d.ts +0 -15
 - package/lib/preset.js +0 -188
 - package/lib/types.d.ts +0 -73
 - package/lib/types.js +0 -3
 
    
        package/lib/resolution.js
    CHANGED
    
    | 
         @@ -1,35 +1,29 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            const io_1 = require("./io");
         
     | 
| 
       7 
     | 
    
         
            -
            function getConfigKey(filename) {
         
     | 
| 
       8 
     | 
    
         
            -
                return (0, path_1.basename)(filename, (0, path_1.extname)(filename))
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { existsSync } from 'node:fs';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { basename, extname } from 'node:path';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { loadFile } from './io.js';
         
     | 
| 
      
 4 
     | 
    
         
            +
            export function getConfigKey(filename) {
         
     | 
| 
      
 5 
     | 
    
         
            +
                return basename(filename, extname(filename))
         
     | 
| 
       9 
6 
     | 
    
         
             
                    .replace(/^\./, '')
         
     | 
| 
       10 
7 
     | 
    
         
             
                    .replace(/rc$/, '')
         
     | 
| 
       11 
8 
     | 
    
         
             
                    .replace(/\.config$/, '');
         
     | 
| 
       12 
9 
     | 
    
         
             
            }
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            async function loadDynamicMap(map, context) {
         
     | 
| 
      
 10 
     | 
    
         
            +
            export async function loadDynamicMap(map, context) {
         
     | 
| 
       15 
11 
     | 
    
         
             
                return Object.fromEntries(await Promise.all(Object.entries(map instanceof Function
         
     | 
| 
       16 
12 
     | 
    
         
             
                    ? await map(context)
         
     | 
| 
       17 
     | 
    
         
            -
                    :  
     | 
| 
      
 13 
     | 
    
         
            +
                    : { ...map }).map(async ([relativePath, value]) => [
         
     | 
| 
       18 
14 
     | 
    
         
             
                    relativePath,
         
     | 
| 
       19 
15 
     | 
    
         
             
                    await loadDynamic(value, context),
         
     | 
| 
       20 
16 
     | 
    
         
             
                ])));
         
     | 
| 
       21 
17 
     | 
    
         
             
            }
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            async function loadDynamic(value, context) {
         
     | 
| 
      
 18 
     | 
    
         
            +
            export async function loadDynamic(value, context) {
         
     | 
| 
       24 
19 
     | 
    
         
             
                if (typeof value === 'function') {
         
     | 
| 
       25 
20 
     | 
    
         
             
                    return value(context);
         
     | 
| 
       26 
21 
     | 
    
         
             
                }
         
     | 
| 
       27 
     | 
    
         
            -
                else if (typeof value === 'string' &&  
     | 
| 
       28 
     | 
    
         
            -
                    return  
     | 
| 
      
 22 
     | 
    
         
            +
                else if (typeof value === 'string' && existsSync(value)) {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    return loadFile(value);
         
     | 
| 
       29 
24 
     | 
    
         
             
                }
         
     | 
| 
       30 
25 
     | 
    
         
             
                else {
         
     | 
| 
       31 
26 
     | 
    
         
             
                    return value;
         
     | 
| 
       32 
27 
     | 
    
         
             
                }
         
     | 
| 
       33 
28 
     | 
    
         
             
            }
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLDJCQUFnQztBQUNoQywrQkFBeUM7QUFFekMsNkJBQWdDO0FBa0JoQyxTQUFnQixZQUFZLENBQUMsUUFBZ0I7SUFDM0MsT0FBTyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDekMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDbEIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDbEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBTEQsb0NBS0M7QUFRTSxLQUFLLFVBQVUsY0FBYyxDQUNsQyxHQUFtQixFQUNuQixPQUFxRDtJQUdyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsT0FBTyxDQUNaLEdBQUcsWUFBWSxRQUFRO1FBQ3JCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFnQyxDQUFDO1FBQzdDLENBQUMsbUJBQU0sR0FBRyxDQUFFLENBQ2YsQ0FBQyxHQUFHLENBQ0gsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUEwQixFQUFFLENBQUM7UUFDdkQsWUFBWTtRQUNaLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFnQyxDQUFDO0tBQzNELENBQ0YsQ0FDRixDQUNGLENBQUM7QUFDSixDQUFDO0FBbkJELHdDQW1CQztBQVFNLEtBQUssVUFBVSxXQUFXLENBSS9CLEtBR21CLEVBQ25CLE9BQWlDO0lBRWpDLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksSUFBQSxlQUFVLEVBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekQsT0FBTyxJQUFBLGFBQVEsRUFBQyxLQUFLLENBQU0sQ0FBQztLQUM3QjtTQUFNO1FBQ0wsT0FBTyxLQUFVLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBakJELGtDQWlCQyJ9
         
     | 
| 
      
 29 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWtCaEMsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFnQjtJQUMzQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQVFELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxHQUFtQixFQUNuQixPQUFxRDtJQUdyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsT0FBTyxDQUNaLEdBQUcsWUFBWSxRQUFRO1FBQ3JCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFnQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQ2YsQ0FBQyxHQUFHLENBQ0gsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUEwQixFQUFFLENBQUM7UUFDdkQsWUFBWTtRQUNaLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFnQyxDQUFDO0tBQzNELENBQ0YsQ0FDRixDQUNGLENBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBSS9CLEtBR21CLEVBQ25CLE9BQWlDO0lBRWpDLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3pELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBTSxDQUFDO0tBQzdCO1NBQU07UUFDTCxPQUFPLEtBQVUsQ0FBQztLQUNuQjtBQUNILENBQUMifQ==
         
     | 
    
        package/lib/run.d.ts
    CHANGED
    
    
    
        package/lib/run.js
    CHANGED
    
    | 
         @@ -1,82 +1,76 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            const  
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    const template = await (0, preset_1.getScripts)();
         
     | 
| 
       23 
     | 
    
         
            -
                    this.package.json.scripts = (0, scripts_1.composeScripts)({
         
     | 
| 
       24 
     | 
    
         
            -
                        template,
         
     | 
| 
       25 
     | 
    
         
            -
                        target: Object.assign({}, this.package.json.scripts),
         
     | 
| 
       26 
     | 
    
         
            -
                    });
         
     | 
| 
       27 
     | 
    
         
            -
                    if (this.shouldRestore) {
         
     | 
| 
       28 
     | 
    
         
            -
                        try {
         
     | 
| 
       29 
     | 
    
         
            -
                            (0, fs_1.renameSync)(this.package.path, this.path);
         
     | 
| 
       30 
     | 
    
         
            -
                        }
         
     | 
| 
       31 
     | 
    
         
            -
                        catch (_a) {
         
     | 
| 
       32 
     | 
    
         
            -
                            throw new Error('failed to backup package.json');
         
     | 
| 
       33 
     | 
    
         
            -
                        }
         
     | 
| 
       34 
     | 
    
         
            -
                    }
         
     | 
| 
       35 
     | 
    
         
            -
                    const PADDING = 2;
         
     | 
| 
       36 
     | 
    
         
            -
                    const content = JSON.stringify(this.package.json, null, PADDING);
         
     | 
| 
       37 
     | 
    
         
            -
                    try {
         
     | 
| 
       38 
     | 
    
         
            -
                        (0, fs_1.writeFileSync)(this.package.path, content);
         
     | 
| 
       39 
     | 
    
         
            -
                    }
         
     | 
| 
       40 
     | 
    
         
            -
                    catch (_b) {
         
     | 
| 
       41 
     | 
    
         
            -
                        throw new Error('failed to write to package.json');
         
     | 
| 
       42 
     | 
    
         
            -
                    }
         
     | 
| 
       43 
     | 
    
         
            -
                }
         
     | 
| 
       44 
     | 
    
         
            -
                async restore() {
         
     | 
| 
       45 
     | 
    
         
            -
                    if (this.shouldRestore) {
         
     | 
| 
       46 
     | 
    
         
            -
                        try {
         
     | 
| 
       47 
     | 
    
         
            -
                            (0, fs_1.unlinkSync)(this.package.path);
         
     | 
| 
       48 
     | 
    
         
            -
                            (0, fs_1.renameSync)(this.path, this.package.path);
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { dirname } from 'node:path';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import npmRunScript from '@npmcli/run-script';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { Listr } from 'listr2';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import parse from 'yargs-parser';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { getPackage } from './package.js';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { getScripts } from './preset/index.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
            import { composeScripts } from './scripts.js';
         
     | 
| 
      
 8 
     | 
    
         
            +
            import { parseGlobalArgs, parseTaskSpec, selectTasks } from './task.js';
         
     | 
| 
      
 9 
     | 
    
         
            +
            function createListrTask(_) {
         
     | 
| 
      
 10 
     | 
    
         
            +
                const { composed, template, task, args, pkg } = _;
         
     | 
| 
      
 11 
     | 
    
         
            +
                return {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    title: `Running ${task}...`,
         
     | 
| 
      
 13 
     | 
    
         
            +
                    task: async (_, taskControl) => {
         
     | 
| 
      
 14 
     | 
    
         
            +
                        const command = composed[task];
         
     | 
| 
      
 15 
     | 
    
         
            +
                        const argv = parse(command);
         
     | 
| 
      
 16 
     | 
    
         
            +
                        const [executable, ...taskSpecs] = argv._.map((arg) => arg.toString());
         
     | 
| 
      
 17 
     | 
    
         
            +
                        if (['run-s', 'run-p'].includes(executable)) {
         
     | 
| 
      
 18 
     | 
    
         
            +
                            const globalArgs = [...parseGlobalArgs(argv), ...args];
         
     | 
| 
      
 19 
     | 
    
         
            +
                            const subTasks = taskSpecs.flatMap((taskSpec) => getListrTasksBySpec({ template, pkg, taskSpec, globalArgs }));
         
     | 
| 
      
 20 
     | 
    
         
            +
                            const concurrent = executable === 'run-p';
         
     | 
| 
      
 21 
     | 
    
         
            +
                            return taskControl.newListr(subTasks, { concurrent });
         
     | 
| 
       49 
22 
     | 
    
         
             
                        }
         
     | 
| 
       50 
     | 
    
         
            -
                         
     | 
| 
       51 
     | 
    
         
            -
                             
     | 
| 
      
 23 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 24 
     | 
    
         
            +
                            return runWithNPM({ task, args, pkg, composedScript: composed });
         
     | 
| 
       52 
25 
     | 
    
         
             
                        }
         
     | 
| 
       53 
     | 
    
         
            -
                    }
         
     | 
| 
       54 
     | 
    
         
            -
                }
         
     | 
| 
      
 26 
     | 
    
         
            +
                    },
         
     | 
| 
      
 27 
     | 
    
         
            +
                };
         
     | 
| 
       55 
28 
     | 
    
         
             
            }
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                const  
     | 
| 
       58 
     | 
    
         
            -
                const  
     | 
| 
       59 
     | 
    
         
            -
                 
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                     
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
       63 
     | 
    
         
            -
                     
     | 
| 
       64 
     | 
    
         
            -
                        const SIGINT = 130;
         
     | 
| 
       65 
     | 
    
         
            -
                        process.exit(SIGINT);
         
     | 
| 
       66 
     | 
    
         
            -
                    }
         
     | 
| 
      
 29 
     | 
    
         
            +
            function getListrTasksBySpec(_) {
         
     | 
| 
      
 30 
     | 
    
         
            +
                const { template, pkg, taskSpec, globalArgs } = _;
         
     | 
| 
      
 31 
     | 
    
         
            +
                const task = parseTaskSpec(taskSpec.toString().replace(/^(['"])([^]*?)\1$/, '$2'), globalArgs);
         
     | 
| 
      
 32 
     | 
    
         
            +
                return getListrTasks({
         
     | 
| 
      
 33 
     | 
    
         
            +
                    template,
         
     | 
| 
      
 34 
     | 
    
         
            +
                    pkg,
         
     | 
| 
      
 35 
     | 
    
         
            +
                    selector: task.selector,
         
     | 
| 
      
 36 
     | 
    
         
            +
                    args: task.args,
         
     | 
| 
       67 
37 
     | 
    
         
             
                });
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                const {  
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
            }
         
     | 
| 
      
 39 
     | 
    
         
            +
            function getListrTasks(_) {
         
     | 
| 
      
 40 
     | 
    
         
            +
                const { template, pkg, selector, args } = _;
         
     | 
| 
      
 41 
     | 
    
         
            +
                const target = { ...pkg.json.scripts };
         
     | 
| 
      
 42 
     | 
    
         
            +
                const composed = composeScripts({ template, target });
         
     | 
| 
      
 43 
     | 
    
         
            +
                const tasks = selectTasks(Object.keys(composed), selector);
         
     | 
| 
      
 44 
     | 
    
         
            +
                return tasks.map((task) => createListrTask({ composed, template, pkg, task, args }));
         
     | 
| 
      
 45 
     | 
    
         
            +
            }
         
     | 
| 
      
 46 
     | 
    
         
            +
            async function runWithNPM(_) {
         
     | 
| 
      
 47 
     | 
    
         
            +
                const { task, args, pkg, composedScript } = _;
         
     | 
| 
      
 48 
     | 
    
         
            +
                return npmRunScript({
         
     | 
| 
      
 49 
     | 
    
         
            +
                    event: task,
         
     | 
| 
      
 50 
     | 
    
         
            +
                    args,
         
     | 
| 
      
 51 
     | 
    
         
            +
                    pkg: { scripts: composedScript },
         
     | 
| 
      
 52 
     | 
    
         
            +
                    path: dirname(pkg.path),
         
     | 
| 
       72 
53 
     | 
    
         
             
                    stdio: 'inherit',
         
     | 
| 
       73 
     | 
    
         
            -
                    reject: false,
         
     | 
| 
       74 
     | 
    
         
            -
                    shell: true,
         
     | 
| 
       75 
54 
     | 
    
         
             
                });
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
            }
         
     | 
| 
      
 56 
     | 
    
         
            +
            export async function run(tasks, options) {
         
     | 
| 
      
 57 
     | 
    
         
            +
                const { parallel = false, templateOnly = false } = { ...options };
         
     | 
| 
      
 58 
     | 
    
         
            +
                const pkg = await getPackage();
         
     | 
| 
      
 59 
     | 
    
         
            +
                if (templateOnly) {
         
     | 
| 
      
 60 
     | 
    
         
            +
                    pkg.json.scripts = {};
         
     | 
| 
      
 61 
     | 
    
         
            +
                }
         
     | 
| 
      
 62 
     | 
    
         
            +
                const template = await getScripts();
         
     | 
| 
      
 63 
     | 
    
         
            +
                const listTasks = tasks.flatMap((task) => getListrTasks({ template, pkg, ...task }));
         
     | 
| 
      
 64 
     | 
    
         
            +
                const listr = new Listr(listTasks, {
         
     | 
| 
      
 65 
     | 
    
         
            +
                    concurrent: parallel,
         
     | 
| 
      
 66 
     | 
    
         
            +
                    exitOnError: true,
         
     | 
| 
      
 67 
     | 
    
         
            +
                    renderer: 'simple',
         
     | 
| 
      
 68 
     | 
    
         
            +
                });
         
     | 
| 
      
 69 
     | 
    
         
            +
                try {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    await listr.run();
         
     | 
| 
      
 71 
     | 
    
         
            +
                }
         
     | 
| 
      
 72 
     | 
    
         
            +
                catch {
         
     | 
| 
      
 73 
     | 
    
         
            +
                    process.exit(1);
         
     | 
| 
       79 
74 
     | 
    
         
             
                }
         
     | 
| 
       80 
75 
     | 
    
         
             
            }
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFlQSxrREFBMEI7QUFDMUIsMkJBQXVFO0FBQ3ZFLG1DQUE4QjtBQUM5QiwrQkFBa0Q7QUFFbEQsdUNBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyx1Q0FBMkM7QUFLM0MsTUFBTSwyQkFBMkI7SUFVL0IsWUFBWSxhQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUEsY0FBTyxFQUNqQixJQUFBLGNBQU8sRUFBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQzNCLEdBQUcsR0FBRyxJQUFBLGVBQVEsRUFBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQ25DLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBQSxlQUFVLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFNTSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVk7UUFFL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLG1CQUFVLEdBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSx3QkFBYyxFQUFDO1lBQ3pDLFFBQVE7WUFDUixNQUFNLG9CQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDN0I7U0FDRixDQUFDLENBQUM7UUFHSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSTtnQkFDRixJQUFBLGVBQVUsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUM7WUFB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
         
     | 
| 
      
 76 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0IsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQWdCckUsU0FBUyxlQUFlLENBQUMsQ0FNeEI7SUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVsRCxPQUFPO1FBQ0wsS0FBSyxFQUFFLFdBQVcsSUFBSSxLQUFLO1FBQzNCLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQzdCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUcvQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUd2RSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FB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
         
     | 
    
        package/lib/scripts.d.ts
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            export  
     | 
| 
      
 1 
     | 
    
         
            +
            type ScriptName = string;
         
     | 
| 
      
 2 
     | 
    
         
            +
            type Command = string;
         
     | 
| 
      
 3 
     | 
    
         
            +
            export type Script = Record<ScriptName, Command>;
         
     | 
| 
       4 
4 
     | 
    
         
             
            export declare function composeScripts(args: {
         
     | 
| 
       5 
5 
     | 
    
         
             
                template: Script;
         
     | 
| 
       6 
6 
     | 
    
         
             
                target: Script;
         
     | 
    
        package/lib/scripts.js
    CHANGED
    
    | 
         @@ -1,17 +1,15 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            const  
     | 
| 
       5 
     | 
    
         
            -
            const  
     | 
| 
       6 
     | 
    
         
            -
            const  
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            const printer = mvdan_sh_1.syntax.NewPrinter();
         
     | 
| 
       9 
     | 
    
         
            -
            function composeScripts(args) {
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { basename } from 'node:path';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import mvdan from 'mvdan-sh';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { mapValues } from './utilities/index.js';
         
     | 
| 
      
 4 
     | 
    
         
            +
            const { syntax } = mvdan;
         
     | 
| 
      
 5 
     | 
    
         
            +
            const parser = syntax.NewParser();
         
     | 
| 
      
 6 
     | 
    
         
            +
            const printer = syntax.NewPrinter();
         
     | 
| 
      
 7 
     | 
    
         
            +
            export function composeScripts(args) {
         
     | 
| 
       10 
8 
     | 
    
         
             
                const { template, target } = args;
         
     | 
| 
       11 
     | 
    
         
            -
                return  
     | 
| 
      
 9 
     | 
    
         
            +
                return mapValues({ ...template, ...target }, (command) => {
         
     | 
| 
       12 
10 
     | 
    
         
             
                    try {
         
     | 
| 
       13 
11 
     | 
    
         
             
                        const ast = parser.Parse(command);
         
     | 
| 
       14 
     | 
    
         
            -
                         
     | 
| 
      
 12 
     | 
    
         
            +
                        syntax.Walk(ast, (node) => replaceRunnerNode(node, { template, target }));
         
     | 
| 
       15 
13 
     | 
    
         
             
                        const [statement] = ast.Stmts;
         
     | 
| 
       16 
14 
     | 
    
         
             
                        if (isNodeType(statement.Cmd, 'Subshell')) {
         
     | 
| 
       17 
15 
     | 
    
         
             
                            statement.Cmd = statement.Cmd.Stmts[0].Cmd;
         
     | 
| 
         @@ -28,9 +26,8 @@ function composeScripts(args) { 
     | 
|
| 
       28 
26 
     | 
    
         
             
                    }
         
     | 
| 
       29 
27 
     | 
    
         
             
                });
         
     | 
| 
       30 
28 
     | 
    
         
             
            }
         
     | 
| 
       31 
     | 
    
         
            -
            exports.composeScripts = composeScripts;
         
     | 
| 
       32 
29 
     | 
    
         
             
            function isNodeType(node, type) {
         
     | 
| 
       33 
     | 
    
         
            -
                return  
     | 
| 
      
 30 
     | 
    
         
            +
                return syntax.NodeType(node) === type;
         
     | 
| 
       34 
31 
     | 
    
         
             
            }
         
     | 
| 
       35 
32 
     | 
    
         
             
            function resolveRunner(command, context) {
         
     | 
| 
       36 
33 
     | 
    
         
             
                const parts = command.split(' ');
         
     | 
| 
         @@ -52,11 +49,12 @@ function resolveRunner(command, context) { 
     | 
|
| 
       52 
49 
     | 
    
         
             
            function replaceRunnerNode(node, context) {
         
     | 
| 
       53 
50 
     | 
    
         
             
                if (isNodeType(node, 'Stmt') && isNodeType(node.Cmd, 'CallExpr')) {
         
     | 
| 
       54 
51 
     | 
    
         
             
                    const parts = node.Cmd.Args.map((part) => part.Parts[0].Value);
         
     | 
| 
       55 
     | 
    
         
            -
                    if ( 
     | 
| 
      
 52 
     | 
    
         
            +
                    if (basename(parts[0]) === 'run') {
         
     | 
| 
       56 
53 
     | 
    
         
             
                        const resolvedCommand = resolveRunner(parts.join(' '), context);
         
     | 
| 
       57 
54 
     | 
    
         
             
                        node.Cmd = parser.Parse(`(${resolvedCommand})`).Stmts[0].Cmd;
         
     | 
| 
      
 55 
     | 
    
         
            +
                        replaceRunnerNode(node.Cmd, context);
         
     | 
| 
       58 
56 
     | 
    
         
             
                    }
         
     | 
| 
       59 
57 
     | 
    
         
             
                }
         
     | 
| 
       60 
58 
     | 
    
         
             
                return true;
         
     | 
| 
       61 
59 
     | 
    
         
             
            }
         
     | 
| 
       62 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64, 
     | 
| 
      
 60 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9zY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxLQUFLLE1BQU0sVUFBVSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFheEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztBQUd6QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7QUFHbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBaUJwQyxNQUFNLFVBQVUsY0FBYyxDQUFDLElBSzlCO0lBQ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbEMsT0FBTyxTQUFTLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFVLEVBQUU7UUFDL0QsSUFBSTtZQUVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFHbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFHMUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDOUIsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDekMsU0FBUyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDNUM7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
         
     | 
    
        package/lib/task.d.ts
    ADDED
    
    | 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import type { Arguments } from 'yargs-parser';
         
     | 
| 
      
 2 
     | 
    
         
            +
            export interface Task {
         
     | 
| 
      
 3 
     | 
    
         
            +
                selector: string;
         
     | 
| 
      
 4 
     | 
    
         
            +
                args: string[];
         
     | 
| 
      
 5 
     | 
    
         
            +
            }
         
     | 
| 
      
 6 
     | 
    
         
            +
            export declare function parseGlobalArgs(argv: Arguments): string[];
         
     | 
| 
      
 7 
     | 
    
         
            +
            export declare function parseTaskSpec(spec: string, globalArgs: string[]): Task;
         
     | 
| 
      
 8 
     | 
    
         
            +
            export declare function selectTasks(tasks: string[], pattern: string): string[];
         
     | 
    
        package/lib/task.js
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import parse from 'yargs-parser';
         
     | 
| 
      
 2 
     | 
    
         
            +
            export function parseGlobalArgs(argv) {
         
     | 
| 
      
 3 
     | 
    
         
            +
                const globalArgs = argv['--'];
         
     | 
| 
      
 4 
     | 
    
         
            +
                return (globalArgs?.map((arg) => arg.toString().replace(/^(['"])([^]*?)\1$/, '$2')) ?? []);
         
     | 
| 
      
 5 
     | 
    
         
            +
            }
         
     | 
| 
      
 6 
     | 
    
         
            +
            export function parseTaskSpec(spec, globalArgs) {
         
     | 
| 
      
 7 
     | 
    
         
            +
                const argv = parse(spec, {
         
     | 
| 
      
 8 
     | 
    
         
            +
                    configuration: { 'populate--': true },
         
     | 
| 
      
 9 
     | 
    
         
            +
                });
         
     | 
| 
      
 10 
     | 
    
         
            +
                const selector = argv._[0];
         
     | 
| 
      
 11 
     | 
    
         
            +
                const args = parseGlobalArgs(argv).reduce((processedArgs, arg) => {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    if (arg === '{@}') {
         
     | 
| 
      
 13 
     | 
    
         
            +
                        return [...processedArgs, ...globalArgs];
         
     | 
| 
      
 14 
     | 
    
         
            +
                    }
         
     | 
| 
      
 15 
     | 
    
         
            +
                    else {
         
     | 
| 
      
 16 
     | 
    
         
            +
                        return [...processedArgs, arg];
         
     | 
| 
      
 17 
     | 
    
         
            +
                    }
         
     | 
| 
      
 18 
     | 
    
         
            +
                }, []);
         
     | 
| 
      
 19 
     | 
    
         
            +
                return { selector, args };
         
     | 
| 
      
 20 
     | 
    
         
            +
            }
         
     | 
| 
      
 21 
     | 
    
         
            +
            export function selectTasks(tasks, pattern) {
         
     | 
| 
      
 22 
     | 
    
         
            +
                const regexPattern = pattern
         
     | 
| 
      
 23 
     | 
    
         
            +
                    .split(':')
         
     | 
| 
      
 24 
     | 
    
         
            +
                    .map((part) => {
         
     | 
| 
      
 25 
     | 
    
         
            +
                    if (part === '*') {
         
     | 
| 
      
 26 
     | 
    
         
            +
                        return '[^:]+';
         
     | 
| 
      
 27 
     | 
    
         
            +
                    }
         
     | 
| 
      
 28 
     | 
    
         
            +
                    if (part === '**') {
         
     | 
| 
      
 29 
     | 
    
         
            +
                        return '.*';
         
     | 
| 
      
 30 
     | 
    
         
            +
                    }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    return part;
         
     | 
| 
      
 32 
     | 
    
         
            +
                })
         
     | 
| 
      
 33 
     | 
    
         
            +
                    .join(':');
         
     | 
| 
      
 34 
     | 
    
         
            +
                const regex = new RegExp(`^${regexPattern}$`);
         
     | 
| 
      
 35 
     | 
    
         
            +
                return tasks.filter((task) => regex.test(task));
         
     | 
| 
      
 36 
     | 
    
         
            +
            }
         
     | 
| 
      
 37 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQWVqQyxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWU7SUFFN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRzlCLE9BQU8sQ0FDTCxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FFdEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FDbEQsSUFBSSxFQUFFLENBQ1IsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVksRUFBRSxVQUFvQjtJQUM5RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFO1FBRXZCLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7S0FDdEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQy9ELElBQUksR0FBRyxLQUFLLEtBQUssRUFBRTtZQUVqQixPQUFPLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQyxFQUFFLEVBQWMsQ0FBQyxDQUFDO0lBRW5CLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQVFELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBZSxFQUFFLE9BQWU7SUFDMUQsTUFBTSxZQUFZLEdBQUcsT0FBTztTQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixJQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7WUFDaEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWIsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBRTlDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
         
     | 
    
        package/lib/template.d.ts
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import type { IgnoreRule } from ' 
     | 
| 
      
 1 
     | 
    
         
            +
            import type { IgnoreRule, PrimitiveEntity } from 'presetter-types';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import type { JsonObject, JsonValue } from 'type-fest';
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            type MergedType<A, B> = A extends JsonObject ? B extends JsonObject ? A & B : MergedArray<A, B> : MergedArray<A, B>;
         
     | 
| 
      
 4 
     | 
    
         
            +
            type MergedArray<A, B> = A extends JsonValue[] ? B extends JsonValue[] ? Array<A[number] | B[number]> : keyof B extends `${number}` ? JsonValue[] : B : B;
         
     | 
| 
       5 
5 
     | 
    
         
             
            export declare function filter<C extends Record<string, unknown>>(subject: C, ...ignores: IgnoreRule[]): C;
         
     | 
| 
       6 
6 
     | 
    
         
             
            export declare function filter(subject: unknown[], ...ignores: IgnoreRule[]): unknown[];
         
     | 
| 
       7 
7 
     | 
    
         
             
            export declare function isJSON(subject: unknown): subject is JsonObject;
         
     | 
| 
       8 
     | 
    
         
            -
            export declare function merge<S extends JsonValue, T extends  
     | 
| 
       9 
     | 
    
         
            -
            export declare function mergeArray<S extends JsonValue, T extends  
     | 
| 
      
 8 
     | 
    
         
            +
            export declare function merge<S extends JsonValue, T extends PrimitiveEntity>(source: S, target?: T): MergedType<S, T>;
         
     | 
| 
      
 9 
     | 
    
         
            +
            export declare function mergeArray<S extends JsonValue, T extends PrimitiveEntity>(source: S[], target?: T): MergedArray<S[], T>;
         
     | 
| 
       10 
10 
     | 
    
         
             
            export declare function mergeArrays<S extends JsonValue, T extends JsonValue>(source: S[], target: T[]): MergedArray<S[], T[]>;
         
     | 
| 
       11 
     | 
    
         
            -
            export declare function mergeObject<S extends JsonObject, T extends  
     | 
| 
      
 11 
     | 
    
         
            +
            export declare function mergeObject<S extends JsonObject, T extends PrimitiveEntity>(source: S, target?: T): MergedType<S, T>;
         
     | 
| 
       12 
12 
     | 
    
         
             
            export declare function mergeTemplate(source: Record<string, JsonObject | string>, target: Record<string, JsonObject | string>): Record<string, JsonObject | string>;
         
     | 
| 
       13 
13 
     | 
    
         
             
            export declare function template(content: string, parameter: Record<string, string>): string;
         
     | 
| 
       14 
14 
     | 
    
         
             
            export declare function template<Content extends Record<string, unknown> | unknown[]>(content: Content, parameter: Record<string, string>): Content;
         
     | 
    
        package/lib/template.js
    CHANGED
    
    | 
         @@ -1,12 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            };
         
     | 
| 
       5 
     | 
    
         
            -
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       6 
     | 
    
         
            -
            exports.template = exports.mergeTemplate = exports.mergeObject = exports.mergeArrays = exports.mergeArray = exports.merge = exports.isJSON = exports.filter = void 0;
         
     | 
| 
       7 
     | 
    
         
            -
            const path_1 = require("path");
         
     | 
| 
       8 
     | 
    
         
            -
            const pupa_1 = __importDefault(require("pupa"));
         
     | 
| 
       9 
     | 
    
         
            -
            function filter(subject, ...ignores) {
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { basename, extname } from 'node:path';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import pupa from 'pupa';
         
     | 
| 
      
 3 
     | 
    
         
            +
            export function filter(subject, ...ignores) {
         
     | 
| 
       10 
4 
     | 
    
         
             
                const fieldsToIgnore = ignores.filter((ignore) => typeof ignore !== 'object');
         
     | 
| 
       11 
5 
     | 
    
         
             
                if (Array.isArray(subject)) {
         
     | 
| 
       12 
6 
     | 
    
         
             
                    return subject.filter((_, key) => !fieldsToIgnore.includes(key));
         
     | 
| 
         @@ -18,31 +12,28 @@ function filter(subject, ...ignores) { 
     | 
|
| 
       18 
12 
     | 
    
         
             
                    filterByPath(value, ignoreTree[key]),
         
     | 
| 
       19 
13 
     | 
    
         
             
                ])), distilled);
         
     | 
| 
       20 
14 
     | 
    
         
             
            }
         
     | 
| 
       21 
     | 
    
         
            -
            exports.filter = filter;
         
     | 
| 
       22 
15 
     | 
    
         
             
            function filterByPath(value, path) {
         
     | 
| 
       23 
16 
     | 
    
         
             
                return path && typeof value === 'object'
         
     | 
| 
       24 
17 
     | 
    
         
             
                    ? filter(value, ...(Array.isArray(path) ? path : [path]))
         
     | 
| 
       25 
18 
     | 
    
         
             
                    : value;
         
     | 
| 
       26 
19 
     | 
    
         
             
            }
         
     | 
| 
       27 
     | 
    
         
            -
            function isJSON(subject) {
         
     | 
| 
      
 20 
     | 
    
         
            +
            export function isJSON(subject) {
         
     | 
| 
       28 
21 
     | 
    
         
             
                return [
         
     | 
| 
       29 
22 
     | 
    
         
             
                    typeof subject === 'object',
         
     | 
| 
       30 
23 
     | 
    
         
             
                    !Array.isArray(subject),
         
     | 
| 
       31 
24 
     | 
    
         
             
                    subject !== null,
         
     | 
| 
       32 
25 
     | 
    
         
             
                ].every((value) => value);
         
     | 
| 
       33 
26 
     | 
    
         
             
            }
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            function merge(source, target) {
         
     | 
| 
      
 27 
     | 
    
         
            +
            export function merge(source, target) {
         
     | 
| 
       36 
28 
     | 
    
         
             
                if (Array.isArray(source)) {
         
     | 
| 
       37 
29 
     | 
    
         
             
                    return mergeArray(source, target);
         
     | 
| 
       38 
30 
     | 
    
         
             
                }
         
     | 
| 
       39 
31 
     | 
    
         
             
                else if (isJSON(source)) {
         
     | 
| 
       40 
32 
     | 
    
         
             
                    return mergeObject(source, target);
         
     | 
| 
       41 
33 
     | 
    
         
             
                }
         
     | 
| 
       42 
     | 
    
         
            -
                return (target  
     | 
| 
      
 34 
     | 
    
         
            +
                return (target ?? source);
         
     | 
| 
       43 
35 
     | 
    
         
             
            }
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            function mergeArray(source, target) {
         
     | 
| 
      
 36 
     | 
    
         
            +
            export function mergeArray(source, target) {
         
     | 
| 
       46 
37 
     | 
    
         
             
                if (Array.isArray(target)) {
         
     | 
| 
       47 
38 
     | 
    
         
             
                    return mergeArrays(source, target);
         
     | 
| 
       48 
39 
     | 
    
         
             
                }
         
     | 
| 
         @@ -50,10 +41,9 @@ function mergeArray(source, target) { 
     | 
|
| 
       50 
41 
     | 
    
         
             
                    [...Object.keys(target)].every((key) => parseInt(key) >= 0)) {
         
     | 
| 
       51 
42 
     | 
    
         
             
                    return [...source].map((value, key) => merge(value, target[key]));
         
     | 
| 
       52 
43 
     | 
    
         
             
                }
         
     | 
| 
       53 
     | 
    
         
            -
                return (target  
     | 
| 
      
 44 
     | 
    
         
            +
                return (target ?? source);
         
     | 
| 
       54 
45 
     | 
    
         
             
            }
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
            function mergeArrays(source, target) {
         
     | 
| 
      
 46 
     | 
    
         
            +
            export function mergeArrays(source, target) {
         
     | 
| 
       57 
47 
     | 
    
         
             
                const isPrimitive = source.every((value) => !isJSON(value)) &&
         
     | 
| 
       58 
48 
     | 
    
         
             
                    target.every((value) => !isJSON(value));
         
     | 
| 
       59 
49 
     | 
    
         
             
                if (isPrimitive) {
         
     | 
| 
         @@ -61,23 +51,25 @@ function mergeArrays(source, target) { 
     | 
|
| 
       61 
51 
     | 
    
         
             
                }
         
     | 
| 
       62 
52 
     | 
    
         
             
                return target;
         
     | 
| 
       63 
53 
     | 
    
         
             
            }
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
            function mergeObject(source, target) {
         
     | 
| 
      
 54 
     | 
    
         
            +
            export function mergeObject(source, target) {
         
     | 
| 
       66 
55 
     | 
    
         
             
                if (isJSON(target)) {
         
     | 
| 
       67 
56 
     | 
    
         
             
                    const mergedSource = Object.fromEntries(Object.entries(source).map(([key, value]) => [
         
     | 
| 
       68 
57 
     | 
    
         
             
                        key,
         
     | 
| 
       69 
58 
     | 
    
         
             
                        merge(value, target[key]),
         
     | 
| 
       70 
59 
     | 
    
         
             
                    ]));
         
     | 
| 
       71 
     | 
    
         
            -
                    return  
     | 
| 
      
 60 
     | 
    
         
            +
                    return {
         
     | 
| 
      
 61 
     | 
    
         
            +
                        ...mergedSource,
         
     | 
| 
      
 62 
     | 
    
         
            +
                        ...target,
         
     | 
| 
      
 63 
     | 
    
         
            +
                        ...mergedSource,
         
     | 
| 
      
 64 
     | 
    
         
            +
                    };
         
     | 
| 
       72 
65 
     | 
    
         
             
                }
         
     | 
| 
       73 
     | 
    
         
            -
                return (target  
     | 
| 
      
 66 
     | 
    
         
            +
                return (target ?? source);
         
     | 
| 
       74 
67 
     | 
    
         
             
            }
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
            function mergeTemplate(source, target) {
         
     | 
| 
      
 68 
     | 
    
         
            +
            export function mergeTemplate(source, target) {
         
     | 
| 
       77 
69 
     | 
    
         
             
                const mergedSource = Object.fromEntries(Object.entries(source).map(([path, template]) => {
         
     | 
| 
       78 
70 
     | 
    
         
             
                    const replacement = target[path];
         
     | 
| 
       79 
     | 
    
         
            -
                    const isIgnoreFile = ! 
     | 
| 
       80 
     | 
    
         
            -
                         
     | 
| 
      
 71 
     | 
    
         
            +
                    const isIgnoreFile = !extname(path) &&
         
     | 
| 
      
 72 
     | 
    
         
            +
                        basename(path).startsWith('.') &&
         
     | 
| 
       81 
73 
     | 
    
         
             
                        typeof template === 'string' &&
         
     | 
| 
       82 
74 
     | 
    
         
             
                        typeof replacement === 'string';
         
     | 
| 
       83 
75 
     | 
    
         
             
                    if (isIgnoreFile) {
         
     | 
| 
         @@ -87,17 +79,16 @@ function mergeTemplate(source, target) { 
     | 
|
| 
       87 
79 
     | 
    
         
             
                        ]);
         
     | 
| 
       88 
80 
     | 
    
         
             
                        return [path, [...mergedSet].join('\n')];
         
     | 
| 
       89 
81 
     | 
    
         
             
                    }
         
     | 
| 
       90 
     | 
    
         
            -
                    else if ( 
     | 
| 
      
 82 
     | 
    
         
            +
                    else if (typeof template === typeof replacement) {
         
     | 
| 
       91 
83 
     | 
    
         
             
                        return [path, merge(template, replacement)];
         
     | 
| 
       92 
84 
     | 
    
         
             
                    }
         
     | 
| 
       93 
     | 
    
         
            -
                    return [path,  
     | 
| 
      
 85 
     | 
    
         
            +
                    return [path, template];
         
     | 
| 
       94 
86 
     | 
    
         
             
                }));
         
     | 
| 
       95 
     | 
    
         
            -
                return  
     | 
| 
      
 87 
     | 
    
         
            +
                return { ...target, ...mergedSource };
         
     | 
| 
       96 
88 
     | 
    
         
             
            }
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
            function template(content, parameter) {
         
     | 
| 
      
 89 
     | 
    
         
            +
            export function template(content, parameter) {
         
     | 
| 
       99 
90 
     | 
    
         
             
                if (typeof content === 'string') {
         
     | 
| 
       100 
     | 
    
         
            -
                    return ( 
     | 
| 
      
 91 
     | 
    
         
            +
                    return pupa(content, parameter);
         
     | 
| 
       101 
92 
     | 
    
         
             
                }
         
     | 
| 
       102 
93 
     | 
    
         
             
                else if (Array.isArray(content)) {
         
     | 
| 
       103 
94 
     | 
    
         
             
                    return content.map((value) => template(value, parameter));
         
     | 
| 
         @@ -111,5 +102,4 @@ function template(content, parameter) { 
     | 
|
| 
       111 
102 
     | 
    
         
             
                    return content;
         
     | 
| 
       112 
103 
     | 
    
         
             
                }
         
     | 
| 
       113 
104 
     | 
    
         
             
            }
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZUEsK0JBQXlDO0FBQ3pDLGdEQUF3QjtBQThCeEIsU0FBZ0IsTUFBTSxDQUNwQixPQUE0QyxFQUM1QyxHQUFHLE9BQXFCO0lBR3hCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ25DLENBQUMsTUFBTSxFQUE2QixFQUFFLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUNsRSxDQUFDO0lBR0YsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ2xFO0lBR0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVFLENBQUM7SUFHRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUM5QixDQUFDLE1BQU0sRUFBd0MsRUFBRSxDQUMvQyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQzdCLENBQUM7SUFHRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQ3JCLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDL0IsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FDbEMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFB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
         
     | 
| 
      
 105 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBOEJ4QixNQUFNLFVBQVUsTUFBTSxDQUNwQixPQUE0QyxFQUM1QyxHQUFHLE9BQXFCO0lBR3hCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ25DLENBQUMsTUFBTSxFQUE2QixFQUFFLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUNsRSxDQUFDO0lBR0YsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ2xFO0lBR0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVFLENBQUM7SUFHRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUM5QixDQUFDLE1BQU0sRUFBd0MsRUFBRSxDQUMvQyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQzdCLENBQUM7SUFHRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQ3JCLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDL0IsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0Is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
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            export * from './mapValues.js';
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            export declare function mapValues<T, U>(obj: Record<string, T>, fn: (value: T) => U): Record<string, U>;
         
     | 
| 
         @@ -0,0 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            export function mapValues(obj, fn) {
         
     | 
| 
      
 2 
     | 
    
         
            +
                return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)]));
         
     | 
| 
      
 3 
     | 
    
         
            +
            }
         
     | 
| 
      
 4 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwVmFsdWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3V0aWxpdGllcy9tYXBWYWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEdBQXNCLEVBQ3RCLEVBQW1CO0lBRW5CLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztBQUNKLENBQUMifQ==
         
     |