@rickosborne/clamp 2025.1.7
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/README.md +216 -0
- package/cjs/index.js +27 -0
- package/cjs/index.js.map +1 -0
- package/cjs/package.json +6 -0
- package/cjs/ts/boolean-param.js +45 -0
- package/cjs/ts/boolean-param.js.map +1 -0
- package/cjs/ts/command-params.js +160 -0
- package/cjs/ts/command-params.js.map +1 -0
- package/cjs/ts/common.js +3 -0
- package/cjs/ts/common.js.map +1 -0
- package/cjs/ts/date-param.js +38 -0
- package/cjs/ts/date-param.js.map +1 -0
- package/cjs/ts/file-param.js +43 -0
- package/cjs/ts/file-param.js.map +1 -0
- package/cjs/ts/help-for-param.js +33 -0
- package/cjs/ts/help-for-param.js.map +1 -0
- package/cjs/ts/label-for-param.js +18 -0
- package/cjs/ts/label-for-param.js.map +1 -0
- package/cjs/ts/number-param.js +56 -0
- package/cjs/ts/number-param.js.map +1 -0
- package/cjs/ts/param-handler.js +28 -0
- package/cjs/ts/param-handler.js.map +1 -0
- package/cjs/ts/string-param.js +34 -0
- package/cjs/ts/string-param.js.map +1 -0
- package/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/esm/index.js +11 -0
- package/esm/index.js.map +1 -0
- package/esm/package.json +6 -0
- package/esm/ts/boolean-param.js +40 -0
- package/esm/ts/boolean-param.js.map +1 -0
- package/esm/ts/command-params.js +154 -0
- package/esm/ts/command-params.js.map +1 -0
- package/esm/ts/common.js +2 -0
- package/esm/ts/common.js.map +1 -0
- package/esm/ts/date-param.js +32 -0
- package/esm/ts/date-param.js.map +1 -0
- package/esm/ts/file-param.js +37 -0
- package/esm/ts/file-param.js.map +1 -0
- package/esm/ts/help-for-param.js +29 -0
- package/esm/ts/help-for-param.js.map +1 -0
- package/esm/ts/label-for-param.js +13 -0
- package/esm/ts/label-for-param.js.map +1 -0
- package/esm/ts/number-param.js +51 -0
- package/esm/ts/number-param.js.map +1 -0
- package/esm/ts/param-handler.js +23 -0
- package/esm/ts/param-handler.js.map +1 -0
- package/esm/ts/string-param.js +28 -0
- package/esm/ts/string-param.js.map +1 -0
- package/esm/tsconfig.module.tsbuildinfo +1 -0
- package/package.json +51 -0
- package/tsdoc-metadata.json +11 -0
- package/types/index.d.ts +11 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +27 -0
- package/types/index.js.map +1 -0
- package/types/ts/boolean-param.d.ts +50 -0
- package/types/ts/boolean-param.d.ts.map +1 -0
- package/types/ts/boolean-param.js +44 -0
- package/types/ts/boolean-param.js.map +1 -0
- package/types/ts/command-params.d.ts +44 -0
- package/types/ts/command-params.d.ts.map +1 -0
- package/types/ts/command-params.js +158 -0
- package/types/ts/command-params.js.map +1 -0
- package/types/ts/common.d.ts +63 -0
- package/types/ts/common.d.ts.map +1 -0
- package/types/ts/common.js +3 -0
- package/types/ts/common.js.map +1 -0
- package/types/ts/date-param.d.ts +34 -0
- package/types/ts/date-param.d.ts.map +1 -0
- package/types/ts/date-param.js +37 -0
- package/types/ts/date-param.js.map +1 -0
- package/types/ts/file-param.d.ts +50 -0
- package/types/ts/file-param.d.ts.map +1 -0
- package/types/ts/file-param.js +42 -0
- package/types/ts/file-param.js.map +1 -0
- package/types/ts/help-for-param.d.ts +6 -0
- package/types/ts/help-for-param.d.ts.map +1 -0
- package/types/ts/help-for-param.js +33 -0
- package/types/ts/help-for-param.js.map +1 -0
- package/types/ts/label-for-param.d.ts +6 -0
- package/types/ts/label-for-param.d.ts.map +1 -0
- package/types/ts/label-for-param.js +17 -0
- package/types/ts/label-for-param.js.map +1 -0
- package/types/ts/number-param.d.ts +43 -0
- package/types/ts/number-param.d.ts.map +1 -0
- package/types/ts/number-param.js +56 -0
- package/types/ts/number-param.js.map +1 -0
- package/types/ts/param-handler.d.ts +6 -0
- package/types/ts/param-handler.d.ts.map +1 -0
- package/types/ts/param-handler.js +27 -0
- package/types/ts/param-handler.js.map +1 -0
- package/types/ts/string-param.d.ts +30 -0
- package/types/ts/string-param.d.ts.map +1 -0
- package/types/ts/string-param.js +33 -0
- package/types/ts/string-param.js.map +1 -0
- package/types/tsconfig.types.tsbuildinfo +1 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.numberParamHandler = exports.isNumberParam = exports.parseNumberArg = void 0;
|
|
4
|
+
const label_for_param_js_1 = require("./label-for-param.js");
|
|
5
|
+
/**
|
|
6
|
+
* Convert a text argument to a number.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
const parseNumberArg = (text, param) => {
|
|
10
|
+
const num = param.integer === true ? parseInt(text, param.radix) : parseFloat(text);
|
|
11
|
+
if (param.minimum != null && num < param.minimum) {
|
|
12
|
+
throw new RangeError(`${(0, label_for_param_js_1.labelForParam)(param)}: minimum=${param.minimum}`);
|
|
13
|
+
}
|
|
14
|
+
if (param.maximum != null && num > param.maximum) {
|
|
15
|
+
throw new RangeError(`${(0, label_for_param_js_1.labelForParam)(param)}: maximum=${param.minimum}`);
|
|
16
|
+
}
|
|
17
|
+
return parseFloat(text);
|
|
18
|
+
};
|
|
19
|
+
exports.parseNumberArg = parseNumberArg;
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
const isNumberParam = (param) => {
|
|
24
|
+
return param.type === Number;
|
|
25
|
+
};
|
|
26
|
+
exports.isNumberParam = isNumberParam;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
exports.numberParamHandler = {
|
|
31
|
+
matchesParam: exports.isNumberParam,
|
|
32
|
+
parseArg: exports.parseNumberArg,
|
|
33
|
+
placeholderForParam(param) {
|
|
34
|
+
if (param.placeholder != null) {
|
|
35
|
+
return param.placeholder;
|
|
36
|
+
}
|
|
37
|
+
let range;
|
|
38
|
+
if (param.minimum != null && param.maximum != null) {
|
|
39
|
+
range = `:[${param.minimum},${param.maximum}]`;
|
|
40
|
+
}
|
|
41
|
+
else if (param.minimum != null) {
|
|
42
|
+
range = `≥${param.minimum}`;
|
|
43
|
+
}
|
|
44
|
+
else if (param.maximum != null) {
|
|
45
|
+
range = `≤${param.maximum}`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
range = "";
|
|
49
|
+
}
|
|
50
|
+
if (param.integer) {
|
|
51
|
+
return `(int${range})`;
|
|
52
|
+
}
|
|
53
|
+
return `(number${range})`;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=number-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-param.js","sourceRoot":"","sources":["../../../ts/number-param.ts"],"names":[],"mappings":";;;AACA,6DAAqD;AA+BrD;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAU,EAAE;IACjF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAA,kCAAa,EAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAA,kCAAa,EAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,KAAwB,EAA+B,EAAE;IACtF,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAA6C;IAC3E,YAAY,EAAE,qBAAa;IAC3B,QAAQ,EAAE,sBAAc;IACxB,mBAAmB,CAAC,KAAyB;QAC5C,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,IAAI,KAAa,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACpD,KAAK,GAAG,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;QAChD,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,KAAK,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,OAAO,KAAK,GAAG,CAAC;QACxB,CAAC;QACD,OAAO,UAAU,KAAK,GAAG,CAAC;IAC3B,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findParamHandler = void 0;
|
|
4
|
+
const boolean_param_js_1 = require("./boolean-param.js");
|
|
5
|
+
const date_param_js_1 = require("./date-param.js");
|
|
6
|
+
const file_param_js_1 = require("./file-param.js");
|
|
7
|
+
const number_param_js_1 = require("./number-param.js");
|
|
8
|
+
const string_param_js_1 = require("./string-param.js");
|
|
9
|
+
const paramHandlers = [
|
|
10
|
+
string_param_js_1.stringParamHandler,
|
|
11
|
+
boolean_param_js_1.booleanParamHandler,
|
|
12
|
+
number_param_js_1.numberParamHandler,
|
|
13
|
+
file_param_js_1.fileParamHandler,
|
|
14
|
+
date_param_js_1.dateParamHandler,
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
const findParamHandler = (param) => {
|
|
20
|
+
var _a;
|
|
21
|
+
const paramHandler = paramHandlers.find((ph) => ph.matchesParam(param));
|
|
22
|
+
if (paramHandler == null) {
|
|
23
|
+
throw new TypeError(`Unknown parameter type: ${(_a = param.type) === null || _a === void 0 ? void 0 : _a.toString()}`);
|
|
24
|
+
}
|
|
25
|
+
return paramHandler;
|
|
26
|
+
};
|
|
27
|
+
exports.findParamHandler = findParamHandler;
|
|
28
|
+
//# sourceMappingURL=param-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-handler.js","sourceRoot":"","sources":["../../../ts/param-handler.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AAEzD,mDAAmD;AACnD,mDAAmD;AACnD,uDAAuD;AACvD,uDAAuD;AAEvD,MAAM,aAAa,GAA+C;IACjE,oCAAkB;IAClB,sCAAmB;IACnB,oCAAkB;IAClB,gCAAgB;IAChB,gCAAgB;CAChB,CAAC;AAEF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAA8B,KAAQ,EAA4B,EAAE;;IACnG,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAW,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAyC,CAAC;IACzH,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,2BAA4B,MAAA,KAAK,CAAC,IAAI,0CAAE,QAAQ,EAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringParamHandler = exports.isStringParam = exports.parseStringArg = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Transform a string argument before returning it.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
const parseStringArg = (text, param) => {
|
|
9
|
+
let s = text;
|
|
10
|
+
if (param.trim === true) {
|
|
11
|
+
s = s.trim();
|
|
12
|
+
}
|
|
13
|
+
return s;
|
|
14
|
+
};
|
|
15
|
+
exports.parseStringArg = parseStringArg;
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
const isStringParam = (param) => {
|
|
20
|
+
return param.type === String || param.type == null;
|
|
21
|
+
};
|
|
22
|
+
exports.isStringParam = isStringParam;
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
exports.stringParamHandler = {
|
|
27
|
+
matchesParam: exports.isStringParam,
|
|
28
|
+
parseArg: exports.parseStringArg,
|
|
29
|
+
placeholderForParam(param) {
|
|
30
|
+
var _a;
|
|
31
|
+
return (_a = param.placeholder) !== null && _a !== void 0 ? _a : "(text)";
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=string-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-param.js","sourceRoot":"","sources":["../../../ts/string-param.ts"],"names":[],"mappings":";;;AAkBA;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAU,EAAE;IACjF,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,KAAwB,EAA+B,EAAE;IACtF,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;AACpD,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAA6C;IAC3E,YAAY,EAAE,qBAAa;IAC3B,QAAQ,EAAE,sBAAc;IACxB,mBAAmB,CAAC,KAAyB;;QAC5C,OAAO,MAAA,KAAK,CAAC,WAAW,mCAAI,QAAQ,CAAC;IACtC,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../../index.ts","../../ts/boolean-param.ts","../../ts/command-params.ts","../../ts/common.ts","../../ts/date-param.ts","../../ts/file-param.ts","../../ts/help-for-param.ts","../../ts/label-for-param.ts","../../ts/number-param.ts","../../ts/param-handler.ts","../../ts/string-param.ts"],"version":"5.7.2"}
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./ts/boolean-param.js";
|
|
2
|
+
export * from "./ts/command-params.js";
|
|
3
|
+
export * from "./ts/common.js";
|
|
4
|
+
export * from "./ts/date-param.js";
|
|
5
|
+
export * from "./ts/file-param.js";
|
|
6
|
+
export * from "./ts/help-for-param.js";
|
|
7
|
+
export * from "./ts/label-for-param.js";
|
|
8
|
+
export * from "./ts/number-param.js";
|
|
9
|
+
export * from "./ts/param-handler.js";
|
|
10
|
+
export * from "./ts/string-param.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
|
package/esm/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { labelForParam } from "./label-for-param.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default possible values for true.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const TRUES = Object.freeze(["t", "true", "1", "y", "yes"]);
|
|
7
|
+
// noinspection SpellCheckingInspection
|
|
8
|
+
/**
|
|
9
|
+
* Default possible values for false.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export const FALSES = Object.freeze(["f", "false", "0", "n", "no"]);
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export const parseBooleanArg = (text, param) => {
|
|
17
|
+
const lower = text.toLocaleLowerCase();
|
|
18
|
+
const trueValues = param.trues ?? TRUES;
|
|
19
|
+
if (trueValues.includes(lower)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const falseValues = param.falses ?? FALSES;
|
|
23
|
+
if (falseValues.includes(lower)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
throw new RangeError(`${labelForParam(param)}: invalid value`);
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export const booleanParamHandler = {
|
|
32
|
+
matchesParam(param) {
|
|
33
|
+
return param.type === Boolean;
|
|
34
|
+
},
|
|
35
|
+
parseArg: parseBooleanArg,
|
|
36
|
+
placeholderForParam() {
|
|
37
|
+
return undefined;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=boolean-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean-param.js","sourceRoot":"","sources":["../../../ts/boolean-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAE,CAAC,CAAC;AAErE,uCAAuC;AACvC;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAE,CAAC,CAAC;AAkCtE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,KAA0B,EAAW,EAAE;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;IAC3C,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,IAAI,UAAU,CAAC,GAAI,aAAa,CAAC,KAAK,CAAE,iBAAiB,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA+C;IAC9E,YAAY,CAAC,KAAwB;QACpC,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;IAC/B,CAAC;IACD,QAAQ,EAAE,eAAe;IACzB,mBAAmB;QAClB,OAAO,SAAS,CAAC;IAClB,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { assertDefined } from "@rickosborne/guard";
|
|
2
|
+
import { FALSES, TRUES } from "./boolean-param.js";
|
|
3
|
+
import { labelForParam } from "./label-for-param.js";
|
|
4
|
+
import { findParamHandler } from "./param-handler.js";
|
|
5
|
+
const toReturnType = (text, param) => {
|
|
6
|
+
const paramHandler = findParamHandler(param);
|
|
7
|
+
const parser = (param.parse ?? paramHandler.parseArg);
|
|
8
|
+
if (parser != null) {
|
|
9
|
+
return parser(text, param);
|
|
10
|
+
}
|
|
11
|
+
throw new Error(`Unhandled param type: ${String(param.type)}`);
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Parse the (maybe-given) command-line arguments according to the
|
|
15
|
+
* given param specs and construct a return type of the converted values.
|
|
16
|
+
*/
|
|
17
|
+
export const commandParams = (spec, { args = process.argv.slice(2), ignoreUnknown, onError, } = {}) => {
|
|
18
|
+
const result = {};
|
|
19
|
+
const positionals = Object.entries(spec)
|
|
20
|
+
.filter(([, s]) => s.positional === true)
|
|
21
|
+
.map(([key, s]) => ({ key, spec: s }));
|
|
22
|
+
if (positionals.length > 1) {
|
|
23
|
+
throw new Error(`Too many positionals: ${positionals.map(({ key }) => key).join(" ")}`);
|
|
24
|
+
}
|
|
25
|
+
const positional = positionals.shift();
|
|
26
|
+
let onlyPositionalsRemain = false;
|
|
27
|
+
try {
|
|
28
|
+
while (args.length > 0) {
|
|
29
|
+
const arg = args.shift();
|
|
30
|
+
let param;
|
|
31
|
+
let resultKey;
|
|
32
|
+
let typedValue;
|
|
33
|
+
if (arg === "--" && !onlyPositionalsRemain) {
|
|
34
|
+
onlyPositionalsRemain = true;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (onlyPositionalsRemain || !arg.startsWith("-")) {
|
|
38
|
+
if (positional == null) {
|
|
39
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
40
|
+
throw new Error(`Unexpected positional: ${JSON.stringify(arg)}`);
|
|
41
|
+
}
|
|
42
|
+
param = positional.spec;
|
|
43
|
+
resultKey = positional.key;
|
|
44
|
+
typedValue = toReturnType(arg, positional.spec);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
let no = false;
|
|
48
|
+
let name;
|
|
49
|
+
if (arg.startsWith("--no-")) {
|
|
50
|
+
name = arg.substring(5);
|
|
51
|
+
no = true;
|
|
52
|
+
}
|
|
53
|
+
else if (arg.startsWith("--")) {
|
|
54
|
+
name = arg.substring(2);
|
|
55
|
+
}
|
|
56
|
+
else if (arg.startsWith("-no-")) {
|
|
57
|
+
name = arg.substring(4);
|
|
58
|
+
no = true;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
name = arg.substring(1);
|
|
62
|
+
}
|
|
63
|
+
let suffix;
|
|
64
|
+
if (name.includes("=")) {
|
|
65
|
+
[name, suffix] = name.split("=", 2);
|
|
66
|
+
}
|
|
67
|
+
const specs = Object.entries(spec)
|
|
68
|
+
.filter(([n, s]) => "name" in s && s.name === name || ("names" in s && (s.names?.includes(name) ?? false)) || n === name);
|
|
69
|
+
if (specs.length < 1) {
|
|
70
|
+
if (ignoreUnknown) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
74
|
+
throw new Error(`Unexpected arg: ${JSON.stringify(name)}`);
|
|
75
|
+
}
|
|
76
|
+
if (specs.length > 1) {
|
|
77
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
78
|
+
throw new Error(`More than one matching spec: ${name}`);
|
|
79
|
+
}
|
|
80
|
+
[resultKey, param] = specs[0];
|
|
81
|
+
assertDefined(param, `param: ${name}`);
|
|
82
|
+
let stringValue;
|
|
83
|
+
if (param.type === Boolean) {
|
|
84
|
+
if (no) {
|
|
85
|
+
if (suffix != null) {
|
|
86
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
87
|
+
throw new Error(`Combo of "no" plus "=" does not make any sense for ${labelForParam(param)}`);
|
|
88
|
+
}
|
|
89
|
+
stringValue = param.falseText ?? param.falses?.[0] ?? FALSES[0];
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
stringValue = suffix ?? param.trueText ?? param.trues?.[0] ?? TRUES[0];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (no) {
|
|
96
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
97
|
+
throw new Error(`"no" does not make sense for ${labelForParam(param)}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
stringValue = suffix ?? args.shift();
|
|
101
|
+
}
|
|
102
|
+
assertDefined(stringValue, () => `value for ${labelForParam(param)}`);
|
|
103
|
+
typedValue = toReturnType(stringValue, param);
|
|
104
|
+
}
|
|
105
|
+
if (param == null || resultKey == null) {
|
|
106
|
+
if (ignoreUnknown) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
110
|
+
throw new Error(`Unexpected arg: ${JSON.stringify(arg)}`);
|
|
111
|
+
}
|
|
112
|
+
assertDefined(typedValue, `typedValue for ${resultKey}`);
|
|
113
|
+
const existing = result[resultKey];
|
|
114
|
+
if (param.multiple === true) {
|
|
115
|
+
const values = existing ?? [];
|
|
116
|
+
if (!Array.isArray(values)) {
|
|
117
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
118
|
+
throw new Error(`Expected an array: ${resultKey}`);
|
|
119
|
+
}
|
|
120
|
+
result[resultKey] ??= values;
|
|
121
|
+
values.push(typedValue);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
if (existing != null) {
|
|
125
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
126
|
+
throw new Error(`Too many ${labelForParam(param)}: ${JSON.stringify(existing)} ${JSON.stringify(arg)}`);
|
|
127
|
+
}
|
|
128
|
+
result[resultKey] = typedValue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const requiredKeys = Object.entries(spec)
|
|
132
|
+
.filter(([, s]) => s.optional !== true)
|
|
133
|
+
.map(([key]) => key);
|
|
134
|
+
const missing = requiredKeys.filter((key) => !(key in result));
|
|
135
|
+
if (missing.length > 0) {
|
|
136
|
+
const message = missing.map((key) => labelForParam(spec[key])).join(" ");
|
|
137
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
138
|
+
throw new Error(`Missing required params: ${message}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
const error = err instanceof Error ? err : new Error("Unknown error");
|
|
143
|
+
if (onError != null) {
|
|
144
|
+
onError(error);
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.error(error.message);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=command-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-params.js","sourceRoot":"","sources":["../../../ts/command-params.ts"],"names":[],"mappings":"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"}
|
package/esm/ts/common.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../ts/common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { parseLocalDate } from "@rickosborne/foundation";
|
|
2
|
+
import { labelForParam } from "./label-for-param.js";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const parseDateArg = (text, param) => {
|
|
7
|
+
const date = parseLocalDate(text, param);
|
|
8
|
+
if (param.minimum != null && date < param.minimum) {
|
|
9
|
+
throw new RangeError(`${labelForParam(param)}: minimum=${param.minimum.toISOString()}`);
|
|
10
|
+
}
|
|
11
|
+
if (param.maximum != null && date > param.maximum) {
|
|
12
|
+
throw new RangeError(`${labelForParam(param)}: maximum=${param.maximum.toISOString()}`);
|
|
13
|
+
}
|
|
14
|
+
return date;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export const isDateParam = (param) => {
|
|
20
|
+
return param.type === Date;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const dateParamHandler = {
|
|
26
|
+
matchesParam: isDateParam,
|
|
27
|
+
parseArg: parseDateArg,
|
|
28
|
+
placeholderForParam(param) {
|
|
29
|
+
return param.placeholder ?? param.time ? "(datetime)" : "(date)";
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=date-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-param.js","sourceRoot":"","sources":["../../../ts/date-param.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAsBrD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAuB,EAAQ,EAAE;IAC3E,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,GAAI,aAAa,CAAC,KAAK,CAAE,aAAc,KAAK,CAAC,OAAO,CAAC,WAAW,EAAG,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,GAAI,aAAa,CAAC,KAAK,CAAE,aAAc,KAAK,CAAC,OAAO,CAAC,WAAW,EAAG,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAA6B,EAAE;IAClF,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACrE,YAAY,EAAE,WAAW;IACzB,QAAQ,EAAE,YAAY;IACtB,mBAAmB,CAAC,KAAuB;QAC1C,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { statsForFile } from "@rickosborne/term";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Validate and transform the argument before it is returned.
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const parseFileArg = (text, param) => {
|
|
8
|
+
let filePath = text;
|
|
9
|
+
if (param.path != null && !filePath.startsWith(param.path)) {
|
|
10
|
+
filePath = path.join(param.path, filePath);
|
|
11
|
+
}
|
|
12
|
+
const stats = statsForFile(filePath);
|
|
13
|
+
const exists = stats != null;
|
|
14
|
+
if (param.existing !== undefined) {
|
|
15
|
+
if (exists !== param.existing) {
|
|
16
|
+
throw new Error(`File ${exists ? "exists" : "does not exist"}: ${filePath}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return { filePath, stats };
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export const isFileParam = (param) => {
|
|
25
|
+
return param.type === "file";
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export const fileParamHandler = {
|
|
31
|
+
matchesParam: isFileParam,
|
|
32
|
+
parseArg: parseFileArg,
|
|
33
|
+
placeholderForParam(param) {
|
|
34
|
+
return param.placeholder ?? "(path)";
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=file-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-param.js","sourceRoot":"","sources":["../../../ts/file-param.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAuClC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAuB,EAAW,EAAE;IAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,QAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAiB,KAAM,QAAS,EAAE,CAAC,CAAC;QAClF,CAAC;IACF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAA6B,EAAE;IAClF,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA4C;IACxE,YAAY,EAAE,WAAW;IACzB,QAAQ,EAAE,YAAY;IACtB,mBAAmB,CAAC,KAAuB;QAC1C,OAAO,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;IACtC,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { findParamHandler } from "./param-handler.js";
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export const helpForParam = (names, param) => {
|
|
6
|
+
const { help } = param;
|
|
7
|
+
if (help == null) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const handler = findParamHandler(param);
|
|
11
|
+
const placeholder = handler.placeholderForParam(param);
|
|
12
|
+
const lines = [];
|
|
13
|
+
for (const name of names.slice().sort()) {
|
|
14
|
+
let line = " ";
|
|
15
|
+
if (name.length === 1) {
|
|
16
|
+
line = line.concat("-", name);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
line = line.concat("--", name);
|
|
20
|
+
}
|
|
21
|
+
if (placeholder != null) {
|
|
22
|
+
line = line.concat(" ", placeholder);
|
|
23
|
+
}
|
|
24
|
+
lines.push(line);
|
|
25
|
+
}
|
|
26
|
+
lines.push(" ".concat(help));
|
|
27
|
+
return lines.join("\n");
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=help-for-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-for-param.js","sourceRoot":"","sources":["../../../ts/help-for-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAe,EAAE,KAAmB,EAAsB,EAAE;IACxF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export const labelForParam = (param) => {
|
|
5
|
+
if (param.positional === true) {
|
|
6
|
+
return "...";
|
|
7
|
+
}
|
|
8
|
+
const names = param.names ?? param.name == null ? [] : [param.name];
|
|
9
|
+
return names
|
|
10
|
+
.map((name) => (name.length === 1 ? "-" : "--").concat(name))
|
|
11
|
+
.join("|");
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=label-for-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-for-param.js","sourceRoot":"","sources":["../../../ts/label-for-param.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAU,EAAE;IAC5D,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC;IACtE,OAAO,KAAK;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5D,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { labelForParam } from "./label-for-param.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert a text argument to a number.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const parseNumberArg = (text, param) => {
|
|
7
|
+
const num = param.integer === true ? parseInt(text, param.radix) : parseFloat(text);
|
|
8
|
+
if (param.minimum != null && num < param.minimum) {
|
|
9
|
+
throw new RangeError(`${labelForParam(param)}: minimum=${param.minimum}`);
|
|
10
|
+
}
|
|
11
|
+
if (param.maximum != null && num > param.maximum) {
|
|
12
|
+
throw new RangeError(`${labelForParam(param)}: maximum=${param.minimum}`);
|
|
13
|
+
}
|
|
14
|
+
return parseFloat(text);
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export const isNumberParam = (param) => {
|
|
20
|
+
return param.type === Number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const numberParamHandler = {
|
|
26
|
+
matchesParam: isNumberParam,
|
|
27
|
+
parseArg: parseNumberArg,
|
|
28
|
+
placeholderForParam(param) {
|
|
29
|
+
if (param.placeholder != null) {
|
|
30
|
+
return param.placeholder;
|
|
31
|
+
}
|
|
32
|
+
let range;
|
|
33
|
+
if (param.minimum != null && param.maximum != null) {
|
|
34
|
+
range = `:[${param.minimum},${param.maximum}]`;
|
|
35
|
+
}
|
|
36
|
+
else if (param.minimum != null) {
|
|
37
|
+
range = `≥${param.minimum}`;
|
|
38
|
+
}
|
|
39
|
+
else if (param.maximum != null) {
|
|
40
|
+
range = `≤${param.maximum}`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
range = "";
|
|
44
|
+
}
|
|
45
|
+
if (param.integer) {
|
|
46
|
+
return `(int${range})`;
|
|
47
|
+
}
|
|
48
|
+
return `(number${range})`;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=number-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-param.js","sourceRoot":"","sources":["../../../ts/number-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA+BrD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAU,EAAE;IACjF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAwB,EAA+B,EAAE;IACtF,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC3E,YAAY,EAAE,aAAa;IAC3B,QAAQ,EAAE,cAAc;IACxB,mBAAmB,CAAC,KAAyB;QAC5C,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,IAAI,KAAa,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACpD,KAAK,GAAG,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;QAChD,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,KAAK,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,OAAO,KAAK,GAAG,CAAC;QACxB,CAAC;QACD,OAAO,UAAU,KAAK,GAAG,CAAC;IAC3B,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { booleanParamHandler } from "./boolean-param.js";
|
|
2
|
+
import { dateParamHandler } from "./date-param.js";
|
|
3
|
+
import { fileParamHandler } from "./file-param.js";
|
|
4
|
+
import { numberParamHandler } from "./number-param.js";
|
|
5
|
+
import { stringParamHandler } from "./string-param.js";
|
|
6
|
+
const paramHandlers = [
|
|
7
|
+
stringParamHandler,
|
|
8
|
+
booleanParamHandler,
|
|
9
|
+
numberParamHandler,
|
|
10
|
+
fileParamHandler,
|
|
11
|
+
dateParamHandler,
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export const findParamHandler = (param) => {
|
|
17
|
+
const paramHandler = paramHandlers.find((ph) => ph.matchesParam(param));
|
|
18
|
+
if (paramHandler == null) {
|
|
19
|
+
throw new TypeError(`Unknown parameter type: ${param.type?.toString()}`);
|
|
20
|
+
}
|
|
21
|
+
return paramHandler;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=param-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-handler.js","sourceRoot":"","sources":["../../../ts/param-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,aAAa,GAA+C;IACjE,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAA8B,KAAQ,EAA4B,EAAE;IACnG,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAW,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAyC,CAAC;IACzH,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,2BAA4B,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform a string argument before returning it.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export const parseStringArg = (text, param) => {
|
|
6
|
+
let s = text;
|
|
7
|
+
if (param.trim === true) {
|
|
8
|
+
s = s.trim();
|
|
9
|
+
}
|
|
10
|
+
return s;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export const isStringParam = (param) => {
|
|
16
|
+
return param.type === String || param.type == null;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export const stringParamHandler = {
|
|
22
|
+
matchesParam: isStringParam,
|
|
23
|
+
parseArg: parseStringArg,
|
|
24
|
+
placeholderForParam(param) {
|
|
25
|
+
return param.placeholder ?? "(text)";
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=string-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-param.js","sourceRoot":"","sources":["../../../ts/string-param.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAyB,EAAU,EAAE;IACjF,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAwB,EAA+B,EAAE;IACtF,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;AACpD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC3E,YAAY,EAAE,aAAa;IAC3B,QAAQ,EAAE,cAAc;IACxB,mBAAmB,CAAC,KAAyB;QAC5C,OAAO,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;IACtC,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../../index.ts","../../ts/boolean-param.ts","../../ts/command-params.ts","../../ts/common.ts","../../ts/date-param.ts","../../ts/file-param.ts","../../ts/help-for-param.ts","../../ts/label-for-param.ts","../../ts/number-param.ts","../../ts/param-handler.ts","../../ts/string-param.ts"],"version":"5.7.2"}
|