stacks 0.58.28 → 0.58.30

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 (233) hide show
  1. package/core/README.md +1 -1
  2. package/core/actions/dist/src/deploy/index.js +1 -1
  3. package/core/actions/dist/src/dev/components.js +1 -1
  4. package/core/actions/dist/src/dev/index.js +10 -0
  5. package/core/actions/dist/src/generate/lib-entries.js +3 -3
  6. package/core/actions/dist/src/helpers/lib-entries.js +3 -3
  7. package/core/actions/dist/src/index.js +10 -0
  8. package/core/actions/dist/src/lint/fix.js +1 -1
  9. package/core/actions/dist/src/release.js +8 -0
  10. package/core/actions/dist/src/upgrade.js +1 -1
  11. package/core/actions/package.json +1 -1
  12. package/core/actions/src/build/docs.ts +7 -0
  13. package/core/actions/src/deploy/index.ts +1 -1
  14. package/core/actions/src/dev/api.ts +2 -2
  15. package/core/actions/src/dev/components.ts +1 -1
  16. package/core/actions/src/dev/dashboard.ts +7 -0
  17. package/core/actions/src/dev/desktop.ts +3 -3
  18. package/core/actions/src/dev/index.ts +10 -0
  19. package/core/actions/src/dev/system-tray.ts +6 -0
  20. package/core/actions/src/helpers/lib-entries.ts +3 -3
  21. package/core/actions/src/lint/fix.ts +1 -1
  22. package/core/ai/package.json +3 -3
  23. package/core/alias/package.json +1 -1
  24. package/core/analytics/package.json +1 -1
  25. package/core/api/package.json +1 -1
  26. package/core/arrays/package.json +1 -1
  27. package/core/auth/package.json +1 -1
  28. package/core/buddy/README.md +2 -2
  29. package/core/buddy/dist/{chunk-b75e6db0012faa55.js → chunk-0455e53fab4244b1.js} +1 -4
  30. package/core/buddy/dist/{chunk-fd47b42fb923a4be.js → chunk-61e8f138963fc709.js} +173 -137
  31. package/core/buddy/dist/cli.js +2 -2
  32. package/core/buddy/dist/index.js +2 -2
  33. package/core/buddy/package.json +1 -1
  34. package/core/buddy/src/commands/add.ts +4 -0
  35. package/core/buddy/src/commands/build.ts +12 -1
  36. package/core/buddy/src/commands/changelog.ts +2 -0
  37. package/core/buddy/src/commands/clean.ts +2 -0
  38. package/core/buddy/src/commands/cloud.ts +6 -0
  39. package/core/buddy/src/commands/commit.ts +2 -0
  40. package/core/buddy/src/commands/configure.ts +3 -0
  41. package/core/buddy/src/commands/create.ts +8 -8
  42. package/core/buddy/src/commands/deploy.ts +24 -23
  43. package/core/buddy/src/commands/dev.ts +50 -10
  44. package/core/buddy/src/commands/dns.ts +2 -0
  45. package/core/buddy/src/commands/domains.ts +2 -0
  46. package/core/buddy/src/commands/example.ts +4 -0
  47. package/core/buddy/src/commands/fresh.ts +2 -0
  48. package/core/buddy/src/commands/generate.ts +12 -3
  49. package/core/buddy/src/commands/http.ts +2 -0
  50. package/core/buddy/src/commands/install.ts +2 -0
  51. package/core/buddy/src/commands/key.ts +4 -2
  52. package/core/buddy/src/commands/lint.ts +3 -0
  53. package/core/buddy/src/commands/make.ts +11 -1
  54. package/core/buddy/src/commands/migrate.ts +3 -0
  55. package/core/buddy/src/commands/prepublish.ts +2 -0
  56. package/core/buddy/src/commands/release.ts +2 -0
  57. package/core/buddy/src/commands/seed.ts +2 -0
  58. package/core/buddy/src/commands/setup.ts +33 -34
  59. package/core/buddy/src/commands/test.ts +2 -0
  60. package/core/buddy/src/commands/tinker.ts +2 -0
  61. package/core/buddy/src/commands/types.ts +3 -0
  62. package/core/buddy/src/commands/upgrade.ts +6 -0
  63. package/core/build/package.json +1 -1
  64. package/core/bun-create/bud/package.json +3 -2
  65. package/core/bun-create/buddy/package.json +2 -2
  66. package/core/bun-create/stack/package.json +2 -2
  67. package/core/bun-create/stacks/package.json +2 -2
  68. package/core/bun-create/stx/package.json +2 -2
  69. package/core/bun-plugin-yaml/dist/index.js +1 -19
  70. package/core/bun-plugin-yaml/package.json +1 -1
  71. package/core/bun-plugin-yaml/src/index.ts +1 -1
  72. package/core/cache/package.json +2 -2
  73. package/core/chat/package.json +1 -1
  74. package/core/cli/dist/index.js +24 -23
  75. package/core/cli/package.json +1 -1
  76. package/core/cli/src/helpers.ts +21 -31
  77. package/core/cli/src/run.ts +9 -7
  78. package/core/cloud/buddy +2 -0
  79. package/core/cloud/package.json +33 -33
  80. package/core/cloud/src/cloud/ai.ts +45 -36
  81. package/core/cloud/src/cloud/aws-sdk-layer/nodejs/package-lock.json +10 -10
  82. package/core/cloud/src/cloud/aws-sdk-layer/nodejs/package.json +2 -2
  83. package/core/cloud/src/cloud/cdn.ts +44 -5
  84. package/core/cloud/src/cloud/cli.ts +45 -0
  85. package/core/cloud/src/cloud/compute.ts +1 -1
  86. package/core/cloud/src/cloud/index.ts +6 -1
  87. package/core/cloud/src/cloud/lambda/cli-setup/index.js +67 -0
  88. package/core/cloud/src/index.ts +1 -0
  89. package/core/cloud/src/runtime/example/lambda.ts +1 -1
  90. package/core/cloud/src/runtime/runtime.ts +1 -0
  91. package/core/cloud/src/runtime/server.ts +1 -1
  92. package/core/collections/package.json +1 -1
  93. package/core/config/dist/index.js +130 -122
  94. package/core/config/package.json +1 -1
  95. package/core/config/src/overrides.ts +0 -2
  96. package/core/database/package.json +2 -2
  97. package/core/database/src/kysely-bun-worker/driver.ts +1 -0
  98. package/core/database/src/kysely-bun-worker/worker.ts +1 -1
  99. package/core/datetime/package.json +1 -1
  100. package/core/desktop/dist/index.js +6 -0
  101. package/core/desktop/package.json +5 -5
  102. package/core/desktop/src/index.ts +2 -0
  103. package/core/desktop/src/system-tray.ts +1 -0
  104. package/core/development/package.json +1 -1
  105. package/core/dns/package.json +7 -7
  106. package/core/docs/build.ts +1 -1
  107. package/core/docs/dist/index.js +29878 -9995
  108. package/core/docs/package.json +6 -5
  109. package/core/docs/src/index.ts +7 -1
  110. package/core/docs/src/meta.ts +32 -0
  111. package/core/docs/src/scripts/pwa.ts +116 -0
  112. package/core/email/email-forwarder.cjs +1 -0
  113. package/core/email/package.json +3 -3
  114. package/core/email/src/server/converter.ts +1 -0
  115. package/core/email/src/server/inbound.ts +1 -0
  116. package/core/email/src/server/outbound.ts +6 -4
  117. package/core/enums/dist/index.js +4 -2
  118. package/core/enums/package.json +1 -1
  119. package/core/enums/src/index.ts +4 -2
  120. package/core/env/package.json +1 -1
  121. package/core/error-handling/package.json +1 -1
  122. package/core/eslint-config/package.json +18 -18
  123. package/core/eslint-config/src/configs/comments.ts +1 -1
  124. package/core/eslint-config/src/configs/imports.ts +9 -0
  125. package/core/eslint-config/src/configs/svelte.ts +1 -0
  126. package/core/eslint-config/src/configs/unicorn.ts +1 -1
  127. package/core/eslint-config/src/configs/vue.ts +0 -1
  128. package/core/eslint-config/src/factory.ts +2 -8
  129. package/core/events/package.json +1 -1
  130. package/core/faker/package.json +2 -2
  131. package/core/git/dist/index.js +40 -0
  132. package/core/git/package.json +3 -3
  133. package/core/git/src/index.ts +62 -0
  134. package/core/health/package.json +1 -1
  135. package/core/http/package.json +1 -1
  136. package/core/lint/package.json +1 -1
  137. package/core/logging/dist/index.js +0 -6
  138. package/core/logging/package.json +1 -1
  139. package/core/music/package.json +3 -3
  140. package/core/notifications/package.json +2 -2
  141. package/core/objects/package.json +1 -1
  142. package/core/orm/package.json +1 -1
  143. package/core/path/dist/index.js +6 -3
  144. package/core/path/package.json +1 -1
  145. package/core/path/src/index.ts +7 -3
  146. package/core/payments/dist/index.js +2 -5
  147. package/core/payments/package.json +3 -3
  148. package/core/push/package.json +1 -1
  149. package/core/query-builder/package.json +1 -1
  150. package/core/queue/package.json +1 -1
  151. package/core/raycast/package.json +5 -0
  152. package/core/raycast/src/index.ts +0 -0
  153. package/core/realtime/package.json +1 -1
  154. package/core/repl/package.json +1 -1
  155. package/core/router/dist/index.js +16 -496
  156. package/core/router/package.json +1 -1
  157. package/core/router/src/middleware.ts +16 -14
  158. package/core/scheduler/package.json +1 -1
  159. package/core/search-engine/package.json +2 -2
  160. package/core/security/dist/index.js +3 -6
  161. package/core/security/package.json +2 -2
  162. package/core/server/dist/index.js +6 -2
  163. package/core/server/package.json +2 -2
  164. package/core/server/src/config.ts +14 -9
  165. package/core/signals/package.json +1 -1
  166. package/core/slug/package.json +1 -1
  167. package/core/sms/package.json +1 -1
  168. package/core/storage/dist/index.js +28 -10
  169. package/core/storage/package.json +1 -1
  170. package/core/storage/src/files.ts +10 -2
  171. package/core/storage/src/zip.ts +1 -1
  172. package/core/strings/package.json +3 -3
  173. package/core/stx +2 -0
  174. package/core/tables/package.json +3 -3
  175. package/core/testing/package.json +3 -3
  176. package/core/tinker/package.json +1 -1
  177. package/core/tsconfig.json +4 -9
  178. package/core/tunnel/package.json +1 -1
  179. package/core/types/dist/index.js +3 -1
  180. package/core/types/package.json +13 -13
  181. package/core/types/src/cli.ts +3 -3
  182. package/core/types/src/cloud.ts +4 -1
  183. package/core/types/src/dns.ts +1 -1
  184. package/core/types/src/native.ts +0 -0
  185. package/core/types/src/stacks.ts +0 -10
  186. package/core/ui/package.json +8 -8
  187. package/core/utils/dist/index.js +1 -1
  188. package/core/utils/package.json +1 -1
  189. package/core/validation/package.json +1 -1
  190. package/core/vite/README.md +1 -1
  191. package/core/vite/build.ts +1 -1
  192. package/core/vite/dist/index.js +211 -203
  193. package/core/vite/package.json +5 -5
  194. package/core/vite/src/components.ts +1 -1
  195. package/core/vite/src/dashboard.ts +100 -0
  196. package/core/vite/src/desktop.ts +2 -58
  197. package/core/vite/src/example-vue.ts +1 -1
  198. package/core/vite/src/example-wc.ts +1 -1
  199. package/core/vite/src/functions.ts +1 -1
  200. package/core/vite/src/index.ts +9 -11
  201. package/core/vite/src/plugin/auto-imports.ts +1 -1
  202. package/core/vite/src/plugin/layouts.ts +6 -7
  203. package/core/vite/src/plugin/router.ts +3 -1
  204. package/core/vite/src/system-tray.ts +100 -0
  205. package/core/vite/src/views.ts +13 -2
  206. package/core/vite/src/web-components.ts +1 -1
  207. package/core/whois/dist/index.js +1 -2
  208. package/core/whois/package.json +1 -1
  209. package/core/whois/src/index.ts +10 -8
  210. package/core/x-ray/package.json +1 -1
  211. package/core/zsh-buddy/README.md +51 -0
  212. package/core/zsh-buddy/package.json +29 -0
  213. package/ide/dictionary.txt +12 -0
  214. package/ide/jetbrains/.idea/stacks.iml +0 -1
  215. package/ide/vscode/.vscode/settings.json +7 -2
  216. package/ide/vscode/package.json +2 -4
  217. package/package.json +12 -7
  218. package/core/cloud/src/server/.dockerignore +0 -15
  219. package/core/cloud/src/server/Dockerfile +0 -21
  220. package/core/cloud/src/server/index.ts +0 -3
  221. package/core/cloud/src/server/package.json +0 -12
  222. package/core/cloud/src/server/runtime.ts +0 -828
  223. package/core/scripts/build +0 -58
  224. package/core/scripts/ensure +0 -33
  225. package/core/scripts/fresh +0 -14
  226. package/core/scripts/link +0 -14
  227. package/core/scripts/move-built-src-files.ts +0 -28
  228. package/core/scripts/move-dts-files.ts +0 -35
  229. package/core/scripts/publish +0 -43
  230. package/core/scripts/setup +0 -176
  231. package/core/tables/vite.config.ts +0 -84
  232. package/core/vite/src/plugin/index.ts +0 -21
  233. /package/core/vite/src/{stacks.ts → plugins.ts} +0 -0
@@ -16,8 +16,8 @@ install,
16
16
  key,
17
17
  release,
18
18
  setup
19
- } from "./chunk-fd47b42fb923a4be.js";
20
- import"./chunk-b75e6db0012faa55.js";
19
+ } from "./chunk-61e8f138963fc709.js";
20
+ import"./chunk-0455e53fab4244b1.js";
21
21
 
22
22
  // src/cli.ts
23
23
  import process from "process";
@@ -32,8 +32,8 @@ tinker,
32
32
  types,
33
33
  upgrade,
34
34
  version
35
- } from "./chunk-fd47b42fb923a4be.js";
36
- import"./chunk-b75e6db0012faa55.js";
35
+ } from "./chunk-61e8f138963fc709.js";
36
+ import"./chunk-0455e53fab4244b1.js";
37
37
  export {
38
38
  version,
39
39
  upgrade,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/buddy",
3
3
  "type": "module",
4
- "version": "0.58.28",
4
+ "version": "0.58.30",
5
5
  "description": "Meet Buddy. The Stacks runtime.",
6
6
  "author": "Chris Breuer",
7
7
  "license": "MIT",
@@ -10,6 +10,7 @@ export function add(buddy: CLI) {
10
10
  calendar: 'Add the Calendar Stack to your project',
11
11
  all: 'Add all stacks',
12
12
  select: 'Which stack/s are you trying to add?',
13
+ project: 'Target a specific project',
13
14
  verbose: 'Enable verbose output',
14
15
  }
15
16
 
@@ -18,6 +19,7 @@ export function add(buddy: CLI) {
18
19
  .option('-t, --table', descriptions.table, { default: false })
19
20
  .option('-c, --calendar', descriptions.calendar, { default: false })
20
21
  .option('-a, --all', descriptions.all, { default: false })
22
+ .option('-p, --project', descriptions.project, { default: false })
21
23
  .option('--verbose', descriptions.verbose, { default: false })
22
24
  .action(async (options: BuildOptions) => {
23
25
  if (hasNoOptions(options)) {
@@ -41,6 +43,7 @@ export function add(buddy: CLI) {
41
43
  buddy
42
44
  .command('add:table', descriptions.table)
43
45
  .option('-t, --table', descriptions.table, { default: true })
46
+ .option('-p, --project', descriptions.project, { default: false })
44
47
  .option('--verbose', descriptions.verbose, { default: false })
45
48
  .action(async (options: BuildOptions) => {
46
49
  await runAdd(options)
@@ -49,6 +52,7 @@ export function add(buddy: CLI) {
49
52
  buddy
50
53
  .command('add:calendar', descriptions.calendar)
51
54
  .option('-t, --calendar', descriptions.calendar, { default: true })
55
+ .option('-p, --project', descriptions.project, { default: false })
52
56
  .option('--verbose', descriptions.verbose, { default: false })
53
57
  .action(async (options: BuildOptions) => {
54
58
  await runAdd(options)
@@ -18,6 +18,7 @@ export function build(buddy: CLI) {
18
18
  docs: 'Build your documentation',
19
19
  framework: 'Build Stacks framework',
20
20
  select: 'What are you trying to build?',
21
+ project: 'Target a specific project',
21
22
  verbose: 'Enable verbose output',
22
23
  }
23
24
 
@@ -31,6 +32,7 @@ export function build(buddy: CLI) {
31
32
  .option('-p, --views', descriptions.pages)
32
33
  .option('-d, --docs', descriptions.docs)
33
34
  .option('-s, --stacks', descriptions.framework, { default: false })
35
+ .option('-p, --project', descriptions.project, { default: false })
34
36
  .option('--verbose', descriptions.verbose, { default: false })
35
37
  .action(async (options: BuildOptions) => {
36
38
  if (hasNoOptions(options)) {
@@ -64,6 +66,7 @@ export function build(buddy: CLI) {
64
66
  buddy
65
67
  .command('build:components', 'Automagically build component libraries for production use & npm/CDN distribution')
66
68
  .option('-c, --components', descriptions.components, { default: true })
69
+ .option('-p, --project', descriptions.project, { default: false })
67
70
  .option('--verbose', descriptions.verbose, { default: false })
68
71
  .action(async (options: BuildOptions) => {
69
72
  await runAction(Action.BuildComponentLibs, options)
@@ -72,6 +75,7 @@ export function build(buddy: CLI) {
72
75
  buddy
73
76
  .command('build:cli', 'Automagically build the CLI')
74
77
  .option('-c, --components', descriptions.components, { default: true })
78
+ .option('-p, --project', descriptions.project, { default: false })
75
79
  .option('--verbose', descriptions.verbose, { default: false })
76
80
  .action(async (options: BuildOptions) => {
77
81
  await runAction(Action.BuildCli, options)
@@ -80,6 +84,7 @@ export function build(buddy: CLI) {
80
84
  buddy
81
85
  .command('build:functions', 'Automagically build function library for npm/CDN distribution')
82
86
  .option('-f, --functions', descriptions.functions, { default: true })
87
+ .option('-p, --project', descriptions.project, { default: false })
83
88
  .option('--verbose', descriptions.verbose, { default: false })
84
89
  .action(async (options: BuildOptions) => {
85
90
  await runAction(Action.BuildFunctionLib, options)
@@ -88,6 +93,7 @@ export function build(buddy: CLI) {
88
93
  buddy
89
94
  .command('build:vue-components', 'Automagically build Vue component library for npm/CDN distribution')
90
95
  .option('-v, --vue-components', descriptions.vueComponents, { default: true })
96
+ .option('-p, --project', descriptions.project, { default: false })
91
97
  .option('--verbose', descriptions.verbose, { default: false })
92
98
  .alias('build:vue')
93
99
  .action(async (options: BuildOptions) => {
@@ -97,6 +103,7 @@ export function build(buddy: CLI) {
97
103
  buddy
98
104
  .command('build:web-components', 'Automagically build Web Component library for npm/CDN distribution')
99
105
  .option('-w, --web-components', descriptions.webComponents, { default: true })
106
+ .option('-p, --project', descriptions.project, { default: false })
100
107
  .option('--verbose', descriptions.verbose, { default: false })
101
108
  .alias('build:elements')
102
109
  .alias('build:wc')
@@ -107,6 +114,7 @@ export function build(buddy: CLI) {
107
114
  buddy
108
115
  .command('build:docs', 'Automagically build your documentation site.')
109
116
  .option('-d, --docs', descriptions.docs, { default: true })
117
+ .option('-p, --project', descriptions.project, { default: false })
110
118
  .option('--verbose', descriptions.verbose, { default: false })
111
119
  .action(async (options: BuildOptions) => {
112
120
  await runAction(Action.BuildDocs, options)
@@ -114,6 +122,7 @@ export function build(buddy: CLI) {
114
122
 
115
123
  buddy
116
124
  .command('build:core', 'Automagically build the Stacks core.')
125
+ .option('-p, --project', descriptions.project, { default: false })
117
126
  .option('--verbose', descriptions.verbose, { default: true })
118
127
  .action(async (options: BuildOptions) => {
119
128
  const startTime = await intro('buddy build:core')
@@ -129,6 +138,7 @@ export function build(buddy: CLI) {
129
138
 
130
139
  buddy
131
140
  .command('build:desktop', descriptions.desktop)
141
+ .option('-p, --project', descriptions.project, { default: false })
132
142
  .option('--verbose', descriptions.verbose, { default: false })
133
143
  .action(async (options: BuildOptions) => {
134
144
  const perf = await intro('buddy build:desktop')
@@ -148,6 +158,7 @@ export function build(buddy: CLI) {
148
158
  buddy
149
159
  .command('build:stacks', 'Build the Stacks framework.')
150
160
  .option('-s, --stacks', descriptions.framework, { default: true })
161
+ .option('-p, --project', descriptions.project, { default: false })
151
162
  .option('--verbose', descriptions.verbose, { default: false })
152
163
  .action(async (options: BuildOptions) => {
153
164
  const startTime = await intro('buddy build:stacks')
@@ -168,5 +179,5 @@ export function build(buddy: CLI) {
168
179
  }
169
180
 
170
181
  function hasNoOptions(options: BuildOptions) {
171
- return !options.components && !options.vueComponents && !options.webComponents && !options.elements && !options.functions && !options.pages && !options.docs && !options.framework
182
+ return !options.components && !options.vueComponents && !options.webComponents && !options.elements && !options.functions && !options.pages && !options.docs && !options.stacks
172
183
  }
@@ -9,12 +9,14 @@ export function changelog(buddy: CLI) {
9
9
  const descriptions = {
10
10
  changelog: 'Create a CHANGELOG.md file',
11
11
  quiet: 'Minimal output',
12
+ project: 'Target a specific project',
12
13
  verbose: 'Enable verbose output',
13
14
  }
14
15
 
15
16
  buddy
16
17
  .command('changelog', descriptions.changelog)
17
18
  .option('--quiet', descriptions.quiet, { default: false })
19
+ .option('-p, --project', descriptions.project, { default: false })
18
20
  .option('--verbose', descriptions.verbose, { default: false })
19
21
  .action(async (options: FreshOptions) => {
20
22
  const perf = await intro('buddy changelog')
@@ -8,11 +8,13 @@ import { Action } from '@stacksjs/enums'
8
8
  export function clean(buddy: CLI) {
9
9
  const descriptions = {
10
10
  clean: 'Removes all node_modules & lock files',
11
+ project: 'Target a specific project',
11
12
  verbose: 'Enable verbose output',
12
13
  }
13
14
 
14
15
  buddy
15
16
  .command('clean', descriptions.clean)
17
+ .option('-p, --project', descriptions.project, { default: false })
16
18
  .option('--verbose', descriptions.verbose, { default: false })
17
19
  .action(async (options: CleanOptions) => {
18
20
  const perf = await intro('buddy clean')
@@ -14,6 +14,7 @@ export function cloud(buddy: CLI) {
14
14
  remove: 'Removes the Stacks Cloud. In case it fails, try again',
15
15
  optimizeCost: 'Removes certain resources that may be re-applied at a later time',
16
16
  cleanUp: 'Removes all resources that were retained during the cloud deletion',
17
+ project: 'Target a specific project',
17
18
  verbose: 'Enable verbose output',
18
19
  }
19
20
 
@@ -21,6 +22,7 @@ export function cloud(buddy: CLI) {
21
22
  .command('cloud', descriptions.cloud)
22
23
  .option('--ssh', descriptions.ssh, { default: false })
23
24
  .option('--connect', descriptions.ssh, { default: false })
25
+ .option('-p, --project', descriptions.project, { default: false })
24
26
  .option('--verbose', descriptions.verbose, { default: false })
25
27
  .action(async (options: CloudCliOptions) => {
26
28
  if (options.ssh || options.connect) {
@@ -48,6 +50,7 @@ export function cloud(buddy: CLI) {
48
50
  buddy
49
51
  .command('cloud:add', descriptions.add)
50
52
  .option('--jump-box', 'Remove the jump-box', { default: false })
53
+ .option('-p, --project', descriptions.project, { default: false })
51
54
  .option('--verbose', descriptions.verbose, { default: false })
52
55
  .action(async (options: CloudCliOptions) => {
53
56
  const startTime = await intro('buddy cloud:add')
@@ -95,6 +98,7 @@ export function cloud(buddy: CLI) {
95
98
  .alias('cloud:rm')
96
99
  .alias('undeploy')
97
100
  .option('--jump-box', 'Remove the jump-box', { default: false })
101
+ .option('-p, --project', descriptions.project, { default: false })
98
102
  .option('--verbose', descriptions.verbose, { default: false })
99
103
  .action(async (options: CloudCliOptions) => {
100
104
  const startTime = await intro('buddy cloud:remove')
@@ -176,6 +180,7 @@ export function cloud(buddy: CLI) {
176
180
  buddy
177
181
  .command('cloud:optimize-cost', descriptions.optimizeCost)
178
182
  .option('--jump-box', 'Remove the jump-box', { default: true })
183
+ .option('-p, --project', descriptions.project, { default: false })
179
184
  .option('--verbose', descriptions.verbose, { default: false })
180
185
  .action(async (options: CloudCliOptions) => {
181
186
  const startTime = await intro('buddy cloud:remove')
@@ -205,6 +210,7 @@ export function cloud(buddy: CLI) {
205
210
  buddy
206
211
  .command('cloud:cleanup', descriptions.cleanUp)
207
212
  .alias('cloud:clean-up')
213
+ .option('-p, --project', descriptions.project, { default: false })
208
214
  .option('--verbose', descriptions.verbose, { default: false })
209
215
  .action(async () => {
210
216
  const startTime = await intro('buddy cloud:cleanup')
@@ -5,11 +5,13 @@ import { runCommit } from '@stacksjs/actions'
5
5
  export function commit(buddy: CLI) {
6
6
  const descriptions = {
7
7
  commit: 'Commit your stashed changes',
8
+ project: 'Target a specific project',
8
9
  verbose: 'Enable verbose output',
9
10
  }
10
11
 
11
12
  buddy
12
13
  .command('commit', descriptions.commit)
14
+ .option('-p, --project', descriptions.project, { default: false })
13
15
  .option('--verbose', descriptions.verbose, { default: false })
14
16
  .action(async (options: FreshOptions) => {
15
17
  await runCommit(options)
@@ -9,12 +9,14 @@ export function configure(buddy: CLI) {
9
9
  const descriptions = {
10
10
  configure: 'Configure options',
11
11
  aws: 'Configure the AWS connection',
12
+ project: 'Target a specific project',
12
13
  verbose: 'Enable verbose output',
13
14
  }
14
15
 
15
16
  buddy
16
17
  .command('configure', descriptions.configure)
17
18
  .option('--aws', descriptions.aws, { default: false })
19
+ .option('-p, --project', descriptions.project, { default: false })
18
20
  .option('--verbose', descriptions.verbose, { default: false })
19
21
  .action(async (options?: ConfigureOptions) => {
20
22
  if (options?.aws) {
@@ -40,6 +42,7 @@ export function configure(buddy: CLI) {
40
42
 
41
43
  buddy
42
44
  .command('configure:aws', descriptions.aws)
45
+ .option('-p, --project', descriptions.project, { default: false })
43
46
  .option('--verbose', descriptions.verbose, { default: false })
44
47
  .action(async (options?: ConfigureOptions) => {
45
48
  const startTime = performance.now()
@@ -15,10 +15,11 @@ export function create(buddy: CLI) {
15
15
  components: 'Are you building UI components?',
16
16
  webComponents: 'Automagically built optimized custom elements/web components?',
17
17
  vue: 'Automagically built a Vue component library?',
18
- pages: 'How about views/views?',
18
+ views: 'How about views?',
19
19
  functions: 'Are you developing functions/composables?',
20
20
  api: 'Are you building an API?',
21
21
  database: 'Do you need a database?',
22
+ project: 'Target a specific project',
22
23
  verbose: 'Enable verbose output',
23
24
  }
24
25
 
@@ -28,10 +29,11 @@ export function create(buddy: CLI) {
28
29
  .option('-c, --components', descriptions.components, { default: true }) // if no, -v and -w would be false
29
30
  .option('-w, --web-components', descriptions.webComponents, { default: true })
30
31
  .option('-v, --vue', descriptions.vue, { default: true })
31
- .option('-p, --views', descriptions.pages, { default: true }) // views need an HTTP server
32
+ .option('-p, --views', descriptions.views, { default: true }) // i.e. `buddy dev`
32
33
  .option('-f, --functions', descriptions.functions, { default: true }) // if no, API would be false
33
34
  .option('-a, --api', descriptions.api, { default: true }) // APIs need an HTTP server & assumes functions is true
34
35
  .option('-d, --database', descriptions.database, { default: true })
36
+ .option('-p, --project', descriptions.project, { default: false })
35
37
  .option('--verbose', descriptions.verbose, { default: false })
36
38
  // .option('--auth', 'Scaffold an authentication?', { default: true })
37
39
  .action(async (options: CreateOptions) => {
@@ -57,8 +59,6 @@ export function create(buddy: CLI) {
57
59
  }
58
60
 
59
61
  log.info(bold('Welcome to the Stacks Framework! ⚛️'))
60
- // console.log(`cd ${link(path, `vscode://file/${path}:1`)} && code .`)
61
- // console.log()
62
62
  log.info('To learn more, visit https://stacksjs.org')
63
63
 
64
64
  process.exit(ExitCode.Success)
@@ -89,7 +89,7 @@ function onlineCheck() {
89
89
 
90
90
  async function download(name: string, path: string, options: CreateOptions) {
91
91
  log.info('Setting up your stack.')
92
- const result = await runCommand(`giget stacks ${name}`, options)
92
+ const result = await runCommand(`bunx giget stacks ${name}`, options)
93
93
  log.success(`Successfully scaffolded your project at ${cyan(path)}`)
94
94
 
95
95
  return result
@@ -97,8 +97,7 @@ async function download(name: string, path: string, options: CreateOptions) {
97
97
 
98
98
  async function ensureEnv(path: string, options: CreateOptions) {
99
99
  log.info('Ensuring your environment is ready...')
100
- // todo: this should check for whether the proper Node version is installed because fnm is not a requirement
101
- await runCommand('tea -SE', { ...options, cwd: path })
100
+ await runCommand('pkgx --update ', { ...options, cwd: path })
102
101
  log.success('Environment is ready')
103
102
  }
104
103
 
@@ -120,8 +119,9 @@ async function install(path: string, options: CreateOptions) {
120
119
 
121
120
  await runAction(Action.KeyGenerate, { ...options, cwd: path })
122
121
 
123
- result = await runCommand('git init', { ...options, cwd: path })
122
+ // TODO: we should ask quite a few questions here, similar how we do in `buddy new my-project`, so we can generate a custom pkgx.yaml file
124
123
 
124
+ result = await runCommand('git init', { ...options, cwd: path }) // do we need this? or does giget do this already?
125
125
  if (result.isErr()) {
126
126
  log.error(result.error)
127
127
  process.exit(ExitCode.FatalError)
@@ -11,12 +11,14 @@ import { addDomain, hasUserDomainBeenAddedToCloud } from '@stacksjs/dns'
11
11
  export function deploy(buddy: CLI) {
12
12
  const descriptions = {
13
13
  deploy: 'Reinstalls your npm dependencies',
14
+ project: 'Target a specific project',
14
15
  verbose: 'Enable verbose output',
15
16
  }
16
17
 
17
18
  buddy
18
19
  .command('deploy', descriptions.deploy)
19
20
  .option('--domain', 'Specify a domain to deploy to', { default: undefined })
21
+ .option('-p, --project', descriptions.project, { default: false })
20
22
  .option('--verbose', descriptions.verbose, { default: false })
21
23
  .action(async (options: DeployOptions) => {
22
24
  const startTime = await intro('buddy deploy')
@@ -33,6 +35,7 @@ export function deploy(buddy: CLI) {
33
35
  process.exit(ExitCode.FatalError)
34
36
  }
35
37
 
38
+ // TODO: we can improve this check at some point, otherwise domains that legitimately include the word localhost will fail
36
39
  if (domain.includes('localhost')) {
37
40
  log.info('You are deploying to a local environment.')
38
41
  log.info('Please set your .env or ./config/app.ts properly.')
@@ -48,47 +51,45 @@ export function deploy(buddy: CLI) {
48
51
  log.success('Your domain is properly configured.')
49
52
  log.info('Your cloud is deploying...')
50
53
 
51
- console.log(`⏳ ${italic('This may take a while...')}`)
54
+ console.log(`${italic('This may take a while...')}`)
52
55
  await new Promise(resolve => setTimeout(resolve, 2000))
53
56
  options.domain = domain
54
- }
55
57
 
56
- // if the domain hasn't been added to the user's (AWS) cloud, we will add it for them
57
- // and then exit the process with prompts for the user to update their nameservers
58
- else {
59
- console.log('')
60
- log.info(` 👋 It appears to be your first ${italic(domain)} deployment.`)
61
- console.log('')
62
- log.info(italic('Let’s ensure it is all connected properly.'))
63
- log.info(italic('One moment...'))
64
- console.log('')
65
-
66
- options.domain = domain
67
- const result = await addDomain({
68
- ...options,
69
- deploy: true,
70
- startTime,
71
- })
58
+ // now that we know the domain has been added to the users (AWS) cloud, we can deploy
59
+ const result = await runAction(Action.Deploy, options)
72
60
 
73
61
  if (result.isErr()) {
74
62
  await outro('While running the `buddy deploy`, there was an issue', { startTime, useSeconds: true }, result.error)
75
63
  process.exit(ExitCode.FatalError)
76
64
  }
77
65
 
78
- await outro('Added your domain.', { startTime, useSeconds: true })
66
+ await outro('Deployment succeeded.', { startTime, useSeconds: true })
67
+
79
68
  process.exit(ExitCode.Success)
80
69
  }
81
70
 
82
- // now that we know the domain has been added to the users (AWS) cloud, we can deploy
83
- const result = await runAction(Action.Deploy, options)
71
+ // if the domain hasn't been added to the user's (AWS) cloud, we will add it for them
72
+ // and then exit the process with prompts for the user to update their nameservers
73
+ console.log('')
74
+ log.info(` 👋 It appears to be your first ${italic(domain)} deployment.`)
75
+ console.log('')
76
+ log.info(italic('Let’s ensure it is all connected properly.'))
77
+ log.info(italic('One moment...'))
78
+ console.log('')
79
+
80
+ options.domain = domain
81
+ const result = await addDomain({
82
+ ...options,
83
+ deploy: true,
84
+ startTime,
85
+ })
84
86
 
85
87
  if (result.isErr()) {
86
88
  await outro('While running the `buddy deploy`, there was an issue', { startTime, useSeconds: true }, result.error)
87
89
  process.exit(ExitCode.FatalError)
88
90
  }
89
91
 
90
- await outro('Deployment succeeded.', { startTime, useSeconds: true })
91
-
92
+ await outro('Added your domain.', { startTime, useSeconds: true })
92
93
  process.exit(ExitCode.Success)
93
94
  })
94
95
 
@@ -1,10 +1,18 @@
1
1
  import process from 'node:process'
2
2
  import { Action } from '@stacksjs/enums'
3
- import { runAction, runApiDevServer, runComponentsDevServer, runDocsDevServer, runFrontendDevServer } from '@stacksjs/actions'
3
+ import {
4
+ runAction,
5
+ runApiDevServer,
6
+ runComponentsDevServer,
7
+ runDashboardDevServer,
8
+ runDesktopDevServer,
9
+ runDocsDevServer,
10
+ runFrontendDevServer,
11
+ runSystemTrayDevServer,
12
+ } from '@stacksjs/actions'
4
13
  import { ExitCode } from '@stacksjs/types'
5
14
  import type { CLI, DevOptions } from '@stacksjs/types'
6
15
  import { intro, log, outro, prompt, runCommand } from '@stacksjs/cli'
7
- import { sleep } from '@stacksjs/utils'
8
16
  import { libsPath } from '@stacksjs/path'
9
17
 
10
18
  export function dev(buddy: CLI) {
@@ -17,14 +25,16 @@ export function dev(buddy: CLI) {
17
25
  api: 'Start the local API development server',
18
26
  email: 'Start the Email development server',
19
27
  docs: 'Start the Documentation development server',
28
+ systemTray: 'Start the System Tray development server',
20
29
  interactive: 'Get asked which development server to start',
21
30
  select: 'Which development server are you trying to start?',
22
31
  withLocalhost: 'Include the localhost URL in the output',
32
+ project: 'Target a specific project',
23
33
  verbose: 'Enable verbose output',
24
34
  }
25
35
 
26
36
  buddy
27
- .command('dev [server]', descriptions.dev)
37
+ .command('dev [server]', descriptions.dev) // server is optional because options can be used
28
38
  .option('-f, --frontend', descriptions.frontend)
29
39
  .option('-a, --api', descriptions.api)
30
40
  .option('-e, --email', descriptions.email)
@@ -32,8 +42,10 @@ export function dev(buddy: CLI) {
32
42
  .option('-d, --dashboard', descriptions.dashboard)
33
43
  .option('-t, --desktop', descriptions.desktop)
34
44
  .option('-d, --docs', descriptions.docs)
45
+ .option('-t, --system-tray', descriptions.systemTray)
35
46
  .option('-i, --interactive', descriptions.interactive, { default: false })
36
47
  .option('-l, --with-localhost', descriptions.withLocalhost, { default: false })
48
+ .option('-p, --project', descriptions.project, { default: false })
37
49
  .option('--verbose', descriptions.verbose, { default: false })
38
50
  .action(async (server: string | undefined, options: DevOptions) => {
39
51
  const perf = await intro('buddy dev')
@@ -48,9 +60,6 @@ export function dev(buddy: CLI) {
48
60
 
49
61
  // runAction(Action.StartCaddy, { ...options, silent: true })
50
62
 
51
- // just for a better UX
52
- await sleep(100)
53
-
54
63
  switch (server) {
55
64
  case 'frontend':
56
65
  await runFrontendDevServer(options)
@@ -61,12 +70,15 @@ export function dev(buddy: CLI) {
61
70
  case 'components':
62
71
  await runComponentsDevServer(options)
63
72
  break
64
- // case 'dashboard':
65
- // await runDashboardDevServer(options)
66
- // break
73
+ case 'dashboard':
74
+ await runDashboardDevServer(options)
75
+ break
67
76
  case 'desktop':
68
77
  await runDesktopDevServer(options)
69
78
  break
79
+ case 'system-tray':
80
+ await runSystemTrayDevServer(options)
81
+ break
70
82
  // case 'email':
71
83
  // await runEmailDevServer(options)
72
84
  // break
@@ -83,6 +95,7 @@ export function dev(buddy: CLI) {
83
95
  { value: 'all', label: 'All' },
84
96
  { value: 'frontend', label: 'Frontend' },
85
97
  { value: 'api', label: 'Backend' },
98
+ { value: 'dashboard', label: 'Dashboard' },
86
99
  { value: 'desktop', label: 'Desktop' },
87
100
  { value: 'email', label: 'Email' },
88
101
  { value: 'components', label: 'Components' },
@@ -96,6 +109,9 @@ export function dev(buddy: CLI) {
96
109
  else if (answer === 'api') {
97
110
  await runApiDevServer(options)
98
111
  }
112
+ else if (answer === 'dashboard') {
113
+ await runDashboardDevServer(options)
114
+ }
99
115
  // else if (answer === 'email')
100
116
  // await runEmailDevServer(options)
101
117
  else if (answer === 'docs') {
@@ -127,6 +143,7 @@ export function dev(buddy: CLI) {
127
143
 
128
144
  buddy
129
145
  .command('dev:components', descriptions.components)
146
+ .option('-p, --project', descriptions.project, { default: false })
130
147
  .option('--verbose', descriptions.verbose, { default: false })
131
148
  .action(async (options: DevOptions) => {
132
149
  const perf = await intro('buddy dev:components')
@@ -151,6 +168,7 @@ export function dev(buddy: CLI) {
151
168
 
152
169
  buddy
153
170
  .command('dev:docs', descriptions.docs)
171
+ .option('-p, --project', descriptions.project, { default: false })
154
172
  .option('--verbose', descriptions.verbose, { default: false })
155
173
  .action(async (options: DevOptions) => {
156
174
  const perf = await intro('buddy dev:docs')
@@ -169,6 +187,7 @@ export function dev(buddy: CLI) {
169
187
 
170
188
  buddy
171
189
  .command('dev:desktop', descriptions.desktop)
190
+ .option('-p, --project', descriptions.project, { default: false })
172
191
  .option('--verbose', descriptions.verbose, { default: false })
173
192
  .action(async (options: DevOptions) => {
174
193
  const perf = await intro('buddy dev:desktop')
@@ -187,6 +206,7 @@ export function dev(buddy: CLI) {
187
206
 
188
207
  buddy
189
208
  .command('dev:api', descriptions.api)
209
+ .option('-p, --project', descriptions.project, { default: false })
190
210
  .option('--verbose', descriptions.verbose, { default: false })
191
211
  .action(async (options: DevOptions) => {
192
212
  await runApiDevServer(options)
@@ -194,7 +214,8 @@ export function dev(buddy: CLI) {
194
214
 
195
215
  // buddy
196
216
  // .command('dev:functions', descriptions.api)
197
- // .option('--verbose', descriptions.verbose, { default: false })
217
+ .option('-p, --project', descriptions.project, { default: false })//
218
+ .option('--verbose', descriptions.verbose, { default: false })
198
219
  // .action(async (options: DevOptions) => {
199
220
  // await runFunctionsDevServer(options)
200
221
  // })
@@ -203,11 +224,30 @@ export function dev(buddy: CLI) {
203
224
  .command('dev:frontend', descriptions.frontend)
204
225
  .alias('dev:pages')
205
226
  .alias('dev:views')
227
+ .option('-p, --project', descriptions.project, { default: false })
206
228
  .option('--verbose', descriptions.verbose, { default: false })
207
229
  .action(async (options: DevOptions) => {
208
230
  await runFrontendDevServer(options)
209
231
  })
210
232
 
233
+ buddy
234
+ .command('dev:dashboard', descriptions.dashboard)
235
+ .alias('dev:admin')
236
+ .option('-p, --project', descriptions.project, { default: false })
237
+ .option('--verbose', descriptions.verbose, { default: false })
238
+ .action(async (options: DevOptions) => {
239
+ await runDashboardDevServer(options)
240
+ })
241
+
242
+ buddy
243
+ .command('dev:system-tray', descriptions.systemTray)
244
+ .alias('dev:tray')
245
+ .option('-p, --project', descriptions.project, { default: false })
246
+ .option('--verbose', descriptions.verbose, { default: false })
247
+ .action(async (options: DevOptions) => {
248
+ await runSystemTrayDevServer(options)
249
+ })
250
+
211
251
  buddy.on('dev:*', () => {
212
252
  console.error('Invalid command: %s\nSee --help for a list of available commands.', buddy.args.join(' '))
213
253
  process.exit(1)
@@ -37,6 +37,7 @@ export function dns(buddy: CLI) {
37
37
  short: 'Short mode: display nothing but the first result',
38
38
  json: 'Display the output as JSON',
39
39
  pretty: 'Display the output as JSON in a pretty format',
40
+ project: 'Target a specific project',
40
41
  verbose: 'Enable verbose output',
41
42
  }
42
43
 
@@ -55,6 +56,7 @@ export function dns(buddy: CLI) {
55
56
  .option('-1, --short', descriptions.short, { default: false })
56
57
  .option('-J, --json', descriptions.json, { default: false })
57
58
  .option('-p, --pretty', descriptions.pretty, { default: true })
59
+ .option('-p, --project', descriptions.project, { default: false })
58
60
  .option('--verbose', descriptions.verbose, { default: false })
59
61
  .action(async (domain: string | undefined, options: DnsOptions) => {
60
62
  // let prettyOutput = false
@@ -13,6 +13,7 @@ export function domains(buddy: CLI) {
13
13
  add: 'Add a domain to your cloud', // given you already own it with a different registrar
14
14
  remove: 'Remove a domain from your cloud',
15
15
  skip: 'Skip the confirmation prompt',
16
+ project: 'Target a specific project',
16
17
  verbose: 'Enable verbose output',
17
18
  }
18
19
 
@@ -60,6 +61,7 @@ export function domains(buddy: CLI) {
60
61
  .option('--privacy-tech', 'Enable privacy protection for tech', { default: c?.privacyTech || c?.privacy || true })
61
62
  .option('--privacy-registrant', 'Enable privacy protection for registrant', { default: c?.privacyRegistrant || c?.privacy || true })
62
63
  .option('--contact-type <type>', 'Contact type', { default: 'person' })
64
+ .option('-p, --project', descriptions.project, { default: false })
63
65
  .option('--verbose', descriptions.verbose, { default: false })
64
66
  .action(async (domain: string, options: DomainsOptions) => {
65
67
  options.domain = domain
@@ -10,6 +10,7 @@ export function example(buddy: CLI) {
10
10
  vue: 'Test your Vue component library',
11
11
  webComponents: 'Test your web component library',
12
12
  select: 'Which example are you trying to view?',
13
+ project: 'Target a specific project',
13
14
  verbose: 'Enable verbose output',
14
15
  }
15
16
 
@@ -18,6 +19,7 @@ export function example(buddy: CLI) {
18
19
  .option('-c, --components', descriptions.components)
19
20
  .option('-v, --vue', descriptions.vue)
20
21
  .option('-w, --web-components', descriptions.webComponents)
22
+ .option('-p, --project', descriptions.project, { default: false })
21
23
  .option('--verbose', descriptions.verbose, { default: false })
22
24
  .action(async (options: ExamplesOptions) => {
23
25
  // const answer = await prompt.require()
@@ -41,6 +43,7 @@ export function example(buddy: CLI) {
41
43
  buddy
42
44
  .command('example:vue', descriptions.vue)
43
45
  .option('-v, --vue', descriptions.verbose, { default: true })
46
+ .option('-p, --project', descriptions.project, { default: false })
44
47
  .option('--verbose', descriptions.verbose, { default: false })
45
48
  .alias('example:components')
46
49
  .action(async (options: ExamplesOptions) => {
@@ -50,6 +53,7 @@ export function example(buddy: CLI) {
50
53
  buddy
51
54
  .command('example:web-components', 'Test your Web Component library.')
52
55
  .option('-w, --web-components', descriptions.verbose, { default: true })
56
+ .option('-p, --project', descriptions.project, { default: false })
53
57
  .option('--verbose', descriptions.verbose, { default: false })
54
58
  .action(async (options: ExamplesOptions) => {
55
59
  await runExample(options)