@jpillora/take 0.8.6 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +4 -3
  2. package/take.d.mts +40 -0
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@jpillora/take",
3
- "version": "0.8.6",
3
+ "version": "0.9.0",
4
4
  "description": "A minimal CLI library for building TypeScript-based command-line tools",
5
5
  "type": "module",
6
6
  "main": "./take.mjs",
7
- "exports": "./take.mjs",
8
- "files": ["take.mjs"],
7
+ "types": "./take.d.mts",
8
+ "exports": { "import": "./take.mjs", "types": "./take.d.mts" },
9
+ "files": ["take.mjs", "take.d.mts"],
9
10
  "license": "MIT",
10
11
  "repository": {
11
12
  "type": "git",
package/take.d.mts ADDED
@@ -0,0 +1,40 @@
1
+ import { SpawnOptions as nodeSpawnOptions } from "node:child_process";
2
+ export type Flag = {
3
+ initial: number | string | boolean | Date;
4
+ description: string;
5
+ env?: string;
6
+ };
7
+ type Flags = Record<string, Flag>;
8
+ export type FlagValues<T extends Flags> = {
9
+ [P in keyof T]: T[P]["initial"] extends number ? number : T[P]["initial"] extends string ? string : T[P]["initial"] extends boolean ? boolean : T[P]["initial"] extends Date ? Date : never;
10
+ };
11
+ export type TakeCommand<F extends Flags = Flags> = {
12
+ name: string;
13
+ names?: string[];
14
+ description: string;
15
+ help?: string;
16
+ flags: F;
17
+ run: (input: CommandInput<F>) => void | Promise<void>;
18
+ };
19
+ export declare function newFlags<F extends Flags>(flags: F): F;
20
+ export type NewCommand<F extends Flags = Flags> = TakeCommand<F> & {
21
+ flagValues: FlagValues<F>;
22
+ input: CommandInput<F>;
23
+ };
24
+ export type CommandInput<F extends Flags> = {
25
+ flags: FlagValues<F>;
26
+ args: string[];
27
+ cmd: (...args: string[]) => Promise<void>;
28
+ cmdName: string;
29
+ help: (msg?: string) => void;
30
+ };
31
+ export declare function help(str: string): void;
32
+ export type SpawnOptions = {
33
+ program: string;
34
+ args?: string[];
35
+ } & nodeSpawnOptions;
36
+ export declare function spawn(options: SpawnOptions): Promise<number>;
37
+ export declare const timer: () => () => string;
38
+ export declare function Register(...commands: NewCommand<any>[]): Promise<void>;
39
+ export declare function Command<F extends Flags>(command: TakeCommand<F>): NewCommand<F>;
40
+ export {};