@stacksjs/buddy 0.43.1 → 0.44.7
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 +36 -20
- package/dist/index.d.ts +54 -0
- package/dist/index.mjs +644 -0
- package/package.json +37 -34
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
|
-
|
|
11
|
+
_Pre-release until public beta released. Coming December._
|
|
12
12
|
|
|
13
|
-
The goal of the
|
|
13
|
+
The goal of the framework is to _help you_ create & maintain frontends, backends, and clouds—without having to worry about the boilerplate. Stacks is a rapid application development framework, meeting all your full stack needs.
|
|
14
14
|
|
|
15
|
-
|
|
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
|
<!--  -->
|
|
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,
|
|
34
|
+
_Develop dynamic UIs with helpers for atomic design, and much more._
|
|
26
35
|
|
|
27
|
-
- 🧩 Components
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- 🖥️ Desktop _components as desktop
|
|
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**
|
|
39
|
-
- ⚙️ **CLIs** _create beautiful CLIs for Linux, Windows, and Mac
|
|
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
|
-
-
|
|
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
|
|
49
|
-
- 📈 **X-Ray**
|
|
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
|
-
|
|
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**
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
package/dist/index.d.ts
ADDED
|
@@ -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.
|
|
5
|
-
"packageManager": "pnpm@7.
|
|
6
|
-
"description": "The Stacks runtime
|
|
4
|
+
"version": "0.44.7",
|
|
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.
|
|
54
|
+
"pnpm": ">=7.18.2"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@stacksjs/actions": "0.
|
|
58
|
-
"@stacksjs/
|
|
59
|
-
"@stacksjs/
|
|
60
|
-
"@stacksjs/
|
|
61
|
-
"@stacksjs/
|
|
62
|
-
"@stacksjs/
|
|
63
|
-
"@stacksjs/
|
|
64
|
-
"@stacksjs/
|
|
65
|
-
"@stacksjs/docs": "0.
|
|
66
|
-
"@stacksjs/
|
|
67
|
-
"@stacksjs/
|
|
68
|
-
"@stacksjs/
|
|
69
|
-
"@stacksjs/
|
|
70
|
-
"@stacksjs/
|
|
71
|
-
"@stacksjs/
|
|
72
|
-
"@stacksjs/
|
|
73
|
-
"@stacksjs/
|
|
74
|
-
"@stacksjs/
|
|
75
|
-
"@stacksjs/
|
|
76
|
-
"@stacksjs/
|
|
77
|
-
"@stacksjs/
|
|
78
|
-
"@stacksjs/
|
|
79
|
-
"@stacksjs/
|
|
80
|
-
"@stacksjs/
|
|
81
|
-
"@stacksjs/
|
|
57
|
+
"@stacksjs/actions": "0.44.7",
|
|
58
|
+
"@stacksjs/alias": "0.44.7",
|
|
59
|
+
"@stacksjs/arrays": "0.44.7",
|
|
60
|
+
"@stacksjs/build": "0.44.7",
|
|
61
|
+
"@stacksjs/cli": "0.44.7",
|
|
62
|
+
"@stacksjs/cloud": "0.44.7",
|
|
63
|
+
"@stacksjs/collections": "0.44.7",
|
|
64
|
+
"@stacksjs/config": "0.44.7",
|
|
65
|
+
"@stacksjs/docs": "0.44.7",
|
|
66
|
+
"@stacksjs/domains": "0.44.7",
|
|
67
|
+
"@stacksjs/error-handling": "0.44.7",
|
|
68
|
+
"@stacksjs/git": "0.44.7",
|
|
69
|
+
"@stacksjs/lint": "0.44.7",
|
|
70
|
+
"@stacksjs/logging": "0.44.7",
|
|
71
|
+
"@stacksjs/modules": "0.44.7",
|
|
72
|
+
"@stacksjs/objects": "0.44.7",
|
|
73
|
+
"@stacksjs/path": "0.44.7",
|
|
74
|
+
"@stacksjs/router": "0.44.7",
|
|
75
|
+
"@stacksjs/security": "0.44.7",
|
|
76
|
+
"@stacksjs/server": "0.44.7",
|
|
77
|
+
"@stacksjs/storage": "0.44.7",
|
|
78
|
+
"@stacksjs/strings": "0.44.7",
|
|
79
|
+
"@stacksjs/testing": "0.44.7",
|
|
80
|
+
"@stacksjs/types": "0.44.7",
|
|
81
|
+
"@stacksjs/ui": "0.44.7",
|
|
82
|
+
"@stacksjs/utils": "0.44.7"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
85
|
"only-allow": "^1.1.1",
|
|
85
|
-
"pnpm": ">=7.
|
|
86
|
-
"typescript": "^4.9.
|
|
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 '
|
|
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 '
|
|
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": "
|
|
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",
|