@stacksjs/buddy 0.43.0 → 0.44.6

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/README.md CHANGED
@@ -8,61 +8,76 @@
8
8
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
9
9
  <!-- [![Codecov][codecov-src]][codecov-href] -->
10
10
 
11
- _For internal usage only until the beta is released by the end of ~November._
11
+ _Pre-release until public beta released. Coming December._
12
12
 
13
- The goal of the Stacks framework is to _help you_ create & maintain frontends, backends, and clouds without having to worry about the boilerplate. Whether it's SSG pages, npm distributed & framework-agnostic component & function libraries, serverless APIs, Stacks helps you every step along the way, including production deployments and the maintenance of its related infrastructure (server or serverless).
13
+ The goal of the framework is to _help you_ create & maintain frontends, backends, and cloudswithout having to worry about the boilerplate. Stacks is a rapid application development framework, meeting all your full stack needs.
14
14
 
15
- Convention over configuration is our mantra—in beginner & expert-friendly ways.
15
+ - Web & Desktop applications
16
+ - Serverless & traditional APIs
17
+ - Cloud infrastructure creation & maintenance
18
+ - Interactive CLIs
19
+ - Framework-agnostic component & function libraries
20
+ - Deployment & Release Manager _(CI & CD)_
21
+
22
+ Stacks helps you every step along the way—in beginner & expert-friendly ways, allowing you to focus on the _what_ and _why_ of your project.
23
+
24
+ > “Convention over configuration” is the Stacks mantra. _- Chris_
16
25
 
17
26
  <!-- ![Atomic UI & FX Design](./apps/docs/images/diagram.png) -->
18
27
 
19
28
  ## Features
20
29
 
21
- The Stacks framework is a harmony of the following engines:
30
+ The Stacks framework is a harmony of several “engines” to build any web and/or desktop application, in highly scalable & privacy-friendly ways. It consists of the following engines:
22
31
 
23
32
  ### Stacks UI
24
33
 
25
- _Develop UIs with helpers for atomic design, component libraries, and more._
34
+ _Develop dynamic UIs with helpers for atomic design, and much more._
26
35
 
27
- - 🧩 Components _develop UI components with ease_
28
- - 📚 Library Mode _auto-builds Vue & Web component libraries_
29
- - 📊 Pages _SSG & PWA support using components_
30
- - 🖥️ Desktop _components as desktop elements, powered by Tauri_
36
+ - 🧩 **Components** _a Stacks primitive to develop user interfaces_
37
+ - 🤖 **Functions** _grant your UI superpowers_
38
+ - 🌐 **Web** _"a routing & templating engine that makes sense" using components—SSG & PWA ready_
39
+ - 🖥️ **Desktop** _components as desktop elements_
40
+ - 📚 **Library** _auto-builds component & function libraries_
31
41
  - ⚡️ Powered by Vue, Vite, UnoCSS & Tauri
32
42
 
33
43
  ### Stacks Functions
34
44
 
35
45
  _Develop serverless (or server) functions with countless helpers to build scalable & fast APIs._
36
46
 
47
+ - 🪄 **AI** _deep OpenAI integration_
37
48
  - 🤖 **APIs** _scalability & maintainability built-in_
38
- - 🏎️ **Cache** Redis, DynamoDB, SingleStore, and more
39
- - ⚙️ **CLIs** _create beautiful CLIs for Linux, Windows, and Mac. Without requirements._
49
+ - 🏎️ **Cache** _Redis, DynamoDB, SingleStore, and more_
50
+ - ⚙️ **CLIs** _create beautiful CLIs for Linux, Windows, and Mac—without requirements_
40
51
  - 📀 **Database** _MySQL, Postgres, PlanetScale, Supabase, Prisma, ..._
41
52
  - 👾 **Errors** _native type-safe error handling_
42
53
  - 📢 **Notifications** _emails, SMSs, direct, and push notifications & webhooks_
43
- - ⚙️ **Queues** run your heavy workload in the background
54
+ - 💳 **Payments** _unified API for one-off & subscription billing methods for Stripe_
55
+ - ⚙️ **Queues** _run your heavy workload in the background_
44
56
  - 🏎️ **Realtime** _"everything you need to build dynamic real-time apps"_
45
57
  - 🧭 **Router** _smart routing, file-based or Laravel-like_
46
58
  - 🔎 **Search Engine** _smart searching, advanced filtering & sorting, pagination, headless UI_
47
59
  - 💾 **Storage** _easily create & make use of local & remote storages/file systems_
48
- - 🌪️ **Validation** _e2e type-safety (frontend & backend harmony)_
49
- - 📈 **X-Ray** _All you need to debug, log & analyze, easily_
60
+ - 🌪️ **Validation** _e2e type-safety (frontend knows what the backend knows)_
61
+ - 📈 **X-Ray** _all you need to debug, log & analyze_
50
62
 
51
63
  ### Stacks Cloud
52
64
 
53
- Create your own Vercel-like cloud. _With a few commands._
65
+ _Create your personal or professional Vercel-like cloud._
54
66
 
55
67
  - ☁️ **Server** _local development server & production-ready servers_
56
68
  - ⛅️ **Serverless** _on-demand, auto-scaling, zero maintenance_
57
- - 🚏 **CDN** _your own CloudFront CDN_
69
+ - 🚏 **CDN** _zero-config low-latency CDN, including request life-cycle hooks_
70
+ - 🤌🏼 **Brotli & gzip** _optimized request compressions to speed up page load times_
71
+ - 📧 **Email** _secure & simplistic easy-peasy@custom-domains.com mail_
58
72
  - 🔐 **Firewall** _native web application firewall support_
59
73
  - 🏗️ **Maintenance** _handles your cloud infrastructure via the Stacks & Serverless framework_
74
+ - 🤖 **Infrastructure as Code** _create & maintain your cloud infrastructure with ease_
60
75
 
61
76
  ### Stacks CI/CD
62
77
 
63
78
  _Focus on coding, not publishing._
64
79
 
65
- - 🚀 **Deployment Manager** _take the sweat & stress out of production deployments (AWS, Vercel, Netlify, and more)_
80
+ - 🚀 **Deployment Manager** _take the sweat out of production deployments (AWS, Vercel, Netlify, and more)_
66
81
  - 📫 **Release Manager** _libraries (component & function) auto-published to npm, git helpers, and more_
67
82
 
68
83
  ### Stacks DX
@@ -73,10 +88,11 @@ _Enhanced productivity for developers. No more creating boilerplate._
73
88
  - 🪄 **Zero-Config** _yet highly configurable—convention over configuration_
74
89
  - 👩🏽‍🔧 **Linter & Formatter** _auto-configured & built into your IDE_
75
90
  - 💪🏼 **Type Strong** _built-in e2e type-safety_
76
- - ✨ **Git workflows** _committing with ease_
91
+ - ✨ **Git Workflows** _committing with ease_
77
92
  - 🚗 **Auto Imports** _your components & functions, including date, string, array, & object helpers_
93
+ - ⏩ **Code Snippets** _say goodbye to the boilerplate_
78
94
  - 🛠️ **Utilities** _Collections, VueUse, and more_
79
- - 🧪 **Testing** _unit & e2e tests powered by Vitest_
95
+ - 🧪 **Testing** _unit & e2e tests powered by Vitest & Playwright_
80
96
 
81
97
  No matter whether you are a beginner or an expert, the approachable Stacks design allows you to learn at your own pace, using our thorough documentation covering every aspect of the framework. Stacks is extremely beginner & expert-friendly.
82
98
 
@@ -97,7 +113,7 @@ npx stacks new my-project
97
113
  ```
98
114
 
99
115
  > **Note**
100
- > pnpm 7.16 or higher required. _Run the setup script & 🐶 Buddy will set you up. He barks otherwise._
116
+ > pnpm 7.18 or higher required. _Run the setup script & 🐶 Buddy will set you up. He barks otherwise._
101
117
 
102
118
  ## 🤖 Usage
103
119
 
@@ -0,0 +1,54 @@
1
+ import { CLI } from '@stacksjs/types';
2
+ export * from '@stacksjs/types';
3
+ export * from '@stacksjs/alias';
4
+ export * from '@stacksjs/arrays';
5
+ export * from '@stacksjs/build';
6
+ export * from '@stacksjs/cli';
7
+ export * from '@stacksjs/cloud';
8
+ export * from '@stacksjs/collections';
9
+ export * from '@stacksjs/config';
10
+ export * from '@stacksjs/storage';
11
+ export * from '@stacksjs/router';
12
+ export * from '@stacksjs/server';
13
+ export * from '@stacksjs/strings';
14
+ export * from '@stacksjs/objects';
15
+ export * from '@stacksjs/path';
16
+ export * from '@stacksjs/ui';
17
+
18
+ declare function build(stacks: CLI): Promise<void>;
19
+
20
+ declare function clean(stacks: CLI): Promise<void>;
21
+
22
+ declare function commit(stacks: CLI): Promise<void>;
23
+
24
+ declare function create(stacks: CLI): Promise<void>;
25
+
26
+ declare function dev(stacks: CLI): Promise<void>;
27
+
28
+ declare function example(stacks: CLI): Promise<void>;
29
+
30
+ declare function fresh(stacks: CLI): Promise<void>;
31
+
32
+ declare function generate(stacks: CLI): Promise<void>;
33
+
34
+ declare function lint(stacks: CLI): Promise<void>;
35
+
36
+ declare function key(stacks: CLI): Promise<void>;
37
+
38
+ declare function make(stacks: CLI): Promise<void>;
39
+
40
+ declare function prepublish(stacks: CLI): Promise<void>;
41
+
42
+ declare function preinstall(stacks: CLI): Promise<void>;
43
+
44
+ declare function release(stacks: CLI): Promise<void>;
45
+
46
+ declare function setup(stacks: CLI): Promise<void>;
47
+
48
+ declare function test(stacks: CLI): Promise<void>;
49
+
50
+ declare function types(stacks: CLI): Promise<void>;
51
+
52
+ declare function update(stacks: CLI): Promise<void>;
53
+
54
+ export { build, clean, commit, create, dev, example, fresh, generate, key, lint, make, preinstall, prepublish, release, setup, test, types, update };
package/dist/index.mjs ADDED
@@ -0,0 +1,644 @@
1
+ import { ExitCode, Action } from '@stacksjs/types';
2
+ export * from '@stacksjs/types';
3
+ import { prompts, intro, log, green, bold, link, runCommand, cyan, italic, outro } from '@stacksjs/cli';
4
+ export * from '@stacksjs/cli';
5
+ import { invoke } from '@stacksjs/actions/build';
6
+ import { invoke as invoke$1 } from '@stacksjs/actions/clean';
7
+ import { invoke as invoke$2 } from '@stacksjs/actions/commit';
8
+ import { useOnline } from '@stacksjs/utils';
9
+ import { isFolder } from '@stacksjs/storage';
10
+ export * from '@stacksjs/storage';
11
+ import { resolve } from '@stacksjs/path';
12
+ export * from '@stacksjs/path';
13
+ import { generate as generate$1 } from '@stacksjs/actions/key';
14
+ import { components, functions, pages, docs, invoke as invoke$3, desktop } from '@stacksjs/actions/dev';
15
+ import { componentExample, webComponentExample, invoke as invoke$4 } from '@stacksjs/actions/examples';
16
+ import { invoke as invoke$5 } from '@stacksjs/actions/fresh';
17
+ import { invoke as invoke$6, types as types$2, libEntries, vueCompat, webTypes, vsCodeCustomData, ideHelpers, componentMeta } from '@stacksjs/actions/generate';
18
+ import { invoke as invoke$7, lintFix } from '@stacksjs/actions/lint';
19
+ import { invoke as invoke$8, component, database, migration, factory, page, fx, language, notification, stack } from '@stacksjs/actions/make';
20
+ import { runAction } from '@stacksjs/actions';
21
+ import { invoke as invoke$9 } from '@stacksjs/actions/preinstall';
22
+ import { invoke as invoke$a, testUi, typecheck, testCoverageReport } from '@stacksjs/actions/test';
23
+ import { invoke as invoke$b } from '@stacksjs/actions/update';
24
+ export * from '@stacksjs/alias';
25
+ export * from '@stacksjs/arrays';
26
+ export * from '@stacksjs/build';
27
+ export * from '@stacksjs/cloud';
28
+ export * from '@stacksjs/collections';
29
+ export * from '@stacksjs/config';
30
+ export * from '@stacksjs/router';
31
+ export * from '@stacksjs/server';
32
+ export * from '@stacksjs/strings';
33
+ export * from '@stacksjs/objects';
34
+ export * from '@stacksjs/ui';
35
+
36
+ const descriptions$g = {
37
+ components: "Build your component library",
38
+ vueComponents: "Build your Vue component library",
39
+ webComponents: "Build your framework agnostic web component library",
40
+ elements: "An alias to the -w flag",
41
+ functions: "Build your function library",
42
+ pages: "Build your SSG pages",
43
+ docs: "Build your documentation site",
44
+ stacks: "Build Stacks framework",
45
+ debug: "Enable debug mode"
46
+ };
47
+ async function build(stacks) {
48
+ stacks.command("build", "Automagically build any of your libraries/packages for production use. Select any of the following packages").option("-c, --components", descriptions$g.components).option("-v, --vue-components", descriptions$g.vueComponents).option("-w, --web-components", descriptions$g.webComponents).option("-e, --elements", descriptions$g.elements).option("-f, --functions", descriptions$g.functions).option("-p, --pages", descriptions$g.pages).option("-d, --docs", descriptions$g.docs).option("-s, --stacks", descriptions$g.stacks, { default: false }).option("--debug", descriptions$g.debug, { default: false }).action(async (options) => {
49
+ if (hasNoOptions$4(options)) {
50
+ const answers = await prompts.multiselect({
51
+ type: "multiselect",
52
+ name: "update",
53
+ message: "What are you trying to build?",
54
+ choices: [
55
+ { title: "Components", value: "components" },
56
+ { title: "Vue Components", value: "vue-components" },
57
+ { title: "Web Components", value: "web-components" },
58
+ { title: "Functions", value: "functions" },
59
+ { title: "Pages", value: "pages" },
60
+ { title: "Documentation", value: "docs" }
61
+ ]
62
+ });
63
+ options = answers.reduce((a, v) => ({ ...a, [v]: true }), {});
64
+ }
65
+ await invoke(options);
66
+ process.exit(ExitCode.Success);
67
+ });
68
+ stacks.command("build:components", "Automagically build component libraries for production use & npm/CDN distribution").option("-c, --components", descriptions$g.components, { default: true }).option("--debug", descriptions$g.debug, { default: false }).action(async (options) => {
69
+ await invoke(options);
70
+ });
71
+ stacks.command("build:functions", "Automagically build function library for npm/CDN distribution").option("-f, --functions", descriptions$g.functions, { default: true }).option("--debug", descriptions$g.debug, { default: false }).action(async (options) => {
72
+ await invoke(options);
73
+ });
74
+ stacks.command("build:vue-components", "Automagically build Vue component library for npm/CDN distribution").option("-v, --vue-components", descriptions$g.vueComponents, { default: true }).option("--debug", descriptions$g.debug, { default: false }).alias("build:vue").action(async (options) => {
75
+ await invoke(options);
76
+ });
77
+ stacks.command("build:web-components", "Automagically build Web Component library for npm/CDN distribution").option("-w, --web-components", descriptions$g.webComponents, { default: true }).option("--debug", descriptions$g.debug, { default: false }).alias("build:elements").alias("build:wc").action(async (options) => {
78
+ await invoke(options);
79
+ });
80
+ stacks.command("build:docs", "Automagically build your documentation site.").option("-d, --docs", descriptions$g.docs, { default: true }).option("--debug", descriptions$g.debug, { default: false }).action(async (options) => {
81
+ await invoke(options);
82
+ });
83
+ stacks.command("build:stacks", "Build the core Stacks framework.").option("-s, --stacks", descriptions$g.stacks, { default: true }).option("--debug", descriptions$g.debug, { default: false }).action(async (options) => {
84
+ await invoke(options);
85
+ });
86
+ }
87
+ function hasNoOptions$4(options) {
88
+ return !options.components && !options.vueComponents && !options.webComponents && !options.elements && !options.functions && !options.pages && !options.docs && !options.stacks;
89
+ }
90
+
91
+ const descriptions$f = {
92
+ clean: "Removes all node_modules & lock files",
93
+ debug: "Enable debug mode"
94
+ };
95
+ async function clean(stacks) {
96
+ stacks.command("clean", descriptions$f.clean).option("--debug", descriptions$f.debug, { default: false }).action(async (options) => {
97
+ await invoke$1(options);
98
+ });
99
+ }
100
+
101
+ const descriptions$e = {
102
+ commit: "Commit your stashed changes",
103
+ debug: "Enable debug mode"
104
+ };
105
+ async function commit(stacks) {
106
+ stacks.command("commit", descriptions$e.commit).option("--debug", descriptions$e.debug, { default: false }).action(async (options) => {
107
+ await invoke$2(options);
108
+ });
109
+ }
110
+
111
+ const descriptions$d = {
112
+ command: "Create a new Stacks project",
113
+ ui: "Are you building a UI?",
114
+ components: "Are you building UI components?",
115
+ webComponents: "Automagically built optimized custom elements/web components?",
116
+ vue: "Automagically built a Vue component library?",
117
+ pages: "How about pages?",
118
+ functions: "Are you developing functions/composables?",
119
+ api: "Are you building an API?",
120
+ database: "Do you need a database?",
121
+ debug: "Enable debug mode"
122
+ };
123
+ async function create(stacks) {
124
+ stacks.command("new <name>", descriptions$d.command).option("-u, --ui", descriptions$d.ui, { default: true }).option("-c, --components", descriptions$d.components, { default: true }).option("-w, --web-components", descriptions$d.webComponents, { default: true }).option("-v, --vue", descriptions$d.vue, { default: true }).option("-p, --pages", descriptions$d.pages, { default: true }).option("-f, --functions", descriptions$d.functions, { default: true }).option("-a, --api", descriptions$d.api, { default: true }).option("-d, --database", descriptions$d.database, { default: true }).option("--debug", descriptions$d.debug, { default: false }).action(async (options) => {
125
+ const startTime = intro("stacks new");
126
+ const name = options.name;
127
+ const path = resolve(process.cwd(), name);
128
+ await isFolderCheck(path);
129
+ await onlineCheck();
130
+ const result = await download(name, path, options);
131
+ if (result.isErr()) {
132
+ log.error(result.error);
133
+ process.exit(ExitCode.FatalError);
134
+ }
135
+ await ensureEnv(path, options);
136
+ await install(path, options);
137
+ console.log();
138
+ if (startTime) {
139
+ const time = performance.now() - startTime;
140
+ log.success(green(`Done in ${time}ms`));
141
+ }
142
+ log.info(bold("Welcome to the Stacks Framework! \u269B\uFE0F"));
143
+ console.log(`cd ${link(path, `vscode://file/${path}:1`)} && code .`);
144
+ console.log();
145
+ log.info("To learn more, visit https://stacksjs.dev");
146
+ process.exit(ExitCode.Success);
147
+ });
148
+ }
149
+ async function isFolderCheck(path) {
150
+ if (await isFolder(path)) {
151
+ log.error(`Path ${path} already exists`);
152
+ process.exit(ExitCode.FatalError);
153
+ }
154
+ }
155
+ async function onlineCheck() {
156
+ const online = useOnline();
157
+ if (!online) {
158
+ log.info("It appears you are disconnected from the internet.");
159
+ log.info("The Stacks setup requires a brief internet connection for setup.");
160
+ log.info("For instance, it installs your dependencies from.");
161
+ process.exit(ExitCode.FatalError);
162
+ }
163
+ }
164
+ async function download(name, path, options) {
165
+ log.info("Setting up your stack.");
166
+ const result = await runCommand(`giget stacks ${name}`, options);
167
+ log.success(`Successfully scaffolded your project at ${cyan(path)}`);
168
+ return result;
169
+ }
170
+ async function ensureEnv(path, options) {
171
+ log.info("Ensuring your environment is ready...");
172
+ await runCommand("fnm use", { ...options, cwd: path });
173
+ log.success("Environment is ready");
174
+ }
175
+ async function install(path, options) {
176
+ log.info("Installing & setting up Stacks");
177
+ const res1 = await runCommand("pnpm install", { ...options, cwd: path });
178
+ if (res1.isErr()) {
179
+ log.error(res1.error);
180
+ process.exit(ExitCode.FatalError);
181
+ }
182
+ const res2 = await runCommand("cp .env.example .env", { ...options, cwd: path });
183
+ if (res2.isErr()) {
184
+ log.error(res2.error);
185
+ process.exit(ExitCode.FatalError);
186
+ }
187
+ await generate$1(options);
188
+ const res3 = await runCommand("git init", { ...options, cwd: path });
189
+ if (res3.isErr()) {
190
+ log.error(res3.error);
191
+ process.exit(ExitCode.FatalError);
192
+ }
193
+ log.success("Installed & set-up \u{1F680}");
194
+ }
195
+
196
+ const descriptions$c = {
197
+ components: "Start the Components development server",
198
+ desktop: "Start the Desktop development server",
199
+ functions: "Start the Functions development server",
200
+ docs: "Start the Documentation development server",
201
+ pages: "Start the Pages development server",
202
+ debug: "Enable debug mode"
203
+ };
204
+ async function dev(stacks) {
205
+ stacks.command("dev", "Start the development server for any of the following").option("-c, --components", descriptions$c.components).option("-f, --functions", descriptions$c.functions).option("-d, --docs", descriptions$c.docs).option("-p, --pages", descriptions$c.pages).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
206
+ if (hasNoOptions$3(options)) {
207
+ const answer = await prompts.select({
208
+ type: "select",
209
+ name: "development",
210
+ message: "Which development server are you trying to start?",
211
+ choices: [
212
+ { title: "Components", value: "components" },
213
+ { title: "Functions", value: "functions" },
214
+ { title: "Pages", value: "pages" },
215
+ { title: "Docs", value: "docs" }
216
+ ]
217
+ });
218
+ if (answer !== null)
219
+ process.exit(ExitCode.InvalidArgument);
220
+ if (answer === "components")
221
+ await components(options);
222
+ else if (answer === "functions")
223
+ await functions(options);
224
+ else if (answer === "pages")
225
+ await pages(options);
226
+ else if (answer === "docs")
227
+ await docs(options);
228
+ else
229
+ process.exit(ExitCode.InvalidArgument);
230
+ }
231
+ await invoke$3(options);
232
+ process.exit(ExitCode.Success);
233
+ });
234
+ stacks.command("dev:components", descriptions$c.components).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
235
+ await invoke$3(options);
236
+ });
237
+ stacks.command("dev:docs", descriptions$c.docs).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
238
+ await docs(options);
239
+ });
240
+ stacks.command("dev:desktop", descriptions$c.desktop).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
241
+ await desktop(options);
242
+ });
243
+ stacks.command("dev:functions", descriptions$c.functions).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
244
+ await functions(options);
245
+ });
246
+ stacks.command("dev:pages", descriptions$c.pages).option("--debug", descriptions$c.debug, { default: false }).action(async (options) => {
247
+ await pages(options);
248
+ });
249
+ }
250
+ function hasNoOptions$3(options) {
251
+ return !options.components && !options.all && !options.docs && !options.functions && !options.pages;
252
+ }
253
+
254
+ const descriptions$b = {
255
+ example: "Which example do you want to see?",
256
+ components: "Test your libraries against your built bundle",
257
+ vue: "Test your Vue component library",
258
+ webComponents: "Test your web component library",
259
+ debug: "Enable debug mode"
260
+ };
261
+ async function example(stacks) {
262
+ stacks.command("example", descriptions$b.example).option("-c, --components", descriptions$b.components).option("-v, --vue", descriptions$b.vue).option("-w, --web-components", descriptions$b.webComponents).option("--debug", descriptions$b.debug, { default: false }).action(async (options) => {
263
+ const answer = await prompts.select({
264
+ type: "select",
265
+ name: "example",
266
+ message: "Which example are you trying to view?",
267
+ choices: [
268
+ { title: "Components", value: "components" },
269
+ { title: "Web Components", value: "web-components" }
270
+ ]
271
+ });
272
+ if (answer !== null) {
273
+ log.error(`You did not provide an answer. Please try again, ${italic("or report the issue")}`);
274
+ process.exit();
275
+ }
276
+ if (answer === "components")
277
+ await componentExample(options);
278
+ else if (answer === "web-components")
279
+ await webComponentExample(options);
280
+ else
281
+ process.exit(ExitCode.InvalidArgument);
282
+ await invoke$4(options);
283
+ process.exit(ExitCode.Success);
284
+ });
285
+ stacks.command("example:vue", descriptions$b.vue).option("-v, --vue", descriptions$b.debug, { default: true }).option("--debug", descriptions$b.debug, { default: false }).alias("example:components").action(async (options) => {
286
+ await invoke$4(options);
287
+ });
288
+ stacks.command("example:web-components", "Test your Web Component library.").option("-w, --web-components", descriptions$b.debug, { default: true }).option("--debug", descriptions$b.debug, { default: false }).action(async (options) => {
289
+ await invoke$4(options);
290
+ });
291
+ }
292
+
293
+ const descriptions$a = {
294
+ fresh: "Reinstalls your npm dependencies",
295
+ debug: "Enable debug mode"
296
+ };
297
+ async function fresh(stacks) {
298
+ stacks.command("fresh", descriptions$a.fresh).option("--debug", descriptions$a.debug, { default: false }).action(async (options) => {
299
+ await invoke$5(options);
300
+ });
301
+ }
302
+
303
+ const descriptions$9 = {
304
+ command: "Automagically build any of your libraries/packages for production use. Select any of the following packages",
305
+ types: "Generate your TypeScript types",
306
+ entries: "Generate your function & component library entry points",
307
+ webTypes: "Generate web-types.json for IDEs",
308
+ customData: "Generate VS Code custom data (custom-elements.json) for IDEs",
309
+ ideHelpers: "Generate IDE helpers",
310
+ vueCompat: "Generate Vue 2 & 3 compatibility",
311
+ componentMeta: "Generate component meta information",
312
+ debug: "Enable debug mode"
313
+ };
314
+ async function generate(stacks) {
315
+ stacks.command("generate", descriptions$9.command).option("-t, --types", descriptions$9.types).option("-e, --entries", descriptions$9.entries).option("-w, --web-types", descriptions$9.webTypes).option("-c, --custom-data", descriptions$9.customData).option("-i, --ide-helpers", descriptions$9.ideHelpers).option("-v, --vue-compatibility", descriptions$9.vueCompat).option("-c, --component-meta", descriptions$9.componentMeta).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
316
+ if (hasNoOptions$2(options)) {
317
+ const answers = await prompts.multiselect({
318
+ type: "multiselect",
319
+ name: "generate",
320
+ message: "What are you trying to generate?",
321
+ choices: [
322
+ { title: "1.) TypeScript Types", value: "types" },
323
+ { title: "2.) Library Entry Points", value: "entries" },
324
+ { title: "3.) Web Types", value: "web-types" },
325
+ { title: "4.) VS Code Custom Data", value: "custom-data" },
326
+ { title: "5.) IDE Helpers", value: "ide-helpers" },
327
+ { title: "6.) Vue 2 & 3 Compatibility", value: "vue-compatibility" },
328
+ { title: "7.) Component Meta", value: "component-meta" }
329
+ ]
330
+ });
331
+ options = answers.reduce((a, v) => ({ ...a, [v]: true }), {});
332
+ }
333
+ await invoke$6(options);
334
+ process.exit(ExitCode.Success);
335
+ });
336
+ stacks.command("generate:types", descriptions$9.types).option("--debug", descriptions$9.debug, { default: false }).alias("types:generate").action(async (options) => {
337
+ await types$2(options);
338
+ });
339
+ stacks.command("generate:entries", descriptions$9.entries).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
340
+ await libEntries(options);
341
+ });
342
+ stacks.command("generate:vue-compatibility", descriptions$9.vueCompat).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
343
+ await vueCompat(options);
344
+ });
345
+ stacks.command("generate:web-types", descriptions$9.webTypes).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
346
+ await webTypes(options);
347
+ });
348
+ stacks.command("generate:vscode-custom-data", descriptions$9.customData).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
349
+ await vsCodeCustomData(options);
350
+ });
351
+ stacks.command("generate:ide-helpers", descriptions$9.ideHelpers).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
352
+ await ideHelpers(options);
353
+ });
354
+ stacks.command("generate:component-meta", descriptions$9.componentMeta).option("--debug", descriptions$9.debug, { default: false }).action(async (options) => {
355
+ await componentMeta(options);
356
+ });
357
+ }
358
+ function hasNoOptions$2(options) {
359
+ return !options.types && !options.entries && !options.webTypes && !options.customData && !options.ideHelpers && !options.vueCompatibility && !options.componentMeta;
360
+ }
361
+
362
+ const descriptions$8 = {
363
+ lint: "Automagically lints your codebase",
364
+ lintFix: "Automagically fixes lint errors",
365
+ debug: "Enable debug mode"
366
+ };
367
+ async function lint(stacks) {
368
+ stacks.command("lint", descriptions$8.lint).option("-f, --fix", descriptions$8.lintFix, { default: false }).option("--debug", descriptions$8.debug, { default: false }).action(async (options) => {
369
+ await invoke$7(options);
370
+ });
371
+ stacks.command("lint:fix", descriptions$8.lintFix).option("--debug", descriptions$8.debug, { default: false }).action(async (options) => {
372
+ await lintFix(options);
373
+ });
374
+ }
375
+
376
+ async function key(stacks) {
377
+ const descriptions = {
378
+ command: "Generate & set the application key.",
379
+ debug: "Enable debug mode"
380
+ };
381
+ stacks.command("key:generate", descriptions.command).option("--debug", descriptions.debug, { default: false }).action(async (options) => {
382
+ await generate$1(options);
383
+ });
384
+ }
385
+
386
+ const descriptions$7 = {
387
+ component: "Create a new component",
388
+ page: "Create a new page",
389
+ function: "Create a new function",
390
+ language: "Create a new language",
391
+ database: "Create a new database",
392
+ migration: "Create a new migration",
393
+ factory: "Create a new factory",
394
+ notification: "Create a new notification",
395
+ stack: "Create a new new stack",
396
+ debug: "Enable debug mode"
397
+ };
398
+ async function make(stacks) {
399
+ stacks.command("make", "The make command").option("-c, --component", descriptions$7.component, { default: false }).option("-p, --page", descriptions$7.page, { default: false }).option("-f, --function", descriptions$7.function, { default: false }).option("-l, --language", descriptions$7.language, { default: false }).option("-d, --database", descriptions$7.database, { default: false }).option("-m, --migration", descriptions$7.migration, { default: false }).option("-f, --factory", descriptions$7.factory, { default: false }).option("-n, --notification", descriptions$7.notification, { default: false }).option("-s, --stack", descriptions$7.stack, { default: false }).option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
400
+ const name = stacks.args[0];
401
+ if (!name) {
402
+ log.error("You need to specify a name. Read more about the documentation here.");
403
+ process.exit();
404
+ }
405
+ if (hasNoOptions$1(options)) {
406
+ const answers = await prompts.multiselect({
407
+ type: "multiselect",
408
+ name: "make",
409
+ message: "What are you trying to make?",
410
+ choices: [
411
+ { title: "Component", value: "component" },
412
+ { title: "Function", value: "function" },
413
+ { title: "Page", value: "page" },
414
+ { title: "Language", value: "language" },
415
+ { title: "Notification", value: "notification" },
416
+ { title: "Database", value: "database" },
417
+ { title: "Migration", value: "migration" },
418
+ { title: "Factory", value: "factory" },
419
+ { title: "Stack", value: "stack" }
420
+ ]
421
+ });
422
+ options = answers.reduce((a, v) => ({ ...a, [v]: true }), {});
423
+ }
424
+ await invoke$8(options);
425
+ process.exit(ExitCode.Success);
426
+ });
427
+ stacks.command("make:component", descriptions$7.component).option("--n, -name", "The name of the component").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
428
+ const name = stacks.args[0] || options.name;
429
+ options.name = name;
430
+ if (!name) {
431
+ log.error("You need to specify a name. Read more about the documentation here.");
432
+ process.exit();
433
+ }
434
+ await component(options);
435
+ });
436
+ stacks.command("make:database", descriptions$7.database).option("--n, -name", "The name of the database").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
437
+ const name = stacks.args[0] || options.name;
438
+ options.name = name;
439
+ if (!name) {
440
+ log.error("You need to specify a name. Read more about the documentation here.");
441
+ process.exit();
442
+ }
443
+ await database(options);
444
+ });
445
+ stacks.command("make:migration", descriptions$7.migration).option("--n, -name", "The name of the migration").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
446
+ const name = stacks.args[0] || options.name;
447
+ options.name = name;
448
+ if (!name) {
449
+ log.error("You need to specify a name. Read more about the documentation here.");
450
+ process.exit();
451
+ }
452
+ await migration(options);
453
+ });
454
+ stacks.command("make:factory", descriptions$7.factory).option("--n, -name", "The name of the factory").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
455
+ const name = stacks.args[0] || options.name;
456
+ options.name = name;
457
+ if (!name) {
458
+ log.error("You need to specify a name. Read more about the documentation here.");
459
+ process.exit();
460
+ }
461
+ await factory(options);
462
+ });
463
+ stacks.command("make:page", descriptions$7.page).option("--n, -name", "The name of the page").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
464
+ const name = stacks.args[0] || options.name;
465
+ options.name = name;
466
+ if (!name) {
467
+ log.error("You need to specify a name. Read more about the documentation here.");
468
+ process.exit();
469
+ }
470
+ await page(options);
471
+ });
472
+ stacks.command("make:function", descriptions$7.function).option("--n, -name", "The name of the function").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
473
+ await fx(options);
474
+ });
475
+ stacks.command("make:lang", descriptions$7.language).option("--n, -name", "The name of the language").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
476
+ const name = stacks.args[0] || options.name;
477
+ options.name = name;
478
+ if (!name) {
479
+ log.error("You need to specify a name. Read more about the documentation here.");
480
+ process.exit();
481
+ }
482
+ await language(options);
483
+ });
484
+ stacks.command("make:notification", descriptions$7.notification).option("--n, -name", "The name of the notification").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
485
+ const name = stacks.args[0] || options.name;
486
+ options.name = name;
487
+ if (!name) {
488
+ log.error("You need to specify a name. Read more about the documentation here.");
489
+ process.exit();
490
+ }
491
+ await notification(options);
492
+ });
493
+ stacks.command("make:stack", descriptions$7.stack).option("--n, -name", "The name of the stack").option("--debug", descriptions$7.debug, { default: false }).action(async (options) => {
494
+ const name = stacks.args[0] || options.name;
495
+ options.name = name;
496
+ if (!name) {
497
+ log.error("You need to specify a name. Read more about the documentation here.");
498
+ process.exit();
499
+ }
500
+ await stack(options);
501
+ });
502
+ }
503
+ function hasNoOptions$1(options) {
504
+ return !options.component && !options.page && !options.function && !options.language && !options.database && !options.migration && !options.factory && !options.notification && !options.stack;
505
+ }
506
+
507
+ const descriptions$6 = {
508
+ command: "Run your prepublish script",
509
+ debug: "Enable debug mode"
510
+ };
511
+ async function prepublish(stacks) {
512
+ stacks.command("prepublish", descriptions$6.command).option("--debug", descriptions$6.debug, { default: false }).action(async (options) => {
513
+ await runAction(Action.Prepublish, options);
514
+ });
515
+ }
516
+
517
+ const descriptions$5 = {
518
+ command: "Run your preinstall script",
519
+ debug: "Enable debug mode"
520
+ };
521
+ async function preinstall(stacks) {
522
+ stacks.command("preinstall", descriptions$5.command).option("--debug", descriptions$5.debug, { default: false }).action(async (options) => {
523
+ await invoke$9(options);
524
+ });
525
+ }
526
+
527
+ const descriptions$4 = {
528
+ release: "Release a new version of your libraries/packages",
529
+ debug: "Enable debug mode"
530
+ };
531
+ async function release(stacks) {
532
+ stacks.command("release", descriptions$4.release).option("--debug", descriptions$4.debug, { default: true }).action(async (options) => {
533
+ const perf = intro("buddy release");
534
+ const result = await runAction(Action.Release, options);
535
+ if (result.isErr()) {
536
+ log.error("Failed to trigger the CI/CD release workflow.", result.error);
537
+ process.exit();
538
+ }
539
+ outro("Triggered CI/CD release workflow", { startTime: perf, useSeconds: true });
540
+ });
541
+ }
542
+
543
+ const descriptions$3 = {
544
+ ensure: "This command checks whether Node is installed. pnpm is checked via `only-allow` preinstall hook",
545
+ setup: "This command installs Node & pnpm",
546
+ debug: "Enable debug mode"
547
+ };
548
+ async function setup(stacks) {
549
+ stacks.command("ensure", descriptions$3.ensure).option("--debug", descriptions$3.debug, { default: false }).action(async (options) => {
550
+ await runCommand("pnpm install", options);
551
+ });
552
+ stacks.command("setup", descriptions$3.setup).option("--debug", descriptions$3.debug, { default: false }).action(async (options) => {
553
+ await runCommand("pnpm env use", options);
554
+ });
555
+ }
556
+
557
+ const descriptions$2 = {
558
+ command: "Runs your test suite",
559
+ types: "Typechecks your codebase",
560
+ coverage: "Generates a test coverage report",
561
+ debug: "Enable debug mode"
562
+ };
563
+ async function test(stacks) {
564
+ stacks.command("test", descriptions$2.command).option("--debug", descriptions$2.debug, { default: false }).action(async (options) => {
565
+ await invoke$a(options);
566
+ });
567
+ stacks.command("test:ui", descriptions$2.command).option("--debug", descriptions$2.debug, { default: false }).action(async (options) => {
568
+ await testUi(options);
569
+ });
570
+ stacks.command("test:types", descriptions$2.types).option("--debug", descriptions$2.debug, { default: false }).action(async (options) => {
571
+ await typecheck(options);
572
+ });
573
+ stacks.command("test:coverage", descriptions$2.coverage).option("--debug", descriptions$2.debug, { default: false }).action(async (options) => {
574
+ await testCoverageReport(options);
575
+ });
576
+ }
577
+
578
+ const descriptions$1 = {
579
+ generate: "Generate the types of & for your library/libraries",
580
+ fix: "wip",
581
+ debug: "Enable debug mode"
582
+ };
583
+ async function types(stacks) {
584
+ stacks.command("types:generate", descriptions$1.generate).option("--debug", descriptions$1.debug, { default: false }).action(async () => {
585
+ await types$2();
586
+ });
587
+ stacks.command("types:fix", descriptions$1.fix).option("--debug", descriptions$1.debug, { default: false }).action(async () => {
588
+ });
589
+ }
590
+
591
+ const descriptions = {
592
+ command: "Update dependencies, framework, package manager, and/or Node",
593
+ framework: "Update the Stacks framework",
594
+ dependencies: "Update your dependencies",
595
+ packageManager: "Update your package manager, i.e. pnpm",
596
+ node: "Update Node to the version defined in ./node-version",
597
+ all: "Update Node, package manager, project dependencies, and framework",
598
+ force: "Overwrite possible local updates with remote framework updates",
599
+ debug: "Enable debug mode",
600
+ select: "What are you trying to update?"
601
+ };
602
+ async function update(stacks) {
603
+ stacks.command("update", descriptions.command).option("-c, --framework", descriptions.framework, { default: false }).option("-d, --dependencies", descriptions.dependencies, { default: false }).option("-p, --package-manager", descriptions.packageManager, { default: false }).option("-n, --node", descriptions.node, { default: false }).option("-a, --all", descriptions.all, { default: false }).option("-f, --force", descriptions.force, { default: false }).option("--debug", descriptions.debug, { default: false }).example("buddy update -a --debug").action(async (options) => {
604
+ if (hasNoOptions(options)) {
605
+ const answers = await prompts.multiselect({
606
+ type: "multiselect",
607
+ name: "update",
608
+ message: descriptions.select,
609
+ choices: [
610
+ { title: "Dependencies", value: "dependencies" },
611
+ { title: "Framework", value: "framework" },
612
+ { title: "Node", value: "node" },
613
+ { title: "pnpm", value: "package-manager" }
614
+ ]
615
+ });
616
+ options = answers.reduce((a, v) => ({ ...a, [v]: true }), {});
617
+ }
618
+ await invoke$b(options);
619
+ });
620
+ stacks.command("update:framework", descriptions.framework).option("-f, --framework", descriptions.framework, { default: true }).option("--debug", descriptions.debug, { default: false }).example("buddy update:framework --debug").action(async (options) => {
621
+ await invoke$b(options);
622
+ });
623
+ stacks.command("update:dependencies", descriptions.dependencies).option("-d, --dependencies", descriptions.dependencies, { default: true }).option("--debug", descriptions.debug, { default: false }).alias("update:deps").example("buddy update:dependencies --debug").action(async (options) => {
624
+ await invoke$b(options);
625
+ });
626
+ stacks.command("update:package-manager", descriptions.packageManager).option("-p, --package-manager", descriptions.packageManager, { default: true }).option("--debug", descriptions.debug, { default: false }).alias("update:pm").example("buddy update:package-manager 7.16.1 --debug").example("buddy update:package-manager latest").action(async (options) => {
627
+ options.version = "latest";
628
+ if (stacks.args[0])
629
+ options.version = stacks.args[0];
630
+ await invoke$b(options);
631
+ process.exit(ExitCode.Success);
632
+ });
633
+ stacks.command("update:node", descriptions.node).option("-n, --node", descriptions.node, { default: true }).option("--debug", descriptions.debug, { default: false }).action(async (options) => {
634
+ await invoke$b(options);
635
+ });
636
+ stacks.command("update:all", descriptions.all).option("-a, --all", descriptions.all, { default: true }).option("--debug", descriptions.debug, { default: false }).action(async (options) => {
637
+ await invoke$b(options);
638
+ });
639
+ }
640
+ function hasNoOptions(options) {
641
+ return !options.framework && !options.dependencies && !options.packageManager && !options.node && !options.all;
642
+ }
643
+
644
+ export { build, clean, commit, create, dev, example, fresh, generate, key, lint, make, preinstall, prepublish, release, setup, test, types, update };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@stacksjs/buddy",
3
3
  "type": "module",
4
- "version": "0.43.0",
5
- "packageManager": "pnpm@7.17.1",
6
- "description": "The Stacks runtime, named Buddy.",
4
+ "version": "0.44.6",
5
+ "packageManager": "pnpm@7.18.2",
6
+ "description": "Meet Buddy. The Stacks runtime.",
7
7
  "author": "Chris Breuer",
8
8
  "license": "MIT",
9
9
  "funding": "https://github.com/sponsors/chrisbbreuer",
@@ -51,39 +51,41 @@
51
51
  ],
52
52
  "engines": {
53
53
  "node": ">=v18.12.1",
54
- "pnpm": ">=7.17.1"
54
+ "pnpm": ">=7.18.2"
55
55
  },
56
56
  "peerDependencies": {
57
- "@stacksjs/actions": "0.43.0",
58
- "@stacksjs/arrays": "0.43.0",
59
- "@stacksjs/build": "0.43.0",
60
- "@stacksjs/cli": "0.43.0",
61
- "@stacksjs/cloud": "0.43.0",
62
- "@stacksjs/collections": "0.43.0",
63
- "@stacksjs/config": "0.43.0",
64
- "@stacksjs/desktop": "0.43.0",
65
- "@stacksjs/docs": "0.43.0",
66
- "@stacksjs/error-handling": "0.43.0",
67
- "@stacksjs/git": "0.43.0",
68
- "@stacksjs/lint": "0.43.0",
69
- "@stacksjs/modules": "0.43.0",
70
- "@stacksjs/objects": "0.43.0",
71
- "@stacksjs/path": "0.43.0",
72
- "@stacksjs/router": "0.43.0",
73
- "@stacksjs/security": "0.43.0",
74
- "@stacksjs/server": "0.43.0",
75
- "@stacksjs/storage": "0.43.0",
76
- "@stacksjs/strings": "0.43.0",
77
- "@stacksjs/testing": "0.43.0",
78
- "@stacksjs/types": "0.43.0",
79
- "@stacksjs/ui": "0.43.0",
80
- "@stacksjs/utils": "0.43.0",
81
- "@stacksjs/x-ray": "0.43.0"
57
+ "@stacksjs/actions": "0.44.6",
58
+ "@stacksjs/alias": "0.44.6",
59
+ "@stacksjs/arrays": "0.44.6",
60
+ "@stacksjs/build": "0.44.6",
61
+ "@stacksjs/cli": "0.44.6",
62
+ "@stacksjs/cloud": "0.44.6",
63
+ "@stacksjs/collections": "0.44.6",
64
+ "@stacksjs/config": "0.44.6",
65
+ "@stacksjs/docs": "0.44.6",
66
+ "@stacksjs/domains": "0.44.6",
67
+ "@stacksjs/error-handling": "0.44.6",
68
+ "@stacksjs/git": "0.44.6",
69
+ "@stacksjs/lint": "0.44.6",
70
+ "@stacksjs/logging": "0.44.6",
71
+ "@stacksjs/modules": "0.44.6",
72
+ "@stacksjs/objects": "0.44.6",
73
+ "@stacksjs/path": "0.44.6",
74
+ "@stacksjs/router": "0.44.6",
75
+ "@stacksjs/security": "0.44.6",
76
+ "@stacksjs/server": "0.44.6",
77
+ "@stacksjs/storage": "0.44.6",
78
+ "@stacksjs/strings": "0.44.6",
79
+ "@stacksjs/testing": "0.44.6",
80
+ "@stacksjs/types": "0.44.6",
81
+ "@stacksjs/ui": "0.44.6",
82
+ "@stacksjs/utils": "0.44.6"
82
83
  },
83
84
  "devDependencies": {
84
85
  "only-allow": "^1.1.1",
85
- "pnpm": ">=7.17.1",
86
- "typescript": "^4.9.3"
86
+ "pnpm": ">=7.18.2",
87
+ "typescript": "^4.9.4",
88
+ "unbuild": "^1.0.2"
87
89
  },
88
90
  "config": {
89
91
  "commitizen": {
@@ -96,6 +98,7 @@
96
98
  "stacks": "pnpm run buddy",
97
99
  "stx": "pnpm run buddy",
98
100
  "preinstall": "npx only-allow pnpm",
101
+ "prepublish": "pnpm buddy prepublish",
99
102
  "fresh": "pnpm buddy fresh",
100
103
  "clean": "pnpm buddy clean",
101
104
  "update": "pnpm buddy update",
@@ -106,7 +109,7 @@
106
109
  "update:all": "pnpm buddy update:all",
107
110
  "dev": "pnpm buddy dev",
108
111
  "dev:components": "npx vite serve ./components/vue -c ./core/build/src/vue-components.ts",
109
- "dev:core": "pnpm --filter '../**' --filter '!../buddy/' dev",
112
+ "dev:core": "pnpm --filter '../core/**' --filter '!../buddy/' dev",
110
113
  "dev:desktop": "wip",
111
114
  "dev:docs": "vitepress dev ../apps/docs",
112
115
  "dev:pages": "nitro dev",
@@ -120,7 +123,7 @@
120
123
  "build:functions": "npx vite build -c ./core/build/src/functions.ts",
121
124
  "build:docs": "npx vitepress build ../apps/docs",
122
125
  "build:pages": "npx vite-ssg build ./pages -c ./core/build/src/pages.ts",
123
- "build:core": "pnpm --filter './core/**' --filter='!./core/config' build && pnpm --filter './core/config' build",
126
+ "build:core": "pnpm --filter '../core/**' --filter='!../core/config' build && pnpm --filter '../core/config' build",
124
127
  "build:cli": "npx unbuild",
125
128
  "build:runtime": "pnpm run build:cli",
126
129
  "build:desktop": "wip",
@@ -159,7 +162,7 @@
159
162
  "key": "pnpm buddy key",
160
163
  "key:generate": "pnpm buddy key:generate",
161
164
  "commit": "git cz",
162
- "release": "esno ./core/actions/src/generate-package-json.ts && pnpm lint:fix && bumpp ../package.json ./package.json ./core/**/package.json ../package.json --execute 'pnpm run changelog' --all",
165
+ "release": "pnpm buddy release",
163
166
  "changelog": "cd .. && conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
164
167
  "generate": "pnpm buddy generate",
165
168
  "generate:entries": "pnpm buddy generate:entries",