@rickosborne/clamp 2025.1.7 → 2025.1.10

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.
Files changed (151) hide show
  1. package/boolean-param.cjs +52 -0
  2. package/boolean-param.cjs.map +6 -0
  3. package/boolean-param.d.ts.map +1 -0
  4. package/boolean-param.mjs +33 -0
  5. package/boolean-param.mjs.map +6 -0
  6. package/command-params.cjs +158 -0
  7. package/command-params.cjs.map +6 -0
  8. package/command-params.d.ts.map +1 -0
  9. package/command-params.mjs +139 -0
  10. package/command-params.mjs.map +6 -0
  11. package/common.cjs +17 -0
  12. package/common.cjs.map +6 -0
  13. package/common.d.ts.map +1 -0
  14. package/common.mjs +1 -0
  15. package/common.mjs.map +6 -0
  16. package/date-param.cjs +49 -0
  17. package/date-param.cjs.map +6 -0
  18. package/{types/ts/date-param.d.ts → date-param.d.ts} +1 -1
  19. package/date-param.d.ts.map +1 -0
  20. package/date-param.mjs +30 -0
  21. package/date-param.mjs.map +6 -0
  22. package/file-param.cjs +63 -0
  23. package/file-param.cjs.map +6 -0
  24. package/file-param.d.ts.map +1 -0
  25. package/file-param.mjs +34 -0
  26. package/file-param.mjs.map +6 -0
  27. package/help-for-param.cjs +49 -0
  28. package/help-for-param.cjs.map +6 -0
  29. package/help-for-param.d.ts.map +1 -0
  30. package/help-for-param.mjs +30 -0
  31. package/help-for-param.mjs.map +6 -0
  32. package/index.cjs +28 -0
  33. package/index.cjs.map +6 -0
  34. package/index.d.ts +11 -0
  35. package/index.d.ts.map +1 -0
  36. package/index.mjs +11 -0
  37. package/index.mjs.map +6 -0
  38. package/label-for-param.cjs +32 -0
  39. package/label-for-param.cjs.map +6 -0
  40. package/label-for-param.d.ts.map +1 -0
  41. package/label-for-param.mjs +13 -0
  42. package/label-for-param.mjs.map +6 -0
  43. package/number-param.cjs +64 -0
  44. package/number-param.cjs.map +6 -0
  45. package/number-param.d.ts.map +1 -0
  46. package/number-param.mjs +45 -0
  47. package/number-param.mjs.map +6 -0
  48. package/package.json +89 -14
  49. package/param-handler.cjs +45 -0
  50. package/param-handler.cjs.map +6 -0
  51. package/param-handler.d.ts.map +1 -0
  52. package/param-handler.mjs +26 -0
  53. package/param-handler.mjs.map +6 -0
  54. package/string-param.cjs +44 -0
  55. package/string-param.cjs.map +6 -0
  56. package/string-param.d.ts.map +1 -0
  57. package/string-param.mjs +25 -0
  58. package/string-param.mjs.map +6 -0
  59. package/cjs/index.js +0 -27
  60. package/cjs/index.js.map +0 -1
  61. package/cjs/package.json +0 -6
  62. package/cjs/ts/boolean-param.js +0 -45
  63. package/cjs/ts/boolean-param.js.map +0 -1
  64. package/cjs/ts/command-params.js +0 -160
  65. package/cjs/ts/command-params.js.map +0 -1
  66. package/cjs/ts/common.js +0 -3
  67. package/cjs/ts/common.js.map +0 -1
  68. package/cjs/ts/date-param.js +0 -38
  69. package/cjs/ts/date-param.js.map +0 -1
  70. package/cjs/ts/file-param.js +0 -43
  71. package/cjs/ts/file-param.js.map +0 -1
  72. package/cjs/ts/help-for-param.js +0 -33
  73. package/cjs/ts/help-for-param.js.map +0 -1
  74. package/cjs/ts/label-for-param.js +0 -18
  75. package/cjs/ts/label-for-param.js.map +0 -1
  76. package/cjs/ts/number-param.js +0 -56
  77. package/cjs/ts/number-param.js.map +0 -1
  78. package/cjs/ts/param-handler.js +0 -28
  79. package/cjs/ts/param-handler.js.map +0 -1
  80. package/cjs/ts/string-param.js +0 -34
  81. package/cjs/ts/string-param.js.map +0 -1
  82. package/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  83. package/esm/index.js +0 -11
  84. package/esm/index.js.map +0 -1
  85. package/esm/package.json +0 -6
  86. package/esm/ts/boolean-param.js +0 -40
  87. package/esm/ts/boolean-param.js.map +0 -1
  88. package/esm/ts/command-params.js +0 -154
  89. package/esm/ts/command-params.js.map +0 -1
  90. package/esm/ts/common.js +0 -2
  91. package/esm/ts/common.js.map +0 -1
  92. package/esm/ts/date-param.js +0 -32
  93. package/esm/ts/date-param.js.map +0 -1
  94. package/esm/ts/file-param.js +0 -37
  95. package/esm/ts/file-param.js.map +0 -1
  96. package/esm/ts/help-for-param.js +0 -29
  97. package/esm/ts/help-for-param.js.map +0 -1
  98. package/esm/ts/label-for-param.js +0 -13
  99. package/esm/ts/label-for-param.js.map +0 -1
  100. package/esm/ts/number-param.js +0 -51
  101. package/esm/ts/number-param.js.map +0 -1
  102. package/esm/ts/param-handler.js +0 -23
  103. package/esm/ts/param-handler.js.map +0 -1
  104. package/esm/ts/string-param.js +0 -28
  105. package/esm/ts/string-param.js.map +0 -1
  106. package/esm/tsconfig.module.tsbuildinfo +0 -1
  107. package/tsdoc-metadata.json +0 -11
  108. package/types/index.d.ts +0 -11
  109. package/types/index.d.ts.map +0 -1
  110. package/types/index.js +0 -27
  111. package/types/index.js.map +0 -1
  112. package/types/ts/boolean-param.d.ts.map +0 -1
  113. package/types/ts/boolean-param.js +0 -44
  114. package/types/ts/boolean-param.js.map +0 -1
  115. package/types/ts/command-params.d.ts.map +0 -1
  116. package/types/ts/command-params.js +0 -158
  117. package/types/ts/command-params.js.map +0 -1
  118. package/types/ts/common.d.ts.map +0 -1
  119. package/types/ts/common.js +0 -3
  120. package/types/ts/common.js.map +0 -1
  121. package/types/ts/date-param.d.ts.map +0 -1
  122. package/types/ts/date-param.js +0 -37
  123. package/types/ts/date-param.js.map +0 -1
  124. package/types/ts/file-param.d.ts.map +0 -1
  125. package/types/ts/file-param.js +0 -42
  126. package/types/ts/file-param.js.map +0 -1
  127. package/types/ts/help-for-param.d.ts.map +0 -1
  128. package/types/ts/help-for-param.js +0 -33
  129. package/types/ts/help-for-param.js.map +0 -1
  130. package/types/ts/label-for-param.d.ts.map +0 -1
  131. package/types/ts/label-for-param.js +0 -17
  132. package/types/ts/label-for-param.js.map +0 -1
  133. package/types/ts/number-param.d.ts.map +0 -1
  134. package/types/ts/number-param.js +0 -56
  135. package/types/ts/number-param.js.map +0 -1
  136. package/types/ts/param-handler.d.ts.map +0 -1
  137. package/types/ts/param-handler.js +0 -27
  138. package/types/ts/param-handler.js.map +0 -1
  139. package/types/ts/string-param.d.ts.map +0 -1
  140. package/types/ts/string-param.js +0 -33
  141. package/types/ts/string-param.js.map +0 -1
  142. package/types/tsconfig.types.tsbuildinfo +0 -1
  143. /package/{types/ts/boolean-param.d.ts → boolean-param.d.ts} +0 -0
  144. /package/{types/ts/command-params.d.ts → command-params.d.ts} +0 -0
  145. /package/{types/ts/common.d.ts → common.d.ts} +0 -0
  146. /package/{types/ts/file-param.d.ts → file-param.d.ts} +0 -0
  147. /package/{types/ts/help-for-param.d.ts → help-for-param.d.ts} +0 -0
  148. /package/{types/ts/label-for-param.d.ts → label-for-param.d.ts} +0 -0
  149. /package/{types/ts/number-param.d.ts → number-param.d.ts} +0 -0
  150. /package/{types/ts/param-handler.d.ts → param-handler.d.ts} +0 -0
  151. /package/{types/ts/string-param.d.ts → string-param.d.ts} +0 -0
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var boolean_param_exports = {};
21
+ __export(boolean_param_exports, {
22
+ FALSES: () => FALSES,
23
+ TRUES: () => TRUES,
24
+ booleanParamHandler: () => booleanParamHandler,
25
+ parseBooleanArg: () => parseBooleanArg
26
+ });
27
+ module.exports = __toCommonJS(boolean_param_exports);
28
+ var import_label_for_param = require("./label-for-param.cjs");
29
+ const TRUES = Object.freeze(["t", "true", "1", "y", "yes"]);
30
+ const FALSES = Object.freeze(["f", "false", "0", "n", "no"]);
31
+ const parseBooleanArg = /* @__PURE__ */ __name((text, param) => {
32
+ const lower = text.toLocaleLowerCase();
33
+ const trueValues = param.trues ?? TRUES;
34
+ if (trueValues.includes(lower)) {
35
+ return true;
36
+ }
37
+ const falseValues = param.falses ?? FALSES;
38
+ if (falseValues.includes(lower)) {
39
+ return false;
40
+ }
41
+ throw new RangeError(`${(0, import_label_for_param.labelForParam)(param)}: invalid value`);
42
+ }, "parseBooleanArg");
43
+ const booleanParamHandler = {
44
+ matchesParam(param) {
45
+ return param.type === Boolean;
46
+ },
47
+ parseArg: parseBooleanArg,
48
+ placeholderForParam() {
49
+ return void 0;
50
+ }
51
+ };
52
+ //# sourceMappingURL=boolean-param.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/boolean-param.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,6BAA8B;AAMvB,MAAM,QAAQ,OAAO,OAAO,CAAE,KAAK,QAAQ,KAAK,KAAK,KAAM,CAAC;AAO5D,MAAM,SAAS,OAAO,OAAO,CAAE,KAAK,SAAS,KAAK,KAAK,IAAK,CAAC;AAqC7D,MAAM,kBAAkB,wBAAC,MAAc,UAAwC;AACrF,QAAM,QAAQ,KAAK,kBAAkB;AACrC,QAAM,aAAa,MAAM,SAAS;AAClC,MAAI,WAAW,SAAS,KAAK,GAAG;AAC/B,WAAO;AAAA,EACR;AACA,QAAM,cAAc,MAAM,UAAU;AACpC,MAAI,YAAY,SAAS,KAAK,GAAG;AAChC,WAAO;AAAA,EACR;AACA,QAAM,IAAI,WAAW,OAAI,sCAAc,KAAK,CAAE,iBAAiB;AAChE,GAX+B;AAgBxB,MAAM,sBAAkE;AAAA,EAC9E,aAAa,OAAwD;AACpE,WAAO,MAAM,SAAS;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,sBAA0C;AACzC,WAAO;AAAA,EACR;AACD;",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean-param.d.ts","sourceRoot":"","sources":["../../../src/packages/clamp/boolean-param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAqB,MAAM,aAAa,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,KAAK,mBAAkD,CAAC;AAGrE;;;GAGG;AACH,eAAO,MAAM,MAAM,mBAAkD,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IAEpD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM,SAAS,mBAAmB,KAAG,OAW1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAQ1E,CAAC"}
@@ -0,0 +1,33 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { labelForParam } from "./label-for-param.mjs";
4
+ const TRUES = Object.freeze(["t", "true", "1", "y", "yes"]);
5
+ const FALSES = Object.freeze(["f", "false", "0", "n", "no"]);
6
+ const parseBooleanArg = /* @__PURE__ */ __name((text, param) => {
7
+ const lower = text.toLocaleLowerCase();
8
+ const trueValues = param.trues ?? TRUES;
9
+ if (trueValues.includes(lower)) {
10
+ return true;
11
+ }
12
+ const falseValues = param.falses ?? FALSES;
13
+ if (falseValues.includes(lower)) {
14
+ return false;
15
+ }
16
+ throw new RangeError(`${labelForParam(param)}: invalid value`);
17
+ }, "parseBooleanArg");
18
+ const booleanParamHandler = {
19
+ matchesParam(param) {
20
+ return param.type === Boolean;
21
+ },
22
+ parseArg: parseBooleanArg,
23
+ placeholderForParam() {
24
+ return void 0;
25
+ }
26
+ };
27
+ export {
28
+ FALSES,
29
+ TRUES,
30
+ booleanParamHandler,
31
+ parseBooleanArg
32
+ };
33
+ //# sourceMappingURL=boolean-param.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/boolean-param.ts"],
4
+ "mappings": ";;AACA,SAAS,qBAAqB;AAMvB,MAAM,QAAQ,OAAO,OAAO,CAAE,KAAK,QAAQ,KAAK,KAAK,KAAM,CAAC;AAO5D,MAAM,SAAS,OAAO,OAAO,CAAE,KAAK,SAAS,KAAK,KAAK,IAAK,CAAC;AAqC7D,MAAM,kBAAkB,wBAAC,MAAc,UAAwC;AACrF,QAAM,QAAQ,KAAK,kBAAkB;AACrC,QAAM,aAAa,MAAM,SAAS;AAClC,MAAI,WAAW,SAAS,KAAK,GAAG;AAC/B,WAAO;AAAA,EACR;AACA,QAAM,cAAc,MAAM,UAAU;AACpC,MAAI,YAAY,SAAS,KAAK,GAAG;AAChC,WAAO;AAAA,EACR;AACA,QAAM,IAAI,WAAW,GAAI,cAAc,KAAK,CAAE,iBAAiB;AAChE,GAX+B;AAgBxB,MAAM,sBAAkE;AAAA,EAC9E,aAAa,OAAwD;AACpE,WAAO,MAAM,SAAS;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,sBAA0C;AACzC,WAAO;AAAA,EACR;AACD;",
5
+ "names": []
6
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var command_params_exports = {};
21
+ __export(command_params_exports, {
22
+ commandParams: () => commandParams
23
+ });
24
+ module.exports = __toCommonJS(command_params_exports);
25
+ var import_guard = require("@rickosborne/guard");
26
+ var import_boolean_param = require("./boolean-param.cjs");
27
+ var import_label_for_param = require("./label-for-param.cjs");
28
+ var import_param_handler = require("./param-handler.cjs");
29
+ const toReturnType = /* @__PURE__ */ __name((text, param) => {
30
+ const paramHandler = (0, import_param_handler.findParamHandler)(param);
31
+ const parser = param.parse ?? paramHandler.parseArg;
32
+ if (parser != null) {
33
+ return parser(text, param);
34
+ }
35
+ throw new Error(`Unhandled param type: ${String(param.type)}`);
36
+ }, "toReturnType");
37
+ const commandParams = /* @__PURE__ */ __name((spec, {
38
+ args = process.argv.slice(2),
39
+ ignoreUnknown,
40
+ onError
41
+ } = {}) => {
42
+ var _a, _b;
43
+ const result = {};
44
+ const positionals = Object.entries(spec).filter(([, s]) => s.positional === true).map(([key, s]) => ({ key, spec: s }));
45
+ if (positionals.length > 1) {
46
+ throw new Error(`Too many positionals: ${positionals.map(({ key }) => key).join(" ")}`);
47
+ }
48
+ const positional = positionals.shift();
49
+ let onlyPositionalsRemain = false;
50
+ try {
51
+ while (args.length > 0) {
52
+ const arg = args.shift();
53
+ let param;
54
+ let resultKey;
55
+ let typedValue;
56
+ if (arg === "--" && !onlyPositionalsRemain) {
57
+ onlyPositionalsRemain = true;
58
+ continue;
59
+ }
60
+ if (onlyPositionalsRemain || !arg.startsWith("-")) {
61
+ if (positional == null) {
62
+ throw new Error(`Unexpected positional: ${JSON.stringify(arg)}`);
63
+ }
64
+ param = positional.spec;
65
+ resultKey = positional.key;
66
+ typedValue = toReturnType(arg, positional.spec);
67
+ } else {
68
+ let no = false;
69
+ let name;
70
+ if (arg.startsWith("--no-")) {
71
+ name = arg.substring(5);
72
+ no = true;
73
+ } else if (arg.startsWith("--")) {
74
+ name = arg.substring(2);
75
+ } else if (arg.startsWith("-no-")) {
76
+ name = arg.substring(4);
77
+ no = true;
78
+ } else {
79
+ name = arg.substring(1);
80
+ }
81
+ let suffix;
82
+ if (name.includes("=")) {
83
+ [name, suffix] = name.split("=", 2);
84
+ }
85
+ const specs = Object.entries(spec).filter(([n, s]) => {
86
+ var _a2;
87
+ return "name" in s && s.name === name || "names" in s && (((_a2 = s.names) == null ? void 0 : _a2.includes(name)) ?? false) || n === name;
88
+ });
89
+ if (specs.length < 1) {
90
+ if (ignoreUnknown) {
91
+ continue;
92
+ }
93
+ throw new Error(`Unexpected arg: ${JSON.stringify(name)}`);
94
+ }
95
+ if (specs.length > 1) {
96
+ throw new Error(`More than one matching spec: ${name}`);
97
+ }
98
+ [resultKey, param] = specs[0];
99
+ (0, import_guard.assertDefined)(param, `param: ${name}`);
100
+ let stringValue;
101
+ if (param.type === Boolean) {
102
+ if (no) {
103
+ if (suffix != null) {
104
+ throw new Error(`Combo of "no" plus "=" does not make any sense for ${(0, import_label_for_param.labelForParam)(param)}`);
105
+ }
106
+ stringValue = param.falseText ?? ((_a = param.falses) == null ? void 0 : _a[0]) ?? import_boolean_param.FALSES[0];
107
+ } else {
108
+ stringValue = suffix ?? param.trueText ?? ((_b = param.trues) == null ? void 0 : _b[0]) ?? import_boolean_param.TRUES[0];
109
+ }
110
+ } else if (no) {
111
+ throw new Error(`"no" does not make sense for ${(0, import_label_for_param.labelForParam)(param)}`);
112
+ } else {
113
+ stringValue = suffix ?? args.shift();
114
+ }
115
+ (0, import_guard.assertDefined)(stringValue, () => `value for ${(0, import_label_for_param.labelForParam)(param)}`);
116
+ typedValue = toReturnType(stringValue, param);
117
+ }
118
+ if (param == null || resultKey == null) {
119
+ if (ignoreUnknown) {
120
+ continue;
121
+ }
122
+ throw new Error(`Unexpected arg: ${JSON.stringify(arg)}`);
123
+ }
124
+ (0, import_guard.assertDefined)(typedValue, `typedValue for ${resultKey}`);
125
+ const existing = result[resultKey];
126
+ if (param.multiple === true) {
127
+ const values = existing ?? [];
128
+ if (!Array.isArray(values)) {
129
+ throw new Error(`Expected an array: ${resultKey}`);
130
+ }
131
+ result[resultKey] ??= values;
132
+ values.push(typedValue);
133
+ } else {
134
+ if (existing != null) {
135
+ throw new Error(`Too many ${(0, import_label_for_param.labelForParam)(param)}: ${JSON.stringify(existing)} ${JSON.stringify(arg)}`);
136
+ }
137
+ result[resultKey] = typedValue;
138
+ }
139
+ }
140
+ const requiredKeys = Object.entries(spec).filter(([, s]) => s.optional !== true).map(([key]) => key);
141
+ const missing = requiredKeys.filter((key) => !(key in result));
142
+ if (missing.length > 0) {
143
+ const message = missing.map((key) => spec[key]).map((p) => p == null ? "" : (0, import_label_for_param.labelForParam)(p)).join(" ");
144
+ throw new Error(`Missing required params: ${message}`);
145
+ }
146
+ } catch (err) {
147
+ const error = err instanceof Error ? err : new Error("Unknown error");
148
+ if (onError != null) {
149
+ onError(error);
150
+ return void 0;
151
+ } else {
152
+ console.error(error.message);
153
+ process.exit(1);
154
+ }
155
+ }
156
+ return result;
157
+ }, "commandParams");
158
+ //# sourceMappingURL=command-params.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/command-params.ts"],
4
+ "mappings": "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",
5
+ "names": ["_a"]
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-params.d.ts","sourceRoot":"","sources":["../../../src/packages/clamp/command-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE/H;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;AAE5G;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,YAAY,EAAE,MAAM,IAAI;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAEtH;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,YAAY,IAAI,KAAK,SAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAC9I,KAAK,CAAC,MAAM,CAAC,SAAS,OAAO,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GACnF,KAAK,CAAC,MAAM,CAAC,SAAS,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAC7E,KAAK,CAAC,MAAM,CAAC,SAAS,OAAO,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GACjF,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAC3E,KAAK,CAAC,MAAM,CAAC,SAAS,OAAO,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GACjF,SAAS,SAAS,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAC7E,KAAK,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,MAAM,IAAI;KACvD,CAAC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAC3F,CAAA;AAWD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,SAAS,iBAAiB,QACrD,IAAI,sCAKP;IACF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,KACC,mBAAmB,CAAC,IAAI,CAgI1B,CAAC"}
@@ -0,0 +1,139 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { assertDefined } from "@rickosborne/guard";
4
+ import { FALSES, TRUES } from "./boolean-param.mjs";
5
+ import { labelForParam } from "./label-for-param.mjs";
6
+ import { findParamHandler } from "./param-handler.mjs";
7
+ const toReturnType = /* @__PURE__ */ __name((text, param) => {
8
+ const paramHandler = findParamHandler(param);
9
+ const parser = param.parse ?? paramHandler.parseArg;
10
+ if (parser != null) {
11
+ return parser(text, param);
12
+ }
13
+ throw new Error(`Unhandled param type: ${String(param.type)}`);
14
+ }, "toReturnType");
15
+ const commandParams = /* @__PURE__ */ __name((spec, {
16
+ args = process.argv.slice(2),
17
+ ignoreUnknown,
18
+ onError
19
+ } = {}) => {
20
+ var _a, _b;
21
+ const result = {};
22
+ const positionals = Object.entries(spec).filter(([, s]) => s.positional === true).map(([key, s]) => ({ key, spec: s }));
23
+ if (positionals.length > 1) {
24
+ throw new Error(`Too many positionals: ${positionals.map(({ key }) => key).join(" ")}`);
25
+ }
26
+ const positional = positionals.shift();
27
+ let onlyPositionalsRemain = false;
28
+ try {
29
+ while (args.length > 0) {
30
+ const arg = args.shift();
31
+ let param;
32
+ let resultKey;
33
+ let typedValue;
34
+ if (arg === "--" && !onlyPositionalsRemain) {
35
+ onlyPositionalsRemain = true;
36
+ continue;
37
+ }
38
+ if (onlyPositionalsRemain || !arg.startsWith("-")) {
39
+ if (positional == null) {
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
+ } else {
46
+ let no = false;
47
+ let name;
48
+ if (arg.startsWith("--no-")) {
49
+ name = arg.substring(5);
50
+ no = true;
51
+ } else if (arg.startsWith("--")) {
52
+ name = arg.substring(2);
53
+ } else if (arg.startsWith("-no-")) {
54
+ name = arg.substring(4);
55
+ no = true;
56
+ } else {
57
+ name = arg.substring(1);
58
+ }
59
+ let suffix;
60
+ if (name.includes("=")) {
61
+ [name, suffix] = name.split("=", 2);
62
+ }
63
+ const specs = Object.entries(spec).filter(([n, s]) => {
64
+ var _a2;
65
+ return "name" in s && s.name === name || "names" in s && (((_a2 = s.names) == null ? void 0 : _a2.includes(name)) ?? false) || n === name;
66
+ });
67
+ if (specs.length < 1) {
68
+ if (ignoreUnknown) {
69
+ continue;
70
+ }
71
+ throw new Error(`Unexpected arg: ${JSON.stringify(name)}`);
72
+ }
73
+ if (specs.length > 1) {
74
+ throw new Error(`More than one matching spec: ${name}`);
75
+ }
76
+ [resultKey, param] = specs[0];
77
+ assertDefined(param, `param: ${name}`);
78
+ let stringValue;
79
+ if (param.type === Boolean) {
80
+ if (no) {
81
+ if (suffix != null) {
82
+ throw new Error(`Combo of "no" plus "=" does not make any sense for ${labelForParam(param)}`);
83
+ }
84
+ stringValue = param.falseText ?? ((_a = param.falses) == null ? void 0 : _a[0]) ?? FALSES[0];
85
+ } else {
86
+ stringValue = suffix ?? param.trueText ?? ((_b = param.trues) == null ? void 0 : _b[0]) ?? TRUES[0];
87
+ }
88
+ } else if (no) {
89
+ throw new Error(`"no" does not make sense for ${labelForParam(param)}`);
90
+ } else {
91
+ stringValue = suffix ?? args.shift();
92
+ }
93
+ assertDefined(stringValue, () => `value for ${labelForParam(param)}`);
94
+ typedValue = toReturnType(stringValue, param);
95
+ }
96
+ if (param == null || resultKey == null) {
97
+ if (ignoreUnknown) {
98
+ continue;
99
+ }
100
+ throw new Error(`Unexpected arg: ${JSON.stringify(arg)}`);
101
+ }
102
+ assertDefined(typedValue, `typedValue for ${resultKey}`);
103
+ const existing = result[resultKey];
104
+ if (param.multiple === true) {
105
+ const values = existing ?? [];
106
+ if (!Array.isArray(values)) {
107
+ throw new Error(`Expected an array: ${resultKey}`);
108
+ }
109
+ result[resultKey] ??= values;
110
+ values.push(typedValue);
111
+ } else {
112
+ if (existing != null) {
113
+ throw new Error(`Too many ${labelForParam(param)}: ${JSON.stringify(existing)} ${JSON.stringify(arg)}`);
114
+ }
115
+ result[resultKey] = typedValue;
116
+ }
117
+ }
118
+ const requiredKeys = Object.entries(spec).filter(([, s]) => s.optional !== true).map(([key]) => key);
119
+ const missing = requiredKeys.filter((key) => !(key in result));
120
+ if (missing.length > 0) {
121
+ const message = missing.map((key) => spec[key]).map((p) => p == null ? "" : labelForParam(p)).join(" ");
122
+ throw new Error(`Missing required params: ${message}`);
123
+ }
124
+ } catch (err) {
125
+ const error = err instanceof Error ? err : new Error("Unknown error");
126
+ if (onError != null) {
127
+ onError(error);
128
+ return void 0;
129
+ } else {
130
+ console.error(error.message);
131
+ process.exit(1);
132
+ }
133
+ }
134
+ return result;
135
+ }, "commandParams");
136
+ export {
137
+ commandParams
138
+ };
139
+ //# sourceMappingURL=command-params.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/command-params.ts"],
4
+ "mappings": ";;AAAA,SAAS,qBAAqB;AAC9B,SAAmC,QAAQ,aAAa;AAIxD,SAAS,qBAAqB;AAE9B,SAAS,wBAAwB;AA0CjC,MAAM,eAAe,wBAAC,MAAc,UAAiC;AACpE,QAAM,eAAe,iBAAiB,KAAK;AAC3C,QAAM,SAAU,MAAM,SAAS,aAAa;AAC5C,MAAI,UAAU,MAAM;AACnB,WAAO,OAAO,MAAM,KAAK;AAAA,EAC1B;AACA,QAAM,IAAI,MAAM,yBAA0B,OAAO,MAAM,IAAI,CAAE,EAAE;AAChE,GAPqB;AAad,MAAM,gBAAgB,wBAC5B,MACA;AAAA,EACC,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,EAC3B;AAAA,EACA;AACD,IAII,CAAC,MAC0B;AAzEhC;AA0EC,QAAM,SAAS,CAAC;AAChB,QAAM,cAAc,OAAO,QAAQ,IAAI,EACrC,OAAO,CAAC,CAAE,EAAE,CAAE,MAAM,EAAE,eAAe,IAAI,EACzC,IAAI,CAAC,CAAE,KAAK,CAAE,OAAO,EAAE,KAAK,MAAM,EAAE,EAAE;AACxC,MAAI,YAAY,SAAS,GAAG;AAC3B,UAAM,IAAI,MAAM,yBAA0B,YAAY,IAAI,CAAC,EAAE,IAAI,MAAM,GAAG,EAAE,KAAK,GAAG,CAAE,EAAE;AAAA,EACzF;AACA,QAAM,aAAa,YAAY,MAAM;AACrC,MAAI,wBAAwB;AAC5B,MAAI;AACH,WAAO,KAAK,SAAS,GAAG;AACvB,YAAM,MAAM,KAAK,MAAM;AACvB,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,QAAQ,QAAQ,CAAC,uBAAuB;AAC3C,gCAAwB;AACxB;AAAA,MACD;AACA,UAAI,yBAAyB,CAAC,IAAI,WAAW,GAAG,GAAG;AAClD,YAAI,cAAc,MAAM;AAEvB,gBAAM,IAAI,MAAM,0BAA2B,KAAK,UAAU,GAAG,CAAE,EAAE;AAAA,QAClE;AACA,gBAAQ,WAAW;AACnB,oBAAY,WAAW;AACvB,qBAAa,aAAa,KAAK,WAAW,IAAI;AAAA,MAC/C,OAAO;AACN,YAAI,KAAK;AACT,YAAI;AACJ,YAAI,IAAI,WAAW,OAAO,GAAG;AAC5B,iBAAO,IAAI,UAAU,CAAC;AACtB,eAAK;AAAA,QACN,WAAW,IAAI,WAAW,IAAI,GAAG;AAChC,iBAAO,IAAI,UAAU,CAAC;AAAA,QACvB,WAAW,IAAI,WAAW,MAAM,GAAG;AAClC,iBAAO,IAAI,UAAU,CAAC;AACtB,eAAK;AAAA,QACN,OAAO;AACN,iBAAO,IAAI,UAAU,CAAC;AAAA,QACvB;AACA,YAAI;AACJ,YAAI,KAAK,SAAS,GAAG,GAAG;AACvB,WAAE,MAAM,MAAO,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,QACrC;AACA,cAAM,QAAQ,OAAO,QAAQ,IAAI,EAC/B,OAAO,CAAC,CAAE,GAAG,CAAE,MAAG;AAxHxB,cAAAA;AAwH2B,2BAAU,KAAK,EAAE,SAAS,QAAS,WAAW,QAAMA,MAAA,EAAE,UAAF,gBAAAA,IAAS,SAAS,UAAS,UAAW,MAAM;AAAA,SAAI;AAC3H,YAAI,MAAM,SAAS,GAAG;AACrB,cAAI,eAAe;AAClB;AAAA,UACD;AAEA,gBAAM,IAAI,MAAM,mBAAoB,KAAK,UAAU,IAAI,CAAE,EAAE;AAAA,QAC5D;AACA,YAAI,MAAM,SAAS,GAAG;AAErB,gBAAM,IAAI,MAAM,gCAAiC,IAAK,EAAE;AAAA,QACzD;AACA,SAAE,WAAW,KAAM,IAAI,MAAO,CAAE;AAChC,sBAAc,OAAO,UAAW,IAAK,EAAE;AACvC,YAAI;AACJ,YAAI,MAAM,SAAS,SAAS;AAC3B,cAAI,IAAI;AACP,gBAAI,UAAU,MAAM;AAEnB,oBAAM,IAAI,MAAM,sDAAuD,cAAc,KAAK,CAAE,EAAE;AAAA,YAC/F;AACA,0BAAc,MAAM,eAAa,WAAM,WAAN,mBAAgB,OAAO,OAAQ,CAAE;AAAA,UACnE,OAAO;AACN,0BAAc,UAAU,MAAM,cAAY,WAAM,UAAN,mBAAe,OAAO,MAAO,CAAE;AAAA,UAC1E;AAAA,QACD,WAAW,IAAI;AAEd,gBAAM,IAAI,MAAM,gCAAiC,cAAc,KAAK,CAAE,EAAE;AAAA,QACzE,OAAO;AACN,wBAAc,UAAU,KAAK,MAAM;AAAA,QACpC;AACA,sBAAc,aAAa,MAAM,aAAc,cAAc,KAAM,CAAE,EAAE;AACvE,qBAAa,aAAa,aAAa,KAAK;AAAA,MAC7C;AACA,UAAI,SAAS,QAAQ,aAAa,MAAM;AACvC,YAAI,eAAe;AAClB;AAAA,QACD;AAEA,cAAM,IAAI,MAAM,mBAAoB,KAAK,UAAU,GAAG,CAAE,EAAE;AAAA,MAC3D;AACA,oBAAc,YAAY,kBAAmB,SAAU,EAAE;AACzD,YAAM,WAAW,OAAQ,SAAU;AACnC,UAAI,MAAM,aAAa,MAAM;AAC5B,cAAM,SAAS,YAAY,CAAC;AAC5B,YAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAE3B,gBAAM,IAAI,MAAM,sBAAuB,SAAU,EAAE;AAAA,QACpD;AACA,eAAQ,SAAU,MAAM;AACxB,eAAO,KAAK,UAAU;AAAA,MACvB,OAAO;AACN,YAAI,YAAY,MAAM;AAErB,gBAAM,IAAI,MAAM,YAAa,cAAc,KAAK,CAAE,KAAM,KAAK,UAAU,QAAQ,CAAE,IAAK,KAAK,UAAU,GAAG,CAAE,EAAE;AAAA,QAC7G;AACA,eAAQ,SAAU,IAAI;AAAA,MACvB;AAAA,IACD;AACA,UAAM,eAAe,OAAO,QAAQ,IAAI,EACtC,OAAO,CAAC,CAAE,EAAE,CAAE,MAAM,EAAE,aAAa,IAAI,EACvC,IAAI,CAAC,CAAE,GAAI,MAAM,GAAG;AACtB,UAAM,UAAU,aAAa,OAAO,CAAC,QAAQ,EAAE,OAAO,OAAO;AAC7D,QAAI,QAAQ,SAAS,GAAG;AACvB,YAAM,UAAU,QACd,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,EACtB,IAAI,CAAC,MAAM,KAAK,OAAO,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG;AAExD,YAAM,IAAI,MAAM,4BAA6B,OAAQ,EAAE;AAAA,IACxD;AAAA,EACD,SAAS,KAAc;AACtB,UAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,eAAe;AACpE,QAAI,WAAW,MAAM;AACpB,cAAQ,KAAK;AACb,aAAO;AAAA,IACR,OAAO;AACN,cAAQ,MAAM,MAAM,OAAO;AAC3B,cAAQ,KAAK,CAAC;AAAA,IACf;AAAA,EACD;AACA,SAAO;AACR,GA3I6B;",
5
+ "names": ["_a"]
6
+ }
package/common.cjs ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var common_exports = {};
16
+ module.exports = __toCommonJS(common_exports);
17
+ //# sourceMappingURL=common.cjs.map
package/common.cjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/common.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/packages/clamp/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,KAAK,aAAa,GAAG;IACpB,QAAQ,EAAE,IAAI,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,aAAa,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAE7E;;GAEG;AACH,KAAK,aAAa,GAAG;IACpB,QAAQ,EAAE,IAAI,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,aAAa,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAEjE,KAAK,qBAAqB,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;AAExJ;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAGtE;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,IAAI;IAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,GAAG,KAAK,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9D,CAAA"}
package/common.mjs ADDED
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=common.mjs.map
package/common.mjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
package/date-param.cjs ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var date_param_exports = {};
21
+ __export(date_param_exports, {
22
+ dateParamHandler: () => dateParamHandler,
23
+ isDateParam: () => isDateParam,
24
+ parseDateArg: () => parseDateArg
25
+ });
26
+ module.exports = __toCommonJS(date_param_exports);
27
+ var import_foundation = require("@rickosborne/foundation");
28
+ var import_label_for_param = require("./label-for-param.cjs");
29
+ const parseDateArg = /* @__PURE__ */ __name((text, param) => {
30
+ const date = (0, import_foundation.parseLocalDate)(text, param);
31
+ if (param.minimum != null && date < param.minimum) {
32
+ throw new RangeError(`${(0, import_label_for_param.labelForParam)(param)}: minimum=${param.minimum.toISOString()}`);
33
+ }
34
+ if (param.maximum != null && date > param.maximum) {
35
+ throw new RangeError(`${(0, import_label_for_param.labelForParam)(param)}: maximum=${param.maximum.toISOString()}`);
36
+ }
37
+ return date;
38
+ }, "parseDateArg");
39
+ const isDateParam = /* @__PURE__ */ __name((param) => {
40
+ return param.type === Date;
41
+ }, "isDateParam");
42
+ const dateParamHandler = {
43
+ matchesParam: isDateParam,
44
+ parseArg: parseDateArg,
45
+ placeholderForParam(param) {
46
+ return param.placeholder ?? param.time ? "(datetime)" : "(date)";
47
+ }
48
+ };
49
+ //# sourceMappingURL=date-param.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/date-param.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAA+B;AAE/B,6BAA8B;AAyBvB,MAAM,eAAe,wBAAC,MAAc,UAAkC;AAC5E,QAAM,WAAO,kCAAe,MAAM,KAAK;AACvC,MAAI,MAAM,WAAW,QAAQ,OAAO,MAAM,SAAS;AAClD,UAAM,IAAI,WAAW,OAAI,sCAAc,KAAK,CAAE,aAAc,MAAM,QAAQ,YAAY,CAAE,EAAE;AAAA,EAC3F;AACA,MAAI,MAAM,WAAW,QAAQ,OAAO,MAAM,SAAS;AAClD,UAAM,IAAI,WAAW,OAAI,sCAAc,KAAK,CAAE,aAAc,MAAM,QAAQ,YAAY,CAAE,EAAE;AAAA,EAC3F;AACA,SAAO;AACR,GAT4B;AAcrB,MAAM,cAAc,wBAAC,UAAwD;AACnF,SAAO,MAAM,SAAS;AACvB,GAF2B;AAOpB,MAAM,mBAAyD;AAAA,EACrE,cAAc;AAAA,EACd,UAAU;AAAA,EACV,oBAAoB,OAA6C;AAChE,WAAO,MAAM,eAAe,MAAM,OAAO,eAAe;AAAA,EACzD;AACD;",
5
+ "names": []
6
+ }
@@ -1,4 +1,4 @@
1
- import { type ParseLocalDateConfig } from "@rickosborne/foundation";
1
+ import type { ParseLocalDateConfig } from "@rickosborne/foundation";
2
2
  import type { CommandParamBase, ParamHandler, TypedCommandParam } from "./common.js";
3
3
  /**
4
4
  * Command-line parameter which can accept a date (and optionally time) value.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-param.d.ts","sourceRoot":"","sources":["../../../src/packages/clamp/date-param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG;IACxE;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpE,IAAI,EAAE,OAAO,IAAI,CAAC;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,SAAS,gBAAgB,KAAG,IASpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,UAAW,iBAAiB,KAAG,KAAK,IAAI,gBAE/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAMjE,CAAC"}
package/date-param.mjs ADDED
@@ -0,0 +1,30 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { parseLocalDate } from "@rickosborne/foundation";
4
+ import { labelForParam } from "./label-for-param.mjs";
5
+ const parseDateArg = /* @__PURE__ */ __name((text, param) => {
6
+ const date = parseLocalDate(text, param);
7
+ if (param.minimum != null && date < param.minimum) {
8
+ throw new RangeError(`${labelForParam(param)}: minimum=${param.minimum.toISOString()}`);
9
+ }
10
+ if (param.maximum != null && date > param.maximum) {
11
+ throw new RangeError(`${labelForParam(param)}: maximum=${param.maximum.toISOString()}`);
12
+ }
13
+ return date;
14
+ }, "parseDateArg");
15
+ const isDateParam = /* @__PURE__ */ __name((param) => {
16
+ return param.type === Date;
17
+ }, "isDateParam");
18
+ const dateParamHandler = {
19
+ matchesParam: isDateParam,
20
+ parseArg: parseDateArg,
21
+ placeholderForParam(param) {
22
+ return param.placeholder ?? param.time ? "(datetime)" : "(date)";
23
+ }
24
+ };
25
+ export {
26
+ dateParamHandler,
27
+ isDateParam,
28
+ parseDateArg
29
+ };
30
+ //# sourceMappingURL=date-param.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/clamp/date-param.ts"],
4
+ "mappings": ";;AACA,SAAS,sBAAsB;AAE/B,SAAS,qBAAqB;AAyBvB,MAAM,eAAe,wBAAC,MAAc,UAAkC;AAC5E,QAAM,OAAO,eAAe,MAAM,KAAK;AACvC,MAAI,MAAM,WAAW,QAAQ,OAAO,MAAM,SAAS;AAClD,UAAM,IAAI,WAAW,GAAI,cAAc,KAAK,CAAE,aAAc,MAAM,QAAQ,YAAY,CAAE,EAAE;AAAA,EAC3F;AACA,MAAI,MAAM,WAAW,QAAQ,OAAO,MAAM,SAAS;AAClD,UAAM,IAAI,WAAW,GAAI,cAAc,KAAK,CAAE,aAAc,MAAM,QAAQ,YAAY,CAAE,EAAE;AAAA,EAC3F;AACA,SAAO;AACR,GAT4B;AAcrB,MAAM,cAAc,wBAAC,UAAwD;AACnF,SAAO,MAAM,SAAS;AACvB,GAF2B;AAOpB,MAAM,mBAAyD;AAAA,EACrE,cAAc;AAAA,EACd,UAAU;AAAA,EACV,oBAAoB,OAA6C;AAChE,WAAO,MAAM,eAAe,MAAM,OAAO,eAAe;AAAA,EACzD;AACD;",
5
+ "names": []
6
+ }
package/file-param.cjs ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var file_param_exports = {};
31
+ __export(file_param_exports, {
32
+ fileParamHandler: () => fileParamHandler,
33
+ isFileParam: () => isFileParam,
34
+ parseFileArg: () => parseFileArg
35
+ });
36
+ module.exports = __toCommonJS(file_param_exports);
37
+ var import_term = require("@rickosborne/term");
38
+ var path = __toESM(require("node:path"));
39
+ const parseFileArg = /* @__PURE__ */ __name((text, param) => {
40
+ let filePath = text;
41
+ if (param.path != null && !filePath.startsWith(param.path)) {
42
+ filePath = path.join(param.path, filePath);
43
+ }
44
+ const stats = (0, import_term.statsForFile)(filePath);
45
+ const exists = stats != null;
46
+ if (param.existing !== void 0) {
47
+ if (exists !== param.existing) {
48
+ throw new Error(`File ${exists ? "exists" : "does not exist"}: ${filePath}`);
49
+ }
50
+ }
51
+ return { filePath, stats };
52
+ }, "parseFileArg");
53
+ const isFileParam = /* @__PURE__ */ __name((param) => {
54
+ return param.type === "file";
55
+ }, "isFileParam");
56
+ const fileParamHandler = {
57
+ matchesParam: isFileParam,
58
+ parseArg: parseFileArg,
59
+ placeholderForParam(param) {
60
+ return param.placeholder ?? "(path)";
61
+ }
62
+ };
63
+ //# sourceMappingURL=file-param.cjs.map