@tjalve/cube-cli 0.1.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.
- package/LICENSE +21 -0
- package/README.md +39 -0
- package/dist/errors/index.d.ts +28 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +58 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/fixtures/cli.d.ts +4 -0
- package/dist/fixtures/cli.d.ts.map +1 -0
- package/dist/fixtures/cli.js +195 -0
- package/dist/fixtures/cli.js.map +1 -0
- package/dist/fixtures/metadata.d.ts +347 -0
- package/dist/fixtures/metadata.d.ts.map +1 -0
- package/dist/fixtures/metadata.js +372 -0
- package/dist/fixtures/metadata.js.map +1 -0
- package/dist/help/index.d.ts +24 -0
- package/dist/help/index.d.ts.map +1 -0
- package/dist/help/index.js +254 -0
- package/dist/help/index.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/define.d.ts +11 -0
- package/dist/metadata/define.d.ts.map +1 -0
- package/dist/metadata/define.js +125 -0
- package/dist/metadata/define.js.map +1 -0
- package/dist/metadata/index.d.ts +3 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +2 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/types.d.ts +109 -0
- package/dist/metadata/types.d.ts.map +1 -0
- package/dist/metadata/types.js +2 -0
- package/dist/metadata/types.js.map +1 -0
- package/dist/mutation/index.d.ts +55 -0
- package/dist/mutation/index.d.ts.map +1 -0
- package/dist/mutation/index.js +162 -0
- package/dist/mutation/index.js.map +1 -0
- package/dist/output/index.d.ts +32 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +94 -0
- package/dist/output/index.js.map +1 -0
- package/dist/prompts/index.d.ts +37 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +78 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/redaction/index.d.ts +10 -0
- package/dist/redaction/index.d.ts.map +1 -0
- package/dist/redaction/index.js +83 -0
- package/dist/redaction/index.js.map +1 -0
- package/dist/registry/index.d.ts +25 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +286 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/runtime/index.d.ts +69 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +581 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/schema/index.d.ts +122 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +208 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/terminal/index.d.ts +31 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +118 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/testing/index.d.ts +85 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +293 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { MetadataExtensions } from "../metadata/index.js";
|
|
2
|
+
import type { CommandRegistry } from "../registry/index.js";
|
|
3
|
+
export type SchemaSections = Readonly<Record<string, unknown>>;
|
|
4
|
+
export interface RenderSchemaOptions {
|
|
5
|
+
readonly packageName: string;
|
|
6
|
+
readonly packageVersion: string;
|
|
7
|
+
readonly bin: string;
|
|
8
|
+
readonly sections?: SchemaSections;
|
|
9
|
+
readonly extensions?: MetadataExtensions;
|
|
10
|
+
}
|
|
11
|
+
export interface CliPackageSchema {
|
|
12
|
+
readonly schemaVersion: 1;
|
|
13
|
+
readonly package: {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly version: string;
|
|
16
|
+
};
|
|
17
|
+
readonly bin: string;
|
|
18
|
+
readonly topics: readonly TopicSchema[];
|
|
19
|
+
readonly commands: readonly CommandSchema[];
|
|
20
|
+
readonly sections?: SchemaSections;
|
|
21
|
+
readonly extensions?: MetadataExtensions;
|
|
22
|
+
}
|
|
23
|
+
export interface TopicSchema {
|
|
24
|
+
readonly kind: "topic";
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly description: string;
|
|
27
|
+
readonly aliases: readonly string[];
|
|
28
|
+
readonly extensions?: MetadataExtensions;
|
|
29
|
+
}
|
|
30
|
+
export interface CommandSchema {
|
|
31
|
+
readonly kind: "command";
|
|
32
|
+
readonly name: string;
|
|
33
|
+
readonly description: string;
|
|
34
|
+
readonly aliases: readonly string[];
|
|
35
|
+
readonly arguments: readonly ArgumentSchema[];
|
|
36
|
+
readonly flags: readonly FlagSchema[];
|
|
37
|
+
readonly examples: readonly ExampleSchema[];
|
|
38
|
+
readonly output: OutputSchema;
|
|
39
|
+
readonly interactions: InteractionSchema;
|
|
40
|
+
readonly dryRun: DryRunSchema;
|
|
41
|
+
readonly mutation: MutationSchema;
|
|
42
|
+
readonly supplyChain: SupplyChainSchema;
|
|
43
|
+
readonly externalServices: readonly ExternalServiceSchema[];
|
|
44
|
+
readonly errors: readonly ErrorKindSchema[];
|
|
45
|
+
readonly exitCodes: readonly ExitCodeSchema[];
|
|
46
|
+
readonly extensions?: MetadataExtensions;
|
|
47
|
+
}
|
|
48
|
+
export interface ArgumentSchema {
|
|
49
|
+
readonly name: string;
|
|
50
|
+
readonly description: string;
|
|
51
|
+
readonly required: boolean;
|
|
52
|
+
readonly multiple: boolean;
|
|
53
|
+
readonly defaultValue?: unknown;
|
|
54
|
+
readonly extensions?: MetadataExtensions;
|
|
55
|
+
}
|
|
56
|
+
export interface FlagSchema {
|
|
57
|
+
readonly name: string;
|
|
58
|
+
readonly tokens: readonly string[];
|
|
59
|
+
readonly short?: string;
|
|
60
|
+
readonly description: string;
|
|
61
|
+
readonly type: string;
|
|
62
|
+
readonly aliases: readonly string[];
|
|
63
|
+
readonly negatable: boolean;
|
|
64
|
+
readonly required: boolean;
|
|
65
|
+
readonly multiple: boolean;
|
|
66
|
+
readonly options: readonly string[];
|
|
67
|
+
readonly defaultValue?: unknown;
|
|
68
|
+
readonly extensions?: MetadataExtensions;
|
|
69
|
+
}
|
|
70
|
+
export interface ExampleSchema {
|
|
71
|
+
readonly command: string;
|
|
72
|
+
readonly description: string;
|
|
73
|
+
readonly extensions?: MetadataExtensions;
|
|
74
|
+
}
|
|
75
|
+
export interface OutputSchema {
|
|
76
|
+
readonly formats: readonly string[];
|
|
77
|
+
readonly defaultFormat?: string;
|
|
78
|
+
readonly extensions?: MetadataExtensions;
|
|
79
|
+
}
|
|
80
|
+
export interface InteractionSchema {
|
|
81
|
+
readonly json: boolean;
|
|
82
|
+
readonly noColor: boolean;
|
|
83
|
+
readonly nonInteractive: boolean;
|
|
84
|
+
readonly ttyPrompt: boolean;
|
|
85
|
+
readonly extensions?: MetadataExtensions;
|
|
86
|
+
}
|
|
87
|
+
export interface DryRunSchema {
|
|
88
|
+
readonly supported: boolean;
|
|
89
|
+
readonly reason?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface MutationSchema {
|
|
92
|
+
readonly mutates: boolean;
|
|
93
|
+
readonly categories: readonly string[];
|
|
94
|
+
readonly extensions?: MetadataExtensions;
|
|
95
|
+
}
|
|
96
|
+
export interface SupplyChainSchema {
|
|
97
|
+
readonly sensitive: boolean;
|
|
98
|
+
readonly kinds: readonly string[];
|
|
99
|
+
readonly reason?: string;
|
|
100
|
+
readonly extensions?: MetadataExtensions;
|
|
101
|
+
}
|
|
102
|
+
export interface ExternalServiceSchema {
|
|
103
|
+
readonly name: string;
|
|
104
|
+
readonly description: string;
|
|
105
|
+
readonly optional: boolean;
|
|
106
|
+
readonly extensions?: MetadataExtensions;
|
|
107
|
+
}
|
|
108
|
+
export interface ErrorKindSchema {
|
|
109
|
+
readonly kind: string;
|
|
110
|
+
readonly description: string;
|
|
111
|
+
readonly exitCode?: number;
|
|
112
|
+
readonly extensions?: MetadataExtensions;
|
|
113
|
+
}
|
|
114
|
+
export interface ExitCodeSchema {
|
|
115
|
+
readonly code: number;
|
|
116
|
+
readonly category: string;
|
|
117
|
+
readonly description: string;
|
|
118
|
+
readonly extensions?: MetadataExtensions;
|
|
119
|
+
}
|
|
120
|
+
export declare function renderSchema(registry: CommandRegistry, options: RenderSchemaOptions): CliPackageSchema;
|
|
121
|
+
export declare function renderSchemaJson(registry: CommandRegistry, options: RenderSchemaOptions): string;
|
|
122
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { redactStructuredValue } from "../redaction/index.js";
|
|
2
|
+
export function renderSchema(registry, options) {
|
|
3
|
+
const schema = {
|
|
4
|
+
schemaVersion: 1,
|
|
5
|
+
package: {
|
|
6
|
+
name: options.packageName,
|
|
7
|
+
version: options.packageVersion
|
|
8
|
+
},
|
|
9
|
+
bin: options.bin,
|
|
10
|
+
topics: [...registry.topics].sort(compareByName).map(renderTopic),
|
|
11
|
+
commands: [...registry.commands].sort(compareByName).map(renderCommand)
|
|
12
|
+
};
|
|
13
|
+
const withSections = options.sections ? { ...schema, sections: renderSections(options.sections) } : schema;
|
|
14
|
+
return withExtensions(withSections, options.extensions);
|
|
15
|
+
}
|
|
16
|
+
export function renderSchemaJson(registry, options) {
|
|
17
|
+
return `${JSON.stringify(renderSchema(registry, options), null, 2)}\n`;
|
|
18
|
+
}
|
|
19
|
+
function renderTopic(topic) {
|
|
20
|
+
return withExtensions({
|
|
21
|
+
kind: "topic",
|
|
22
|
+
name: topic.name,
|
|
23
|
+
description: topic.description,
|
|
24
|
+
aliases: sortText(topic.aliases ?? [])
|
|
25
|
+
}, topic.extensions);
|
|
26
|
+
}
|
|
27
|
+
function renderCommand(command) {
|
|
28
|
+
return withExtensions({
|
|
29
|
+
kind: "command",
|
|
30
|
+
name: command.name,
|
|
31
|
+
description: command.description,
|
|
32
|
+
aliases: sortText(command.aliases ?? []),
|
|
33
|
+
arguments: (command.arguments ?? []).map(renderArgument),
|
|
34
|
+
flags: [...(command.flags ?? [])].sort(compareByName).map(renderFlag),
|
|
35
|
+
examples: [...(command.examples ?? [])].sort(compareExamples).map(renderExample),
|
|
36
|
+
output: renderOutput(command.output),
|
|
37
|
+
interactions: renderInteractions(command),
|
|
38
|
+
dryRun: renderDryRun(command),
|
|
39
|
+
mutation: renderMutation(command),
|
|
40
|
+
supplyChain: renderSupplyChain(command),
|
|
41
|
+
externalServices: [...(command.externalServices ?? [])].sort(compareByName).map(renderExternalService),
|
|
42
|
+
errors: [...(command.errors ?? [])].sort(compareErrors).map(renderError),
|
|
43
|
+
exitCodes: [...(command.exitCodes ?? [])].sort(compareExitCodes).map(renderExitCode)
|
|
44
|
+
}, command.extensions);
|
|
45
|
+
}
|
|
46
|
+
function renderArgument(argument) {
|
|
47
|
+
const schema = withExtensions({
|
|
48
|
+
name: argument.name,
|
|
49
|
+
description: argument.description,
|
|
50
|
+
required: argument.required === true,
|
|
51
|
+
multiple: argument.multiple === true
|
|
52
|
+
}, argument.extensions);
|
|
53
|
+
return withDefaultValue(schema, argument);
|
|
54
|
+
}
|
|
55
|
+
function renderFlag(flag) {
|
|
56
|
+
const schema = withExtensions({
|
|
57
|
+
name: flag.name,
|
|
58
|
+
tokens: renderFlagTokens(flag),
|
|
59
|
+
...(flag.short !== undefined ? { short: flag.short } : {}),
|
|
60
|
+
description: flag.description,
|
|
61
|
+
type: flag.type,
|
|
62
|
+
aliases: sortText(flag.aliases ?? []),
|
|
63
|
+
negatable: flag.negatable === true,
|
|
64
|
+
required: flag.required === true,
|
|
65
|
+
multiple: flag.multiple === true,
|
|
66
|
+
options: sortText(flag.options ?? [])
|
|
67
|
+
}, flag.extensions);
|
|
68
|
+
return withDefaultValue(schema, flag);
|
|
69
|
+
}
|
|
70
|
+
function renderFlagTokens(flag) {
|
|
71
|
+
return [
|
|
72
|
+
`--${flag.name}`,
|
|
73
|
+
...(flag.negatable === true ? [`--no-${flag.name}`] : []),
|
|
74
|
+
...(flag.short !== undefined ? [`-${flag.short}`] : []),
|
|
75
|
+
...sortText(flag.aliases ?? []).flatMap((alias) => [`--${alias}`, ...(flag.negatable === true ? [`--no-${alias}`] : [])])
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
function renderSections(sections) {
|
|
79
|
+
const rendered = stableJsonObject(redactStructuredValue(sections));
|
|
80
|
+
return Object.freeze(rendered);
|
|
81
|
+
}
|
|
82
|
+
function renderExample(example) {
|
|
83
|
+
return withExtensions({
|
|
84
|
+
command: example.command,
|
|
85
|
+
description: example.description
|
|
86
|
+
}, example.extensions);
|
|
87
|
+
}
|
|
88
|
+
function renderOutput(output) {
|
|
89
|
+
const schema = { formats: sortText(output?.formats ?? []) };
|
|
90
|
+
const withDefault = output?.defaultFormat ? { ...schema, defaultFormat: String(output.defaultFormat) } : schema;
|
|
91
|
+
return withExtensions(withDefault, output?.extensions);
|
|
92
|
+
}
|
|
93
|
+
function renderInteractions(command) {
|
|
94
|
+
return withExtensions({
|
|
95
|
+
json: command.interactions?.json === true,
|
|
96
|
+
noColor: command.interactions?.noColor === true,
|
|
97
|
+
nonInteractive: command.interactions?.nonInteractive === true,
|
|
98
|
+
ttyPrompt: command.interactions?.ttyPrompt === true
|
|
99
|
+
}, command.interactions?.extensions);
|
|
100
|
+
}
|
|
101
|
+
function renderDryRun(command) {
|
|
102
|
+
const dryRun = command.interactions?.dryRun;
|
|
103
|
+
if (!dryRun) {
|
|
104
|
+
return { supported: false };
|
|
105
|
+
}
|
|
106
|
+
if (dryRun.supported) {
|
|
107
|
+
return { supported: true };
|
|
108
|
+
}
|
|
109
|
+
return { supported: false, reason: dryRun.reason };
|
|
110
|
+
}
|
|
111
|
+
function renderMutation(command) {
|
|
112
|
+
const categories = sortText(command.mutation?.categories ?? []);
|
|
113
|
+
return withExtensions({
|
|
114
|
+
mutates: categories.length > 0,
|
|
115
|
+
categories
|
|
116
|
+
}, command.mutation?.extensions);
|
|
117
|
+
}
|
|
118
|
+
function renderSupplyChain(command) {
|
|
119
|
+
const schema = {
|
|
120
|
+
sensitive: command.supplyChain?.sensitive === true,
|
|
121
|
+
kinds: sortText(command.supplyChain?.kinds ?? [])
|
|
122
|
+
};
|
|
123
|
+
const withReason = command.supplyChain?.reason ? { ...schema, reason: command.supplyChain.reason } : schema;
|
|
124
|
+
return withExtensions(withReason, command.supplyChain?.extensions);
|
|
125
|
+
}
|
|
126
|
+
function renderExternalService(service) {
|
|
127
|
+
return withExtensions({
|
|
128
|
+
name: service.name,
|
|
129
|
+
description: service.description,
|
|
130
|
+
optional: service.optional === true
|
|
131
|
+
}, service.extensions);
|
|
132
|
+
}
|
|
133
|
+
function renderError(error) {
|
|
134
|
+
const schema = { kind: error.kind, description: error.description };
|
|
135
|
+
const withExitCode = typeof error.exitCode === "number" ? { ...schema, exitCode: error.exitCode } : schema;
|
|
136
|
+
return withExtensions(withExitCode, error.extensions);
|
|
137
|
+
}
|
|
138
|
+
function renderExitCode(exitCode) {
|
|
139
|
+
return withExtensions({
|
|
140
|
+
code: exitCode.code,
|
|
141
|
+
category: exitCode.category,
|
|
142
|
+
description: exitCode.description
|
|
143
|
+
}, exitCode.extensions);
|
|
144
|
+
}
|
|
145
|
+
function withDefaultValue(schema, metadata) {
|
|
146
|
+
if (!Object.hasOwn(metadata, "defaultValue") || metadata.defaultValue === undefined) {
|
|
147
|
+
return schema;
|
|
148
|
+
}
|
|
149
|
+
return { ...schema, defaultValue: stableJsonValue(metadata.defaultValue) };
|
|
150
|
+
}
|
|
151
|
+
function withExtensions(schema, extensions) {
|
|
152
|
+
const renderedExtensions = renderExtensions(extensions);
|
|
153
|
+
if (!renderedExtensions) {
|
|
154
|
+
return schema;
|
|
155
|
+
}
|
|
156
|
+
return { ...schema, extensions: renderedExtensions };
|
|
157
|
+
}
|
|
158
|
+
function renderExtensions(extensions) {
|
|
159
|
+
if (!extensions) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
const rendered = stableJsonObject(extensions);
|
|
163
|
+
return Object.keys(rendered).length === 0 ? undefined : rendered;
|
|
164
|
+
}
|
|
165
|
+
function stableJsonValue(value) {
|
|
166
|
+
if (Array.isArray(value)) {
|
|
167
|
+
return value.map(stableJsonValue);
|
|
168
|
+
}
|
|
169
|
+
if (isRecord(value)) {
|
|
170
|
+
return stableJsonObject(value);
|
|
171
|
+
}
|
|
172
|
+
return value;
|
|
173
|
+
}
|
|
174
|
+
function stableJsonObject(value) {
|
|
175
|
+
const result = {};
|
|
176
|
+
for (const key of Object.keys(value).sort(compareText)) {
|
|
177
|
+
const renderedValue = stableJsonValue(value[key]);
|
|
178
|
+
if (renderedValue !== undefined) {
|
|
179
|
+
result[key] = renderedValue;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return Object.freeze(result);
|
|
183
|
+
}
|
|
184
|
+
function isRecord(value) {
|
|
185
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
186
|
+
}
|
|
187
|
+
function sortText(values) {
|
|
188
|
+
return values.map(String).sort(compareText);
|
|
189
|
+
}
|
|
190
|
+
function compareByName(left, right) {
|
|
191
|
+
return compareText(left.name, right.name);
|
|
192
|
+
}
|
|
193
|
+
function compareExamples(left, right) {
|
|
194
|
+
return compareText(left.command, right.command) || compareText(left.description, right.description);
|
|
195
|
+
}
|
|
196
|
+
function compareErrors(left, right) {
|
|
197
|
+
return compareText(left.kind, right.kind) || compareText(left.description, right.description);
|
|
198
|
+
}
|
|
199
|
+
function compareExitCodes(left, right) {
|
|
200
|
+
return left.code - right.code || compareText(left.category, right.category) || compareText(left.description, right.description);
|
|
201
|
+
}
|
|
202
|
+
function compareText(left, right) {
|
|
203
|
+
if (left === right) {
|
|
204
|
+
return 0;
|
|
205
|
+
}
|
|
206
|
+
return left < right ? -1 : 1;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface TerminalEnvironment {
|
|
2
|
+
readonly argv?: readonly string[];
|
|
3
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
4
|
+
readonly stdinIsTTY?: boolean;
|
|
5
|
+
readonly stdoutIsTTY?: boolean;
|
|
6
|
+
readonly stderrIsTTY?: boolean;
|
|
7
|
+
readonly jsonMode?: boolean;
|
|
8
|
+
readonly noColor?: boolean;
|
|
9
|
+
readonly color?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface TerminalCapabilities {
|
|
12
|
+
readonly stdinIsTTY: boolean;
|
|
13
|
+
readonly stdoutIsTTY: boolean;
|
|
14
|
+
readonly stderrIsTTY: boolean;
|
|
15
|
+
readonly ci: boolean;
|
|
16
|
+
readonly jsonMode: boolean;
|
|
17
|
+
readonly noColor: boolean;
|
|
18
|
+
readonly colorLevel: 0 | 1 | 2 | 3;
|
|
19
|
+
readonly color: boolean;
|
|
20
|
+
readonly interactive: boolean;
|
|
21
|
+
readonly progress: boolean;
|
|
22
|
+
readonly dynamic: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type TerminalStatusKind = "success" | "error" | "warning" | "info";
|
|
25
|
+
export declare function detectTerminalCapabilities(environment?: TerminalEnvironment): TerminalCapabilities;
|
|
26
|
+
export declare function stripAnsi(value: string): string;
|
|
27
|
+
export declare function formatStatus(kind: TerminalStatusKind, message: string, capabilities?: TerminalCapabilities): string;
|
|
28
|
+
export declare function shouldUseColor(capabilities?: TerminalCapabilities): boolean;
|
|
29
|
+
export declare function shouldUseProgress(capabilities?: TerminalCapabilities): boolean;
|
|
30
|
+
export declare function shouldPrompt(capabilities?: TerminalCapabilities): boolean;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1E,wBAAgB,0BAA0B,CAAC,WAAW,GAAE,mBAAwB,GAAG,oBAAoB,CA2BtG;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,oBAAmD,GAAG,MAAM,CAIjJ;AAED,wBAAgB,cAAc,CAAC,YAAY,GAAE,oBAAmD,GAAG,OAAO,CAEzG;AAED,wBAAgB,iBAAiB,CAAC,YAAY,GAAE,oBAAmD,GAAG,OAAO,CAE5G;AAED,wBAAgB,YAAY,CAAC,YAAY,GAAE,oBAAmD,GAAG,OAAO,CAEvG"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export function detectTerminalCapabilities(environment = {}) {
|
|
2
|
+
const env = environment.env ?? process.env;
|
|
3
|
+
const argv = environment.argv ?? process.argv.slice(2);
|
|
4
|
+
const stdinIsTTY = environment.stdinIsTTY ?? process.stdin.isTTY === true;
|
|
5
|
+
const stdoutIsTTY = environment.stdoutIsTTY ?? process.stdout.isTTY === true;
|
|
6
|
+
const stderrIsTTY = environment.stderrIsTTY ?? process.stderr.isTTY === true;
|
|
7
|
+
const jsonMode = environment.jsonMode ?? argvRequestsJson(argv);
|
|
8
|
+
const ci = isCiEnvironment(env);
|
|
9
|
+
const noColor = environment.noColor === true || jsonMode || argv.includes("--no-color") || hasNoColor(env);
|
|
10
|
+
const colorLevel = environment.color === undefined
|
|
11
|
+
? resolveColorLevel({ env, stdoutIsTTY, noColor })
|
|
12
|
+
: resolveColorLevel({ env, stdoutIsTTY, noColor, color: environment.color });
|
|
13
|
+
const interactive = stdinIsTTY && stdoutIsTTY && !ci && !jsonMode;
|
|
14
|
+
const dynamic = interactive && colorLevel > 0;
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
stdinIsTTY,
|
|
17
|
+
stdoutIsTTY,
|
|
18
|
+
stderrIsTTY,
|
|
19
|
+
ci,
|
|
20
|
+
jsonMode,
|
|
21
|
+
noColor,
|
|
22
|
+
colorLevel,
|
|
23
|
+
color: colorLevel > 0,
|
|
24
|
+
interactive,
|
|
25
|
+
progress: dynamic,
|
|
26
|
+
dynamic
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function stripAnsi(value) {
|
|
30
|
+
return value.replace(new RegExp("\\u001B\\[[0-?]*[ -/]*[@-~]", "g"), "");
|
|
31
|
+
}
|
|
32
|
+
export function formatStatus(kind, message, capabilities = detectTerminalCapabilities()) {
|
|
33
|
+
const icon = statusIcon(kind, capabilities);
|
|
34
|
+
const text = capabilities.color ? colorizeStatus(kind, message) : message;
|
|
35
|
+
return `${icon} ${text}`;
|
|
36
|
+
}
|
|
37
|
+
export function shouldUseColor(capabilities = detectTerminalCapabilities()) {
|
|
38
|
+
return capabilities.color;
|
|
39
|
+
}
|
|
40
|
+
export function shouldUseProgress(capabilities = detectTerminalCapabilities()) {
|
|
41
|
+
return capabilities.progress;
|
|
42
|
+
}
|
|
43
|
+
export function shouldPrompt(capabilities = detectTerminalCapabilities()) {
|
|
44
|
+
return capabilities.interactive;
|
|
45
|
+
}
|
|
46
|
+
function resolveColorLevel(input) {
|
|
47
|
+
if (input.color === false || input.noColor) {
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
if (input.color === true) {
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
const forceColor = input.env.FORCE_COLOR;
|
|
54
|
+
if (forceColor === "0" || forceColor === "false") {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
if (forceColor === "2") {
|
|
58
|
+
return 2;
|
|
59
|
+
}
|
|
60
|
+
if (forceColor === "3") {
|
|
61
|
+
return 3;
|
|
62
|
+
}
|
|
63
|
+
if (forceColor !== undefined) {
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
if (input.env.GITHUB_ACTIONS === "true") {
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
return input.stdoutIsTTY ? 1 : 0;
|
|
70
|
+
}
|
|
71
|
+
function argvRequestsJson(argv) {
|
|
72
|
+
const positionalSeparatorIndex = argv.indexOf("--");
|
|
73
|
+
const flagArgv = positionalSeparatorIndex === -1 ? argv : argv.slice(0, positionalSeparatorIndex);
|
|
74
|
+
return flagArgv.some((token, index) => token === "--json" || token === "--output=json" || (token === "--output" && flagArgv[index + 1] === "json"));
|
|
75
|
+
}
|
|
76
|
+
function hasNoColor(env) {
|
|
77
|
+
return env.NO_COLOR !== undefined && env.NO_COLOR !== "";
|
|
78
|
+
}
|
|
79
|
+
function isCiEnvironment(env) {
|
|
80
|
+
return env.CI !== undefined && env.CI !== "" && env.CI !== "0" && env.CI !== "false";
|
|
81
|
+
}
|
|
82
|
+
function statusIcon(kind, capabilities) {
|
|
83
|
+
if (!capabilities.color) {
|
|
84
|
+
switch (kind) {
|
|
85
|
+
case "success":
|
|
86
|
+
return "[OK]";
|
|
87
|
+
case "error":
|
|
88
|
+
return "[ERROR]";
|
|
89
|
+
case "warning":
|
|
90
|
+
return "[WARN]";
|
|
91
|
+
case "info":
|
|
92
|
+
return "[INFO]";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
switch (kind) {
|
|
96
|
+
case "success":
|
|
97
|
+
return "\u001B[32m✔\u001B[0m";
|
|
98
|
+
case "error":
|
|
99
|
+
return "\u001B[31m✖\u001B[0m";
|
|
100
|
+
case "warning":
|
|
101
|
+
return "\u001B[33m!\u001B[0m";
|
|
102
|
+
case "info":
|
|
103
|
+
return "\u001B[36mi\u001B[0m";
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function colorizeStatus(kind, message) {
|
|
107
|
+
switch (kind) {
|
|
108
|
+
case "success":
|
|
109
|
+
return `\u001B[32m${message}\u001B[0m`;
|
|
110
|
+
case "error":
|
|
111
|
+
return `\u001B[31m${message}\u001B[0m`;
|
|
112
|
+
case "warning":
|
|
113
|
+
return `\u001B[33m${message}\u001B[0m`;
|
|
114
|
+
case "info":
|
|
115
|
+
return `\u001B[36m${message}\u001B[0m`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,0BAA0B,CAAC,cAAmC,EAAE;IAC9E,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7E,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3G,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS;QAChD,CAAC,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAClD,CAAC,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,UAAU,IAAI,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IAClE,MAAM,OAAO,GAAG,WAAW,IAAI,UAAU,GAAG,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU;QACV,WAAW;QACX,WAAW;QACX,EAAE;QACF,QAAQ;QACR,OAAO;QACP,UAAU;QACV,KAAK,EAAE,UAAU,GAAG,CAAC;QACrB,WAAW;QACX,QAAQ,EAAE,OAAO;QACjB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAwB,EAAE,OAAe,EAAE,eAAqC,0BAA0B,EAAE;IACvI,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1E,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,eAAqC,0BAA0B,EAAE;IAC9F,OAAO,YAAY,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,eAAqC,0BAA0B,EAAE;IACjG,OAAO,YAAY,CAAC,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,eAAqC,0BAA0B,EAAE;IAC5F,OAAO,YAAY,CAAC,WAAW,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAK1B;IACC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACzC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,wBAAwB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAClG,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,eAAe,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AACtJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAiD;IACnE,OAAO,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,GAAiD;IACxE,OAAO,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB,EAAE,YAAkC;IAC9E,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,QAAQ,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IACD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,sBAAsB,CAAC;QAChC,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,sBAAsB,CAAC;QAChC,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAwB,EAAE,OAAe;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,aAAa,OAAO,WAAW,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,aAAa,OAAO,WAAW,CAAC;QACzC,KAAK,SAAS;YACZ,OAAO,aAAa,OAAO,WAAW,CAAC;QACzC,KAAK,MAAM;YACT,OAAO,aAAa,OAAO,WAAW,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export type TextExpectation = string | RegExp | readonly (string | RegExp)[];
|
|
2
|
+
export interface CliCommandResult {
|
|
3
|
+
readonly command: string;
|
|
4
|
+
readonly args: readonly string[];
|
|
5
|
+
readonly status: number | null;
|
|
6
|
+
readonly signal: NodeJS.Signals | null;
|
|
7
|
+
readonly stdout: string;
|
|
8
|
+
readonly stderr: string;
|
|
9
|
+
readonly error?: Error;
|
|
10
|
+
}
|
|
11
|
+
export interface RunCliCommandOptions {
|
|
12
|
+
readonly cwd?: string | URL;
|
|
13
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
14
|
+
readonly input?: string;
|
|
15
|
+
readonly timeout?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface CliResultExpectation {
|
|
18
|
+
readonly status?: number | null;
|
|
19
|
+
readonly stdout?: TextExpectation;
|
|
20
|
+
readonly stderr?: TextExpectation;
|
|
21
|
+
readonly stdoutExcludes?: TextExpectation;
|
|
22
|
+
readonly stderrExcludes?: TextExpectation;
|
|
23
|
+
}
|
|
24
|
+
export interface CliHelpExpectation extends CliResultExpectation {
|
|
25
|
+
readonly contains?: TextExpectation;
|
|
26
|
+
readonly excludes?: TextExpectation;
|
|
27
|
+
readonly assertNoExecutionMarker?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface CliDryRunExpectation extends CliResultExpectation {
|
|
30
|
+
readonly contains?: TextExpectation;
|
|
31
|
+
readonly excludes?: TextExpectation;
|
|
32
|
+
}
|
|
33
|
+
export interface CliJsonErrorExpectation {
|
|
34
|
+
readonly status?: number;
|
|
35
|
+
readonly command?: string;
|
|
36
|
+
readonly kind?: string;
|
|
37
|
+
readonly category?: string;
|
|
38
|
+
readonly exitCode?: number;
|
|
39
|
+
readonly operation?: string | RegExp;
|
|
40
|
+
readonly likelyCause?: string | RegExp;
|
|
41
|
+
readonly suggestedNextAction?: string | RegExp;
|
|
42
|
+
readonly envelope?: Readonly<Record<string, unknown>>;
|
|
43
|
+
}
|
|
44
|
+
export interface PackDryRunOptions extends RunCliCommandOptions {
|
|
45
|
+
readonly packageManager?: string;
|
|
46
|
+
readonly args?: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
export interface PackFileEntry {
|
|
49
|
+
readonly path: string;
|
|
50
|
+
readonly [key: string]: unknown;
|
|
51
|
+
}
|
|
52
|
+
export interface PackEntry {
|
|
53
|
+
readonly files: readonly PackFileEntry[];
|
|
54
|
+
readonly [key: string]: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface PackContentsResult {
|
|
57
|
+
readonly actualFiles: readonly string[];
|
|
58
|
+
readonly missingFiles: readonly string[];
|
|
59
|
+
readonly extraFiles: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
export interface PackSafetyOptions {
|
|
62
|
+
readonly allowedRootFiles?: readonly string[];
|
|
63
|
+
readonly allowedDistExtensions?: readonly string[];
|
|
64
|
+
readonly requiredRootFiles?: readonly string[];
|
|
65
|
+
}
|
|
66
|
+
export declare function runCliCommand(command: string, args?: readonly string[], options?: RunCliCommandOptions): CliCommandResult;
|
|
67
|
+
export declare function runNodeCliCommand(scriptPath: string | URL, args?: readonly string[], options?: RunCliCommandOptions): CliCommandResult;
|
|
68
|
+
export declare function assertCliResult(result: CliCommandResult, expectation?: CliResultExpectation): CliCommandResult;
|
|
69
|
+
export declare function assertCliSuccess(result: CliCommandResult, expectation?: Omit<CliResultExpectation, "status">): CliCommandResult;
|
|
70
|
+
export declare function assertCliFailure(result: CliCommandResult, expectation: CliResultExpectation): CliCommandResult;
|
|
71
|
+
export declare function parseCliJson(result: CliCommandResult): unknown;
|
|
72
|
+
export declare function parseCliJsonRecord(result: CliCommandResult): Readonly<Record<string, unknown>>;
|
|
73
|
+
export declare function assertCliJsonSuccess(result: CliCommandResult, expectedEnvelope?: Readonly<Record<string, unknown>>): Readonly<Record<string, unknown>>;
|
|
74
|
+
export declare function assertCliJsonError(result: CliCommandResult, expectation?: CliJsonErrorExpectation): Readonly<Record<string, unknown>>;
|
|
75
|
+
export declare function assertCliPromptBlocked(result: CliCommandResult, expectation?: Omit<CliJsonErrorExpectation, "kind">): Readonly<Record<string, unknown>>;
|
|
76
|
+
export declare function assertCliHelp(result: CliCommandResult, expectation?: CliHelpExpectation): CliCommandResult;
|
|
77
|
+
export declare function assertCliDryRun(result: CliCommandResult, expectation?: CliDryRunExpectation): CliCommandResult;
|
|
78
|
+
export declare function runPackDryRun(options?: PackDryRunOptions): PackEntry;
|
|
79
|
+
export declare function parsePackJson(stdout: string): PackEntry;
|
|
80
|
+
export declare function getPackFilePaths(entry: PackEntry): readonly string[];
|
|
81
|
+
export declare function assertPackContents(entry: PackEntry, expectedFiles: readonly string[]): PackContentsResult;
|
|
82
|
+
export declare function assertPackSafety(entry: PackEntry, options?: PackSafetyOptions): readonly string[];
|
|
83
|
+
export declare function assertTextMatches(value: string, expectation: TextExpectation, label?: string): void;
|
|
84
|
+
export declare function assertTextExcludes(value: string, expectation: TextExpectation, label?: string): void;
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAKD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,MAAM,EAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,gBAAgB,CAkBjI;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAE,SAAS,MAAM,EAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,gBAAgB,CAG9I;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,oBAAyB,GAAG,gBAAgB,CAoBlH;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAM,GAAG,gBAAgB,CAEnI;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAG9G;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAO9D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAI9F;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQtJ;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,uBAA4B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBzI;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE3J;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,kBAAuB,GAAG,gBAAgB,CAkB9G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAE,oBAAyB,GAAG,gBAAgB,CAelH;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,SAAS,CAexE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CASvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAEpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAezG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,iBAAsB,GAAG,SAAS,MAAM,EAAE,CAiBrG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,SAAS,GAAG,IAAI,CAQnG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,SAAS,GAAG,IAAI,CAQpG"}
|