@detergent-software/atk 8.8.1-dev.3 → 8.8.1-dev.4
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/CHANGELOG.md +6 -0
- package/build/cli.js +1 -1
- package/build/cli.js.map +1 -1
- package/build/commands/_app.d.ts +1 -1
- package/build/commands/_app.d.ts.map +1 -1
- package/build/commands/_app.js.map +1 -1
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +1 -1
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +1 -1
- package/build/commands/browse.js.map +1 -1
- package/build/commands/cache.d.ts +1 -1
- package/build/commands/cache.d.ts.map +1 -1
- package/build/commands/cache.js +1 -1
- package/build/commands/cache.js.map +1 -1
- package/build/commands/checkout.d.ts.map +1 -1
- package/build/commands/checkout.js +1 -1
- package/build/commands/checkout.js.map +1 -1
- package/build/commands/config.d.ts.map +1 -1
- package/build/commands/config.js +1 -1
- package/build/commands/config.js.map +1 -1
- package/build/commands/deprecate.d.ts.map +1 -1
- package/build/commands/deprecate.js +1 -1
- package/build/commands/deprecate.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +1 -1
- package/build/commands/diff.js.map +1 -1
- package/build/commands/doctor.d.ts.map +1 -1
- package/build/commands/doctor.js +1 -1
- package/build/commands/doctor.js.map +1 -1
- package/build/commands/drift.d.ts.map +1 -1
- package/build/commands/drift.js +1 -1
- package/build/commands/drift.js.map +1 -1
- package/build/commands/freeze.d.ts.map +1 -1
- package/build/commands/freeze.js +1 -1
- package/build/commands/freeze.js.map +1 -1
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +1 -1
- package/build/commands/info.js.map +1 -1
- package/build/commands/init.d.ts.map +1 -1
- package/build/commands/init.js +1 -1
- package/build/commands/init.js.map +1 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +1 -1
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +1 -1
- package/build/commands/list.js.map +1 -1
- package/build/commands/login.d.ts.map +1 -1
- package/build/commands/login.js +1 -1
- package/build/commands/login.js.map +1 -1
- package/build/commands/logout.d.ts.map +1 -1
- package/build/commands/logout.js +1 -1
- package/build/commands/logout.js.map +1 -1
- package/build/commands/move.d.ts.map +1 -1
- package/build/commands/move.js +1 -1
- package/build/commands/move.js.map +1 -1
- package/build/commands/outdated.d.ts.map +1 -1
- package/build/commands/outdated.js +1 -1
- package/build/commands/outdated.js.map +1 -1
- package/build/commands/pin.d.ts.map +1 -1
- package/build/commands/pin.js +1 -1
- package/build/commands/pin.js.map +1 -1
- package/build/commands/promote.d.ts.map +1 -1
- package/build/commands/promote.js +1 -1
- package/build/commands/promote.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +1 -1
- package/build/commands/prune.js.map +1 -1
- package/build/commands/publish.d.ts.map +1 -1
- package/build/commands/publish.js +1 -1
- package/build/commands/publish.js.map +1 -1
- package/build/commands/register.d.ts.map +1 -1
- package/build/commands/register.js +1 -1
- package/build/commands/register.js.map +1 -1
- package/build/commands/release-notes.d.ts.map +1 -1
- package/build/commands/release-notes.js +1 -1
- package/build/commands/release-notes.js.map +1 -1
- package/build/commands/reviewer.d.ts.map +1 -1
- package/build/commands/reviewer.js +1 -1
- package/build/commands/reviewer.js.map +1 -1
- package/build/commands/schema.d.ts.map +1 -1
- package/build/commands/schema.js +1 -1
- package/build/commands/schema.js.map +1 -1
- package/build/commands/search.d.ts.map +1 -1
- package/build/commands/search.js +1 -1
- package/build/commands/search.js.map +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +1 -1
- package/build/commands/setup.js.map +1 -1
- package/build/commands/sync.d.ts.map +1 -1
- package/build/commands/sync.js +1 -1
- package/build/commands/sync.js.map +1 -1
- package/build/commands/thaw.d.ts.map +1 -1
- package/build/commands/thaw.js +1 -1
- package/build/commands/thaw.js.map +1 -1
- package/build/commands/uninstall.d.ts.map +1 -1
- package/build/commands/uninstall.js +1 -1
- package/build/commands/uninstall.js.map +1 -1
- package/build/commands/unpin.d.ts.map +1 -1
- package/build/commands/unpin.js +1 -1
- package/build/commands/unpin.js.map +1 -1
- package/build/commands/unpublish.d.ts.map +1 -1
- package/build/commands/unpublish.js +1 -1
- package/build/commands/unpublish.js.map +1 -1
- package/build/commands/update.d.ts.map +1 -1
- package/build/commands/update.js +1 -1
- package/build/commands/update.js.map +1 -1
- package/build/commands/whoami.d.ts.map +1 -1
- package/build/commands/whoami.js +1 -1
- package/build/commands/whoami.js.map +1 -1
- package/build/commands/why.d.ts.map +1 -1
- package/build/commands/why.js +1 -1
- package/build/commands/why.js.map +1 -1
- package/build/lib/atk-schemas/index.d.ts +1 -0
- package/build/lib/atk-schemas/index.d.ts.map +1 -1
- package/build/lib/atk-schemas/index.js +1 -0
- package/build/lib/atk-schemas/index.js.map +1 -1
- package/build/lib/atk-schemas/tools.d.ts +7 -0
- package/build/lib/atk-schemas/tools.d.ts.map +1 -0
- package/build/lib/atk-schemas/tools.js +8 -0
- package/build/lib/atk-schemas/tools.js.map +1 -0
- package/build/lib/pastel/_app.d.ts +3 -0
- package/build/lib/pastel/_app.d.ts.map +1 -0
- package/build/lib/pastel/_app.js +5 -0
- package/build/lib/pastel/_app.js.map +1 -0
- package/build/lib/pastel/generate-arguments.d.ts +4 -0
- package/build/lib/pastel/generate-arguments.d.ts.map +1 -0
- package/build/lib/pastel/generate-arguments.js +111 -0
- package/build/lib/pastel/generate-arguments.js.map +1 -0
- package/build/lib/pastel/generate-command.d.ts +9 -0
- package/build/lib/pastel/generate-command.d.ts.map +1 -0
- package/build/lib/pastel/generate-command.js +85 -0
- package/build/lib/pastel/generate-command.js.map +1 -0
- package/build/lib/pastel/generate-commands.d.ts +9 -0
- package/build/lib/pastel/generate-commands.d.ts.map +1 -0
- package/build/lib/pastel/generate-commands.js +23 -0
- package/build/lib/pastel/generate-commands.js.map +1 -0
- package/build/lib/pastel/generate-options.d.ts +4 -0
- package/build/lib/pastel/generate-options.d.ts.map +1 -0
- package/build/lib/pastel/generate-options.js +100 -0
- package/build/lib/pastel/generate-options.js.map +1 -0
- package/build/lib/pastel/index.d.ts +41 -0
- package/build/lib/pastel/index.d.ts.map +1 -0
- package/build/lib/pastel/index.js +59 -0
- package/build/lib/pastel/index.js.map +1 -0
- package/build/lib/pastel/internal-types.d.ts +34 -0
- package/build/lib/pastel/internal-types.d.ts.map +1 -0
- package/build/lib/pastel/internal-types.js +2 -0
- package/build/lib/pastel/internal-types.js.map +1 -0
- package/build/lib/pastel/read-commands.d.ts +4 -0
- package/build/lib/pastel/read-commands.d.ts.map +1 -0
- package/build/lib/pastel/read-commands.js +59 -0
- package/build/lib/pastel/read-commands.js.map +1 -0
- package/build/lib/pastel/read-custom-app.d.ts +4 -0
- package/build/lib/pastel/read-custom-app.d.ts.map +1 -0
- package/build/lib/pastel/read-custom-app.js +29 -0
- package/build/lib/pastel/read-custom-app.js.map +1 -0
- package/build/lib/pastel/types.d.ts +70 -0
- package/build/lib/pastel/types.d.ts.map +1 -0
- package/build/lib/pastel/types.js +2 -0
- package/build/lib/pastel/types.js.map +1 -0
- package/build/lib/schemas/index.d.ts +1 -1
- package/build/lib/schemas/index.d.ts.map +1 -1
- package/build/lib/schemas/index.js +1 -1
- package/build/lib/schemas/index.js.map +1 -1
- package/package.json +10 -3
- package/src/lib/pastel/LICENSE +9 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
2
|
+
import decamelize from 'decamelize';
|
|
3
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
4
|
+
import plur from 'plur';
|
|
5
|
+
import { ZodArray, ZodBoolean, ZodDefault, ZodEnum, ZodNumber, ZodOptional, ZodSet } from 'zod';
|
|
6
|
+
import {} from './internal-types.js';
|
|
7
|
+
import {} from './types.js';
|
|
8
|
+
const getConfig = (value) => {
|
|
9
|
+
return value?.startsWith('__pastel_option_config__')
|
|
10
|
+
? JSON.parse(value.replace('__pastel_option_config__', ''))
|
|
11
|
+
: undefined;
|
|
12
|
+
};
|
|
13
|
+
const getDescription = (value) => {
|
|
14
|
+
return getConfig(value)?.description ?? value;
|
|
15
|
+
};
|
|
16
|
+
const getDefaultValueDescription = (value) => {
|
|
17
|
+
return getConfig(value)?.defaultValueDescription;
|
|
18
|
+
};
|
|
19
|
+
const getValueDescription = (value) => {
|
|
20
|
+
return getConfig(value)?.valueDescription;
|
|
21
|
+
};
|
|
22
|
+
const getAlias = (value) => {
|
|
23
|
+
return getConfig(value)?.alias;
|
|
24
|
+
};
|
|
25
|
+
export default function generateOptions(optionsSchema) {
|
|
26
|
+
let isOptionalByDefault = false;
|
|
27
|
+
if (optionsSchema instanceof ZodOptional) {
|
|
28
|
+
isOptionalByDefault = true;
|
|
29
|
+
optionsSchema = optionsSchema._zod.def.innerType;
|
|
30
|
+
}
|
|
31
|
+
const options = [];
|
|
32
|
+
for (let [name, optionSchema] of Object.entries(optionsSchema._zod.def.shape)) {
|
|
33
|
+
name = decamelize(name, { separator: '-' });
|
|
34
|
+
let defaultValue;
|
|
35
|
+
let isOptional = isOptionalByDefault;
|
|
36
|
+
// Collect description before unwrapping (for .default().describe() pattern)
|
|
37
|
+
let schemaDescription = optionSchema.description;
|
|
38
|
+
// Unwrap zod.string().optional()
|
|
39
|
+
if (optionSchema instanceof ZodOptional) {
|
|
40
|
+
isOptional = true;
|
|
41
|
+
optionSchema = optionSchema._zod.def.innerType;
|
|
42
|
+
}
|
|
43
|
+
// Unwrap zod.string().optional().default()
|
|
44
|
+
if (optionSchema instanceof ZodDefault) {
|
|
45
|
+
isOptional = true;
|
|
46
|
+
defaultValue = optionSchema._zod.def.defaultValue;
|
|
47
|
+
optionSchema = optionSchema._zod.def.innerType;
|
|
48
|
+
}
|
|
49
|
+
// Unwrap zod.string().default().optional()
|
|
50
|
+
if (optionSchema instanceof ZodOptional) {
|
|
51
|
+
isOptional = true;
|
|
52
|
+
optionSchema = optionSchema._zod.def.innerType;
|
|
53
|
+
}
|
|
54
|
+
// Use description from inner schema if not found on outer (for .describe().default() pattern)
|
|
55
|
+
schemaDescription ||= optionSchema.description;
|
|
56
|
+
let defaultValueDescription = getDefaultValueDescription(schemaDescription);
|
|
57
|
+
const description = getDescription(schemaDescription);
|
|
58
|
+
let valueDescription = getValueDescription(schemaDescription);
|
|
59
|
+
const alias = getAlias(schemaDescription);
|
|
60
|
+
let flag = `--${name}`;
|
|
61
|
+
if (optionSchema instanceof ZodBoolean && defaultValue === true) {
|
|
62
|
+
flag = `--no-${name}`;
|
|
63
|
+
}
|
|
64
|
+
else if (alias) {
|
|
65
|
+
flag = `-${alias}, --${name}`;
|
|
66
|
+
}
|
|
67
|
+
const expectsValue = !(optionSchema instanceof ZodBoolean);
|
|
68
|
+
if (expectsValue) {
|
|
69
|
+
const isVariadic = optionSchema instanceof ZodArray || optionSchema instanceof ZodSet;
|
|
70
|
+
valueDescription ||= isVariadic ? plur(name) : name;
|
|
71
|
+
const rest = isVariadic ? '...' : '';
|
|
72
|
+
flag += isOptional || defaultValue ? ` [${valueDescription}${rest}]` : ` <${valueDescription}${rest}>`;
|
|
73
|
+
}
|
|
74
|
+
const option = new Option(flag, description);
|
|
75
|
+
if (optionSchema instanceof ZodNumber) {
|
|
76
|
+
option.argParser((value) => Number.parseFloat(value));
|
|
77
|
+
}
|
|
78
|
+
if (optionSchema instanceof ZodEnum) {
|
|
79
|
+
option.choices(Object.values(optionSchema._zod.def.entries).map(String));
|
|
80
|
+
}
|
|
81
|
+
if (optionSchema instanceof ZodBoolean && defaultValue === undefined) {
|
|
82
|
+
defaultValue = false;
|
|
83
|
+
}
|
|
84
|
+
if (optionSchema instanceof ZodSet) {
|
|
85
|
+
option.argParser((value, previousValue) => {
|
|
86
|
+
const joinPreviousValue = previousValue instanceof Set && !isDeepStrictEqual(previousValue, defaultValue);
|
|
87
|
+
return joinPreviousValue ? new Set([...previousValue, value]) : new Set([value]);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (defaultValue !== undefined) {
|
|
91
|
+
if (!defaultValueDescription && defaultValue instanceof Set) {
|
|
92
|
+
defaultValueDescription = JSON.stringify([...defaultValue]);
|
|
93
|
+
}
|
|
94
|
+
option.default(defaultValue, defaultValueDescription);
|
|
95
|
+
}
|
|
96
|
+
options.push(option);
|
|
97
|
+
}
|
|
98
|
+
return options;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=generate-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-options.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CommandArgumentConfig, CommandOptionConfig } from './types.js';
|
|
2
|
+
export type Options = {
|
|
3
|
+
/**
|
|
4
|
+
* Description. Defaults to `description` in the nearest package.json.
|
|
5
|
+
*/
|
|
6
|
+
description?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Text to display before all help output.
|
|
9
|
+
*/
|
|
10
|
+
helpHeader?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Pass in [`import.meta`](https://nodejs.org/dist/latest/docs/api/esm.html#esm_import_meta). This is used to find the `commands` directory.
|
|
13
|
+
*/
|
|
14
|
+
importMeta: ImportMeta;
|
|
15
|
+
/**
|
|
16
|
+
* Program name. Defaults to `name` in the nearest package.json or the name of the executable.
|
|
17
|
+
*/
|
|
18
|
+
name?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Version. Defaults to `version` in the nearest package.json.
|
|
21
|
+
*/
|
|
22
|
+
version?: string;
|
|
23
|
+
};
|
|
24
|
+
export default class Pastel {
|
|
25
|
+
private readonly options;
|
|
26
|
+
constructor(options: Options);
|
|
27
|
+
/**
|
|
28
|
+
* Run the app.
|
|
29
|
+
*/
|
|
30
|
+
run(argv?: string[]): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set additional metadata for an argument. Must be used as an argument to `describe` function from Zod.
|
|
34
|
+
*/
|
|
35
|
+
export declare function argument(config: CommandArgumentConfig): string;
|
|
36
|
+
/**
|
|
37
|
+
* Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
|
|
38
|
+
*/
|
|
39
|
+
export declare function option(config: CommandOptionConfig): string;
|
|
40
|
+
export * from './types.js';
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQ7E,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACG,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB;CAwCxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,UAErD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,mBAAmB,UAEjD;AAED,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { readPackageUp } from 'read-package-up';
|
|
5
|
+
import App from './_app.js';
|
|
6
|
+
import generateCommand from './generate-command.js';
|
|
7
|
+
import generateCommands from './generate-commands.js';
|
|
8
|
+
import readCommands from './read-commands.js';
|
|
9
|
+
import readCustomApp from './read-custom-app.js';
|
|
10
|
+
export default class Pastel {
|
|
11
|
+
options;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Run the app.
|
|
17
|
+
*/
|
|
18
|
+
async run(argv = process.argv) {
|
|
19
|
+
const commandsDirectory = fileURLToPath(new URL('commands', this.options.importMeta.url));
|
|
20
|
+
const appComponent = (await readCustomApp(commandsDirectory)) ?? App;
|
|
21
|
+
const program = new Command();
|
|
22
|
+
const commands = await readCommands(commandsDirectory);
|
|
23
|
+
const indexCommand = commands.get('index');
|
|
24
|
+
if (indexCommand) {
|
|
25
|
+
generateCommand(program, indexCommand, { appComponent });
|
|
26
|
+
commands.delete('index');
|
|
27
|
+
}
|
|
28
|
+
generateCommands(program, commands, { appComponent });
|
|
29
|
+
if (this.options.name) {
|
|
30
|
+
program.name(this.options.name);
|
|
31
|
+
}
|
|
32
|
+
const package_ = await readPackageUp();
|
|
33
|
+
const version = this.options.version ?? package_?.packageJson.version;
|
|
34
|
+
if (version) {
|
|
35
|
+
program.version(version, '-v, --version', 'Show version number');
|
|
36
|
+
}
|
|
37
|
+
const description = indexCommand?.description ?? this.options.description ?? package_?.packageJson.description ?? '';
|
|
38
|
+
program.description(description);
|
|
39
|
+
program.helpOption('-h, --help', 'Show help');
|
|
40
|
+
if (this.options.helpHeader) {
|
|
41
|
+
program.addHelpText('beforeAll', this.options.helpHeader);
|
|
42
|
+
}
|
|
43
|
+
program.parse(argv);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Set additional metadata for an argument. Must be used as an argument to `describe` function from Zod.
|
|
48
|
+
*/
|
|
49
|
+
export function argument(config) {
|
|
50
|
+
return `__pastel_argument_config__${JSON.stringify(config)}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
|
|
54
|
+
*/
|
|
55
|
+
export function option(config) {
|
|
56
|
+
return `__pastel_option_config__${JSON.stringify(config)}`;
|
|
57
|
+
}
|
|
58
|
+
export * from './types.js';
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,aAAa,MAAM,sBAAsB,CAAC;AA6BjD,MAAM,CAAC,OAAO,OAAO,MAAM;IACR,OAAO,CAAU;IAElC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI;QACrC,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1F,MAAM,YAAY,GAAG,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,YAAY,EAAE,CAAC;YACjB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACzD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC;QAEtE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,WAAW,GACf,YAAY,EAAE,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;QAEnG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA6B;IACpD,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAA2B;IAChD,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { ZodArray, ZodBoolean, ZodDefault, ZodEnum, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTuple, ZodTypeAny } from 'zod';
|
|
3
|
+
import { type AppProps } from './types.js';
|
|
4
|
+
export type Command = {
|
|
5
|
+
alias?: string;
|
|
6
|
+
args?: CommandArguments;
|
|
7
|
+
commands?: Map<string, Command>;
|
|
8
|
+
component?: ComponentType<AppProps['commandProps']>;
|
|
9
|
+
description?: string;
|
|
10
|
+
isDefault: boolean;
|
|
11
|
+
name: string;
|
|
12
|
+
options?: CommandOptions;
|
|
13
|
+
parentCommand?: Command;
|
|
14
|
+
};
|
|
15
|
+
export type CommandArgument = ZodEnum<Record<string, number | string>> | ZodNumber | ZodString;
|
|
16
|
+
export type CommandArguments = ZodMaybeOptionalOrDefault<CommandArgumentsArray | CommandArgumentsTuple>;
|
|
17
|
+
export type CommandArgumentsArray = ZodArray<ZodEnum<Record<string, number | string>>> | ZodArray<ZodNumber> | ZodArray<ZodString>;
|
|
18
|
+
export type CommandArgumentsTuple = ZodTuple<[
|
|
19
|
+
ZodMaybeOptionalOrDefault<CommandArgument>,
|
|
20
|
+
...Array<ZodMaybeOptionalOrDefault<CommandArgument>>
|
|
21
|
+
], CommandArgument | null>;
|
|
22
|
+
export type CommandExports = {
|
|
23
|
+
alias?: string;
|
|
24
|
+
args?: CommandArguments;
|
|
25
|
+
default?: ComponentType<AppProps['commandProps']>;
|
|
26
|
+
description?: string;
|
|
27
|
+
isDefault?: boolean;
|
|
28
|
+
options?: CommandOptions;
|
|
29
|
+
};
|
|
30
|
+
export type CommandOption = ZodMaybeOptionalOrDefault<ZodArray<ZodEnum<Record<string, number | string>>>> | ZodMaybeOptionalOrDefault<ZodArray<ZodNumber>> | ZodMaybeOptionalOrDefault<ZodArray<ZodString>> | ZodMaybeOptionalOrDefault<ZodBoolean> | ZodMaybeOptionalOrDefault<ZodEnum<Record<string, number | string>>> | ZodMaybeOptionalOrDefault<ZodNumber> | ZodMaybeOptionalOrDefault<ZodSet<ZodEnum<Record<string, number | string>>>> | ZodMaybeOptionalOrDefault<ZodSet<ZodNumber>> | ZodMaybeOptionalOrDefault<ZodSet<ZodString>> | ZodMaybeOptionalOrDefault<ZodString>;
|
|
31
|
+
export type CommandOptions = ZodMaybeOptional<ZodObject<Record<string, CommandOption>>>;
|
|
32
|
+
export type ZodMaybeOptional<T extends ZodTypeAny> = T | ZodOptional<T>;
|
|
33
|
+
export type ZodMaybeOptionalOrDefault<T extends ZodTypeAny> = T | ZodDefault<T> | ZodDefault<ZodOptional<T>> | ZodOptional<T> | ZodOptional<ZodDefault<T>>;
|
|
34
|
+
//# sourceMappingURL=internal-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/internal-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,KAAK,CAAC;AAEb,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/F,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,CAAC;AAExG,MAAM,MAAM,qBAAqB,GAC/B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAEjG,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C;IAAC,yBAAyB,CAAC,eAAe,CAAC;IAAE,GAAG,KAAK,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;CAAC,EAClG,eAAe,GAAG,IAAI,CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAC7E,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9C,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9C,yBAAyB,CAAC,UAAU,CAAC,GACrC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GACnE,yBAAyB,CAAC,SAAS,CAAC,GACpC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAC3E,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAC5C,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAC5C,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAExF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,UAAU,IACxD,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../../src/lib/pastel/internal-types.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAEnE,QAAA,MAAM,YAAY,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAsD3E,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import decamelize from 'decamelize';
|
|
10
|
+
import fs from 'node:fs/promises';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { pathToFileURL } from 'node:url';
|
|
13
|
+
const readCommands = async (directory) => {
|
|
14
|
+
const commands = new Map();
|
|
15
|
+
const files = await fs.readdir(directory);
|
|
16
|
+
for (const file of files) {
|
|
17
|
+
if (file.startsWith('_app')) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const filePath = path.join(directory, file);
|
|
21
|
+
const stat = await fs.stat(filePath);
|
|
22
|
+
if (stat.isDirectory()) {
|
|
23
|
+
const subCommands = await readCommands(filePath);
|
|
24
|
+
const indexCommand = subCommands.get('index');
|
|
25
|
+
if (indexCommand) {
|
|
26
|
+
indexCommand.name = file;
|
|
27
|
+
indexCommand.commands = subCommands;
|
|
28
|
+
subCommands.delete('index');
|
|
29
|
+
commands.set(file, indexCommand);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const command = indexCommand ?? {
|
|
33
|
+
commands: subCommands,
|
|
34
|
+
isDefault: false,
|
|
35
|
+
name: file,
|
|
36
|
+
};
|
|
37
|
+
commands.set(file, command);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (!/\.(js|ts)x?$/.test(file) || file.endsWith('.d.ts')) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const fileUrl = pathToFileURL(filePath);
|
|
44
|
+
const m = (await import(__rewriteRelativeImportExtension(fileUrl.href)));
|
|
45
|
+
const name = decamelize(file.replace(/\.(js|ts)x?$/, ''), { separator: '-' });
|
|
46
|
+
commands.set(name, {
|
|
47
|
+
alias: m.alias,
|
|
48
|
+
args: m.args,
|
|
49
|
+
component: m.default,
|
|
50
|
+
description: m.description,
|
|
51
|
+
isDefault: m.isDefault ?? false,
|
|
52
|
+
name,
|
|
53
|
+
options: m.options,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return commands;
|
|
57
|
+
};
|
|
58
|
+
export default readCommands;
|
|
59
|
+
//# sourceMappingURL=read-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-commands.js","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,YAAY,GAAG,KAAK,EAAE,SAAiB,EAAiC,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;gBACzB,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;gBACpC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAY,YAAY,IAAI;gBACvC,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,IAAI;aACX,CAAC;YAEF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,kCAAC,OAAO,CAAC,IAAI,EAAC,CAAmB,CAAC;QACzD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAE9E,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,OAAO;YACpB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;YAC/B,IAAI;YACJ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-custom-app.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/read-custom-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,wBAA8B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAkB3G"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import fs from 'node:fs/promises';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
12
|
+
import {} from 'react';
|
|
13
|
+
import {} from './types.js';
|
|
14
|
+
export default async function readCustomApp(directory) {
|
|
15
|
+
const files = await fs.readdir(directory);
|
|
16
|
+
let customApp;
|
|
17
|
+
for (const file of files) {
|
|
18
|
+
if (!/^_app\.(js|ts)x?$/.test(file)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const filePath = path.join(directory, file);
|
|
22
|
+
const fileUrl = pathToFileURL(filePath);
|
|
23
|
+
const m = (await import(__rewriteRelativeImportExtension(fileUrl.href)));
|
|
24
|
+
customApp = m.default;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
return customApp;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=read-custom-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-custom-app.js","sourceRoot":"","sources":["../../../src/lib/pastel/read-custom-app.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAiB,MAAM,YAAY,CAAC;AAM3C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC3D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,SAA8C,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,kCAAC,OAAO,CAAC,IAAI,EAAC,CAAe,CAAC;QAErD,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;QACtB,MAAM;IACR,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
export type AppProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Props to pass to command's component.
|
|
5
|
+
*/
|
|
6
|
+
commandProps: {
|
|
7
|
+
/**
|
|
8
|
+
* Arguments.
|
|
9
|
+
*/
|
|
10
|
+
args: unknown[];
|
|
11
|
+
/**
|
|
12
|
+
* Options.
|
|
13
|
+
*/
|
|
14
|
+
options: Record<string, unknown>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Command's component.
|
|
18
|
+
*/
|
|
19
|
+
Component: ComponentType<{
|
|
20
|
+
args: unknown[];
|
|
21
|
+
options: Record<string, unknown>;
|
|
22
|
+
}>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Additional metadata for an argument.
|
|
26
|
+
*/
|
|
27
|
+
export type CommandArgumentConfig = {
|
|
28
|
+
/**
|
|
29
|
+
* Description of a default value.
|
|
30
|
+
*
|
|
31
|
+
* @default JSON.stringify(defaultValue)
|
|
32
|
+
*/
|
|
33
|
+
defaultValueDescription?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Description of an argument. If description is missing, argument won't appear in the "Arguments" section of the help message.
|
|
36
|
+
*/
|
|
37
|
+
description?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Argument's name. Displayed in "Usage" part of the help message. Doesn't affect how argument is parsed.
|
|
40
|
+
*
|
|
41
|
+
* @default "arg"
|
|
42
|
+
*/
|
|
43
|
+
name?: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Additional metadata for an option.
|
|
47
|
+
*/
|
|
48
|
+
export type CommandOptionConfig = {
|
|
49
|
+
/**
|
|
50
|
+
* Alias. Usually a first letter of the full option name.
|
|
51
|
+
*/
|
|
52
|
+
alias?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Description of a default value.
|
|
55
|
+
*
|
|
56
|
+
* @default JSON.stringify(defaultValue)
|
|
57
|
+
*/
|
|
58
|
+
defaultValueDescription?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Description. If description is missing, option won't appear in the "Options" section of the help message.
|
|
61
|
+
*/
|
|
62
|
+
description?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Description of a value. Replaces "value" in `--flag <value>` in the help message.
|
|
65
|
+
*
|
|
66
|
+
* @default "value"
|
|
67
|
+
*/
|
|
68
|
+
valueDescription?: string;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,YAAY,EAAE;QACZ;;WAEG;QACH,IAAI,EAAE,OAAO,EAAE,CAAC;QAEhB;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IAEF;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC;QACvB,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC,CAAC;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/pastel/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AssetDependency, AssetTypeSchema as AssetType, type Bundle, BundleAssetRef, BundleSchema, DeprecatedEntry, HookConfig, HookEventBinding, type Manifest, ManifestSchema, type Registry, RegistryAsset, type RegistryAssetVersion, RegistryAssetVersionSchema, type RegistryAssetVersionsMap, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, SecurityBlock, withoutNullOptionals, } from '../atk-schemas/index.js';
|
|
1
|
+
export { AssetDependency, AssetTypeSchema as AssetType, type Bundle, BundleAssetRef, BundleSchema, DeprecatedEntry, HookConfig, HookEventBinding, KNOWN_TOOLS, type Manifest, ManifestSchema, type Registry, RegistryAsset, type RegistryAssetVersion, RegistryAssetVersionSchema, type RegistryAssetVersionsMap, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, SecurityBlock, withoutNullOptionals, } from '../atk-schemas/index.js';
|
|
2
2
|
export { type Adapter, AdapterSchema, PlacementConfig } from './adapter.js';
|
|
3
3
|
export { type Config, ConfigSchema, DEFAULT_CONFIG, type ProjectConfig, ProjectConfigSchema } from './config.js';
|
|
4
4
|
export { ConfigEntry, InstalledAsset, InstalledFile, type Lockfile, LockfileSchema } from './lockfile.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,eAAe,IAAI,SAAS,EAC5B,KAAK,MAAM,EACX,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,KAAK,QAAQ,EACb,cAAc,EACd,KAAK,QAAQ,EACb,aAAa,EACb,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,aAAa,EACb,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,eAAe,IAAI,SAAS,EAC5B,KAAK,MAAM,EACX,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,KAAK,QAAQ,EACb,cAAc,EACd,KAAK,QAAQ,EACb,aAAa,EACb,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,aAAa,EACb,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// The manifest, bundle and registry schemas live in @atk/schemas (packages/schemas), vendored into lib/atk-schemas.
|
|
2
|
-
export { AssetDependency, AssetTypeSchema as AssetType, BundleAssetRef, BundleSchema, DeprecatedEntry, HookConfig, HookEventBinding, ManifestSchema, RegistryAsset, RegistryAssetVersionSchema, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, SecurityBlock, withoutNullOptionals, } from '../atk-schemas/index.js';
|
|
2
|
+
export { AssetDependency, AssetTypeSchema as AssetType, BundleAssetRef, BundleSchema, DeprecatedEntry, HookConfig, HookEventBinding, KNOWN_TOOLS, ManifestSchema, RegistryAsset, RegistryAssetVersionSchema, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, SecurityBlock, withoutNullOptionals, } from '../atk-schemas/index.js';
|
|
3
3
|
export { AdapterSchema, PlacementConfig } from './adapter.js';
|
|
4
4
|
export { ConfigSchema, DEFAULT_CONFIG, ProjectConfigSchema } from './config.js';
|
|
5
5
|
export { ConfigEntry, InstalledAsset, InstalledFile, LockfileSchema } from './lockfile.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,OAAO,EACL,eAAe,EACf,eAAe,IAAI,SAAS,EAE5B,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,OAAO,EACL,eAAe,EACf,eAAe,IAAI,SAAS,EAE5B,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EAEX,cAAc,EAEd,aAAa,EAEb,0BAA0B,EAE1B,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,aAAa,EACb,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAe,YAAY,EAAE,cAAc,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@detergent-software/atk",
|
|
3
|
-
"version": "8.8.1-dev.
|
|
3
|
+
"version": "8.8.1-dev.4",
|
|
4
4
|
"description": "Agentic Tool Kit — CLI for managing AI coding tool assets.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"build",
|
|
11
11
|
"!build/__tests__",
|
|
12
|
+
"src/lib/pastel/LICENSE",
|
|
12
13
|
"tool-adapters",
|
|
13
14
|
"CHANGELOG.md"
|
|
14
15
|
],
|
|
15
16
|
"scripts": {
|
|
16
17
|
"build": "tsc",
|
|
18
|
+
"check:packed": "node scripts/check-packed-help.mjs",
|
|
17
19
|
"dev": "tsc --watch",
|
|
18
20
|
"export-schemas": "tsx scripts/export-schemas.ts",
|
|
19
21
|
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
@@ -38,17 +40,22 @@
|
|
|
38
40
|
},
|
|
39
41
|
"dependencies": {
|
|
40
42
|
"@azure/msal-node": "^6.0.0",
|
|
43
|
+
"@inkjs/ui": "^2.0.0",
|
|
41
44
|
"chalk": "^5.4.0",
|
|
45
|
+
"commander": "^14.0.1",
|
|
46
|
+
"decamelize": "^6.0.1",
|
|
42
47
|
"diff": "8.0.3",
|
|
43
48
|
"ink": "^6.0.0",
|
|
44
49
|
"ink-spinner": "^5.0.0",
|
|
45
50
|
"ink-text-input": "^6.0.0",
|
|
46
51
|
"paramour": "0.11.3",
|
|
47
|
-
"
|
|
52
|
+
"plur": "^5.1.0",
|
|
48
53
|
"react": "^19.0.0",
|
|
54
|
+
"read-package-up": "^11.0.0",
|
|
49
55
|
"semver": "^7.7.0",
|
|
50
56
|
"smol-toml": "^1.8.0",
|
|
51
|
-
"zod": "^4.0.0"
|
|
57
|
+
"zod": "^4.0.0",
|
|
58
|
+
"zod-validation-error": "^4.0.2"
|
|
52
59
|
},
|
|
53
60
|
"devDependencies": {
|
|
54
61
|
"@atk/eslint-config": "workspace:*",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Vadym Demedes <vadimdemedes@hey.com> (vadimdemedes.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|