presetter 8.0.3 → 8.0.5
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/task.d.ts.map +1 -1
- package/lib/task.js +90 -8
- package/package.json +5 -5
package/lib/task.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,gDAAgD;AAChD,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAWzD;
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,gDAAgD;AAChD,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAWzD;AAyFD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CA6CtE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtE"}
|
package/lib/task.js
CHANGED
@@ -14,6 +14,69 @@ export function parseGlobalArgs(argv) {
|
|
14
14
|
arg.toString().replace(/^(['"])([^]*?)\1$/, '$2')) ?? [] // if no global arguments are present, return an empty array
|
15
15
|
);
|
16
16
|
}
|
17
|
+
const ARG_PLACEHOLDER_REGEX = /^{@:?(.*)$/;
|
18
|
+
/**
|
19
|
+
* expand a placeholder pattern like {@:default args} into actual arguments
|
20
|
+
*
|
21
|
+
* this function handles the {@:...} syntax where:
|
22
|
+
* - {@} gets replaced with globalArgs
|
23
|
+
* - {@:default} uses "default" if no globalArgs, otherwise uses globalArgs
|
24
|
+
* - {@:arg1 arg2} splits into ["arg1", "arg2"] if no globalArgs
|
25
|
+
* @example
|
26
|
+
* // with globalArgs available
|
27
|
+
* expandPlaceholderArgs(['{@:--verbose}'], 0, ['--quiet', '--force'])
|
28
|
+
* // returns: { args: ['--quiet', '--force'], nextIndex: 1 }
|
29
|
+
* @example
|
30
|
+
* // No globalArgs, use defaults
|
31
|
+
* expandPlaceholderArgs(['{@:--verbose', '--output}'], 0, [])
|
32
|
+
* // returns: { args: ['--verbose', '--output'], nextIndex: 2 }
|
33
|
+
* @example
|
34
|
+
* // empty placeholder
|
35
|
+
* expandPlaceholderArgs(['{@:}'], 0, [])
|
36
|
+
* // returns: { args: [], nextIndex: 1 }
|
37
|
+
* @param rawArgs array of raw arguments
|
38
|
+
* @param startIndex starting index of the placeholder
|
39
|
+
* @param globalArgs global arguments to use if available
|
40
|
+
* @returns object with expanded args and next index to continue from
|
41
|
+
*/
|
42
|
+
function expandPlaceholderArgs(rawArgs, startIndex, globalArgs) {
|
43
|
+
// find the closing bracket index - placeholders can span multiple array elements
|
44
|
+
// example: ['{@:arg1', 'arg2', 'arg3}'] spans 3 elements
|
45
|
+
const closingIndex = rawArgs.findIndex((arg, index) => index >= startIndex && arg.endsWith('}'));
|
46
|
+
if (closingIndex === -1) {
|
47
|
+
// malformed placeholder without closing }, consume remaining args as empty
|
48
|
+
return { args: [], nextIndex: rawArgs.length };
|
49
|
+
}
|
50
|
+
// extract and reconstruct the default args string from multiple parts
|
51
|
+
// example: ['{@:--verbose', '--output', 'file}'] becomes "--verbose --output file"
|
52
|
+
const relevantParts = rawArgs.slice(startIndex, closingIndex + 1);
|
53
|
+
const defaultArgsString = relevantParts
|
54
|
+
.map((part, index) => {
|
55
|
+
if (index === 0) {
|
56
|
+
// first part: extract content after {@: prefix
|
57
|
+
return part.replace(/^{@:/, '');
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
// subsequent parts: use as-is (they're continuation of the placeholder)
|
61
|
+
return part;
|
62
|
+
}
|
63
|
+
})
|
64
|
+
.join(' ') // rejoin with spaces
|
65
|
+
.replace('}', '') // remove trailing }
|
66
|
+
.trim();
|
67
|
+
// priority: globalArgs override defaults
|
68
|
+
if (globalArgs.length > 0) {
|
69
|
+
// use provided globalArgs instead of placeholder defaults
|
70
|
+
return { args: globalArgs, nextIndex: closingIndex + 1 };
|
71
|
+
}
|
72
|
+
else if (defaultArgsString) {
|
73
|
+
// use placeholder defaults, split by whitespace into individual args
|
74
|
+
const defaultArgs = defaultArgsString.split(/\s+/);
|
75
|
+
return { args: defaultArgs, nextIndex: closingIndex + 1 };
|
76
|
+
}
|
77
|
+
// empty placeholder {@:} with no globalArgs produces no args
|
78
|
+
return { args: [], nextIndex: closingIndex + 1 };
|
79
|
+
}
|
17
80
|
/**
|
18
81
|
* parse task string and return a parsed task object with selector and args
|
19
82
|
* @param spec - the task string to parse
|
@@ -25,16 +88,35 @@ export function parseTaskSpec(spec, globalArgs) {
|
|
25
88
|
configuration: { 'populate--': true },
|
26
89
|
});
|
27
90
|
const selector = argv._[0];
|
28
|
-
const
|
29
|
-
|
30
|
-
|
31
|
-
|
91
|
+
const rawArgs = parseGlobalArgs(argv);
|
92
|
+
// process arguments using functional reduce approach
|
93
|
+
// this iterates through rawArgs and handles three cases:
|
94
|
+
// 1. {@} - simple placeholder that gets replaced with globalArgs
|
95
|
+
// 2. {@:defaults} - complex placeholder that may span multiple array elements
|
96
|
+
// 3. regular args - passed through unchanged
|
97
|
+
const finalState = rawArgs.reduce((state, arg, index) => {
|
98
|
+
// skip indices that were already processed by multi-part placeholders
|
99
|
+
if (index < state.skipUntil) {
|
100
|
+
return state;
|
101
|
+
}
|
102
|
+
if (ARG_PLACEHOLDER_REGEX.test(arg)) {
|
103
|
+
// complex case: {@:default args} that may span multiple elements
|
104
|
+
// the expandPlaceholderArgs function finds the closing } and processes defaults
|
105
|
+
const { args: processedArgs, nextIndex } = expandPlaceholderArgs(rawArgs, index, globalArgs);
|
106
|
+
return {
|
107
|
+
processedArgs: [...state.processedArgs, ...processedArgs],
|
108
|
+
skipUntil: nextIndex, // skip to after the closing }
|
109
|
+
};
|
32
110
|
}
|
33
111
|
else {
|
34
|
-
|
112
|
+
// regular argument: add as-is
|
113
|
+
return {
|
114
|
+
processedArgs: [...state.processedArgs, arg],
|
115
|
+
skipUntil: index + 1,
|
116
|
+
};
|
35
117
|
}
|
36
|
-
}, []);
|
37
|
-
return { selector, args };
|
118
|
+
}, { processedArgs: [], skipUntil: 0 });
|
119
|
+
return { selector, args: finalState.processedArgs };
|
38
120
|
}
|
39
121
|
/**
|
40
122
|
* select tasks based on a pattern
|
@@ -60,4 +142,4 @@ export function selectTasks(tasks, pattern) {
|
|
60
142
|
debug('SELECTED TASKS\n%O', { pattern, selected });
|
61
143
|
return selected;
|
62
144
|
}
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFVL0I7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBZTtJQUM3QywwRkFBMEY7SUFDMUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlCLCtFQUErRTtJQUMvRSxPQUFPLENBQ0wsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3RCLDZEQUE2RDtJQUM3RCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUNsRCxJQUFJLEVBQUUsQ0FBQyw0REFBNEQ7S0FDckUsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQUUzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixPQUFpQixFQUNqQixVQUFrQixFQUNsQixVQUFvQjtJQUVwQixpRkFBaUY7SUFDakYseURBQXlEO0lBQ3pELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQ3BDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLFVBQVUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUN6RCxDQUFDO0lBRUYsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4QiwyRUFBMkU7UUFDM0UsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLG1GQUFtRjtJ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
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "presetter",
|
3
|
-
"version": "8.0.
|
3
|
+
"version": "8.0.5",
|
4
4
|
"description": "Make project configurations clean with presets",
|
5
5
|
"keywords": [
|
6
6
|
"config",
|
@@ -78,7 +78,7 @@
|
|
78
78
|
"source-map-support": "^0.5.0",
|
79
79
|
"yargs": "^18.0.0",
|
80
80
|
"yargs-parser": "^22.0.0",
|
81
|
-
"presetter-types": "8.0.
|
81
|
+
"presetter-types": "8.0.5"
|
82
82
|
},
|
83
83
|
"devDependencies": {
|
84
84
|
"@types/debug": "^4.0.0",
|
@@ -86,9 +86,9 @@
|
|
86
86
|
"@types/node": "^24.0.0",
|
87
87
|
"@types/yargs": "^17.0.0",
|
88
88
|
"type-fest": "^4.23.0",
|
89
|
-
"presetter-preset-
|
90
|
-
"presetter-preset-
|
91
|
-
"presetter-preset-
|
89
|
+
"presetter-preset-strict": "8.0.5",
|
90
|
+
"presetter-preset-esm": "8.0.5",
|
91
|
+
"presetter-preset-essentials": "8.0.5"
|
92
92
|
},
|
93
93
|
"engines": {
|
94
94
|
"node": ">=20.0.0"
|