presetter 3.1.0 → 3.3.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/run.js CHANGED
@@ -1,134 +1,66 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.run = run;
7
-
8
- var _execa = _interopRequireDefault(require("execa"));
9
-
10
- var _fsExtra = require("fs-extra");
11
-
12
- var _lodash = require("lodash");
13
-
14
- var _path = require("path");
15
-
16
- var _error = require("./error");
17
-
18
- var _package = require("./package");
19
-
20
- var _preset = require("./preset");
21
-
22
- var _scripts = require("./scripts");
23
-
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
- /*
27
- * *** MIT LICENSE ***
28
- * -------------------------------------------------------------------------
29
- * This code may be modified and distributed under the MIT license.
30
- * See the LICENSE file for details.
31
- * -------------------------------------------------------------------------
32
- *
33
- * @summary Run a task
34
- *
35
- * @author Alvis HT Tang <alvis@hilbert.space>
36
- * @license MIT
37
- * @copyright Copyright (c) 2019 - All Rights Reserved.
38
- * -------------------------------------------------------------------------
39
- */
40
-
41
- /** manage ~package.json */
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const fs_extra_1 = require("fs-extra");
9
+ const lodash_1 = require("lodash");
10
+ const path_1 = require("path");
11
+ const error_1 = require("./error");
12
+ const package_1 = require("./package");
13
+ const preset_1 = require("./preset");
14
+ const scripts_1 = require("./scripts");
42
15
  class TemporaryPackageJSONManager {
43
- /**
44
- * create a temporary package.json manager
45
- * @param packageDetail the content of the target project's package.json
46
- */
47
- constructor(packageDetail) {
48
- this.package = void 0;
49
- this.path = void 0;
50
- this.shouldRestore = void 0;
51
- this.path = (0, _path.resolve)((0, _path.dirname)(packageDetail.path), '~' + (0, _path.basename)(packageDetail.path));
52
- this.package = packageDetail;
53
- this.shouldRestore = !(0, _fsExtra.pathExistsSync)(this.path);
54
- }
55
- /**
56
- * setup an environment for running a task with presetter
57
- * @param task name of the task to be replaced by the template
58
- */
59
-
60
-
61
- async replace(task) {
62
- // delete the current task to avoid duplicated task running
63
- delete this.package.json.scripts[task]; // get the merged script definitions
64
-
65
- const template = await (0, _preset.getScripts)(await (0, _preset.getContext)());
66
- this.package.json.scripts = (0, _scripts.composeScripts)({
67
- template,
68
- target: { ...this.package.json.scripts
69
- }
70
- }); // move the existing package.json to a safe place
71
-
72
- if (this.shouldRestore) {
73
- await (0, _error.wrap)((0, _fsExtra.move)(this.package.path, this.path), `failed to backup package.json`);
74
- } // generate a temporary package.json in order to let npm to see all the definitions
75
-
76
-
77
- const PADDING = 2;
78
- const content = JSON.stringify(this.package.json, null, PADDING);
79
- await (0, _error.wrap)((0, _fsExtra.writeFile)(this.package.path, content), 'failed to write to package.json');
80
- }
81
- /**
82
- * clean up the temporary artifacts
83
- */
84
-
85
-
86
- async restore() {
87
- if (this.shouldRestore) {
88
- await (0, _error.wrap)((0, _fsExtra.unlink)(this.package.path).then(async () => (0, _fsExtra.move)(this.path, this.package.path)), `failed to restore package.json`);
16
+ constructor(packageDetail) {
17
+ this.path = (0, path_1.resolve)((0, path_1.dirname)(packageDetail.path), '~' + (0, path_1.basename)(packageDetail.path));
18
+ this.package = packageDetail;
19
+ this.shouldRestore = !(0, fs_extra_1.pathExistsSync)(this.path);
20
+ }
21
+ async replace(task) {
22
+ delete this.package.json.scripts[task];
23
+ const template = await (0, preset_1.getScripts)(await (0, preset_1.getContext)());
24
+ this.package.json.scripts = (0, scripts_1.composeScripts)({
25
+ template,
26
+ target: Object.assign({}, this.package.json.scripts),
27
+ });
28
+ if (this.shouldRestore) {
29
+ await (0, error_1.wrap)((0, fs_extra_1.move)(this.package.path, this.path), `failed to backup package.json`);
30
+ }
31
+ const PADDING = 2;
32
+ const content = JSON.stringify(this.package.json, null, PADDING);
33
+ await (0, error_1.wrap)((0, fs_extra_1.writeFile)(this.package.path, content), 'failed to write to package.json');
34
+ }
35
+ async restore() {
36
+ if (this.shouldRestore) {
37
+ await (0, error_1.wrap)((0, fs_extra_1.unlink)(this.package.path).then(async () => (0, fs_extra_1.move)(this.path, this.package.path)), `failed to restore package.json`);
38
+ }
89
39
  }
90
- }
91
-
92
40
  }
93
- /**
94
- * run a task defined in the combined script definitions
95
- * @param task the name of the task to be run
96
- * @param argv parameters supplied for the task
97
- */
98
-
99
-
100
41
  async function run(task, argv = []) {
101
- // try to find the target project's package.json
102
- const packageDetail = await (0, _package.getPackage)();
103
- const manager = new TemporaryPackageJSONManager(packageDetail); // setup
104
-
105
- await manager.replace(task);
106
- const restore = (0, _lodash.once)(async isInterrupted => {
107
- // stop listening to SIGINT in order to avoid double handling during the restoration process
108
- process.removeListener('SIGINT', restore); // restore package.json
109
-
110
- await manager.restore();
111
-
112
- if (isInterrupted) {
113
- const SIGINT = 130;
114
- process.exit(SIGINT);
42
+ const packageDetail = await (0, package_1.getPackage)();
43
+ const manager = new TemporaryPackageJSONManager(packageDetail);
44
+ await manager.replace(task);
45
+ const restore = (0, lodash_1.once)(async (isInterrupted) => {
46
+ process.removeListener('SIGINT', restore);
47
+ await manager.restore();
48
+ if (isInterrupted) {
49
+ const SIGINT = 130;
50
+ process.exit(SIGINT);
51
+ }
52
+ });
53
+ process.on('SIGINT', restore.bind(run, true));
54
+ const { exitCode } = await (0, execa_1.default)('npm', ['run', task, '--', ...argv], {
55
+ cwd: (0, path_1.dirname)(packageDetail.path),
56
+ stdio: 'inherit',
57
+ reject: false,
58
+ shell: true,
59
+ });
60
+ await restore(false);
61
+ if (exitCode > 0) {
62
+ process.exit(exitCode);
115
63
  }
116
- });
117
- process.on('SIGINT', restore.bind(run, true)); // run the task
118
-
119
- const {
120
- exitCode
121
- } = await (0, _execa.default)('npm', ['run', task, '--', ...argv], {
122
- cwd: (0, _path.dirname)(packageDetail.path),
123
- stdio: 'inherit',
124
- reject: false,
125
- shell: true
126
- }); // restore package.json
127
-
128
- await restore(false); // set the exit code as the same as the returned
129
-
130
- if (exitCode > 0) {
131
- process.exit(exitCode);
132
- }
133
64
  }
134
- //# sourceMappingURL=run.js.map
65
+ exports.run = run;
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFlQSxrREFBMEI7QUFDMUIsdUNBQW1FO0FBQ25FLG1DQUE4QjtBQUM5QiwrQkFBa0Q7QUFFbEQsbUNBQStCO0FBQy9CLHVDQUF1QztBQUN2QyxxQ0FBa0Q7QUFDbEQsdUNBQTJDO0FBSzNDLE1BQU0sMkJBQTJCO0lBVS9CLFlBQVksYUFBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFBLGNBQU8sRUFDakIsSUFBQSxjQUFPLEVBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUMzQixHQUFHLEdBQUcsSUFBQSxlQUFRLEVBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUNuQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUEseUJBQWMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQU1NLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBWTtRQUUvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUd2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsbUJBQVUsRUFBQyxNQUFNLElBQUEsbUJBQVUsR0FBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsd0JBQWMsRUFBQztZQUN6QyxRQUFRO1lBQ1IsTUFBTSxvQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBR0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE1BQU0sSUFBQSxZQUFJLEVBQ1IsSUFBQSxlQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8s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
package/lib/scripts.js CHANGED
@@ -1,138 +1,62 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.composeScripts = composeScripts;
7
-
8
- var _lodash = require("lodash");
9
-
10
- var _mvdanSh = require("mvdan-sh");
11
-
12
- var _path = require("path");
13
-
14
- /*
15
- * *** MIT LICENSE ***
16
- * -------------------------------------------------------------------------
17
- * This code may be modified and distributed under the MIT license.
18
- * See the LICENSE file for details.
19
- * -------------------------------------------------------------------------
20
- *
21
- * @summary Handle script merging
22
- *
23
- * @author Alvis HT Tang <alvis@hilbert.space>
24
- * @license MIT
25
- * @copyright Copyright (c) 2019 - All Rights Reserved.
26
- * -------------------------------------------------------------------------
27
- */
28
- // shell command parser
29
- const parser = _mvdanSh.syntax.NewParser(); // shell command generator
30
-
31
-
32
- const printer = _mvdanSh.syntax.NewPrinter();
33
- /** resource context to be passed for processing */
34
-
35
-
36
- /**
37
- * merge the script definitions from the template and the target package.json
38
- * @param args template and customised scripts to be merged
39
- * @param args.template scripts defined from the template
40
- * @param args.target scripts defined from target's package.json
41
- * @returns a dictionary of merged definitions
42
- */
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.composeScripts = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const mvdan_sh_1 = require("mvdan-sh");
6
+ const path_1 = require("path");
7
+ const parser = mvdan_sh_1.syntax.NewParser();
8
+ const printer = mvdan_sh_1.syntax.NewPrinter();
43
9
  function composeScripts(args) {
44
- const {
45
- template,
46
- target
47
- } = args;
48
- return (0, _lodash.mapValues)({ ...template,
49
- ...target
50
- }, command => {
51
- try {
52
- // parse the shell command into its ast
53
- const ast = parser.Parse(command); // walk through the tree and replace any call to the runner e.g. preset task1 task2 -- --help
54
-
55
- _mvdanSh.syntax.Walk(ast, node => replaceRunnerNode(node, {
56
- template,
57
- target
58
- })); // remove any unnecessary subshell
59
-
60
-
61
- const [statement] = ast.Stmts;
62
-
63
- if (isNodeType(statement.Cmd, 'Subshell')) {
64
- statement.Cmd = statement.Cmd.Stmts[0].Cmd;
65
- } // generate the code from ast
66
-
67
-
68
- return printer.Print(ast).trim();
69
- } catch (error) {
70
- if (error instanceof Error) {
71
- throw error;
72
- } else {
73
- // parser.Parse may throw an empty object as an error, catch here
74
- throw new Error(`failed to parse command: ${command}`);
75
- }
76
- }
77
- });
10
+ const { template, target } = args;
11
+ return (0, lodash_1.mapValues)(Object.assign(Object.assign({}, template), target), (command) => {
12
+ try {
13
+ const ast = parser.Parse(command);
14
+ mvdan_sh_1.syntax.Walk(ast, (node) => replaceRunnerNode(node, { template, target }));
15
+ const [statement] = ast.Stmts;
16
+ if (isNodeType(statement.Cmd, 'Subshell')) {
17
+ statement.Cmd = statement.Cmd.Stmts[0].Cmd;
18
+ }
19
+ return printer.Print(ast).trim();
20
+ }
21
+ catch (error) {
22
+ if (error instanceof Error) {
23
+ throw error;
24
+ }
25
+ else {
26
+ throw new Error(`failed to parse command: ${command}`);
27
+ }
28
+ }
29
+ });
78
30
  }
79
- /**
80
- * typeguard helper for different node type
81
- * @param node a node to be tested
82
- * @param type node type
83
- * @returns true if the node is the specified type
84
- */
85
-
86
-
31
+ exports.composeScripts = composeScripts;
87
32
  function isNodeType(node, type) {
88
- return _mvdanSh.syntax.NodeType(node) === type;
33
+ return mvdan_sh_1.syntax.NodeType(node) === type;
89
34
  }
90
- /**
91
- * resolve a runner command
92
- * @param command the command to be replaced
93
- * @param context resource context
94
- * @returns the resolved command
95
- */
96
-
97
-
98
35
  function resolveRunner(command, context) {
99
- const parts = command.split(' '); // extract tasks and their arguments
100
-
101
- const destinations = parts.slice(1).filter(task => !task.startsWith('-'));
102
- const destinationArgs = parts.filter(part => part !== '--' && part.startsWith('-')); // resolve tasks into its full form e.g. task1 task2
103
-
104
- return destinations.map(destination => {
105
- const expandedCommand = context.template[destination] || (context.target[destination] === command ? undefined : context.target[destination]);
106
-
107
- if (expandedCommand === undefined) {
108
- throw new Error(`"${destination}" cannot be resolved in "${command}"`);
109
- }
110
-
111
- return [expandedCommand, ...destinationArgs].join(' ');
112
- }).join(' && ');
36
+ const parts = command.split(' ');
37
+ const destinations = parts.slice(1).filter((task) => !task.startsWith('-'));
38
+ const destinationArgs = parts.filter((part) => part !== '--' && part.startsWith('-'));
39
+ return destinations
40
+ .map((destination) => {
41
+ const expandedCommand = context.template[destination] ||
42
+ (context.target[destination] === command
43
+ ? undefined
44
+ : context.target[destination]);
45
+ if (expandedCommand === undefined) {
46
+ throw new Error(`"${destination}" cannot be resolved in "${command}"`);
47
+ }
48
+ return [expandedCommand, ...destinationArgs].join(' ');
49
+ })
50
+ .join(' && ');
113
51
  }
114
- /**
115
- * replace a runner node with the actual command
116
- * @param node an expression node
117
- * @param context resource context
118
- * @returns boolean true for no error
119
- */
120
-
121
-
122
52
  function replaceRunnerNode(node, context) {
123
- // replace only it's a runner call, not anything else
124
- if (isNodeType(node, 'Stmt') && isNodeType(node.Cmd, 'CallExpr')) {
125
- // parse assigned arguments e.g. task1 args --help
126
- const parts = node.Cmd.Args.map(part => part.Parts[0].Value); // only resolve if the `run` cli shipped in this package is invoke
127
-
128
- if ((0, _path.basename)(parts[0]) === 'run') {
129
- // resolve tasks into its full form e.g. task1 task2
130
- const resolvedCommand = resolveRunner(parts.join(' '), context); // replace the task definition with its expanded statement
131
-
132
- node.Cmd = parser.Parse(`(${resolvedCommand})`).Stmts[0].Cmd;
53
+ if (isNodeType(node, 'Stmt') && isNodeType(node.Cmd, 'CallExpr')) {
54
+ const parts = node.Cmd.Args.map((part) => part.Parts[0].Value);
55
+ if ((0, path_1.basename)(parts[0]) === 'run') {
56
+ const resolvedCommand = resolveRunner(parts.join(' '), context);
57
+ node.Cmd = parser.Parse(`(${resolvedCommand})`).Stmts[0].Cmd;
58
+ }
133
59
  }
134
- }
135
-
136
- return true;
60
+ return true;
137
61
  }
138
- //# sourceMappingURL=scripts.js.map
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9zY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLG1DQUFtQztBQUNuQyx1Q0FBa0M7QUFDbEMsK0JBQWdDO0FBY2hDLE1BQU0sTUFBTSxHQUFHLGlCQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7QUFHbEMsTUFBTSxPQUFPLEdBQUcsaUJBQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQWlCcEMsU0FBZ0IsY0FBYyxDQUFDLElBSzlCO0lBQ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbEMsT0FBTyxJQUFBLGtCQUFTLGtDQUFNLFFBQVEsR0FBSyxNQUFNLEdBQUksQ0FBQyxPQUFPLEVBQVUsRUFBRTtRQUMvRCxJQUFJO1lBRUYsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUdsQyxpQkFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFHMUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDOUIsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDekMsU0FBUyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDNUM7WUFHRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbEM7UUFBQyxPQUFPLEtBQWMsRUFBRTtZQUN2QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7Z0JBQzFCLE1B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
package/lib/template.js CHANGED
@@ -1,154 +1,85 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.filter = filter;
7
- exports.isJSON = isJSON;
8
- exports.merge = merge;
9
- exports.template = template;
10
-
11
- var _pupa = _interopRequireDefault(require("pupa"));
12
-
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
- /*
16
- * *** MIT LICENSE ***
17
- * -------------------------------------------------------------------------
18
- * This code may be modified and distributed under the MIT license.
19
- * See the LICENSE file for details.
20
- * -------------------------------------------------------------------------
21
- *
22
- * @summary Collection of template related helpers
23
- *
24
- * @author Alvis HT Tang <alvis@hilbert.space>
25
- * @license MIT
26
- * @copyright Copyright (c) 2020 - All Rights Reserved.
27
- * -------------------------------------------------------------------------
28
- */
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.template = exports.merge = exports.isJSON = exports.filter = void 0;
7
+ const pupa_1 = __importDefault(require("pupa"));
29
8
  function filter(subject, ...ignores) {
30
- // compute the list of fields in config to be ignored
31
- const fieldsToIgnore = ignores.filter(ignore => typeof ignore !== 'object'); // filter the unwanted item in an array
32
-
33
- if (Array.isArray(subject)) {
34
- return subject.filter((_, key) => !fieldsToIgnore.includes(key));
35
- } // filter the unwanted fields below
36
-
37
-
38
- const distilled = Object.fromEntries(Object.entries(subject).filter(([key, _]) => !fieldsToIgnore.includes(key))); // compute the left over and process them further below
39
-
40
- const moreRules = ignores.filter(ignore => typeof ignore !== 'string'); // continue filtering the left over
41
-
42
- return moreRules.reduce((furtherDistilled, ignoreTree) => Object.fromEntries(Object.entries(furtherDistilled).map(([key, value]) => [key, filterByPath(value, ignoreTree[key])])), distilled);
9
+ const fieldsToIgnore = ignores.filter((ignore) => typeof ignore !== 'object');
10
+ if (Array.isArray(subject)) {
11
+ return subject.filter((_, key) => !fieldsToIgnore.includes(key));
12
+ }
13
+ const distilled = Object.fromEntries(Object.entries(subject).filter(([key, _]) => !fieldsToIgnore.includes(key)));
14
+ const moreRules = ignores.filter((ignore) => typeof ignore !== 'string');
15
+ return moreRules.reduce((furtherDistilled, ignoreTree) => Object.fromEntries(Object.entries(furtherDistilled).map(([key, value]) => [
16
+ key,
17
+ filterByPath(value, ignoreTree[key]),
18
+ ])), distilled);
43
19
  }
44
- /**
45
- * filter a value according to the supplied ignore rules
46
- * @param value value to be filtered
47
- * @param path ignore rule to be applied
48
- * @returns filtered value
49
- */
50
-
51
-
20
+ exports.filter = filter;
52
21
  function filterByPath(value, path) {
53
- return path && typeof value === 'object' ? filter(value, // NOTE
54
- // if rule is an array, it means that it contains a list of fields to be ignored
55
- // otherwise, it contains rules in a tree form
56
- ...(Array.isArray(path) ? path : [path])) : value;
22
+ return path && typeof value === 'object'
23
+ ? filter(value, ...(Array.isArray(path) ? path : [path]))
24
+ : value;
57
25
  }
58
- /**
59
- * indicate whether the supplied value is a JSON object
60
- * @param subject the subject to be tested
61
- * @returns true if the subject is a JSON object
62
- */
63
-
64
-
65
26
  function isJSON(subject) {
66
- return [typeof subject === 'object', !Array.isArray(subject), subject !== null].every(value => value);
27
+ return [
28
+ typeof subject === 'object',
29
+ !Array.isArray(subject),
30
+ subject !== null,
31
+ ].every((value) => value);
67
32
  }
68
- /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */
69
-
70
- /**
71
- * deep merge an object
72
- * @param source default object if no additional property is supplied
73
- * @param replacement properties to be merged with the default
74
- * @returns merged object
75
- */
76
-
77
-
33
+ exports.isJSON = isJSON;
78
34
  function merge(source, replacement) {
79
- if (Array.isArray(source)) {
80
- return replace(source, replacement);
81
- }
82
-
83
- const keys = [...Object.keys(source), ...Object.keys(replacement !== null && replacement !== void 0 ? replacement : {})];
84
- const entries = keys.map(key => [key, replace(source[key], replacement === null || replacement === void 0 ? void 0 : replacement[key])]);
85
- return Object.assign({}, ...entries.map(([key, value]) => ({
86
- [key]: value
87
- })));
35
+ if (Array.isArray(source)) {
36
+ return replace(source, replacement);
37
+ }
38
+ const keys = [...Object.keys(source), ...Object.keys(replacement !== null && replacement !== void 0 ? replacement : {})];
39
+ const entries = keys.map((key) => [
40
+ key,
41
+ replace(source[key], replacement === null || replacement === void 0 ? void 0 : replacement[key]),
42
+ ]);
43
+ return Object.assign({}, ...entries.map(([key, value]) => ({
44
+ [key]: value,
45
+ })));
88
46
  }
89
- /**
90
- * replace source according to the replacement instruction
91
- * @param source source value if there's no replacement
92
- * @param replacement value to be merged with the default
93
- * @returns merged value
94
- */
95
-
96
-
47
+ exports.merge = merge;
97
48
  function replace(source, replacement) {
98
- // LOGIC
99
- // S\R | Array | Object | Primitive
100
- // Array | EXTEND | AMEND | replace
101
- // Object | replace | MERGE | replace
102
- // Primitive | replace | replace | replace
103
- if (Array.isArray(source)) {
104
- return replaceArray(source, replacement);
105
- } else if (isJSON(source) && isJSON(replacement)) {
106
- // deep merge any objects
107
- return merge(source, replacement);
108
- } // primitive values
109
-
110
-
111
- return replacement === undefined ? source : replacement;
49
+ if (Array.isArray(source)) {
50
+ return replaceArray(source, replacement);
51
+ }
52
+ else if (isJSON(source) && isJSON(replacement)) {
53
+ return merge(source, replacement);
54
+ }
55
+ return replacement === undefined ? source : replacement;
112
56
  }
113
- /**
114
- * replace an array source according to the replacement instruction
115
- * @param source source value if there's no replacement
116
- * @param replacement value to be merged with the default
117
- * @returns merged value
118
- */
119
-
120
-
121
57
  function replaceArray(source, replacement) {
122
- if (isJSON(replacement)) {
123
- // overwrite a list
124
- return source.map((value, index) => replace(value, replacement[index]));
125
- } else if (Array.isArray(replacement)) {
126
- // extend a list uniquely
127
- return [...new Set([...source, ...replacement]).values()];
128
- } else {
129
- // primitive values
130
- return replacement !== null && replacement !== void 0 ? replacement : source;
131
- }
58
+ if (isJSON(replacement)) {
59
+ return source.map((value, index) => replace(value, replacement[index]));
60
+ }
61
+ else if (Array.isArray(replacement)) {
62
+ return [...new Set([...source, ...replacement]).values()];
63
+ }
64
+ else {
65
+ return replacement !== null && replacement !== void 0 ? replacement : source;
66
+ }
132
67
  }
133
- /**
134
- * replace parameters in the template
135
- * @param content template content
136
- * @param parameter variables to be substituted in the template
137
- */
138
-
139
-
140
68
  function template(content, parameter) {
141
- if (typeof content === 'string') {
142
- return (0, _pupa.default)(content, parameter);
143
- } else if (Array.isArray(content)) {
144
- return content.map(value => template(value, parameter));
145
- } else if (isJSON(content)) {
146
- return Object.fromEntries(Object.entries(content).map(([key, value]) => {
147
- return [template(key, parameter), template(value, parameter)];
148
- }));
149
- } else {
150
- return content;
151
- }
69
+ if (typeof content === 'string') {
70
+ return (0, pupa_1.default)(content, parameter);
71
+ }
72
+ else if (Array.isArray(content)) {
73
+ return content.map((value) => template(value, parameter));
74
+ }
75
+ else if (isJSON(content)) {
76
+ return Object.fromEntries(Object.entries(content).map(([key, value]) => {
77
+ return [template(key, parameter), template(value, parameter)];
78
+ }));
79
+ }
80
+ else {
81
+ return content;
82
+ }
152
83
  }
153
- /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */
154
- //# sourceMappingURL=template.js.map
84
+ exports.template = template;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZUEsZ0RBQXdCO0FBZXhCLFNBQWdCLE1BQU0sQ0FDcEIsT0FBNEMsRUFDNUMsR0FBRyxPQUFxQjtJQUd4QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNuQyxDQUFDLE1BQU0sRUFBNkIsRUFBRSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FDbEUsQ0FBQztJQUdGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNsRTtJQUdELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM1RSxDQUFDO0lBR0YsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxNQUFNLEVBQXdDLEVBQUUsQ0FDL0MsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUM3QixDQUFDO0lBR0YsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUNyQixDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxFQUFFLENBQy9CLE1BQU0sQ0FBQyxXQUFXLENBQ2hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQ2xDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQXFCLEVBQUUsQ0FBQztR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
package/lib/types.d.ts CHANGED
@@ -15,6 +15,7 @@ export interface PresetAsset {
15
15
  variable?: Record<string, string>;
16
16
  supplementaryConfig?: ConfigMap | ConfigMapGenerator;
17
17
  supplementaryIgnores?: IgnoreRule[] | IgnoreRulesGenerator;
18
+ supplementaryScripts?: string;
18
19
  }
19
20
  export interface PresetContext {
20
21
  target: {
package/lib/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
- //# sourceMappingURL=types.js.map
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9