@beignet/cli 0.0.1 → 0.0.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 +231 -0
- package/README.md +497 -90
- package/dist/ansi.d.ts +10 -0
- package/dist/ansi.d.ts.map +1 -0
- package/dist/ansi.js +20 -0
- package/dist/ansi.js.map +1 -0
- package/dist/choices.d.ts +72 -0
- package/dist/choices.d.ts.map +1 -0
- package/dist/choices.js +88 -0
- package/dist/choices.js.map +1 -0
- package/dist/completion.d.ts +47 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +123 -0
- package/dist/completion.js.map +1 -0
- package/dist/config.d.ts +39 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -0
- package/dist/config.js.map +1 -1
- package/dist/create-prompts.d.ts +42 -0
- package/dist/create-prompts.d.ts.map +1 -0
- package/dist/create-prompts.js +136 -0
- package/dist/create-prompts.js.map +1 -0
- package/dist/create.d.ts +12 -0
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +19 -24
- package/dist/create.js.map +1 -1
- package/dist/db.d.ts +37 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +146 -0
- package/dist/db.js.map +1 -0
- package/dist/github-annotations.d.ts +18 -0
- package/dist/github-annotations.d.ts.map +1 -0
- package/dist/github-annotations.js +22 -0
- package/dist/github-annotations.js.map +1 -0
- package/dist/index.d.ts +1 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +710 -400
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts +45 -2
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +2191 -100
- package/dist/inspect.js.map +1 -1
- package/dist/lib.d.ts +20 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +17 -0
- package/dist/lib.js.map +1 -0
- package/dist/lint.d.ts +22 -1
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +370 -38
- package/dist/lint.js.map +1 -1
- package/dist/make.d.ts +109 -1
- package/dist/make.d.ts.map +1 -1
- package/dist/make.js +2225 -333
- package/dist/make.js.map +1 -1
- package/dist/outbox.d.ts +24 -0
- package/dist/outbox.d.ts.map +1 -0
- package/dist/outbox.js +138 -0
- package/dist/outbox.js.map +1 -0
- package/dist/schedule.d.ts +36 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +155 -0
- package/dist/schedule.js.map +1 -0
- package/dist/task.d.ts +26 -0
- package/dist/task.d.ts.map +1 -0
- package/dist/task.js +106 -0
- package/dist/task.js.map +1 -0
- package/dist/templates.d.ts +12 -8
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +2144 -385
- package/dist/templates.js.map +1 -1
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +18 -0
- package/dist/version.js.map +1 -0
- package/package.json +9 -8
- package/src/ansi.ts +30 -0
- package/src/choices.ts +137 -0
- package/src/completion.ts +169 -0
- package/src/config.ts +47 -0
- package/src/create-prompts.ts +182 -0
- package/src/create.ts +32 -28
- package/src/db.ts +222 -0
- package/src/github-annotations.ts +37 -0
- package/src/index.ts +1119 -535
- package/src/inspect.ts +3372 -134
- package/src/lib.ts +45 -0
- package/src/lint.ts +533 -45
- package/src/make.ts +3010 -397
- package/src/outbox.ts +249 -0
- package/src/schedule.ts +272 -0
- package/src/task.ts +169 -0
- package/src/templates.ts +2282 -462
- package/src/version.ts +20 -0
- package/dist/create-bin.d.ts +0 -3
- package/dist/create-bin.d.ts.map +0 -1
- package/dist/create-bin.js +0 -9
- package/dist/create-bin.js.map +0 -1
- package/src/create-bin.ts +0 -11
package/dist/ansi.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal ANSI color helpers for human-readable CLI output.
|
|
3
|
+
*/
|
|
4
|
+
export type AnsiColor = "red" | "yellow" | "cyan" | "green" | "bold";
|
|
5
|
+
/**
|
|
6
|
+
* Create a paint function that wraps text in ANSI codes when enabled and
|
|
7
|
+
* returns the text unchanged otherwise.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createPainter(enabled: boolean | undefined): (text: string, color: AnsiColor) => string;
|
|
10
|
+
//# sourceMappingURL=ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAcrE;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,GAAG,SAAS,GAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,MAAM,CAM5C"}
|
package/dist/ansi.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const ansiEscape = String.fromCharCode(27);
|
|
2
|
+
const ansiCodes = {
|
|
3
|
+
red: `${ansiEscape}[31m`,
|
|
4
|
+
yellow: `${ansiEscape}[33m`,
|
|
5
|
+
cyan: `${ansiEscape}[36m`,
|
|
6
|
+
green: `${ansiEscape}[32m`,
|
|
7
|
+
bold: `${ansiEscape}[1m`,
|
|
8
|
+
};
|
|
9
|
+
const ansiReset = `${ansiEscape}[0m`;
|
|
10
|
+
/**
|
|
11
|
+
* Create a paint function that wraps text in ANSI codes when enabled and
|
|
12
|
+
* returns the text unchanged otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export function createPainter(enabled) {
|
|
15
|
+
if (!enabled) {
|
|
16
|
+
return (text) => text;
|
|
17
|
+
}
|
|
18
|
+
return (text, color) => `${ansiCodes[color]}${text}${ansiReset}`;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ansi.js.map
|
package/dist/ansi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAE3C,MAAM,SAAS,GAA8B;IAC3C,GAAG,EAAE,GAAG,UAAU,MAAM;IACxB,MAAM,EAAE,GAAG,UAAU,MAAM;IAC3B,IAAI,EAAE,GAAG,UAAU,MAAM;IACzB,KAAK,EAAE,GAAG,UAAU,MAAM;IAC1B,IAAI,EAAE,GAAG,UAAU,KAAK;CACzB,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,UAAU,KAAK,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA4B;IAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Choice lists and string-literal types shared by the CLI entrypoint and the
|
|
3
|
+
* heavier scaffold/generator modules. Keeping them here lets the bin define
|
|
4
|
+
* flag enums without loading templates or generators at startup.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Package managers supported by the app template generator.
|
|
8
|
+
*/
|
|
9
|
+
export type PackageManager = "bun" | "npm" | "pnpm" | "yarn";
|
|
10
|
+
/**
|
|
11
|
+
* Starter presets supported by the app template generator.
|
|
12
|
+
*/
|
|
13
|
+
export type PresetName = "minimal" | "standard";
|
|
14
|
+
/**
|
|
15
|
+
* Application templates supported by the app template generator.
|
|
16
|
+
*/
|
|
17
|
+
export type TemplateName = "next";
|
|
18
|
+
/**
|
|
19
|
+
* Optional first-party features that can be scaffolded into a new app.
|
|
20
|
+
*/
|
|
21
|
+
export type FeatureName = "client" | "react-query" | "forms" | "openapi";
|
|
22
|
+
/**
|
|
23
|
+
* Optional provider integrations that can be scaffolded into a new app.
|
|
24
|
+
*/
|
|
25
|
+
export type IntegrationName = "better-auth" | "drizzle-turso" | "inngest" | "pino" | "resend" | "upstash-rate-limit";
|
|
26
|
+
/**
|
|
27
|
+
* Supported scaffold template choices.
|
|
28
|
+
*/
|
|
29
|
+
export declare const templateChoices: readonly ["next"];
|
|
30
|
+
/**
|
|
31
|
+
* Supported scaffold package manager choices.
|
|
32
|
+
*/
|
|
33
|
+
export declare const packageManagerChoices: readonly ["bun", "npm", "pnpm", "yarn"];
|
|
34
|
+
/**
|
|
35
|
+
* Supported scaffold feature choices.
|
|
36
|
+
*/
|
|
37
|
+
export declare const featureChoices: readonly ["client", "react-query", "forms", "openapi"];
|
|
38
|
+
/**
|
|
39
|
+
* Supported scaffold preset choices.
|
|
40
|
+
*/
|
|
41
|
+
export declare const presetChoices: readonly ["minimal", "standard"];
|
|
42
|
+
/**
|
|
43
|
+
* Supported scaffold integration choices.
|
|
44
|
+
*/
|
|
45
|
+
export declare const integrationChoices: readonly ["better-auth", "drizzle-turso", "inngest", "pino", "resend", "upstash-rate-limit"];
|
|
46
|
+
/**
|
|
47
|
+
* Features included by each starter preset before explicit `--features`
|
|
48
|
+
* selections are added.
|
|
49
|
+
*/
|
|
50
|
+
export declare const presetFeatureDefaults: Record<PresetName, readonly FeatureName[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Integrations included by each starter preset before explicit
|
|
53
|
+
* `--integrations` selections are added.
|
|
54
|
+
*/
|
|
55
|
+
export declare const presetIntegrationDefaults: Record<PresetName, readonly IntegrationName[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Shells supported by `beignet completion install` and `uninstall`.
|
|
58
|
+
*/
|
|
59
|
+
export type CompletionShell = "bash" | "zsh";
|
|
60
|
+
/**
|
|
61
|
+
* Supported completion shell choices.
|
|
62
|
+
*/
|
|
63
|
+
export declare const completionShellChoices: readonly ["bash", "zsh"];
|
|
64
|
+
/**
|
|
65
|
+
* Optional artifacts supported by `beignet make feature --with`.
|
|
66
|
+
*/
|
|
67
|
+
export declare const makeFeatureAddonChoices: readonly ["policy", "event", "events", "job", "jobs", "notification", "notifications", "task", "tasks", "ui", "upload", "uploads"];
|
|
68
|
+
/**
|
|
69
|
+
* Optional artifact accepted by `beignet make feature --with`.
|
|
70
|
+
*/
|
|
71
|
+
export type MakeFeatureAddon = (typeof makeFeatureAddonChoices)[number];
|
|
72
|
+
//# sourceMappingURL=choices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../src/choices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAChD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AACzE;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,eAAe,GACf,SAAS,GACT,MAAM,GACN,QAAQ,GACR,oBAAoB,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,eAAe,mBAEgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,yCAKY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,cAAc,wDAKgB,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,aAAa,kCAGgB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,kBAAkB,8FAOgB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAI1E,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,UAAU,EACV,SAAS,eAAe,EAAE,CAI3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,sBAAsB,0BAGY,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,oIAa1B,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/choices.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Choice lists and string-literal types shared by the CLI entrypoint and the
|
|
3
|
+
* heavier scaffold/generator modules. Keeping them here lets the bin define
|
|
4
|
+
* flag enums without loading templates or generators at startup.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Supported scaffold template choices.
|
|
8
|
+
*/
|
|
9
|
+
export const templateChoices = [
|
|
10
|
+
"next",
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* Supported scaffold package manager choices.
|
|
14
|
+
*/
|
|
15
|
+
export const packageManagerChoices = [
|
|
16
|
+
"bun",
|
|
17
|
+
"npm",
|
|
18
|
+
"pnpm",
|
|
19
|
+
"yarn",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Supported scaffold feature choices.
|
|
23
|
+
*/
|
|
24
|
+
export const featureChoices = [
|
|
25
|
+
"client",
|
|
26
|
+
"react-query",
|
|
27
|
+
"forms",
|
|
28
|
+
"openapi",
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Supported scaffold preset choices.
|
|
32
|
+
*/
|
|
33
|
+
export const presetChoices = [
|
|
34
|
+
"minimal",
|
|
35
|
+
"standard",
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Supported scaffold integration choices.
|
|
39
|
+
*/
|
|
40
|
+
export const integrationChoices = [
|
|
41
|
+
"better-auth",
|
|
42
|
+
"drizzle-turso",
|
|
43
|
+
"inngest",
|
|
44
|
+
"pino",
|
|
45
|
+
"resend",
|
|
46
|
+
"upstash-rate-limit",
|
|
47
|
+
];
|
|
48
|
+
/**
|
|
49
|
+
* Features included by each starter preset before explicit `--features`
|
|
50
|
+
* selections are added.
|
|
51
|
+
*/
|
|
52
|
+
export const presetFeatureDefaults = {
|
|
53
|
+
minimal: [],
|
|
54
|
+
standard: featureChoices,
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Integrations included by each starter preset before explicit
|
|
58
|
+
* `--integrations` selections are added.
|
|
59
|
+
*/
|
|
60
|
+
export const presetIntegrationDefaults = {
|
|
61
|
+
minimal: [],
|
|
62
|
+
standard: ["better-auth", "drizzle-turso", "pino"],
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Supported completion shell choices.
|
|
66
|
+
*/
|
|
67
|
+
export const completionShellChoices = [
|
|
68
|
+
"bash",
|
|
69
|
+
"zsh",
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* Optional artifacts supported by `beignet make feature --with`.
|
|
73
|
+
*/
|
|
74
|
+
export const makeFeatureAddonChoices = [
|
|
75
|
+
"policy",
|
|
76
|
+
"event",
|
|
77
|
+
"events",
|
|
78
|
+
"job",
|
|
79
|
+
"jobs",
|
|
80
|
+
"notification",
|
|
81
|
+
"notifications",
|
|
82
|
+
"task",
|
|
83
|
+
"tasks",
|
|
84
|
+
"ui",
|
|
85
|
+
"upload",
|
|
86
|
+
"uploads",
|
|
87
|
+
];
|
|
88
|
+
//# sourceMappingURL=choices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choices.js","sourceRoot":"","sources":["../src/choices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6BH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;CACoC,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;CACsC,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,aAAa;IACb,OAAO;IACP,SAAS;CACgC,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,UAAU;CAC8B,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa;IACb,eAAe;IACf,SAAS;IACT,MAAM;IACN,QAAQ;IACR,oBAAoB;CACyB,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC;IACE,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAGlC;IACF,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC;CACnD,CAAC;AAOF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,KAAK;CACwC,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,MAAM;IACN,cAAc;IACd,eAAe;IACf,MAAM;IACN,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell completion install/uninstall for the `beignet` bin.
|
|
3
|
+
*
|
|
4
|
+
* The shell scripts call the hidden `beignet completion propose` entrypoint,
|
|
5
|
+
* which prints one proposal per line through stricli's completion engine. The
|
|
6
|
+
* route map and flag definitions live eagerly in index.ts, so proposals work
|
|
7
|
+
* without loading any lazy command module.
|
|
8
|
+
*/
|
|
9
|
+
import type { CompletionShell } from "./choices.js";
|
|
10
|
+
/**
|
|
11
|
+
* Result of installing or uninstalling shell completions.
|
|
12
|
+
*/
|
|
13
|
+
export type CompletionResult = {
|
|
14
|
+
schemaVersion: 1;
|
|
15
|
+
shell: CompletionShell;
|
|
16
|
+
file: string;
|
|
17
|
+
status: "installed" | "updated" | "removed" | "not-installed";
|
|
18
|
+
};
|
|
19
|
+
type CompletionOptions = {
|
|
20
|
+
shell?: CompletionShell;
|
|
21
|
+
/**
|
|
22
|
+
* Home directory override for tests.
|
|
23
|
+
*/
|
|
24
|
+
home?: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Detect the completion shell from a `$SHELL`-style path.
|
|
28
|
+
*/
|
|
29
|
+
export declare function detectCompletionShell(shellPath?: string | undefined): CompletionShell | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* The completion script block written to the shell rc file.
|
|
32
|
+
*/
|
|
33
|
+
export declare function completionScript(shell: CompletionShell): string;
|
|
34
|
+
/**
|
|
35
|
+
* The rc file that owns completions for the given shell.
|
|
36
|
+
*/
|
|
37
|
+
export declare function completionRcFile(shell: CompletionShell, home?: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Install (or refresh) `beignet` completions in the shell rc file.
|
|
40
|
+
*/
|
|
41
|
+
export declare function installCompletions(options?: CompletionOptions): Promise<CompletionResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Remove `beignet` completions from the shell rc file.
|
|
44
|
+
*/
|
|
45
|
+
export declare function uninstallCompletions(options?: CompletionOptions): Promise<CompletionResult>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBpD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,CAAC,CAAC;IACjB,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;CAC/D,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,qBAAoB,GAC5B,eAAe,GAAG,SAAS,CAK7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,IAAI,SAAY,GACf,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAY3B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell completion install/uninstall for the `beignet` bin.
|
|
3
|
+
*
|
|
4
|
+
* The shell scripts call the hidden `beignet completion propose` entrypoint,
|
|
5
|
+
* which prints one proposal per line through stricli's completion engine. The
|
|
6
|
+
* route map and flag definitions live eagerly in index.ts, so proposals work
|
|
7
|
+
* without loading any lazy command module.
|
|
8
|
+
*/
|
|
9
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
const beginMarker = "# >>> beignet completions >>>";
|
|
13
|
+
const endMarker = "# <<< beignet completions <<<";
|
|
14
|
+
const bashScript = `_beignet_completions() {
|
|
15
|
+
local -a completions
|
|
16
|
+
while IFS= read -r line; do
|
|
17
|
+
[ -n "$line" ] && completions+=("$line")
|
|
18
|
+
done < <(beignet completion propose "\${COMP_WORDS[@]:1:COMP_CWORD}" 2>/dev/null)
|
|
19
|
+
COMPREPLY=("\${completions[@]}")
|
|
20
|
+
}
|
|
21
|
+
complete -F _beignet_completions beignet`;
|
|
22
|
+
const zshScript = `_beignet_completions() {
|
|
23
|
+
local -a completions
|
|
24
|
+
completions=("\${(@f)$(beignet completion propose "\${(@)words[2,CURRENT]}" 2>/dev/null)}")
|
|
25
|
+
compadd -- "\${completions[@]}"
|
|
26
|
+
}
|
|
27
|
+
compdef _beignet_completions beignet`;
|
|
28
|
+
/**
|
|
29
|
+
* Detect the completion shell from a `$SHELL`-style path.
|
|
30
|
+
*/
|
|
31
|
+
export function detectCompletionShell(shellPath = process.env.SHELL) {
|
|
32
|
+
const shellName = shellPath ? path.basename(shellPath) : "";
|
|
33
|
+
if (shellName === "bash")
|
|
34
|
+
return "bash";
|
|
35
|
+
if (shellName === "zsh")
|
|
36
|
+
return "zsh";
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The completion script block written to the shell rc file.
|
|
41
|
+
*/
|
|
42
|
+
export function completionScript(shell) {
|
|
43
|
+
return shell === "bash" ? bashScript : zshScript;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The rc file that owns completions for the given shell.
|
|
47
|
+
*/
|
|
48
|
+
export function completionRcFile(shell, home = homedir()) {
|
|
49
|
+
return path.join(home, shell === "bash" ? ".bashrc" : ".zshrc");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Install (or refresh) `beignet` completions in the shell rc file.
|
|
53
|
+
*/
|
|
54
|
+
export async function installCompletions(options = {}) {
|
|
55
|
+
const shell = resolveShell(options.shell);
|
|
56
|
+
const file = completionRcFile(shell, options.home);
|
|
57
|
+
const source = await readRcFile(file);
|
|
58
|
+
const stripped = removeCompletionBlock(source);
|
|
59
|
+
const block = `${beginMarker}\n${completionScript(shell)}\n${endMarker}`;
|
|
60
|
+
const next = stripped === "" ? `${block}\n` : `${trimEnd(stripped)}\n\n${block}\n`;
|
|
61
|
+
await writeFile(file, next);
|
|
62
|
+
return {
|
|
63
|
+
schemaVersion: 1,
|
|
64
|
+
shell,
|
|
65
|
+
file,
|
|
66
|
+
status: stripped === source ? "installed" : "updated",
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Remove `beignet` completions from the shell rc file.
|
|
71
|
+
*/
|
|
72
|
+
export async function uninstallCompletions(options = {}) {
|
|
73
|
+
const shell = resolveShell(options.shell);
|
|
74
|
+
const file = completionRcFile(shell, options.home);
|
|
75
|
+
const source = await readRcFile(file);
|
|
76
|
+
const stripped = removeCompletionBlock(source);
|
|
77
|
+
if (stripped === source) {
|
|
78
|
+
return { schemaVersion: 1, shell, file, status: "not-installed" };
|
|
79
|
+
}
|
|
80
|
+
await writeFile(file, stripped === "" ? "" : `${trimEnd(stripped)}\n`);
|
|
81
|
+
return { schemaVersion: 1, shell, file, status: "removed" };
|
|
82
|
+
}
|
|
83
|
+
function resolveShell(shell) {
|
|
84
|
+
if (shell)
|
|
85
|
+
return shell;
|
|
86
|
+
const detected = detectCompletionShell();
|
|
87
|
+
if (!detected) {
|
|
88
|
+
throw new Error(`Could not detect a supported shell from $SHELL (${process.env.SHELL ?? "unset"}). Pass --shell bash or --shell zsh.`);
|
|
89
|
+
}
|
|
90
|
+
return detected;
|
|
91
|
+
}
|
|
92
|
+
async function readRcFile(file) {
|
|
93
|
+
try {
|
|
94
|
+
return await readFile(file, "utf8");
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error instanceof Error &&
|
|
98
|
+
"code" in error &&
|
|
99
|
+
error.code === "ENOENT") {
|
|
100
|
+
return "";
|
|
101
|
+
}
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function removeCompletionBlock(source) {
|
|
106
|
+
const beginIndex = source.indexOf(beginMarker);
|
|
107
|
+
if (beginIndex === -1)
|
|
108
|
+
return source;
|
|
109
|
+
const endIndex = source.indexOf(endMarker, beginIndex);
|
|
110
|
+
if (endIndex === -1)
|
|
111
|
+
return source;
|
|
112
|
+
const before = trimEnd(source.slice(0, beginIndex));
|
|
113
|
+
const after = source.slice(endIndex + endMarker.length).replace(/^\n+/, "");
|
|
114
|
+
if (before === "")
|
|
115
|
+
return after;
|
|
116
|
+
if (after === "")
|
|
117
|
+
return `${before}\n`;
|
|
118
|
+
return `${before}\n\n${after}`;
|
|
119
|
+
}
|
|
120
|
+
function trimEnd(source) {
|
|
121
|
+
return source.replace(/\s+$/, "");
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,WAAW,GAAG,+BAA+B,CAAC;AACpD,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD,MAAM,UAAU,GAAG;;;;;;;yCAOsB,CAAC;AAE1C,MAAM,SAAS,GAAG;;;;;qCAKmB,CAAC;AAoBtC;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK;IAE7B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAsB,EACtB,IAAI,GAAG,OAAO,EAAE;IAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAA6B,EAAE;IAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,GAAG,WAAW,KAAK,gBAAgB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;IACzE,MAAM,IAAI,GACR,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC;IAExE,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5B,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAA6B,EAAE;IAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,KAAkC;IACtD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,mDAAmD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,sCAAsC,CACtH,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,KAAK;YACtB,MAAM,IAAI,KAAK;YACd,KAA2B,CAAC,IAAI,KAAK,QAAQ,EAC9C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5E,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACvC,OAAO,GAAG,MAAM,OAAO,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported application framework targets for Beignet config.
|
|
3
|
+
*/
|
|
1
4
|
export type BeignetFramework = "next";
|
|
5
|
+
/**
|
|
6
|
+
* Configurable app paths used by CLI generators, inspection, linting, and
|
|
7
|
+
* doctor checks.
|
|
8
|
+
*/
|
|
2
9
|
export type BeignetPaths = {
|
|
3
10
|
contracts: string;
|
|
4
11
|
routes: string;
|
|
5
12
|
server: string;
|
|
6
13
|
openapiRoute: string;
|
|
14
|
+
tasks: string;
|
|
15
|
+
outbox: string;
|
|
16
|
+
schedules: string;
|
|
7
17
|
appContext: string;
|
|
8
18
|
ports: string;
|
|
9
19
|
infrastructurePorts: string;
|
|
@@ -11,21 +21,50 @@ export type BeignetPaths = {
|
|
|
11
21
|
policies: string;
|
|
12
22
|
useCases: string;
|
|
13
23
|
useCaseBuilder: string;
|
|
24
|
+
listenersBuilder: string;
|
|
25
|
+
jobsBuilder: string;
|
|
26
|
+
schedulesBuilder: string;
|
|
27
|
+
notificationsBuilder: string;
|
|
28
|
+
tasksBuilder: string;
|
|
14
29
|
tests: string;
|
|
15
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* User-authored Beignet CLI config.
|
|
33
|
+
*/
|
|
16
34
|
export type BeignetConfig = {
|
|
17
35
|
framework?: BeignetFramework;
|
|
18
36
|
paths?: Partial<BeignetPaths>;
|
|
19
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Beignet config after defaults and path normalization have been applied.
|
|
40
|
+
*/
|
|
20
41
|
export type ResolvedBeignetConfig = {
|
|
21
42
|
framework: BeignetFramework;
|
|
22
43
|
paths: BeignetPaths;
|
|
23
44
|
configFile?: string;
|
|
24
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Default framework conventions used when an app has no config file.
|
|
48
|
+
*/
|
|
25
49
|
export declare const defaultBeignetConfig: ResolvedBeignetConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Preserve a Beignet config object with type inference.
|
|
52
|
+
*/
|
|
26
53
|
export declare function defineConfig(config: BeignetConfig): BeignetConfig;
|
|
54
|
+
/**
|
|
55
|
+
* Apply Beignet CLI defaults to a partial config.
|
|
56
|
+
*/
|
|
27
57
|
export declare function resolveConfig(config?: BeignetConfig, configFile?: string): ResolvedBeignetConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Load and resolve a Beignet config file from an app directory.
|
|
60
|
+
*/
|
|
28
61
|
export declare function loadBeignetConfig(targetDir: string, files?: string[]): Promise<ResolvedBeignetConfig>;
|
|
62
|
+
/**
|
|
63
|
+
* Convert platform-specific path separators to POSIX-style separators.
|
|
64
|
+
*/
|
|
29
65
|
export declare function normalizePath(filePath: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Normalize a directory path and remove leading or trailing slashes.
|
|
68
|
+
*/
|
|
30
69
|
export declare function directoryPath(filePath: string): string;
|
|
31
70
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,qBAwBlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAEjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,GAAE,aAAkB,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,qBAAqB,CAWvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,qBAAqB,CAAC,CA+ChC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/config.js
CHANGED
|
@@ -2,6 +2,9 @@ import { readFile, stat } from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { createJiti } from "jiti";
|
|
5
|
+
/**
|
|
6
|
+
* Default framework conventions used when an app has no config file.
|
|
7
|
+
*/
|
|
5
8
|
export const defaultBeignetConfig = {
|
|
6
9
|
framework: "next",
|
|
7
10
|
paths: {
|
|
@@ -9,6 +12,9 @@ export const defaultBeignetConfig = {
|
|
|
9
12
|
routes: "app/api",
|
|
10
13
|
server: "server/index.ts",
|
|
11
14
|
openapiRoute: "app/api/openapi/route.ts",
|
|
15
|
+
tasks: "server/tasks.ts",
|
|
16
|
+
outbox: "server/outbox.ts",
|
|
17
|
+
schedules: "server/schedules.ts",
|
|
12
18
|
appContext: "app-context.ts",
|
|
13
19
|
ports: "ports/index.ts",
|
|
14
20
|
infrastructurePorts: "infra/app-ports.ts",
|
|
@@ -16,12 +22,23 @@ export const defaultBeignetConfig = {
|
|
|
16
22
|
policies: "features",
|
|
17
23
|
useCases: "features",
|
|
18
24
|
useCaseBuilder: "lib/use-case.ts",
|
|
25
|
+
listenersBuilder: "lib/listeners.ts",
|
|
26
|
+
jobsBuilder: "lib/jobs.ts",
|
|
27
|
+
schedulesBuilder: "lib/schedules.ts",
|
|
28
|
+
notificationsBuilder: "lib/notifications.ts",
|
|
29
|
+
tasksBuilder: "lib/tasks.ts",
|
|
19
30
|
tests: "tests",
|
|
20
31
|
},
|
|
21
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Preserve a Beignet config object with type inference.
|
|
35
|
+
*/
|
|
22
36
|
export function defineConfig(config) {
|
|
23
37
|
return config;
|
|
24
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Apply Beignet CLI defaults to a partial config.
|
|
41
|
+
*/
|
|
25
42
|
export function resolveConfig(config = {}, configFile) {
|
|
26
43
|
const paths = {
|
|
27
44
|
...defaultBeignetConfig.paths,
|
|
@@ -33,6 +50,9 @@ export function resolveConfig(config = {}, configFile) {
|
|
|
33
50
|
configFile,
|
|
34
51
|
};
|
|
35
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Load and resolve a Beignet config file from an app directory.
|
|
55
|
+
*/
|
|
36
56
|
export async function loadBeignetConfig(targetDir, files) {
|
|
37
57
|
const configFiles = await findConfigFiles(targetDir, files);
|
|
38
58
|
if (configFiles.length === 0) {
|
|
@@ -65,9 +85,15 @@ export async function loadBeignetConfig(targetDir, files) {
|
|
|
65
85
|
const configModule = (await import(pathToFileURL(configPath).href));
|
|
66
86
|
return resolveConfig(assertConfigObject(configModule.default ?? {}, configFile), configFile);
|
|
67
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Convert platform-specific path separators to POSIX-style separators.
|
|
90
|
+
*/
|
|
68
91
|
export function normalizePath(filePath) {
|
|
69
92
|
return filePath.split(path.sep).join("/");
|
|
70
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Normalize a directory path and remove leading or trailing slashes.
|
|
96
|
+
*/
|
|
71
97
|
export function directoryPath(filePath) {
|
|
72
98
|
return normalizePath(filePath).replaceAll(/^\/+|\/+$/g, "");
|
|
73
99
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive selection flow for `beignet create`.
|
|
3
|
+
*
|
|
4
|
+
* The decision helper is pure so the TTY gating stays unit-testable, and
|
|
5
|
+
* `@clack/prompts` is loaded lazily inside the prompt flow so non-interactive
|
|
6
|
+
* runs and CLI startup never pay for it.
|
|
7
|
+
*/
|
|
8
|
+
import { type FeatureName, type IntegrationName, type PackageManager, type PresetName } from "./choices.js";
|
|
9
|
+
/**
|
|
10
|
+
* Selections shared by create flags and interactive prompt answers.
|
|
11
|
+
*/
|
|
12
|
+
export type CreateSelections = {
|
|
13
|
+
directory?: string;
|
|
14
|
+
preset?: PresetName;
|
|
15
|
+
features?: readonly FeatureName[];
|
|
16
|
+
integrations?: readonly IntegrationName[];
|
|
17
|
+
packageManager?: PackageManager;
|
|
18
|
+
};
|
|
19
|
+
type CreatePromptFlags = CreateSelections & {
|
|
20
|
+
yes?: boolean;
|
|
21
|
+
};
|
|
22
|
+
type CreatePromptTty = {
|
|
23
|
+
stdin: boolean;
|
|
24
|
+
stdout: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Decide whether `beignet create` should run the interactive prompt flow.
|
|
28
|
+
*
|
|
29
|
+
* Prompts run only on a full TTY, only when `--yes` is absent, and only when
|
|
30
|
+
* no selection flag was passed. Any explicit preset, feature, integration, or
|
|
31
|
+
* package manager selection means the invocation is scripted, so the
|
|
32
|
+
* non-interactive path stays byte-identical for agents and CI.
|
|
33
|
+
*/
|
|
34
|
+
export declare function shouldPromptInteractively(flags: CreatePromptFlags, tty: CreatePromptTty): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Run the interactive `beignet create` prompt flow.
|
|
37
|
+
*
|
|
38
|
+
* Returns the completed selections, or undefined when the user cancels.
|
|
39
|
+
*/
|
|
40
|
+
export declare function promptCreateSelections(initial: CreateSelections): Promise<CreateSelections | undefined>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=create-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-prompts.d.ts","sourceRoot":"","sources":["../src/create-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,eAAe,EAEpB,KAAK,cAAc,EACnB,KAAK,UAAU,EAGhB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC1C,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,KAAK,iBAAiB,GAAG,gBAAgB,GAAG;IAC1C,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,eAAe,GACnB,OAAO,CAWT;AAkBD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CA+FvC"}
|