@beignet/cli 0.0.3 → 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.
Files changed (98) hide show
  1. package/CHANGELOG.md +205 -0
  2. package/README.md +379 -61
  3. package/dist/ansi.d.ts +10 -0
  4. package/dist/ansi.d.ts.map +1 -0
  5. package/dist/ansi.js +20 -0
  6. package/dist/ansi.js.map +1 -0
  7. package/dist/choices.d.ts +72 -0
  8. package/dist/choices.d.ts.map +1 -0
  9. package/dist/choices.js +88 -0
  10. package/dist/choices.js.map +1 -0
  11. package/dist/completion.d.ts +47 -0
  12. package/dist/completion.d.ts.map +1 -0
  13. package/dist/completion.js +123 -0
  14. package/dist/completion.js.map +1 -0
  15. package/dist/config.d.ts +8 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +8 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/create-prompts.d.ts +42 -0
  20. package/dist/create-prompts.d.ts.map +1 -0
  21. package/dist/create-prompts.js +136 -0
  22. package/dist/create-prompts.js.map +1 -0
  23. package/dist/create.d.ts +4 -1
  24. package/dist/create.d.ts.map +1 -1
  25. package/dist/create.js +16 -26
  26. package/dist/create.js.map +1 -1
  27. package/dist/db.d.ts +1 -0
  28. package/dist/db.d.ts.map +1 -1
  29. package/dist/db.js +37 -2
  30. package/dist/db.js.map +1 -1
  31. package/dist/github-annotations.d.ts +18 -0
  32. package/dist/github-annotations.d.ts.map +1 -0
  33. package/dist/github-annotations.js +22 -0
  34. package/dist/github-annotations.js.map +1 -0
  35. package/dist/index.d.ts +1 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +657 -588
  38. package/dist/index.js.map +1 -1
  39. package/dist/inspect.d.ts +21 -2
  40. package/dist/inspect.d.ts.map +1 -1
  41. package/dist/inspect.js +1938 -131
  42. package/dist/inspect.js.map +1 -1
  43. package/dist/lib.d.ts +20 -0
  44. package/dist/lib.d.ts.map +1 -0
  45. package/dist/lib.js +17 -0
  46. package/dist/lib.js.map +1 -0
  47. package/dist/lint.d.ts +10 -1
  48. package/dist/lint.d.ts.map +1 -1
  49. package/dist/lint.js +340 -33
  50. package/dist/lint.js.map +1 -1
  51. package/dist/make.d.ts +20 -3
  52. package/dist/make.d.ts.map +1 -1
  53. package/dist/make.js +1756 -394
  54. package/dist/make.js.map +1 -1
  55. package/dist/outbox.d.ts +24 -0
  56. package/dist/outbox.d.ts.map +1 -0
  57. package/dist/outbox.js +138 -0
  58. package/dist/outbox.js.map +1 -0
  59. package/dist/schedule.d.ts +36 -0
  60. package/dist/schedule.d.ts.map +1 -0
  61. package/dist/schedule.js +155 -0
  62. package/dist/schedule.js.map +1 -0
  63. package/dist/task.d.ts +26 -0
  64. package/dist/task.d.ts.map +1 -0
  65. package/dist/task.js +106 -0
  66. package/dist/task.js.map +1 -0
  67. package/dist/templates.d.ts +3 -32
  68. package/dist/templates.d.ts.map +1 -1
  69. package/dist/templates.js +1002 -527
  70. package/dist/templates.js.map +1 -1
  71. package/dist/version.d.ts +8 -0
  72. package/dist/version.d.ts.map +1 -0
  73. package/dist/version.js +18 -0
  74. package/dist/version.js.map +1 -0
  75. package/package.json +9 -8
  76. package/src/ansi.ts +30 -0
  77. package/src/choices.ts +137 -0
  78. package/src/completion.ts +169 -0
  79. package/src/config.ts +16 -0
  80. package/src/create-prompts.ts +182 -0
  81. package/src/create.ts +24 -31
  82. package/src/db.ts +60 -4
  83. package/src/github-annotations.ts +37 -0
  84. package/src/index.ts +1067 -803
  85. package/src/inspect.ts +2859 -115
  86. package/src/lib.ts +45 -0
  87. package/src/lint.ts +493 -39
  88. package/src/make.ts +2181 -405
  89. package/src/outbox.ts +249 -0
  90. package/src/schedule.ts +272 -0
  91. package/src/task.ts +169 -0
  92. package/src/templates.ts +1073 -567
  93. package/src/version.ts +20 -0
  94. package/dist/create-bin.d.ts +0 -3
  95. package/dist/create-bin.d.ts.map +0 -1
  96. package/dist/create-bin.js +0 -9
  97. package/dist/create-bin.js.map +0 -1
  98. 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
@@ -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"}
@@ -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":"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"}
package/dist/config.d.ts CHANGED
@@ -11,6 +11,9 @@ export type BeignetPaths = {
11
11
  routes: string;
12
12
  server: string;
13
13
  openapiRoute: string;
14
+ tasks: string;
15
+ outbox: string;
16
+ schedules: string;
14
17
  appContext: string;
15
18
  ports: string;
16
19
  infrastructurePorts: string;
@@ -18,6 +21,11 @@ export type BeignetPaths = {
18
21
  policies: string;
19
22
  useCases: string;
20
23
  useCaseBuilder: string;
24
+ listenersBuilder: string;
25
+ jobsBuilder: string;
26
+ schedulesBuilder: string;
27
+ notificationsBuilder: string;
28
+ tasksBuilder: string;
21
29
  tests: string;
22
30
  };
23
31
  /**
@@ -1 +1 @@
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,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;;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,qBAgBlC,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"}
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
@@ -12,6 +12,9 @@ export const defaultBeignetConfig = {
12
12
  routes: "app/api",
13
13
  server: "server/index.ts",
14
14
  openapiRoute: "app/api/openapi/route.ts",
15
+ tasks: "server/tasks.ts",
16
+ outbox: "server/outbox.ts",
17
+ schedules: "server/schedules.ts",
15
18
  appContext: "app-context.ts",
16
19
  ports: "ports/index.ts",
17
20
  infrastructurePorts: "infra/app-ports.ts",
@@ -19,6 +22,11 @@ export const defaultBeignetConfig = {
19
22
  policies: "features",
20
23
  useCases: "features",
21
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",
22
30
  tests: "tests",
23
31
  },
24
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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"}
@@ -0,0 +1,136 @@
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 { featureChoices, integrationChoices, packageManagerChoices, presetIntegrationDefaults, } from "./choices.js";
9
+ /**
10
+ * Decide whether `beignet create` should run the interactive prompt flow.
11
+ *
12
+ * Prompts run only on a full TTY, only when `--yes` is absent, and only when
13
+ * no selection flag was passed. Any explicit preset, feature, integration, or
14
+ * package manager selection means the invocation is scripted, so the
15
+ * non-interactive path stays byte-identical for agents and CI.
16
+ */
17
+ export function shouldPromptInteractively(flags, tty) {
18
+ if (!tty.stdin || !tty.stdout)
19
+ return false;
20
+ if (flags.yes)
21
+ return false;
22
+ const selectionFlagPassed = flags.preset !== undefined ||
23
+ (flags.features?.length ?? 0) > 0 ||
24
+ (flags.integrations?.length ?? 0) > 0 ||
25
+ flags.packageManager !== undefined;
26
+ return !selectionFlagPassed;
27
+ }
28
+ const featureHints = {
29
+ client: "Typed Beignet HTTP client",
30
+ "react-query": "TanStack Query helpers for contracts",
31
+ forms: "React Hook Form wired to contract bodies",
32
+ openapi: "OpenAPI document route generated from contracts",
33
+ };
34
+ const integrationHints = {
35
+ "better-auth": "Better Auth routes and auth provider wiring",
36
+ "drizzle-turso": "Drizzle/libSQL persistence with Turso-ready config",
37
+ inngest: "Inngest-backed background jobs",
38
+ pino: "Pino logger provider",
39
+ resend: "Resend-backed mail provider",
40
+ "upstash-rate-limit": "Upstash-backed rate limiting",
41
+ };
42
+ /**
43
+ * Run the interactive `beignet create` prompt flow.
44
+ *
45
+ * Returns the completed selections, or undefined when the user cancels.
46
+ */
47
+ export async function promptCreateSelections(initial) {
48
+ const prompts = await import("@clack/prompts");
49
+ prompts.intro("beignet create");
50
+ let directory = initial.directory;
51
+ if (directory === undefined) {
52
+ const answer = await prompts.text({
53
+ message: "Where should the app be created?",
54
+ placeholder: "my-app",
55
+ validate: (value) => value === undefined || value.trim() === ""
56
+ ? "Enter a project directory."
57
+ : undefined,
58
+ });
59
+ if (prompts.isCancel(answer))
60
+ return undefined;
61
+ directory = answer;
62
+ }
63
+ const preset = await prompts.select({
64
+ message: "Which starter preset?",
65
+ options: [
66
+ {
67
+ value: "standard",
68
+ label: "standard",
69
+ hint: "Full app layout with auth, database, jobs, and devtools",
70
+ },
71
+ {
72
+ value: "minimal",
73
+ label: "minimal",
74
+ hint: "Smallest contract/server/use-case loop",
75
+ },
76
+ ],
77
+ initialValue: "standard",
78
+ });
79
+ if (prompts.isCancel(preset))
80
+ return undefined;
81
+ // The standard preset already includes every starter feature, so the
82
+ // feature multiselect only appears when the preset leaves features open.
83
+ let features;
84
+ if (preset === "minimal") {
85
+ const answer = await prompts.multiselect({
86
+ message: "Add starter features? (press enter to skip)",
87
+ options: featureChoices.map((feature) => ({
88
+ value: feature,
89
+ label: feature,
90
+ hint: featureHints[feature],
91
+ })),
92
+ required: false,
93
+ });
94
+ if (prompts.isCancel(answer))
95
+ return undefined;
96
+ features = answer;
97
+ }
98
+ const presetIntegrations = new Set(presetIntegrationDefaults[preset]);
99
+ const integrationOptions = integrationChoices.filter((integration) => !presetIntegrations.has(integration));
100
+ let integrations;
101
+ if (integrationOptions.length > 0) {
102
+ const answer = await prompts.multiselect({
103
+ message: presetIntegrations.size > 0
104
+ ? "Add provider integrations beyond the preset defaults? (press enter to skip)"
105
+ : "Add provider integrations? (press enter to skip)",
106
+ options: integrationOptions.map((integration) => ({
107
+ value: integration,
108
+ label: integration,
109
+ hint: integrationHints[integration],
110
+ })),
111
+ required: false,
112
+ });
113
+ if (prompts.isCancel(answer))
114
+ return undefined;
115
+ integrations = answer;
116
+ }
117
+ const packageManager = await prompts.select({
118
+ message: "Which package manager?",
119
+ options: packageManagerChoices.map((manager) => ({
120
+ value: manager,
121
+ label: manager,
122
+ })),
123
+ initialValue: "bun",
124
+ });
125
+ if (prompts.isCancel(packageManager))
126
+ return undefined;
127
+ prompts.outro(`Creating ${directory}`);
128
+ return {
129
+ directory,
130
+ preset,
131
+ features,
132
+ integrations,
133
+ packageManager,
134
+ };
135
+ }
136
+ //# sourceMappingURL=create-prompts.js.map