@wentools/zli 0.2.0-beta.2dc33a43

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/esm/_dnt.shims.d.ts +6 -0
  4. package/esm/_dnt.shims.d.ts.map +1 -0
  5. package/esm/_dnt.shims.js +61 -0
  6. package/esm/arg.d.ts +9 -0
  7. package/esm/arg.d.ts.map +1 -0
  8. package/esm/arg.js +4 -0
  9. package/esm/create_command.d.ts +28 -0
  10. package/esm/create_command.d.ts.map +1 -0
  11. package/esm/create_command.js +17 -0
  12. package/esm/create_command_directory.d.ts +35 -0
  13. package/esm/create_command_directory.d.ts.map +1 -0
  14. package/esm/create_command_directory.js +31 -0
  15. package/esm/create_flag_arg.d.ts +23 -0
  16. package/esm/create_flag_arg.d.ts.map +1 -0
  17. package/esm/create_flag_arg.js +14 -0
  18. package/esm/create_positional_arg.d.ts +24 -0
  19. package/esm/create_positional_arg.d.ts.map +1 -0
  20. package/esm/create_positional_arg.js +15 -0
  21. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/err.d.ts +38 -0
  22. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/err.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/err.js +38 -0
  24. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/index.d.ts +2 -0
  25. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/index.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/err/index.js +1 -0
  27. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/index.d.ts +156 -0
  28. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/index.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/index.js +65 -0
  30. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.d.ts +2 -0
  31. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.js +1 -0
  33. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.d.ts +11 -0
  34. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.js +14 -0
  36. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.d.ts +2 -0
  37. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.d.ts.map +1 -0
  38. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.js +1 -0
  39. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.d.ts +28 -0
  40. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.d.ts.map +1 -0
  41. package/esm/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.js +30 -0
  42. package/esm/detect_arg_conflicts/detect_arg_conflicts.d.ts +19 -0
  43. package/esm/detect_arg_conflicts/detect_arg_conflicts.d.ts.map +1 -0
  44. package/esm/detect_arg_conflicts/detect_arg_conflicts.js +54 -0
  45. package/esm/detect_arg_conflicts/mod.d.ts +3 -0
  46. package/esm/detect_arg_conflicts/mod.d.ts.map +1 -0
  47. package/esm/detect_arg_conflicts/mod.js +1 -0
  48. package/esm/generate_help_text/generate_help_text.d.ts +13 -0
  49. package/esm/generate_help_text/generate_help_text.d.ts.map +1 -0
  50. package/esm/generate_help_text/generate_help_text.js +54 -0
  51. package/esm/generate_help_text/mod.d.ts +2 -0
  52. package/esm/generate_help_text/mod.d.ts.map +1 -0
  53. package/esm/generate_help_text/mod.js +1 -0
  54. package/esm/infer_args_type.d.ts +29 -0
  55. package/esm/infer_args_type.d.ts.map +1 -0
  56. package/esm/infer_args_type.js +6 -0
  57. package/esm/is_boolean_schema/is_boolean_schema.d.ts +12 -0
  58. package/esm/is_boolean_schema/is_boolean_schema.d.ts.map +1 -0
  59. package/esm/is_boolean_schema/is_boolean_schema.js +21 -0
  60. package/esm/is_boolean_schema/mod.d.ts +2 -0
  61. package/esm/is_boolean_schema/mod.d.ts.map +1 -0
  62. package/esm/is_boolean_schema/mod.js +1 -0
  63. package/esm/mod.d.ts +8 -0
  64. package/esm/mod.d.ts.map +1 -0
  65. package/esm/mod.js +1 -0
  66. package/esm/package.json +3 -0
  67. package/esm/parse_args/mod.d.ts +3 -0
  68. package/esm/parse_args/mod.d.ts.map +1 -0
  69. package/esm/parse_args/mod.js +1 -0
  70. package/esm/parse_args/parse_args.d.ts +24 -0
  71. package/esm/parse_args/parse_args.d.ts.map +1 -0
  72. package/esm/parse_args/parse_args.js +89 -0
  73. package/esm/run.d.ts +19 -0
  74. package/esm/run.d.ts.map +1 -0
  75. package/esm/run.js +152 -0
  76. package/esm/validate_args/mod.d.ts +3 -0
  77. package/esm/validate_args/mod.d.ts.map +1 -0
  78. package/esm/validate_args/mod.js +1 -0
  79. package/esm/validate_args/validate_args.d.ts +20 -0
  80. package/esm/validate_args/validate_args.d.ts.map +1 -0
  81. package/esm/validate_args/validate_args.js +23 -0
  82. package/esm/zli.d.ts +118 -0
  83. package/esm/zli.d.ts.map +1 -0
  84. package/esm/zli.js +124 -0
  85. package/package.json +39 -0
  86. package/script/_dnt.shims.d.ts +6 -0
  87. package/script/_dnt.shims.d.ts.map +1 -0
  88. package/script/_dnt.shims.js +65 -0
  89. package/script/arg.d.ts +9 -0
  90. package/script/arg.d.ts.map +1 -0
  91. package/script/arg.js +5 -0
  92. package/script/create_command.d.ts +28 -0
  93. package/script/create_command.d.ts.map +1 -0
  94. package/script/create_command.js +20 -0
  95. package/script/create_command_directory.d.ts +35 -0
  96. package/script/create_command_directory.d.ts.map +1 -0
  97. package/script/create_command_directory.js +34 -0
  98. package/script/create_flag_arg.d.ts +23 -0
  99. package/script/create_flag_arg.d.ts.map +1 -0
  100. package/script/create_flag_arg.js +17 -0
  101. package/script/create_positional_arg.d.ts +24 -0
  102. package/script/create_positional_arg.d.ts.map +1 -0
  103. package/script/create_positional_arg.js +18 -0
  104. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/err.d.ts +38 -0
  105. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/err.d.ts.map +1 -0
  106. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/err.js +41 -0
  107. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/index.d.ts +2 -0
  108. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/index.d.ts.map +1 -0
  109. package/script/deps/jsr.io/@wentools/result/0.1.0/src/err/index.js +5 -0
  110. package/script/deps/jsr.io/@wentools/result/0.1.0/src/index.d.ts +156 -0
  111. package/script/deps/jsr.io/@wentools/result/0.1.0/src/index.d.ts.map +1 -0
  112. package/script/deps/jsr.io/@wentools/result/0.1.0/src/index.js +77 -0
  113. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.d.ts +2 -0
  114. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.d.ts.map +1 -0
  115. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.js +5 -0
  116. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.d.ts +11 -0
  117. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.d.ts.map +1 -0
  118. package/script/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.js +17 -0
  119. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.d.ts +2 -0
  120. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.d.ts.map +1 -0
  121. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.js +5 -0
  122. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.d.ts +28 -0
  123. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.d.ts.map +1 -0
  124. package/script/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.js +33 -0
  125. package/script/detect_arg_conflicts/detect_arg_conflicts.d.ts +19 -0
  126. package/script/detect_arg_conflicts/detect_arg_conflicts.d.ts.map +1 -0
  127. package/script/detect_arg_conflicts/detect_arg_conflicts.js +57 -0
  128. package/script/detect_arg_conflicts/mod.d.ts +3 -0
  129. package/script/detect_arg_conflicts/mod.d.ts.map +1 -0
  130. package/script/detect_arg_conflicts/mod.js +5 -0
  131. package/script/generate_help_text/generate_help_text.d.ts +13 -0
  132. package/script/generate_help_text/generate_help_text.d.ts.map +1 -0
  133. package/script/generate_help_text/generate_help_text.js +57 -0
  134. package/script/generate_help_text/mod.d.ts +2 -0
  135. package/script/generate_help_text/mod.d.ts.map +1 -0
  136. package/script/generate_help_text/mod.js +5 -0
  137. package/script/infer_args_type.d.ts +29 -0
  138. package/script/infer_args_type.d.ts.map +1 -0
  139. package/script/infer_args_type.js +7 -0
  140. package/script/is_boolean_schema/is_boolean_schema.d.ts +12 -0
  141. package/script/is_boolean_schema/is_boolean_schema.d.ts.map +1 -0
  142. package/script/is_boolean_schema/is_boolean_schema.js +24 -0
  143. package/script/is_boolean_schema/mod.d.ts +2 -0
  144. package/script/is_boolean_schema/mod.d.ts.map +1 -0
  145. package/script/is_boolean_schema/mod.js +5 -0
  146. package/script/mod.d.ts +8 -0
  147. package/script/mod.d.ts.map +1 -0
  148. package/script/mod.js +5 -0
  149. package/script/package.json +3 -0
  150. package/script/parse_args/mod.d.ts +3 -0
  151. package/script/parse_args/mod.d.ts.map +1 -0
  152. package/script/parse_args/mod.js +5 -0
  153. package/script/parse_args/parse_args.d.ts +24 -0
  154. package/script/parse_args/parse_args.d.ts.map +1 -0
  155. package/script/parse_args/parse_args.js +92 -0
  156. package/script/run.d.ts +19 -0
  157. package/script/run.d.ts.map +1 -0
  158. package/script/run.js +189 -0
  159. package/script/validate_args/mod.d.ts +3 -0
  160. package/script/validate_args/mod.d.ts.map +1 -0
  161. package/script/validate_args/mod.js +5 -0
  162. package/script/validate_args/validate_args.d.ts +20 -0
  163. package/script/validate_args/validate_args.d.ts.map +1 -0
  164. package/script/validate_args/validate_args.js +26 -0
  165. package/script/zli.d.ts +118 -0
  166. package/script/zli.d.ts.map +1 -0
  167. package/script/zli.js +127 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@wentools/result/0.1.0/src/is_result/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResult = void 0;
4
+ var is_result_js_1 = require("./is_result.js");
5
+ Object.defineProperty(exports, "isResult", { enumerable: true, get: function () { return is_result_js_1.isResult; } });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Check if a value is a neverthrow Result type
3
+ *
4
+ * Uses duck typing to detect Result objects without importing neverthrow types.
5
+ */
6
+ declare const isResult: (value: unknown) => value is {
7
+ isOk: () => boolean;
8
+ isErr: () => boolean;
9
+ };
10
+ export { isResult };
11
+ //# sourceMappingURL=is_result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is_result.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@wentools/result/0.1.0/src/is_result/is_result.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAA,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAA;CAStF,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Check if a value is a neverthrow Result type
4
+ *
5
+ * Uses duck typing to detect Result objects without importing neverthrow types.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.isResult = void 0;
9
+ const isResult = (value) => {
10
+ return (value !== null &&
11
+ typeof value === 'object' &&
12
+ 'isOk' in value &&
13
+ 'isErr' in value &&
14
+ typeof value.isOk === 'function' &&
15
+ typeof value.isErr === 'function');
16
+ };
17
+ exports.isResult = isResult;
@@ -0,0 +1,2 @@
1
+ export { propagateErr } from './propagate_err.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propagateErr = void 0;
4
+ var propagate_err_js_1 = require("./propagate_err.js");
5
+ Object.defineProperty(exports, "propagateErr", { enumerable: true, get: function () { return propagate_err_js_1.propagateErr; } });
@@ -0,0 +1,28 @@
1
+ import type { Result } from 'neverthrow';
2
+ /**
3
+ * Propagates an error Result to a different success type context.
4
+ *
5
+ * This is safe because error Results never contain the success value - only the error.
6
+ * TypeScript's structural typing prevents direct assignment of Result<T, E> to Result<U, E>
7
+ * even though the error type is identical and we're in the error branch.
8
+ *
9
+ * Common use case: Early return from a function that creates multiple items. If creating
10
+ * item 2 fails with Result<Item, DatabaseError>, we need to return Result<Item[], DatabaseError>.
11
+ *
12
+ * @example
13
+ * const result = await createUser(db, data) // Result<User, DatabaseError>
14
+ * if (result.isErr()) {
15
+ * // Need to return Result<Profile, DatabaseError> but have Result<User, DatabaseError>
16
+ * return propagateErr(result)
17
+ * }
18
+ *
19
+ * @example
20
+ * // In bulk creation, propagate single-item error to array context
21
+ * const itemResult = await createItem(data) // Result<Item, Error>
22
+ * if (itemResult.isErr()) {
23
+ * return propagateErr<Item[], Error>(itemResult) // Result<Item[], Error>
24
+ * }
25
+ */
26
+ declare const propagateErr: <TNew, E>(errorResult: Result<unknown, E>) => Result<TNew, E>;
27
+ export { propagateErr };
28
+ //# sourceMappingURL=propagate_err.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propagate_err.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@wentools/result/0.1.0/src/propagate_err/propagate_err.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,EAAE,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAI9E,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propagateErr = void 0;
4
+ /**
5
+ * Propagates an error Result to a different success type context.
6
+ *
7
+ * This is safe because error Results never contain the success value - only the error.
8
+ * TypeScript's structural typing prevents direct assignment of Result<T, E> to Result<U, E>
9
+ * even though the error type is identical and we're in the error branch.
10
+ *
11
+ * Common use case: Early return from a function that creates multiple items. If creating
12
+ * item 2 fails with Result<Item, DatabaseError>, we need to return Result<Item[], DatabaseError>.
13
+ *
14
+ * @example
15
+ * const result = await createUser(db, data) // Result<User, DatabaseError>
16
+ * if (result.isErr()) {
17
+ * // Need to return Result<Profile, DatabaseError> but have Result<User, DatabaseError>
18
+ * return propagateErr(result)
19
+ * }
20
+ *
21
+ * @example
22
+ * // In bulk creation, propagate single-item error to array context
23
+ * const itemResult = await createItem(data) // Result<Item, Error>
24
+ * if (itemResult.isErr()) {
25
+ * return propagateErr<Item[], Error>(itemResult) // Result<Item[], Error>
26
+ * }
27
+ */
28
+ const propagateErr = (errorResult) => {
29
+ // Type assertion is safe: we're only propagating errors, and error Results
30
+ // don't contain the success value. The error type E is preserved exactly.
31
+ return errorResult;
32
+ };
33
+ exports.propagateErr = propagateErr;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Detect conflicts in argument definitions
3
+ *
4
+ * Checks for:
5
+ * - Duplicate arg names
6
+ * - Duplicate short names
7
+ *
8
+ * Returns list of conflicts found.
9
+ */
10
+ import type { Arg } from '../arg.js';
11
+ type ArgConflict = {
12
+ type: 'duplicate_name' | 'duplicate_short';
13
+ name: string;
14
+ conflictingArgs: string[];
15
+ };
16
+ declare const detectArgConflicts: (args: readonly Arg[]) => ArgConflict[];
17
+ export { detectArgConflicts };
18
+ export type { ArgConflict };
19
+ //# sourceMappingURL=detect_arg_conflicts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect_arg_conflicts.d.ts","sourceRoot":"","sources":["../../src/detect_arg_conflicts/detect_arg_conflicts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC,KAAK,WAAW,GAAG;IAClB,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,QAAA,MAAM,kBAAkB,GAAI,MAAM,SAAS,GAAG,EAAE,KAAG,WAAW,EA8C7D,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Detect conflicts in argument definitions
4
+ *
5
+ * Checks for:
6
+ * - Duplicate arg names
7
+ * - Duplicate short names
8
+ *
9
+ * Returns list of conflicts found.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.detectArgConflicts = void 0;
13
+ const detectArgConflicts = (args) => {
14
+ const conflicts = [];
15
+ const namesSeen = new Map();
16
+ const shortsSeen = new Map();
17
+ for (const arg of args) {
18
+ // Check for duplicate names
19
+ if (namesSeen.has(arg.name)) {
20
+ namesSeen.get(arg.name).push(arg.name);
21
+ }
22
+ else {
23
+ namesSeen.set(arg.name, [arg.name]);
24
+ }
25
+ // Check for duplicate shorts
26
+ if (arg.short) {
27
+ if (shortsSeen.has(arg.short)) {
28
+ shortsSeen.get(arg.short).push(arg.name);
29
+ }
30
+ else {
31
+ shortsSeen.set(arg.short, [arg.name]);
32
+ }
33
+ }
34
+ }
35
+ // Report duplicate names
36
+ for (const [name, argNames] of namesSeen) {
37
+ if (argNames.length > 1) {
38
+ conflicts.push({
39
+ type: 'duplicate_name',
40
+ name,
41
+ conflictingArgs: argNames,
42
+ });
43
+ }
44
+ }
45
+ // Report duplicate shorts
46
+ for (const [short, argNames] of shortsSeen) {
47
+ if (argNames.length > 1) {
48
+ conflicts.push({
49
+ type: 'duplicate_short',
50
+ name: short,
51
+ conflictingArgs: argNames,
52
+ });
53
+ }
54
+ }
55
+ return conflicts;
56
+ };
57
+ exports.detectArgConflicts = detectArgConflicts;
@@ -0,0 +1,3 @@
1
+ export { detectArgConflicts } from './detect_arg_conflicts.js';
2
+ export type { ArgConflict } from './detect_arg_conflicts.js';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/detect_arg_conflicts/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectArgConflicts = void 0;
4
+ var detect_arg_conflicts_js_1 = require("./detect_arg_conflicts.js");
5
+ Object.defineProperty(exports, "detectArgConflicts", { enumerable: true, get: function () { return detect_arg_conflicts_js_1.detectArgConflicts; } });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generate help text for commands
3
+ *
4
+ * Creates formatted help text showing:
5
+ * - Description
6
+ * - Usage line
7
+ * - Positional args
8
+ * - Flags
9
+ */
10
+ import type { Command } from '../create_command.js';
11
+ declare const generateHelpText: (command: Command, commandName?: string) => string;
12
+ export { generateHelpText };
13
+ //# sourceMappingURL=generate_help_text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_help_text.d.ts","sourceRoot":"","sources":["../../src/generate_help_text/generate_help_text.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,cAAc,MAAM,KAAG,MAoDlE,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Generate help text for commands
4
+ *
5
+ * Creates formatted help text showing:
6
+ * - Description
7
+ * - Usage line
8
+ * - Positional args
9
+ * - Flags
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateHelpText = void 0;
13
+ const generateHelpText = (command, commandName) => {
14
+ const lines = [];
15
+ // Description
16
+ if (command.description) {
17
+ lines.push(command.description);
18
+ lines.push('');
19
+ }
20
+ // Usage line
21
+ const usageParts = [];
22
+ if (commandName) {
23
+ usageParts.push(commandName);
24
+ }
25
+ const positionals = command.args.filter((arg) => arg.type === 'positional');
26
+ const flags = command.args.filter((arg) => arg.type === 'flag');
27
+ for (const arg of positionals) {
28
+ usageParts.push(`<${arg.name}>`);
29
+ }
30
+ if (flags.length > 0) {
31
+ usageParts.push('[options]');
32
+ }
33
+ lines.push(`Usage: ${usageParts.join(' ')}`);
34
+ lines.push('');
35
+ // Positional arguments
36
+ if (positionals.length > 0) {
37
+ lines.push('Arguments:');
38
+ for (const arg of positionals) {
39
+ const shortPart = arg.short ? `, -${arg.short}` : '';
40
+ const descPart = arg.description ? ` ${arg.description}` : '';
41
+ lines.push(` ${arg.name}${shortPart}${descPart}`);
42
+ }
43
+ lines.push('');
44
+ }
45
+ // Flags
46
+ if (flags.length > 0) {
47
+ lines.push('Options:');
48
+ for (const arg of flags) {
49
+ const shortPart = arg.short ? `-${arg.short}, ` : '';
50
+ const descPart = arg.description ? ` ${arg.description}` : '';
51
+ lines.push(` ${shortPart}--${arg.name}${descPart}`);
52
+ }
53
+ lines.push('');
54
+ }
55
+ return lines.join('\n');
56
+ };
57
+ exports.generateHelpText = generateHelpText;
@@ -0,0 +1,2 @@
1
+ export { generateHelpText } from './generate_help_text.js';
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/generate_help_text/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateHelpText = void 0;
4
+ var generate_help_text_js_1 = require("./generate_help_text.js");
5
+ Object.defineProperty(exports, "generateHelpText", { enumerable: true, get: function () { return generate_help_text_js_1.generateHelpText; } });
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Type utilities for inferring handler arg types from Zod schemas
3
+ *
4
+ * Extracts the TypeScript type from an array of arg definitions.
5
+ */
6
+ import type { z } from 'zod';
7
+ import type { Arg } from './arg.js';
8
+ /**
9
+ * Infer the handler args object type from an array of arg definitions
10
+ *
11
+ * Takes an array like:
12
+ * [
13
+ * { name: 'email', schema: z.string().email() },
14
+ * { name: 'verbose', schema: z.boolean().optional() }
15
+ * ]
16
+ *
17
+ * And produces:
18
+ * { email: string, verbose?: boolean }
19
+ */
20
+ type InferArgsType<TArgs extends readonly Arg[]> = TArgs extends readonly [
21
+ infer First,
22
+ ...infer Rest
23
+ ] ? First extends Arg ? Rest extends readonly Arg[] ? {
24
+ [K in First['name']]: z.infer<First['schema']>;
25
+ } & InferArgsType<Rest> : {
26
+ [K in First['name']]: z.infer<First['schema']>;
27
+ } : never : Record<string, never>;
28
+ export type { InferArgsType };
29
+ //# sourceMappingURL=infer_args_type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer_args_type.d.ts","sourceRoot":"","sources":["../src/infer_args_type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC;;;;;;;;;;;GAWG;AACH,KAAK,aAAa,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,IAAI,KAAK,SAAS,SAAS;IACzE,MAAM,KAAK;IACX,GAAG,MAAM,IAAI;CACb,GACE,KAAK,SAAS,GAAG,GAChB,IAAI,SAAS,SAAS,GAAG,EAAE,GAC1B;KAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GACxE;KAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CAAE,GACnD,KAAK,GACN,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAExB,YAAY,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Type utilities for inferring handler arg types from Zod schemas
4
+ *
5
+ * Extracts the TypeScript type from an array of arg definitions.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Check if a Zod schema is a boolean type
3
+ *
4
+ * Uses internal Zod _def API, isolated here for easy testing and maintenance.
5
+ * If Zod changes their internal structure, we only need to update this function.
6
+ *
7
+ * Handles wrapped schemas (default, optional, nullable) by recursively unwrapping.
8
+ */
9
+ import type { ZodSchema } from 'zod';
10
+ declare const isBooleanSchema: (schema: ZodSchema) => boolean;
11
+ export { isBooleanSchema };
12
+ //# sourceMappingURL=is_boolean_schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is_boolean_schema.d.ts","sourceRoot":"","sources":["../../src/is_boolean_schema/is_boolean_schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC,QAAA,MAAM,eAAe,GAAI,QAAQ,SAAS,KAAG,OAa5C,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Check if a Zod schema is a boolean type
4
+ *
5
+ * Uses internal Zod _def API, isolated here for easy testing and maintenance.
6
+ * If Zod changes their internal structure, we only need to update this function.
7
+ *
8
+ * Handles wrapped schemas (default, optional, nullable) by recursively unwrapping.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.isBooleanSchema = void 0;
12
+ const isBooleanSchema = (schema) => {
13
+ // Direct boolean check
14
+ if ('type' in schema._def && schema._def.type === 'boolean') {
15
+ return true;
16
+ }
17
+ // Unwrap wrappers (ZodDefault, ZodOptional, ZodNullable)
18
+ // These store the inner schema in _def.innerType
19
+ if ('innerType' in schema._def) {
20
+ return isBooleanSchema(schema._def.innerType);
21
+ }
22
+ return false;
23
+ };
24
+ exports.isBooleanSchema = isBooleanSchema;
@@ -0,0 +1,2 @@
1
+ export { isBooleanSchema } from './is_boolean_schema.js';
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/is_boolean_schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBooleanSchema = void 0;
4
+ var is_boolean_schema_js_1 = require("./is_boolean_schema.js");
5
+ Object.defineProperty(exports, "isBooleanSchema", { enumerable: true, get: function () { return is_boolean_schema_js_1.isBooleanSchema; } });
@@ -0,0 +1,8 @@
1
+ export { zli } from './zli.js';
2
+ export type { CommandDirectory, CommandEntry } from './run.js';
3
+ export type { Command, CommandHandler, CommandOptions, MaybeResult } from './create_command.js';
4
+ export type { PositionalArg, PositionalArgOptions } from './create_positional_arg.js';
5
+ export type { FlagArg, FlagArgOptions } from './create_flag_arg.js';
6
+ export type { Arg } from './arg.js';
7
+ export type { InferArgsType } from './infer_args_type.js';
8
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC9D,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC/F,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACrF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACnE,YAAY,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA"}
package/script/mod.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zli = void 0;
4
+ var zli_js_1 = require("./zli.js");
5
+ Object.defineProperty(exports, "zli", { enumerable: true, get: function () { return zli_js_1.zli; } });
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ export { parseArgs } from './parse_args.js';
2
+ export type { RawValues } from './parse_args.js';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/parse_args/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseArgs = void 0;
4
+ var parse_args_js_1 = require("./parse_args.js");
5
+ Object.defineProperty(exports, "parseArgs", { enumerable: true, get: function () { return parse_args_js_1.parseArgs; } });
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Parse command-line arguments
3
+ *
4
+ * Takes process.argv and arg definitions, returns parsed raw values (pre-validation).
5
+ *
6
+ * Parsing rules:
7
+ * 1. Positional args fill by position (left to right)
8
+ * 2. Named flags (--name or -short) can fill any arg
9
+ * 3. Explicit (named) overrides implicit (positional)
10
+ *
11
+ * @example
12
+ * const args = [
13
+ * createPositionalArg('email', z.string(), { short: 'e' }),
14
+ * createFlagArg('verbose', z.boolean(), { short: 'v' })
15
+ * ]
16
+ * const rawValues = parseArgs(process.argv.slice(2), args)
17
+ * // rawValues = { email: 'user@example.com', verbose: true }
18
+ */
19
+ import type { Arg } from '../arg.js';
20
+ type RawValues = Record<string, unknown>;
21
+ declare const parseArgs: (argv: string[], args: readonly Arg[]) => RawValues;
22
+ export { parseArgs };
23
+ export type { RawValues };
24
+ //# sourceMappingURL=parse_args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../../src/parse_args/parse_args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGpC,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAExC,QAAA,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,EAAE,MAAM,SAAS,GAAG,EAAE,KAAG,SA4EzD,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,YAAY,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Parse command-line arguments
4
+ *
5
+ * Takes process.argv and arg definitions, returns parsed raw values (pre-validation).
6
+ *
7
+ * Parsing rules:
8
+ * 1. Positional args fill by position (left to right)
9
+ * 2. Named flags (--name or -short) can fill any arg
10
+ * 3. Explicit (named) overrides implicit (positional)
11
+ *
12
+ * @example
13
+ * const args = [
14
+ * createPositionalArg('email', z.string(), { short: 'e' }),
15
+ * createFlagArg('verbose', z.boolean(), { short: 'v' })
16
+ * ]
17
+ * const rawValues = parseArgs(process.argv.slice(2), args)
18
+ * // rawValues = { email: 'user@example.com', verbose: true }
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.parseArgs = void 0;
22
+ const mod_js_1 = require("../is_boolean_schema/mod.js");
23
+ const parseArgs = (argv, args) => {
24
+ const rawValues = {};
25
+ const positionalArgs = args.filter((arg) => arg.type === 'positional');
26
+ const allArgs = args;
27
+ // Build lookup maps for quick access
28
+ const argByLongName = new Map();
29
+ const argByShortName = new Map();
30
+ for (const arg of allArgs) {
31
+ argByLongName.set(arg.name, arg);
32
+ if (arg.short) {
33
+ argByShortName.set(arg.short, arg);
34
+ }
35
+ }
36
+ let positionalIndex = 0;
37
+ for (let i = 0; i < argv.length; i++) {
38
+ const current = argv[i];
39
+ if (current === undefined)
40
+ continue;
41
+ // Long flag: --name or --name=value
42
+ if (current.startsWith('--')) {
43
+ const [flagName, ...valueParts] = current.slice(2).split('=');
44
+ if (flagName === undefined)
45
+ continue;
46
+ const arg = argByLongName.get(flagName);
47
+ if (!arg) {
48
+ // Unknown flag - skip for now (could error later)
49
+ continue;
50
+ }
51
+ if ((0, mod_js_1.isBooleanSchema)(arg.schema)) {
52
+ rawValues[arg.name] = true;
53
+ }
54
+ else if (valueParts.length > 0) {
55
+ // --name=value format
56
+ rawValues[arg.name] = valueParts.join('=');
57
+ }
58
+ else {
59
+ // --name value format
60
+ i++;
61
+ rawValues[arg.name] = argv[i];
62
+ }
63
+ continue;
64
+ }
65
+ // Short flag: -v or -v value
66
+ if (current.startsWith('-') && current.length > 1) {
67
+ const shortName = current.slice(1);
68
+ const arg = argByShortName.get(shortName);
69
+ if (!arg) {
70
+ // Unknown flag - skip for now
71
+ continue;
72
+ }
73
+ if ((0, mod_js_1.isBooleanSchema)(arg.schema)) {
74
+ rawValues[arg.name] = true;
75
+ }
76
+ else {
77
+ // -n value format
78
+ i++;
79
+ rawValues[arg.name] = argv[i];
80
+ }
81
+ continue;
82
+ }
83
+ // Positional value
84
+ const positionalArg = positionalArgs[positionalIndex];
85
+ if (positionalArg !== undefined) {
86
+ rawValues[positionalArg.name] = current;
87
+ positionalIndex++;
88
+ }
89
+ }
90
+ return rawValues;
91
+ };
92
+ exports.parseArgs = parseArgs;
@@ -0,0 +1,19 @@
1
+ import type { Command } from './create_command.js';
2
+ type CommandEntry = Command | CommandDirectory;
3
+ type CommandDirectory = {
4
+ name: string;
5
+ description?: string;
6
+ commands: Record<string, CommandEntry>;
7
+ };
8
+ type CliInput = Command | CommandDirectory;
9
+ /**
10
+ * Create a run function with explicit argv (for testing)
11
+ */
12
+ declare const createRun: (argv: string[]) => (input: CliInput) => Promise<void>;
13
+ /**
14
+ * Run a CLI command using Deno.args
15
+ */
16
+ declare const run: (input: CliInput) => Promise<void>;
17
+ export { run, createRun };
18
+ export type { CommandDirectory, CommandEntry, CliInput };
19
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,KAAK,YAAY,GAAG,OAAO,GAAG,gBAAgB,CAAA;AAG9C,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACtC,CAAA;AAED,KAAK,QAAQ,GAAG,OAAO,GAAG,gBAAgB,CAAA;AAO1C;;GAEG;AACH,QAAA,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,aACE,QAAQ,KAAG,OAAO,CAAC,IAAI,CA+IzD,CAAA;AAED;;GAEG;AACH,QAAA,MAAM,GAAG,GAAU,OAAO,QAAQ,KAAG,OAAO,CAAC,IAAI,CAGhD,CAAA;AAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;AACzB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAA"}