@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,286 @@
|
|
|
1
|
+
const canonicalFlagNamePattern = /^[a-z][a-z0-9-]*$/;
|
|
2
|
+
const shortFlagPattern = /^[a-zA-Z]$/;
|
|
3
|
+
export class CommandRegistryValidationError extends TypeError {
|
|
4
|
+
issues;
|
|
5
|
+
constructor(issues) {
|
|
6
|
+
super(formatValidationMessage(issues));
|
|
7
|
+
this.name = "CommandRegistryValidationError";
|
|
8
|
+
this.issues = Object.freeze([...issues]);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function createCommandRegistry(input) {
|
|
12
|
+
const registry = normalizeRegistryInput(input);
|
|
13
|
+
validateCommandRegistry(registry);
|
|
14
|
+
return registry;
|
|
15
|
+
}
|
|
16
|
+
export function validateCommandRegistry(registry) {
|
|
17
|
+
const issues = [];
|
|
18
|
+
validateDefinitions(registry.topics, "topics", issues);
|
|
19
|
+
validateDefinitions(registry.commands, "commands", issues);
|
|
20
|
+
validateDefinitionNames(registry, issues);
|
|
21
|
+
validateAliases(registry, issues);
|
|
22
|
+
registry.commands.forEach((command, commandIndex) => {
|
|
23
|
+
validateCommand(command, `commands[${commandIndex}]`, issues);
|
|
24
|
+
});
|
|
25
|
+
if (issues.length > 0) {
|
|
26
|
+
throw new CommandRegistryValidationError(issues);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function findCommand(registry, nameOrAlias) {
|
|
30
|
+
return registry.commands.find((command) => command.name === nameOrAlias || (command.aliases ?? []).includes(nameOrAlias));
|
|
31
|
+
}
|
|
32
|
+
export function findTopic(registry, nameOrAlias) {
|
|
33
|
+
return registry.topics.find((topic) => topic.name === nameOrAlias || (topic.aliases ?? []).includes(nameOrAlias));
|
|
34
|
+
}
|
|
35
|
+
export function listCommands(registry) {
|
|
36
|
+
return registry.commands;
|
|
37
|
+
}
|
|
38
|
+
export function listTopics(registry) {
|
|
39
|
+
return registry.topics;
|
|
40
|
+
}
|
|
41
|
+
function normalizeRegistryInput(input) {
|
|
42
|
+
const topics = [];
|
|
43
|
+
const commands = [];
|
|
44
|
+
if (isDefinitionArray(input)) {
|
|
45
|
+
for (const definition of input) {
|
|
46
|
+
appendDefinition(definition, topics, commands);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
topics.push(...(input.topics ?? []));
|
|
51
|
+
commands.push(...(input.commands ?? []));
|
|
52
|
+
}
|
|
53
|
+
topics.sort(compareByName);
|
|
54
|
+
commands.sort(compareByName);
|
|
55
|
+
return Object.freeze({
|
|
56
|
+
topics: Object.freeze(topics),
|
|
57
|
+
commands: Object.freeze(commands)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function isDefinitionArray(input) {
|
|
61
|
+
return Array.isArray(input);
|
|
62
|
+
}
|
|
63
|
+
function appendDefinition(definition, topics, commands) {
|
|
64
|
+
if (definition.kind === "topic") {
|
|
65
|
+
topics.push(definition);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
commands.push(definition);
|
|
69
|
+
}
|
|
70
|
+
function compareByName(left, right) {
|
|
71
|
+
if (left.name === right.name) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
return left.name < right.name ? -1 : 1;
|
|
75
|
+
}
|
|
76
|
+
function validateDefinitions(definitions, collectionName, issues) {
|
|
77
|
+
definitions.forEach((definition, index) => {
|
|
78
|
+
const path = `${collectionName}[${index}]`;
|
|
79
|
+
requireDescription(definition.description, `${path}.description`, issues);
|
|
80
|
+
if (definition.kind !== (collectionName === "topics" ? "topic" : "command")) {
|
|
81
|
+
addIssue(issues, `${path}.kind`, `Expected ${collectionName === "topics" ? "topic" : "command"} metadata.`);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function validateDefinitionNames(registry, issues) {
|
|
86
|
+
const seenTopicNames = new Map();
|
|
87
|
+
const seenCommandNames = new Map();
|
|
88
|
+
const seenDefinitionNames = new Map();
|
|
89
|
+
registry.topics.forEach((topic, index) => {
|
|
90
|
+
const path = `topics[${index}].name`;
|
|
91
|
+
trackUnique(topic.name, path, "topic name", seenTopicNames, issues);
|
|
92
|
+
trackUnique(topic.name, path, "definition name", seenDefinitionNames, issues);
|
|
93
|
+
});
|
|
94
|
+
registry.commands.forEach((command, index) => {
|
|
95
|
+
const path = `commands[${index}].name`;
|
|
96
|
+
trackUnique(command.name, path, "command name", seenCommandNames, issues);
|
|
97
|
+
trackUnique(command.name, path, "definition name", seenDefinitionNames, issues);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function validateAliases(registry, issues) {
|
|
101
|
+
const names = new Map();
|
|
102
|
+
const aliases = new Map();
|
|
103
|
+
registry.topics.forEach((topic, index) => {
|
|
104
|
+
names.set(topic.name, `topics[${index}].name`);
|
|
105
|
+
});
|
|
106
|
+
registry.commands.forEach((command, index) => {
|
|
107
|
+
names.set(command.name, `commands[${index}].name`);
|
|
108
|
+
});
|
|
109
|
+
registry.topics.forEach((topic, index) => {
|
|
110
|
+
validateAliasList(topic.aliases ?? [], `topics[${index}].aliases`, names, aliases, issues);
|
|
111
|
+
});
|
|
112
|
+
registry.commands.forEach((command, index) => {
|
|
113
|
+
validateAliasList(command.aliases ?? [], `commands[${index}].aliases`, names, aliases, issues);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function validateAliasList(aliasesToValidate, path, names, aliases, issues) {
|
|
117
|
+
aliasesToValidate.forEach((alias, index) => {
|
|
118
|
+
const aliasPath = `${path}[${index}]`;
|
|
119
|
+
const namePath = names.get(alias);
|
|
120
|
+
if (namePath) {
|
|
121
|
+
addIssue(issues, aliasPath, `Alias "${alias}" conflicts with ${namePath}.`);
|
|
122
|
+
}
|
|
123
|
+
trackUnique(alias, aliasPath, "alias", aliases, issues);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function validateCommand(command, path, issues) {
|
|
127
|
+
validateArguments(command.arguments ?? [], `${path}.arguments`, issues);
|
|
128
|
+
validateFlags(command.flags ?? [], `${path}.flags`, issues);
|
|
129
|
+
validateExamples(command.examples ?? [], `${path}.examples`, issues);
|
|
130
|
+
validateDescribedItems(command.externalServices ?? [], `${path}.externalServices`, "service name", issues);
|
|
131
|
+
validateDescribedItems(command.errors ?? [], `${path}.errors`, "error kind", issues);
|
|
132
|
+
validateDescribedItems(command.exitCodes ?? [], `${path}.exitCodes`, "exit code", issues);
|
|
133
|
+
validateOutput(command, path, issues);
|
|
134
|
+
validateMutation(command, path, issues);
|
|
135
|
+
validateSupplyChain(command, path, issues);
|
|
136
|
+
}
|
|
137
|
+
function validateArguments(args, path, issues) {
|
|
138
|
+
const names = new Map();
|
|
139
|
+
args.forEach((argument, index) => {
|
|
140
|
+
const argumentPath = `${path}[${index}]`;
|
|
141
|
+
trackUnique(argument.name, `${argumentPath}.name`, "argument name", names, issues);
|
|
142
|
+
requireDescription(argument.description, `${argumentPath}.description`, issues);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function validateFlags(flags, path, issues) {
|
|
146
|
+
const names = new Map();
|
|
147
|
+
const shorts = new Map();
|
|
148
|
+
const aliases = new Map();
|
|
149
|
+
flags.forEach((flag, index) => {
|
|
150
|
+
const flagPath = `${path}[${index}]`;
|
|
151
|
+
trackUnique(flag.name, `${flagPath}.name`, "flag name", names, issues);
|
|
152
|
+
});
|
|
153
|
+
flags.forEach((flag, index) => {
|
|
154
|
+
const flagPath = `${path}[${index}]`;
|
|
155
|
+
requireDescription(flag.description, `${flagPath}.description`, issues);
|
|
156
|
+
validateCanonicalFlagName(flag.name, `${flagPath}.name`, issues);
|
|
157
|
+
validateShortFlag(flag.short, `${flagPath}.short`, issues);
|
|
158
|
+
if (typeof flag.short === "string" && flag.short.trim().length > 0) {
|
|
159
|
+
trackUnique(flag.short, `${flagPath}.short`, "short flag alias", shorts, issues);
|
|
160
|
+
}
|
|
161
|
+
if (!isSupportedFlagType(flag.type)) {
|
|
162
|
+
addIssue(issues, `${flagPath}.type`, `Unsupported flag type "${String(flag.type)}".`);
|
|
163
|
+
}
|
|
164
|
+
if (flag.negatable === true && flag.type !== "boolean") {
|
|
165
|
+
addIssue(issues, `${flagPath}.negatable`, `Negatable flags must use boolean type.`);
|
|
166
|
+
}
|
|
167
|
+
if (flag.type === "option" && (flag.options ?? []).length === 0) {
|
|
168
|
+
addIssue(issues, `${flagPath}.options`, `Option flags must define at least one option.`);
|
|
169
|
+
}
|
|
170
|
+
validateAliasList(flag.aliases ?? [], `${flagPath}.aliases`, names, aliases, issues);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function validateExamples(examples, path, issues) {
|
|
174
|
+
if (examples.length === 0) {
|
|
175
|
+
addIssue(issues, path, `Command metadata must include at least one example.`);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
examples.forEach((example, index) => {
|
|
179
|
+
const examplePath = `${path}[${index}]`;
|
|
180
|
+
requireDescription(example.description, `${examplePath}.description`, issues);
|
|
181
|
+
requireNonEmpty(example.command, `${examplePath}.command`, issues);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function validateDescribedItems(items, path, label, issues) {
|
|
185
|
+
const names = new Map();
|
|
186
|
+
items.forEach((item, index) => {
|
|
187
|
+
const itemPath = `${path}[${index}]`;
|
|
188
|
+
const identifier = typeof item.code === "number" ? String(item.code) : item.name ?? item.kind;
|
|
189
|
+
if (identifier) {
|
|
190
|
+
trackUnique(identifier, `${itemPath}.${label === "exit code" ? "code" : label === "error kind" ? "kind" : "name"}`, label, names, issues);
|
|
191
|
+
}
|
|
192
|
+
requireDescription(item.description, `${itemPath}.description`, issues);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function validateOutput(command, path, issues) {
|
|
196
|
+
if (!command.output?.defaultFormat) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (!command.output.formats.includes(command.output.defaultFormat)) {
|
|
200
|
+
addIssue(issues, `${path}.output.defaultFormat`, `Default output format must be listed in output.formats.`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function validateMutation(command, path, issues) {
|
|
204
|
+
const categories = command.mutation?.categories ?? [];
|
|
205
|
+
if (command.mutation && categories.length === 0) {
|
|
206
|
+
addIssue(issues, `${path}.mutation.categories`, `Mutation metadata must include at least one category.`);
|
|
207
|
+
}
|
|
208
|
+
if (categories.length === 0) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (!command.interactions?.dryRun) {
|
|
212
|
+
addIssue(issues, `${path}.interactions.dryRun`, `Mutating commands must declare dry-run support or a documented exception.`);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (!command.interactions.dryRun.supported) {
|
|
216
|
+
requireDescription(command.interactions.dryRun.reason, `${path}.interactions.dryRun.reason`, issues);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function validateSupplyChain(command, path, issues) {
|
|
220
|
+
if (command.supplyChain?.sensitive !== true) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
requireDescription(command.supplyChain.reason ?? "", `${path}.supplyChain.reason`, issues);
|
|
224
|
+
if (!command.supplyChain.kinds || command.supplyChain.kinds.length === 0) {
|
|
225
|
+
addIssue(issues, `${path}.supplyChain.kinds`, `Supply-chain-sensitive commands must list at least one sensitive kind.`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function isSupportedFlagType(value) {
|
|
229
|
+
return value === "boolean" || value === "string" || value === "integer" || value === "number" || value === "option";
|
|
230
|
+
}
|
|
231
|
+
function validateCanonicalFlagName(value, path, issues) {
|
|
232
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (!canonicalFlagNamePattern.test(value)) {
|
|
236
|
+
addIssue(issues, path, `Flag names are canonical keys and must not include leading dashes.`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function validateShortFlag(value, path, issues) {
|
|
240
|
+
if (value === undefined) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
244
|
+
addIssue(issues, path, `Short flag aliases must not be empty.`);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (!shortFlagPattern.test(value)) {
|
|
248
|
+
addIssue(issues, path, `Short flag aliases must be exactly one letter without leading dashes.`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
function trackUnique(value, path, label, seen, issues) {
|
|
252
|
+
if (typeof value !== "string") {
|
|
253
|
+
addIssue(issues, path, `${label} must be a string.`);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const normalizedValue = value.trim();
|
|
257
|
+
if (normalizedValue.length === 0) {
|
|
258
|
+
addIssue(issues, path, `Empty ${label} is not allowed.`);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const previousPath = seen.get(normalizedValue);
|
|
262
|
+
if (previousPath) {
|
|
263
|
+
addIssue(issues, path, `Duplicate ${label} "${normalizedValue}"; first defined at ${previousPath}.`);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
seen.set(normalizedValue, path);
|
|
267
|
+
}
|
|
268
|
+
function requireDescription(value, path, issues) {
|
|
269
|
+
requireNonEmpty(value, path, issues);
|
|
270
|
+
if (typeof value === "string" && value.trim().length > 0 && value.trim().length < 3) {
|
|
271
|
+
addIssue(issues, path, `Description must be descriptive.`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
function requireNonEmpty(value, path, issues) {
|
|
275
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
276
|
+
addIssue(issues, path, `Value must not be empty.`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function addIssue(issues, path, message) {
|
|
280
|
+
issues.push({ path, message });
|
|
281
|
+
}
|
|
282
|
+
function formatValidationMessage(issues) {
|
|
283
|
+
const details = issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ");
|
|
284
|
+
return `Command registry validation failed: ${details}`;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
import type { CommandMetadata, MetadataExtensions, TopicMetadata } from "../metadata/index.js";
|
|
3
|
+
import type { CommandRegistry } from "../registry/index.js";
|
|
4
|
+
import type { SchemaSections } from "../schema/index.js";
|
|
5
|
+
import { type JsonFields } from "../output/index.js";
|
|
6
|
+
export interface RuntimeCommandContext {
|
|
7
|
+
readonly command: CommandMetadata;
|
|
8
|
+
readonly args: Readonly<Record<string, unknown>>;
|
|
9
|
+
readonly flags: Readonly<Record<string, unknown>>;
|
|
10
|
+
readonly argv: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface RuntimeCommandResult {
|
|
13
|
+
readonly json?: JsonFields;
|
|
14
|
+
readonly jsonStdout?: string;
|
|
15
|
+
readonly human?: string;
|
|
16
|
+
readonly stdout?: string;
|
|
17
|
+
readonly stderr?: string;
|
|
18
|
+
readonly exitCode?: number;
|
|
19
|
+
}
|
|
20
|
+
export type RuntimeCommandHandler = (context: RuntimeCommandContext) => Promise<RuntimeCommandResult> | RuntimeCommandResult;
|
|
21
|
+
export interface RuntimeCommand {
|
|
22
|
+
readonly metadata: CommandMetadata;
|
|
23
|
+
readonly handler: RuntimeCommandHandler;
|
|
24
|
+
readonly oclifCommand: typeof Command;
|
|
25
|
+
}
|
|
26
|
+
export interface RuntimeTopic {
|
|
27
|
+
readonly metadata: TopicMetadata;
|
|
28
|
+
}
|
|
29
|
+
export interface RuntimePackageIdentity {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly version: string;
|
|
32
|
+
}
|
|
33
|
+
export interface CliRuntimeOptions {
|
|
34
|
+
readonly bin: string;
|
|
35
|
+
readonly packageName?: string | undefined;
|
|
36
|
+
readonly packageVersion?: string | undefined;
|
|
37
|
+
readonly description?: string | undefined;
|
|
38
|
+
readonly registry: CommandRegistry;
|
|
39
|
+
readonly commands: readonly RuntimeCommand[];
|
|
40
|
+
readonly topics?: readonly RuntimeTopic[];
|
|
41
|
+
}
|
|
42
|
+
export interface CliRuntime {
|
|
43
|
+
readonly bin: string;
|
|
44
|
+
readonly package?: RuntimePackageIdentity;
|
|
45
|
+
readonly description?: string | undefined;
|
|
46
|
+
readonly registry: CommandRegistry;
|
|
47
|
+
readonly commands: readonly RuntimeCommand[];
|
|
48
|
+
readonly topics: readonly RuntimeTopic[];
|
|
49
|
+
}
|
|
50
|
+
export interface CliRunResult {
|
|
51
|
+
readonly exitCode: number;
|
|
52
|
+
readonly stdout: string;
|
|
53
|
+
readonly stderr: string;
|
|
54
|
+
readonly executedCommand?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface SchemaCommandOptions {
|
|
57
|
+
readonly registry: CommandRegistry | (() => CommandRegistry);
|
|
58
|
+
readonly bin: string;
|
|
59
|
+
readonly packageName: string;
|
|
60
|
+
readonly packageVersion: string;
|
|
61
|
+
readonly sections?: SchemaSections;
|
|
62
|
+
readonly extensions?: MetadataExtensions;
|
|
63
|
+
}
|
|
64
|
+
export declare function createCommand(metadata: CommandMetadata, handler: RuntimeCommandHandler): RuntimeCommand;
|
|
65
|
+
export declare function createTopicCommand(metadata: TopicMetadata): RuntimeTopic;
|
|
66
|
+
export declare function createSchemaCommand(options: SchemaCommandOptions): RuntimeCommand;
|
|
67
|
+
export declare function createCli(options: CliRuntimeOptions): CliRuntime;
|
|
68
|
+
export declare function runCli(cli: CliRuntime, argv: readonly string[]): Promise<CliRunResult>;
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|