create-taserjs 0.1.12 → 0.2.1
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 +8 -44
- package/dist/cli-CBhdDKHU.cjs +1398 -0
- package/dist/cli-hL7a4VS0.js +1237 -0
- package/dist/cli-hL7a4VS0.js.map +1 -0
- package/dist/cli.cjs +4 -0
- package/dist/cli.d.cts +4 -0
- package/dist/cli.d.cts.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/index.cjs +25 -0
- package/dist/index.d.cts +119 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/package.json +39 -9
- package/src/addons/drizzle/index.ts +37 -40
- package/src/addons/kysely/index.ts +19 -22
- package/src/addons/pino/index.ts +2 -2
- package/src/addons/prisma/index.ts +18 -22
- package/src/addons/registry.ts +37 -73
- package/src/addons/types.ts +12 -13
- package/src/addons/validators.ts +22 -23
- package/src/addons/winston/index.ts +3 -3
- package/src/cli.ts +96 -56
- package/src/commands/create.ts +118 -249
- package/src/core/package-manager.ts +36 -55
- package/src/core/scaffold-engine.ts +100 -75
- package/src/core/targets.ts +19 -55
- package/src/core/types.ts +18 -53
- package/src/index.ts +8 -0
- package/src/templates/base.ts +139 -51
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +0 -23
- package/dist/cjs/addons/arktype/index.cjs +0 -6
- package/dist/cjs/addons/arktype/index.cjs.map +0 -1
- package/dist/cjs/addons/arktype/index.d.cts +0 -1
- package/dist/cjs/addons/drizzle/index.cjs +0 -131
- package/dist/cjs/addons/drizzle/index.cjs.map +0 -1
- package/dist/cjs/addons/drizzle/index.d.cts +0 -2
- package/dist/cjs/addons/kysely/index.cjs +0 -103
- package/dist/cjs/addons/kysely/index.cjs.map +0 -1
- package/dist/cjs/addons/kysely/index.d.cts +0 -2
- package/dist/cjs/addons/pino/index.cjs +0 -30
- package/dist/cjs/addons/pino/index.cjs.map +0 -1
- package/dist/cjs/addons/pino/index.d.cts +0 -2
- package/dist/cjs/addons/prisma/index.cjs +0 -133
- package/dist/cjs/addons/prisma/index.cjs.map +0 -1
- package/dist/cjs/addons/prisma/index.d.cts +0 -2
- package/dist/cjs/addons/registry.cjs +0 -65
- package/dist/cjs/addons/registry.cjs.map +0 -1
- package/dist/cjs/addons/registry.d.cts +0 -5
- package/dist/cjs/addons/types.d.cts +0 -16
- package/dist/cjs/addons/valibot/index.cjs +0 -6
- package/dist/cjs/addons/valibot/index.cjs.map +0 -1
- package/dist/cjs/addons/valibot/index.d.cts +0 -1
- package/dist/cjs/addons/validators.cjs +0 -38
- package/dist/cjs/addons/validators.cjs.map +0 -1
- package/dist/cjs/addons/validators.d.cts +0 -5
- package/dist/cjs/addons/winston/index.cjs +0 -34
- package/dist/cjs/addons/winston/index.cjs.map +0 -1
- package/dist/cjs/addons/winston/index.d.cts +0 -2
- package/dist/cjs/addons/zod/index.cjs +0 -6
- package/dist/cjs/addons/zod/index.cjs.map +0 -1
- package/dist/cjs/addons/zod/index.d.cts +0 -1
- package/dist/cjs/cli.cjs +0 -65
- package/dist/cjs/cli.cjs.map +0 -1
- package/dist/cjs/cli.d.cts +0 -2
- package/dist/cjs/commands/create.cjs +0 -332
- package/dist/cjs/commands/create.cjs.map +0 -1
- package/dist/cjs/commands/create.d.cts +0 -14
- package/dist/cjs/core/json-output.cjs +0 -16
- package/dist/cjs/core/json-output.cjs.map +0 -1
- package/dist/cjs/core/json-output.d.cts +0 -4
- package/dist/cjs/core/package-manager.cjs +0 -56
- package/dist/cjs/core/package-manager.cjs.map +0 -1
- package/dist/cjs/core/package-manager.d.cts +0 -8
- package/dist/cjs/core/parse-options.cjs +0 -95
- package/dist/cjs/core/parse-options.cjs.map +0 -1
- package/dist/cjs/core/parse-options.d.cts +0 -35
- package/dist/cjs/core/project-config.cjs +0 -23
- package/dist/cjs/core/project-config.cjs.map +0 -1
- package/dist/cjs/core/project-config.d.cts +0 -2
- package/dist/cjs/core/resolve-packages.cjs +0 -58
- package/dist/cjs/core/resolve-packages.cjs.map +0 -1
- package/dist/cjs/core/resolve-packages.d.cts +0 -2
- package/dist/cjs/core/scaffold-engine.cjs +0 -72
- package/dist/cjs/core/scaffold-engine.cjs.map +0 -1
- package/dist/cjs/core/scaffold-engine.d.cts +0 -2
- package/dist/cjs/core/targets.cjs +0 -171
- package/dist/cjs/core/targets.cjs.map +0 -1
- package/dist/cjs/core/targets.d.cts +0 -49
- package/dist/cjs/core/types.cjs +0 -52
- package/dist/cjs/core/types.cjs.map +0 -1
- package/dist/cjs/core/types.d.cts +0 -57
- package/dist/cjs/core/validate-project-name.cjs +0 -44
- package/dist/cjs/core/validate-project-name.cjs.map +0 -1
- package/dist/cjs/core/validate-project-name.d.cts +0 -1
- package/dist/cjs/frameworks/index.cjs +0 -116
- package/dist/cjs/frameworks/index.cjs.map +0 -1
- package/dist/cjs/frameworks/index.d.cts +0 -18
- package/dist/cjs/scaffold.d.cts +0 -3
- package/dist/cjs/templates/base.cjs +0 -97
- package/dist/cjs/templates/base.cjs.map +0 -1
- package/dist/cjs/templates/base.d.cts +0 -9
- package/dist/cjs/types.d.cts +0 -1
- package/dist/esm/addons/arktype/index.d.ts +0 -1
- package/dist/esm/addons/arktype/index.js +0 -7
- package/dist/esm/addons/arktype/index.js.map +0 -1
- package/dist/esm/addons/drizzle/index.d.ts +0 -2
- package/dist/esm/addons/drizzle/index.js +0 -131
- package/dist/esm/addons/drizzle/index.js.map +0 -1
- package/dist/esm/addons/kysely/index.d.ts +0 -2
- package/dist/esm/addons/kysely/index.js +0 -103
- package/dist/esm/addons/kysely/index.js.map +0 -1
- package/dist/esm/addons/pino/index.d.ts +0 -2
- package/dist/esm/addons/pino/index.js +0 -30
- package/dist/esm/addons/pino/index.js.map +0 -1
- package/dist/esm/addons/prisma/index.d.ts +0 -2
- package/dist/esm/addons/prisma/index.js +0 -133
- package/dist/esm/addons/prisma/index.js.map +0 -1
- package/dist/esm/addons/registry.d.ts +0 -5
- package/dist/esm/addons/registry.js +0 -63
- package/dist/esm/addons/registry.js.map +0 -1
- package/dist/esm/addons/types.d.ts +0 -16
- package/dist/esm/addons/valibot/index.d.ts +0 -1
- package/dist/esm/addons/valibot/index.js +0 -7
- package/dist/esm/addons/valibot/index.js.map +0 -1
- package/dist/esm/addons/validators.d.ts +0 -5
- package/dist/esm/addons/validators.js +0 -36
- package/dist/esm/addons/validators.js.map +0 -1
- package/dist/esm/addons/winston/index.d.ts +0 -2
- package/dist/esm/addons/winston/index.js +0 -34
- package/dist/esm/addons/winston/index.js.map +0 -1
- package/dist/esm/addons/zod/index.d.ts +0 -1
- package/dist/esm/addons/zod/index.js +0 -7
- package/dist/esm/addons/zod/index.js.map +0 -1
- package/dist/esm/cli.d.ts +0 -2
- package/dist/esm/cli.js +0 -62
- package/dist/esm/cli.js.map +0 -1
- package/dist/esm/commands/create.d.ts +0 -14
- package/dist/esm/commands/create.js +0 -327
- package/dist/esm/commands/create.js.map +0 -1
- package/dist/esm/core/json-output.d.ts +0 -4
- package/dist/esm/core/json-output.js +0 -14
- package/dist/esm/core/json-output.js.map +0 -1
- package/dist/esm/core/package-manager.d.ts +0 -8
- package/dist/esm/core/package-manager.js +0 -53
- package/dist/esm/core/package-manager.js.map +0 -1
- package/dist/esm/core/parse-options.d.ts +0 -35
- package/dist/esm/core/parse-options.js +0 -89
- package/dist/esm/core/parse-options.js.map +0 -1
- package/dist/esm/core/project-config.d.ts +0 -2
- package/dist/esm/core/project-config.js +0 -21
- package/dist/esm/core/project-config.js.map +0 -1
- package/dist/esm/core/resolve-packages.d.ts +0 -2
- package/dist/esm/core/resolve-packages.js +0 -58
- package/dist/esm/core/resolve-packages.js.map +0 -1
- package/dist/esm/core/scaffold-engine.d.ts +0 -2
- package/dist/esm/core/scaffold-engine.js +0 -70
- package/dist/esm/core/scaffold-engine.js.map +0 -1
- package/dist/esm/core/targets.d.ts +0 -49
- package/dist/esm/core/targets.js +0 -166
- package/dist/esm/core/targets.js.map +0 -1
- package/dist/esm/core/types.d.ts +0 -57
- package/dist/esm/core/types.js +0 -45
- package/dist/esm/core/types.js.map +0 -1
- package/dist/esm/core/validate-project-name.d.ts +0 -1
- package/dist/esm/core/validate-project-name.js +0 -42
- package/dist/esm/core/validate-project-name.js.map +0 -1
- package/dist/esm/frameworks/index.d.ts +0 -18
- package/dist/esm/frameworks/index.js +0 -112
- package/dist/esm/frameworks/index.js.map +0 -1
- package/dist/esm/scaffold.d.ts +0 -3
- package/dist/esm/templates/base.d.ts +0 -9
- package/dist/esm/templates/base.js +0 -91
- package/dist/esm/templates/base.js.map +0 -1
- package/dist/esm/types.d.ts +0 -1
- package/src/addons/arktype/index.ts +0 -3
- package/src/addons/valibot/index.ts +0 -3
- package/src/addons/zod/index.ts +0 -3
- package/src/core/json-output.ts +0 -13
- package/src/core/parse-options.ts +0 -167
- package/src/core/project-config.ts +0 -32
- package/src/core/resolve-packages.ts +0 -69
- package/src/core/validate-project-name.ts +0 -55
- package/src/frameworks/index.ts +0 -120
- package/src/scaffold.ts +0 -3
- package/src/types.ts +0 -12
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
const require_types = require("../core/types.cjs");
|
|
3
|
-
const require_registry = require("../addons/registry.cjs");
|
|
4
|
-
const require_json_output = require("../core/json-output.cjs");
|
|
5
|
-
const require_targets = require("../core/targets.cjs");
|
|
6
|
-
const require_parse_options = require("../core/parse-options.cjs");
|
|
7
|
-
const require_package_manager = require("../core/package-manager.cjs");
|
|
8
|
-
const require_scaffold_engine = require("../core/scaffold-engine.cjs");
|
|
9
|
-
const require_validate_project_name = require("../core/validate-project-name.cjs");
|
|
10
|
-
let _clack_prompts = require("@clack/prompts");
|
|
11
|
-
_clack_prompts = require_runtime.__toESM(_clack_prompts, 1);
|
|
12
|
-
let picocolors = require("picocolors");
|
|
13
|
-
picocolors = require_runtime.__toESM(picocolors, 1);
|
|
14
|
-
let node_path = require("node:path");
|
|
15
|
-
node_path = require_runtime.__toESM(node_path, 1);
|
|
16
|
-
//#region src/commands/create.ts
|
|
17
|
-
function isDeployTarget(value) {
|
|
18
|
-
return typeof value === "string" && require_types.DEPLOY_TARGETS.includes(value);
|
|
19
|
-
}
|
|
20
|
-
function isDbOdm(value) {
|
|
21
|
-
return typeof value === "string" && require_types.DB_ODMS.includes(value);
|
|
22
|
-
}
|
|
23
|
-
function isDbDriver(value) {
|
|
24
|
-
return typeof value === "string" && require_types.DB_DRIVERS.includes(value);
|
|
25
|
-
}
|
|
26
|
-
function isLoggerId(value) {
|
|
27
|
-
return typeof value === "string" && require_types.LOGGERS.includes(value);
|
|
28
|
-
}
|
|
29
|
-
function isValidatorId(value) {
|
|
30
|
-
return typeof value === "string" && require_types.VALIDATORS.includes(value);
|
|
31
|
-
}
|
|
32
|
-
async function promptInteractiveOptions(args) {
|
|
33
|
-
const projectName = args.projectName ?? await _clack_prompts.text({
|
|
34
|
-
message: "Project name",
|
|
35
|
-
placeholder: "my-taser-app",
|
|
36
|
-
defaultValue: "my-taser-app",
|
|
37
|
-
validate(value) {
|
|
38
|
-
return require_validate_project_name.validateProjectName(value);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
if (_clack_prompts.isCancel(projectName)) {
|
|
42
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
45
|
-
const framework = args.framework ?? await _clack_prompts.select({
|
|
46
|
-
message: "Host framework",
|
|
47
|
-
options: [
|
|
48
|
-
{
|
|
49
|
-
value: "none",
|
|
50
|
-
label: "None",
|
|
51
|
-
hint: "Taser.js Fetch (default)"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
value: "hono",
|
|
55
|
-
label: "Hono"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
value: "express",
|
|
59
|
-
label: "Express"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
value: "fastify",
|
|
63
|
-
label: "Fastify"
|
|
64
|
-
}
|
|
65
|
-
],
|
|
66
|
-
initialValue: "none"
|
|
67
|
-
});
|
|
68
|
-
if (_clack_prompts.isCancel(framework)) {
|
|
69
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
70
|
-
process.exit(0);
|
|
71
|
-
}
|
|
72
|
-
const DEPLOY_LABELS = {
|
|
73
|
-
none: "None (Standalone Vite)",
|
|
74
|
-
"node-server": "Node.js server",
|
|
75
|
-
"node-cluster": "Node.js cluster",
|
|
76
|
-
bun: "Bun",
|
|
77
|
-
"deno-server": "Deno",
|
|
78
|
-
"deno-deploy": "Deno Deploy",
|
|
79
|
-
"cloudflare-module": "Cloudflare Workers",
|
|
80
|
-
vercel: "Vercel",
|
|
81
|
-
"aws-lambda": "AWS Lambda",
|
|
82
|
-
netlify: "Netlify"
|
|
83
|
-
};
|
|
84
|
-
const DEPLOY_HINTS = { none: "standalone Vite, no Nitro" };
|
|
85
|
-
const preset = args.preset ?? await _clack_prompts.select({
|
|
86
|
-
message: "Deployment target",
|
|
87
|
-
options: require_types.DEPLOY_TARGETS.map((id) => ({
|
|
88
|
-
value: id,
|
|
89
|
-
label: DEPLOY_LABELS[id],
|
|
90
|
-
...DEPLOY_HINTS[id] ? { hint: DEPLOY_HINTS[id] } : {}
|
|
91
|
-
})),
|
|
92
|
-
initialValue: "node-server"
|
|
93
|
-
});
|
|
94
|
-
if (_clack_prompts.isCancel(preset) || !isDeployTarget(preset)) {
|
|
95
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
96
|
-
process.exit(0);
|
|
97
|
-
}
|
|
98
|
-
let runtime;
|
|
99
|
-
const runtimeOverrides = require_targets.allowedRuntimeOverrides(preset);
|
|
100
|
-
if (runtimeOverrides.length > 0) {
|
|
101
|
-
const runtimeChoice = args.runtime ?? await _clack_prompts.select({
|
|
102
|
-
message: "Runtime",
|
|
103
|
-
options: [...runtimeOverrides.map((rt) => ({
|
|
104
|
-
value: rt,
|
|
105
|
-
label: rt
|
|
106
|
-
})), {
|
|
107
|
-
value: "default",
|
|
108
|
-
label: `Preset default`,
|
|
109
|
-
hint: "no override"
|
|
110
|
-
}],
|
|
111
|
-
initialValue: "default"
|
|
112
|
-
});
|
|
113
|
-
if (_clack_prompts.isCancel(runtimeChoice)) {
|
|
114
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
115
|
-
process.exit(0);
|
|
116
|
-
}
|
|
117
|
-
runtime = runtimeChoice === "default" ? void 0 : runtimeChoice;
|
|
118
|
-
}
|
|
119
|
-
const dbChoice = args.db ?? await _clack_prompts.select({
|
|
120
|
-
message: "Database",
|
|
121
|
-
options: [
|
|
122
|
-
{
|
|
123
|
-
value: "none",
|
|
124
|
-
label: "None",
|
|
125
|
-
hint: "default"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
value: "drizzle",
|
|
129
|
-
label: "Drizzle"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
value: "prisma",
|
|
133
|
-
label: "Prisma"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
value: "kysely",
|
|
137
|
-
label: "Kysely"
|
|
138
|
-
}
|
|
139
|
-
],
|
|
140
|
-
initialValue: "none"
|
|
141
|
-
});
|
|
142
|
-
if (_clack_prompts.isCancel(dbChoice)) {
|
|
143
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
144
|
-
process.exit(0);
|
|
145
|
-
}
|
|
146
|
-
let db;
|
|
147
|
-
let driver;
|
|
148
|
-
if (dbChoice !== "none" && isDbOdm(dbChoice)) {
|
|
149
|
-
db = dbChoice;
|
|
150
|
-
const driverChoice = args.driver ?? await _clack_prompts.select({
|
|
151
|
-
message: "Database driver",
|
|
152
|
-
options: [
|
|
153
|
-
{
|
|
154
|
-
value: "sqlite",
|
|
155
|
-
label: "SQLite",
|
|
156
|
-
hint: "default"
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
value: "postgres",
|
|
160
|
-
label: "PostgreSQL"
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
value: "mysql",
|
|
164
|
-
label: "MySQL"
|
|
165
|
-
}
|
|
166
|
-
],
|
|
167
|
-
initialValue: "sqlite"
|
|
168
|
-
});
|
|
169
|
-
if (_clack_prompts.isCancel(driverChoice) || !isDbDriver(driverChoice)) {
|
|
170
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
171
|
-
process.exit(0);
|
|
172
|
-
}
|
|
173
|
-
driver = driverChoice;
|
|
174
|
-
}
|
|
175
|
-
const loggerChoice = args.logger ?? await _clack_prompts.select({
|
|
176
|
-
message: "Logger",
|
|
177
|
-
options: [
|
|
178
|
-
{
|
|
179
|
-
value: "none",
|
|
180
|
-
label: "None",
|
|
181
|
-
hint: "default"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
value: "pino",
|
|
185
|
-
label: "Pino"
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
value: "winston",
|
|
189
|
-
label: "Winston"
|
|
190
|
-
}
|
|
191
|
-
],
|
|
192
|
-
initialValue: "none"
|
|
193
|
-
});
|
|
194
|
-
if (_clack_prompts.isCancel(loggerChoice)) {
|
|
195
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
196
|
-
process.exit(0);
|
|
197
|
-
}
|
|
198
|
-
const logger = loggerChoice === "none" ? void 0 : isLoggerId(loggerChoice) ? loggerChoice : void 0;
|
|
199
|
-
const validatorChoice = args.validator ?? await _clack_prompts.select({
|
|
200
|
-
message: "Validator",
|
|
201
|
-
options: [
|
|
202
|
-
{
|
|
203
|
-
value: "none",
|
|
204
|
-
label: "None",
|
|
205
|
-
hint: "default"
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
value: "zod",
|
|
209
|
-
label: "Zod"
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
value: "arktype",
|
|
213
|
-
label: "Arktype"
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
value: "valibot",
|
|
217
|
-
label: "Valibot"
|
|
218
|
-
}
|
|
219
|
-
],
|
|
220
|
-
initialValue: "none"
|
|
221
|
-
});
|
|
222
|
-
if (_clack_prompts.isCancel(validatorChoice)) {
|
|
223
|
-
_clack_prompts.cancel("Scaffold cancelled.");
|
|
224
|
-
process.exit(0);
|
|
225
|
-
}
|
|
226
|
-
const validator = validatorChoice === "none" ? void 0 : isValidatorId(validatorChoice) ? validatorChoice : void 0;
|
|
227
|
-
return {
|
|
228
|
-
projectName: String(projectName).trim(),
|
|
229
|
-
framework,
|
|
230
|
-
preset,
|
|
231
|
-
...runtime !== void 0 ? { runtime } : {},
|
|
232
|
-
yes: args.yes,
|
|
233
|
-
noInstall: args.noInstall,
|
|
234
|
-
json: args.json,
|
|
235
|
-
...db ? {
|
|
236
|
-
db,
|
|
237
|
-
driver
|
|
238
|
-
} : {},
|
|
239
|
-
...logger ? { logger } : {},
|
|
240
|
-
...validator ? { validator } : {}
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
async function runCreateCommand(args) {
|
|
244
|
-
if (args.json && !args.projectName) {
|
|
245
|
-
require_json_output.printCapabilitiesCatalog(require_registry.getCapabilitiesCatalog());
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const cwd = process.cwd();
|
|
249
|
-
const resolved = !args.yes ? await promptInteractiveOptions(args) : {
|
|
250
|
-
...args,
|
|
251
|
-
projectName: args.projectName?.trim(),
|
|
252
|
-
preset: args.preset ?? "node-server"
|
|
253
|
-
};
|
|
254
|
-
if (!resolved.projectName) {
|
|
255
|
-
const message = "Project name is required";
|
|
256
|
-
if (args.json) {
|
|
257
|
-
require_json_output.printJsonError(message);
|
|
258
|
-
process.exit(1);
|
|
259
|
-
}
|
|
260
|
-
throw new Error(message);
|
|
261
|
-
}
|
|
262
|
-
const nameError = require_validate_project_name.validateProjectName(resolved.projectName, cwd);
|
|
263
|
-
if (nameError) {
|
|
264
|
-
if (args.json) {
|
|
265
|
-
require_json_output.printJsonError(nameError);
|
|
266
|
-
process.exit(1);
|
|
267
|
-
}
|
|
268
|
-
throw new Error(nameError);
|
|
269
|
-
}
|
|
270
|
-
const targetDir = node_path.default.resolve(cwd, resolved.projectName);
|
|
271
|
-
const scaffoldCtx = require_parse_options.resolveScaffoldDefaults({
|
|
272
|
-
...resolved,
|
|
273
|
-
projectName: resolved.projectName
|
|
274
|
-
});
|
|
275
|
-
scaffoldCtx.targetDir = targetDir;
|
|
276
|
-
if (!args.json) {
|
|
277
|
-
const spinner = _clack_prompts.spinner();
|
|
278
|
-
spinner.start("Scaffolding project");
|
|
279
|
-
try {
|
|
280
|
-
const result = await require_scaffold_engine.scaffoldProject({
|
|
281
|
-
...scaffoldCtx,
|
|
282
|
-
targetDir,
|
|
283
|
-
skipInstall: args.noInstall,
|
|
284
|
-
agent: require_package_manager.resolveUserAgent()
|
|
285
|
-
});
|
|
286
|
-
spinner.stop("Project created");
|
|
287
|
-
const cdPath = node_path.default.relative(cwd, targetDir) || ".";
|
|
288
|
-
_clack_prompts.note([`cd ${cdPath}`, require_package_manager.runScript(require_package_manager.resolveUserAgent(), "dev")].join("\n"), "Next steps");
|
|
289
|
-
_clack_prompts.outro(picocolors.default.green("Done."));
|
|
290
|
-
return result;
|
|
291
|
-
} catch (error) {
|
|
292
|
-
spinner.stop("Scaffold failed");
|
|
293
|
-
throw error;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
const result = await require_scaffold_engine.scaffoldProject({
|
|
297
|
-
...scaffoldCtx,
|
|
298
|
-
targetDir,
|
|
299
|
-
skipInstall: args.noInstall,
|
|
300
|
-
agent: require_package_manager.resolveUserAgent()
|
|
301
|
-
});
|
|
302
|
-
require_json_output.printScaffoldResult(result);
|
|
303
|
-
return result;
|
|
304
|
-
}
|
|
305
|
-
function buildParsedArgsFromCli(values, positionals) {
|
|
306
|
-
const args = {
|
|
307
|
-
yes: values.y ?? false,
|
|
308
|
-
noInstall: values.noInstall ?? false,
|
|
309
|
-
json: values.json ?? false
|
|
310
|
-
};
|
|
311
|
-
if (positionals[0]) args.projectName = positionals[0];
|
|
312
|
-
if (values.preset) {
|
|
313
|
-
const parsed = require_parse_options.parsePresetFlag(values.preset);
|
|
314
|
-
args.preset = parsed.preset;
|
|
315
|
-
if (parsed.warning && !args.json) console.warn(`warning: ${parsed.warning}`);
|
|
316
|
-
}
|
|
317
|
-
if (values.framework) args.framework = require_parse_options.parseFrameworkFlag(values.framework);
|
|
318
|
-
if (values.runtime) args.runtime = require_parse_options.parseRuntimeFlag(values.runtime);
|
|
319
|
-
if (values.db) {
|
|
320
|
-
const parsed = require_parse_options.parseDbFlag(values.db);
|
|
321
|
-
args.db = parsed.db;
|
|
322
|
-
args.driver = parsed.driver;
|
|
323
|
-
}
|
|
324
|
-
if (values.logger) args.logger = require_parse_options.parseLoggerFlag(values.logger);
|
|
325
|
-
if (values.validator) args.validator = require_parse_options.parseValidatorFlag(values.validator);
|
|
326
|
-
return args;
|
|
327
|
-
}
|
|
328
|
-
//#endregion
|
|
329
|
-
exports.buildParsedArgsFromCli = buildParsedArgsFromCli;
|
|
330
|
-
exports.runCreateCommand = runCreateCommand;
|
|
331
|
-
|
|
332
|
-
//# sourceMappingURL=create.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.cjs","names":[],"sources":["../../../src/commands/create.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport * as p from \"@clack/prompts\";\nimport color from \"picocolors\";\n\nimport { getCapabilitiesCatalog } from \"../addons/registry.js\";\nimport {\n printCapabilitiesCatalog,\n printJsonError,\n printScaffoldResult,\n} from \"../core/json-output.js\";\nimport {\n parseDbFlag,\n parseFrameworkFlag,\n parseLoggerFlag,\n parsePresetFlag,\n parseRuntimeFlag,\n parseValidatorFlag,\n type ParsedCreateArgs,\n resolveScaffoldDefaults,\n} from \"../core/parse-options.js\";\nimport { scaffoldProject } from \"../core/scaffold-engine.js\";\nimport { allowedRuntimeOverrides } from \"../core/targets.js\";\nimport type {\n DbDriver,\n DbOdm,\n DeployTarget,\n LoggerId,\n ScaffoldResult,\n ValidatorId,\n} from \"../core/types.js\";\nimport { DB_DRIVERS, DB_ODMS, DEPLOY_TARGETS, LOGGERS, VALIDATORS } from \"../core/types.js\";\nimport { validateProjectName } from \"../core/validate-project-name.js\";\nimport { resolveUserAgent, runScript } from \"../core/package-manager.js\";\n\nfunction isDeployTarget(value: unknown): value is DeployTarget {\n return typeof value === \"string\" && (DEPLOY_TARGETS as readonly string[]).includes(value);\n}\n\nfunction isDbOdm(value: unknown): value is DbOdm {\n return typeof value === \"string\" && (DB_ODMS as readonly string[]).includes(value);\n}\n\nfunction isDbDriver(value: unknown): value is DbDriver {\n return typeof value === \"string\" && (DB_DRIVERS as readonly string[]).includes(value);\n}\n\nfunction isLoggerId(value: unknown): value is LoggerId {\n return typeof value === \"string\" && (LOGGERS as readonly string[]).includes(value);\n}\n\nfunction isValidatorId(value: unknown): value is ValidatorId {\n return typeof value === \"string\" && (VALIDATORS as readonly string[]).includes(value);\n}\n\nasync function promptInteractiveOptions(args: ParsedCreateArgs): Promise<ParsedCreateArgs> {\n const projectName =\n args.projectName ??\n (await p.text({\n message: \"Project name\",\n placeholder: \"my-taser-app\",\n defaultValue: \"my-taser-app\",\n validate(value) {\n return validateProjectName(value);\n },\n }));\n\n if (p.isCancel(projectName)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n const framework =\n args.framework ??\n (await p.select({\n message: \"Host framework\",\n options: [\n { value: \"none\", label: \"None\", hint: \"Taser.js Fetch (default)\" },\n { value: \"hono\", label: \"Hono\" },\n { value: \"express\", label: \"Express\" },\n { value: \"fastify\", label: \"Fastify\" },\n ],\n initialValue: \"none\",\n }));\n\n if (p.isCancel(framework)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n const DEPLOY_LABELS: Record<DeployTarget, string> = {\n none: \"None (Standalone Vite)\",\n \"node-server\": \"Node.js server\",\n \"node-cluster\": \"Node.js cluster\",\n bun: \"Bun\",\n \"deno-server\": \"Deno\",\n \"deno-deploy\": \"Deno Deploy\",\n \"cloudflare-module\": \"Cloudflare Workers\",\n vercel: \"Vercel\",\n \"aws-lambda\": \"AWS Lambda\",\n netlify: \"Netlify\",\n };\n\n const DEPLOY_HINTS: Partial<Record<DeployTarget, string>> = {\n none: \"standalone Vite, no Nitro\",\n };\n\n const preset =\n args.preset ??\n (await p.select({\n message: \"Deployment target\",\n // oxlint-disable-next-line oxc/no-map-spread\n options: DEPLOY_TARGETS.map((id) => ({\n value: id,\n label: DEPLOY_LABELS[id],\n ...(DEPLOY_HINTS[id] ? { hint: DEPLOY_HINTS[id] } : {}),\n })),\n initialValue: \"node-server\",\n }));\n\n if (p.isCancel(preset) || !isDeployTarget(preset)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n let runtime: import(\"../core/types.js\").Runtime | undefined;\n const runtimeOverrides = allowedRuntimeOverrides(preset);\n if (runtimeOverrides.length > 0) {\n const runtimeChoice =\n args.runtime ??\n (await p.select({\n message: \"Runtime\",\n options: [\n ...runtimeOverrides.map((rt) => ({ value: rt, label: rt })),\n { value: \"default\", label: `Preset default`, hint: \"no override\" },\n ],\n initialValue: \"default\",\n }));\n\n if (p.isCancel(runtimeChoice)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n runtime = runtimeChoice === \"default\" ? undefined : runtimeChoice;\n }\n\n const dbChoice =\n args.db ??\n (await p.select({\n message: \"Database\",\n options: [\n { value: \"none\", label: \"None\", hint: \"default\" },\n { value: \"drizzle\", label: \"Drizzle\" },\n { value: \"prisma\", label: \"Prisma\" },\n { value: \"kysely\", label: \"Kysely\" },\n ],\n initialValue: \"none\",\n }));\n\n if (p.isCancel(dbChoice)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n let db: DbOdm | undefined;\n let driver: DbDriver | undefined;\n\n if (dbChoice !== \"none\" && isDbOdm(dbChoice)) {\n db = dbChoice;\n const driverChoice =\n args.driver ??\n (await p.select({\n message: \"Database driver\",\n options: [\n { value: \"sqlite\", label: \"SQLite\", hint: \"default\" },\n { value: \"postgres\", label: \"PostgreSQL\" },\n { value: \"mysql\", label: \"MySQL\" },\n ],\n initialValue: \"sqlite\",\n }));\n\n if (p.isCancel(driverChoice) || !isDbDriver(driverChoice)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n driver = driverChoice;\n }\n\n const loggerChoice =\n args.logger ??\n (await p.select({\n message: \"Logger\",\n options: [\n { value: \"none\", label: \"None\", hint: \"default\" },\n { value: \"pino\", label: \"Pino\" },\n { value: \"winston\", label: \"Winston\" },\n ],\n initialValue: \"none\",\n }));\n\n if (p.isCancel(loggerChoice)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n const logger =\n loggerChoice === \"none\" ? undefined : isLoggerId(loggerChoice) ? loggerChoice : undefined;\n\n const validatorChoice =\n args.validator ??\n (await p.select({\n message: \"Validator\",\n options: [\n { value: \"none\", label: \"None\", hint: \"default\" },\n { value: \"zod\", label: \"Zod\" },\n { value: \"arktype\", label: \"Arktype\" },\n { value: \"valibot\", label: \"Valibot\" },\n ],\n initialValue: \"none\",\n }));\n\n if (p.isCancel(validatorChoice)) {\n p.cancel(\"Scaffold cancelled.\");\n process.exit(0);\n }\n\n const validator =\n validatorChoice === \"none\"\n ? undefined\n : isValidatorId(validatorChoice)\n ? validatorChoice\n : undefined;\n\n return {\n projectName: String(projectName).trim(),\n framework,\n preset,\n ...(runtime !== undefined ? { runtime } : {}),\n yes: args.yes,\n noInstall: args.noInstall,\n json: args.json,\n ...(db ? { db, driver: driver! } : {}),\n ...(logger ? { logger } : {}),\n ...(validator ? { validator } : {}),\n };\n}\n\nexport async function runCreateCommand(\n args: ParsedCreateArgs,\n): Promise<ScaffoldResult | undefined> {\n if (args.json && !args.projectName) {\n printCapabilitiesCatalog(getCapabilitiesCatalog());\n return undefined;\n }\n\n const cwd = process.cwd();\n const interactive = !args.yes;\n const resolved = interactive\n ? await promptInteractiveOptions(args)\n : {\n ...args,\n projectName: args.projectName?.trim(),\n preset: args.preset ?? \"node-server\",\n };\n\n if (!resolved.projectName) {\n const message = \"Project name is required\";\n if (args.json) {\n printJsonError(message);\n process.exit(1);\n }\n throw new Error(message);\n }\n\n const nameError = validateProjectName(resolved.projectName, cwd);\n if (nameError) {\n if (args.json) {\n printJsonError(nameError);\n process.exit(1);\n }\n throw new Error(nameError);\n }\n\n const targetDir = path.resolve(cwd, resolved.projectName);\n const scaffoldCtx = resolveScaffoldDefaults({\n ...resolved,\n projectName: resolved.projectName,\n });\n scaffoldCtx.targetDir = targetDir;\n\n if (!args.json) {\n const spinner = p.spinner();\n spinner.start(\"Scaffolding project\");\n try {\n const result = await scaffoldProject({\n ...scaffoldCtx,\n targetDir,\n skipInstall: args.noInstall,\n agent: resolveUserAgent(),\n });\n spinner.stop(\"Project created\");\n const cdPath = path.relative(cwd, targetDir) || \".\";\n p.note([`cd ${cdPath}`, runScript(resolveUserAgent(), \"dev\")].join(\"\\n\"), \"Next steps\");\n p.outro(color.green(\"Done.\"));\n return result;\n } catch (error) {\n spinner.stop(\"Scaffold failed\");\n throw error;\n }\n }\n\n const result = await scaffoldProject({\n ...scaffoldCtx,\n targetDir,\n skipInstall: args.noInstall,\n agent: resolveUserAgent(),\n });\n printScaffoldResult(result);\n return result;\n}\n\nexport function buildParsedArgsFromCli(\n values: {\n preset?: string;\n framework?: string;\n runtime?: string;\n db?: string;\n logger?: string;\n validator?: string;\n y?: boolean;\n noInstall?: boolean;\n json?: boolean;\n },\n positionals: string[],\n): ParsedCreateArgs {\n const args: ParsedCreateArgs = {\n yes: values.y ?? false,\n noInstall: values.noInstall ?? false,\n json: values.json ?? false,\n };\n\n if (positionals[0]) {\n args.projectName = positionals[0];\n }\n\n if (values.preset) {\n const parsed = parsePresetFlag(values.preset);\n args.preset = parsed.preset;\n if (parsed.warning && !args.json) {\n console.warn(`warning: ${parsed.warning}`);\n }\n }\n\n if (values.framework) {\n args.framework = parseFrameworkFlag(values.framework);\n }\n\n if (values.runtime) {\n args.runtime = parseRuntimeFlag(values.runtime);\n }\n\n if (values.db) {\n const parsed = parseDbFlag(values.db);\n args.db = parsed.db;\n args.driver = parsed.driver;\n }\n\n if (values.logger) {\n args.logger = parseLoggerFlag(values.logger);\n }\n\n if (values.validator) {\n args.validator = parseValidatorFlag(values.validator);\n }\n\n return args;\n}\n"],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParsedCreateArgs } from '../core/parse-options.js';
|
|
2
|
-
import { ScaffoldResult } from '../core/types.js';
|
|
3
|
-
export declare function runCreateCommand(args: ParsedCreateArgs): Promise<ScaffoldResult | undefined>;
|
|
4
|
-
export declare function buildParsedArgsFromCli(values: {
|
|
5
|
-
preset?: string;
|
|
6
|
-
framework?: string;
|
|
7
|
-
runtime?: string;
|
|
8
|
-
db?: string;
|
|
9
|
-
logger?: string;
|
|
10
|
-
validator?: string;
|
|
11
|
-
y?: boolean;
|
|
12
|
-
noInstall?: boolean;
|
|
13
|
-
json?: boolean;
|
|
14
|
-
}, positionals: string[]): ParsedCreateArgs;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/core/json-output.ts
|
|
2
|
-
function printCapabilitiesCatalog(catalog) {
|
|
3
|
-
console.log(JSON.stringify(catalog, null, 2));
|
|
4
|
-
}
|
|
5
|
-
function printScaffoldResult(result) {
|
|
6
|
-
console.log(JSON.stringify(result, null, 2));
|
|
7
|
-
}
|
|
8
|
-
function printJsonError(message) {
|
|
9
|
-
console.error(JSON.stringify({ error: message }));
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
exports.printCapabilitiesCatalog = printCapabilitiesCatalog;
|
|
13
|
-
exports.printJsonError = printJsonError;
|
|
14
|
-
exports.printScaffoldResult = printScaffoldResult;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=json-output.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-output.cjs","names":[],"sources":["../../../src/core/json-output.ts"],"sourcesContent":["import type { CapabilitiesCatalog, ScaffoldResult } from \"./types.js\";\n\nexport function printCapabilitiesCatalog(catalog: CapabilitiesCatalog): void {\n console.log(JSON.stringify(catalog, null, 2));\n}\n\nexport function printScaffoldResult(result: ScaffoldResult): void {\n console.log(JSON.stringify(result, null, 2));\n}\n\nexport function printJsonError(message: string): void {\n console.error(JSON.stringify({ error: message }));\n}\n"],"mappings":";AAEA,SAAgB,yBAAyB,SAAoC;CAC3E,QAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAC9C;AAEA,SAAgB,oBAAoB,QAA8B;CAChE,QAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEA,SAAgB,eAAe,SAAuB;CACpD,QAAQ,MAAM,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC,CAAC;AAClD"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { CapabilitiesCatalog, ScaffoldResult } from './types.js';
|
|
2
|
-
export declare function printCapabilitiesCatalog(catalog: CapabilitiesCatalog): void;
|
|
3
|
-
export declare function printScaffoldResult(result: ScaffoldResult): void;
|
|
4
|
-
export declare function printJsonError(message: string): void;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
let node_child_process = require("node:child_process");
|
|
2
|
-
let package_manager_detector_commands = require("package-manager-detector/commands");
|
|
3
|
-
let package_manager_detector_detect = require("package-manager-detector/detect");
|
|
4
|
-
//#region src/core/package-manager.ts
|
|
5
|
-
function resolveUserAgent() {
|
|
6
|
-
return (0, package_manager_detector_detect.getUserAgent)() || "npm";
|
|
7
|
-
}
|
|
8
|
-
function runCommand(command, args, cwd) {
|
|
9
|
-
return new Promise((resolve, reject) => {
|
|
10
|
-
const child = (0, node_child_process.spawn)(command, args, {
|
|
11
|
-
cwd,
|
|
12
|
-
stdio: "inherit",
|
|
13
|
-
shell: false,
|
|
14
|
-
env: process.env
|
|
15
|
-
});
|
|
16
|
-
child.on("error", reject);
|
|
17
|
-
child.on("close", (code) => {
|
|
18
|
-
if (code === 0) {
|
|
19
|
-
resolve();
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
reject(/* @__PURE__ */ new Error(`${command} ${args.join(" ")} exited with code ${code}`));
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function resolveInstallCommand(agent, packages, dev) {
|
|
27
|
-
const args = dev ? ["-D", ...packages] : packages;
|
|
28
|
-
const command = (0, package_manager_detector_commands.resolveCommand)(agent, "add", args);
|
|
29
|
-
if (command) return command;
|
|
30
|
-
return {
|
|
31
|
-
command: "npm",
|
|
32
|
-
args: ["install", ...args]
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
async function installPackages(agent, cwd, { dependencies, devDependencies }) {
|
|
36
|
-
if (dependencies.length > 0) {
|
|
37
|
-
const { command, args } = resolveInstallCommand(agent, dependencies, false);
|
|
38
|
-
await runCommand(command, args, cwd);
|
|
39
|
-
}
|
|
40
|
-
if (devDependencies.length > 0) {
|
|
41
|
-
const { command, args } = resolveInstallCommand(agent, devDependencies, true);
|
|
42
|
-
await runCommand(command, args, cwd);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function runScript(agent, script) {
|
|
46
|
-
const resolved = (0, package_manager_detector_commands.resolveCommand)(agent, "run", [script]);
|
|
47
|
-
if (!resolved) throw new Error(`Unable to resolve run command for ${agent}`);
|
|
48
|
-
return `${resolved.command} ${resolved.args.join(" ")}`;
|
|
49
|
-
}
|
|
50
|
-
//#endregion
|
|
51
|
-
exports.installPackages = installPackages;
|
|
52
|
-
exports.resolveInstallCommand = resolveInstallCommand;
|
|
53
|
-
exports.resolveUserAgent = resolveUserAgent;
|
|
54
|
-
exports.runScript = runScript;
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=package-manager.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.cjs","names":[],"sources":["../../../src/core/package-manager.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\n\nimport type { Agent, ResolvedCommand } from \"package-manager-detector\";\nimport { resolveCommand } from \"package-manager-detector/commands\";\nimport { getUserAgent } from \"package-manager-detector/detect\";\n\nexport function resolveUserAgent(): Agent {\n return getUserAgent() || \"npm\";\n}\n\nfunction runCommand(command: string, args: string[], cwd: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: \"inherit\",\n shell: false,\n env: process.env,\n });\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`${command} ${args.join(\" \")} exited with code ${code}`));\n });\n });\n}\n\nexport function resolveInstallCommand(\n agent: Agent,\n packages: string[],\n dev: boolean,\n): ResolvedCommand {\n const args = dev ? [\"-D\", ...packages] : packages;\n const command = resolveCommand(agent, \"add\", args);\n if (command) return command;\n\n return {\n command: \"npm\",\n args: [\"install\", ...args],\n };\n}\n\nexport async function installPackages(\n agent: Agent,\n cwd: string,\n {\n dependencies,\n devDependencies,\n }: {\n dependencies: string[];\n devDependencies: string[];\n },\n): Promise<void> {\n if (dependencies.length > 0) {\n const { command, args } = resolveInstallCommand(agent, dependencies, false);\n await runCommand(command, args, cwd);\n }\n if (devDependencies.length > 0) {\n const { command, args } = resolveInstallCommand(agent, devDependencies, true);\n await runCommand(command, args, cwd);\n }\n}\n\nexport function runScript(agent: Agent, script: string): string {\n const resolved = resolveCommand(agent, \"run\", [script]);\n if (!resolved) {\n throw new Error(`Unable to resolve run command for ${agent}`);\n }\n return `${resolved.command} ${resolved.args.join(\" \")}`;\n}\n"],"mappings":";;;;AAMA,SAAgB,mBAA0B;CACxC,QAAA,GAAO,gCAAA,aAAA,CAAa,KAAK;AAC3B;AAEA,SAAS,WAAW,SAAiB,MAAgB,KAA4B;CAC/E,OAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,SAAA,GAAQ,mBAAA,MAAA,CAAM,SAAS,MAAM;GACjC;GACA,OAAO;GACP,OAAO;GACP,KAAK,QAAQ;EACf,CAAC;EACD,MAAM,GAAG,SAAS,MAAM;EACxB,MAAM,GAAG,UAAU,SAAS;GAC1B,IAAI,SAAS,GAAG;IACd,QAAQ;IACR;GACF;GACA,uBAAO,IAAI,MAAM,GAAG,QAAQ,GAAG,KAAK,KAAK,GAAG,EAAE,oBAAoB,MAAM,CAAC;EAC3E,CAAC;CACH,CAAC;AACH;AAEA,SAAgB,sBACd,OACA,UACA,KACiB;CACjB,MAAM,OAAO,MAAM,CAAC,MAAM,GAAG,QAAQ,IAAI;CACzC,MAAM,WAAA,GAAU,kCAAA,eAAA,CAAe,OAAO,OAAO,IAAI;CACjD,IAAI,SAAS,OAAO;CAEpB,OAAO;EACL,SAAS;EACT,MAAM,CAAC,WAAW,GAAG,IAAI;CAC3B;AACF;AAEA,eAAsB,gBACpB,OACA,KACA,EACE,cACA,mBAKa;CACf,IAAI,aAAa,SAAS,GAAG;EAC3B,MAAM,EAAE,SAAS,SAAS,sBAAsB,OAAO,cAAc,KAAK;EAC1E,MAAM,WAAW,SAAS,MAAM,GAAG;CACrC;CACA,IAAI,gBAAgB,SAAS,GAAG;EAC9B,MAAM,EAAE,SAAS,SAAS,sBAAsB,OAAO,iBAAiB,IAAI;EAC5E,MAAM,WAAW,SAAS,MAAM,GAAG;CACrC;AACF;AAEA,SAAgB,UAAU,OAAc,QAAwB;CAC9D,MAAM,YAAA,GAAW,kCAAA,eAAA,CAAe,OAAO,OAAO,CAAC,MAAM,CAAC;CACtD,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,qCAAqC,OAAO;CAE9D,OAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,KAAK,KAAK,GAAG;AACtD"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Agent, ResolvedCommand } from 'package-manager-detector';
|
|
2
|
-
export declare function resolveUserAgent(): Agent;
|
|
3
|
-
export declare function resolveInstallCommand(agent: Agent, packages: string[], dev: boolean): ResolvedCommand;
|
|
4
|
-
export declare function installPackages(agent: Agent, cwd: string, { dependencies, devDependencies, }: {
|
|
5
|
-
dependencies: string[];
|
|
6
|
-
devDependencies: string[];
|
|
7
|
-
}): Promise<void>;
|
|
8
|
-
export declare function runScript(agent: Agent, script: string): string;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
const require_types = require("./types.cjs");
|
|
2
|
-
const require_targets = require("./targets.cjs");
|
|
3
|
-
//#region src/core/parse-options.ts
|
|
4
|
-
function isFramework(value) {
|
|
5
|
-
return require_types.FRAMEWORKS.includes(value);
|
|
6
|
-
}
|
|
7
|
-
function isRuntime(value) {
|
|
8
|
-
return require_types.RUNTIMES.includes(value);
|
|
9
|
-
}
|
|
10
|
-
function isDbOdm(value) {
|
|
11
|
-
return require_types.DB_ODMS.includes(value);
|
|
12
|
-
}
|
|
13
|
-
function isDbDriver(value) {
|
|
14
|
-
return require_types.DB_DRIVERS.includes(value);
|
|
15
|
-
}
|
|
16
|
-
function isLoggerId(value) {
|
|
17
|
-
return require_types.LOGGERS.includes(value);
|
|
18
|
-
}
|
|
19
|
-
function isValidatorId(value) {
|
|
20
|
-
return require_types.VALIDATORS.includes(value);
|
|
21
|
-
}
|
|
22
|
-
function parseDbFlag(value) {
|
|
23
|
-
const [odm, driver] = value.split(":");
|
|
24
|
-
if (!odm || !isDbOdm(odm)) throw new Error(`Invalid --db value "${value}". Use drizzle, prisma, or kysely (optionally with :postgres, :sqlite, or :mysql).`);
|
|
25
|
-
if (driver === void 0 || driver === "") return {
|
|
26
|
-
db: odm,
|
|
27
|
-
driver: require_types.DEFAULT_DB_DRIVER
|
|
28
|
-
};
|
|
29
|
-
if (!isDbDriver(driver)) throw new Error(`Invalid database driver "${driver}". Use postgres, sqlite, or mysql.`);
|
|
30
|
-
return {
|
|
31
|
-
db: odm,
|
|
32
|
-
driver
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function parseFrameworkFlag(value) {
|
|
36
|
-
if (!isFramework(value)) throw new Error(`Invalid --framework "${value}". Use ${require_types.FRAMEWORKS.join(", ")}.`);
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Accepts curated deploy targets verbatim; unknown ids pass through to Nitro.
|
|
41
|
-
* Returns a warning for passthrough ids so callers can surface it.
|
|
42
|
-
*/
|
|
43
|
-
function parsePresetFlag(value) {
|
|
44
|
-
if (!require_targets.isCuratedDeploy(value)) {
|
|
45
|
-
if (!/^[a-z0-9][a-z0-9-_]*$/i.test(value)) throw new Error(`Invalid --preset "${value}".`);
|
|
46
|
-
return {
|
|
47
|
-
preset: value,
|
|
48
|
-
warning: `"${value}" is not a curated Taser.js deploy target; passing it through to Nitro as-is.`
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
return { preset: value };
|
|
52
|
-
}
|
|
53
|
-
function parseRuntimeFlag(value) {
|
|
54
|
-
if (!isRuntime(value)) throw new Error(`Invalid --runtime "${value}". Use node, bun, or deno.`);
|
|
55
|
-
return value;
|
|
56
|
-
}
|
|
57
|
-
function parseLoggerFlag(value) {
|
|
58
|
-
if (!isLoggerId(value)) throw new Error(`Invalid --logger "${value}". Use pino or winston.`);
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
function parseValidatorFlag(value) {
|
|
62
|
-
if (!isValidatorId(value)) throw new Error(`Invalid --validator "${value}". Use zod, arktype, or valibot.`);
|
|
63
|
-
return value;
|
|
64
|
-
}
|
|
65
|
-
function resolveScaffoldDefaults(args) {
|
|
66
|
-
const framework = args.framework ?? "none";
|
|
67
|
-
const preset = args.preset ?? "node-server";
|
|
68
|
-
if (!args.projectName) throw new Error("Project name is required");
|
|
69
|
-
const combination = require_targets.validateCombination(args.runtime, framework, preset);
|
|
70
|
-
if (!combination.ok) throw new Error(combination.reason);
|
|
71
|
-
const result = {
|
|
72
|
-
projectName: args.projectName.trim(),
|
|
73
|
-
targetDir: "",
|
|
74
|
-
framework,
|
|
75
|
-
preset,
|
|
76
|
-
...args.runtime !== void 0 ? { runtime: args.runtime } : {}
|
|
77
|
-
};
|
|
78
|
-
if (args.db) {
|
|
79
|
-
result.db = args.db;
|
|
80
|
-
result.driver = args.driver ?? "sqlite";
|
|
81
|
-
}
|
|
82
|
-
if (args.logger) result.logger = args.logger;
|
|
83
|
-
if (args.validator) result.validator = args.validator;
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
//#endregion
|
|
87
|
-
exports.parseDbFlag = parseDbFlag;
|
|
88
|
-
exports.parseFrameworkFlag = parseFrameworkFlag;
|
|
89
|
-
exports.parseLoggerFlag = parseLoggerFlag;
|
|
90
|
-
exports.parsePresetFlag = parsePresetFlag;
|
|
91
|
-
exports.parseRuntimeFlag = parseRuntimeFlag;
|
|
92
|
-
exports.parseValidatorFlag = parseValidatorFlag;
|
|
93
|
-
exports.resolveScaffoldDefaults = resolveScaffoldDefaults;
|
|
94
|
-
|
|
95
|
-
//# sourceMappingURL=parse-options.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-options.cjs","names":[],"sources":["../../../src/core/parse-options.ts"],"sourcesContent":["import {\n DB_DRIVERS,\n DB_ODMS,\n DEFAULT_DB_DRIVER,\n FRAMEWORKS,\n LOGGERS,\n RUNTIMES,\n VALIDATORS,\n type DbDriver,\n type DbOdm,\n type DeployTarget,\n type Framework,\n type LoggerId,\n type Runtime,\n type ScaffoldContext,\n type ValidatorId,\n} from \"./types.js\";\nimport {\n DEFAULT_DEPLOY,\n isCuratedDeploy,\n resolveDeployEntry,\n validateCombination,\n} from \"./targets.js\";\n\nexport type ParsedCreateArgs = {\n projectName?: string;\n framework?: Framework;\n /** Deployment target — a Nitro preset id. */\n preset?: string;\n runtime?: Runtime;\n db?: DbOdm;\n driver?: DbDriver;\n logger?: LoggerId;\n validator?: ValidatorId;\n yes: boolean;\n noInstall: boolean;\n json: boolean;\n};\n\nfunction isFramework(value: string): value is Framework {\n return (FRAMEWORKS as readonly string[]).includes(value);\n}\n\nfunction isRuntime(value: string): value is Runtime {\n return (RUNTIMES as readonly string[]).includes(value);\n}\n\nfunction isDbOdm(value: string): value is DbOdm {\n return (DB_ODMS as readonly string[]).includes(value);\n}\n\nfunction isDbDriver(value: string): value is DbDriver {\n return (DB_DRIVERS as readonly string[]).includes(value);\n}\n\nfunction isLoggerId(value: string): value is LoggerId {\n return (LOGGERS as readonly string[]).includes(value);\n}\n\nfunction isValidatorId(value: string): value is ValidatorId {\n return (VALIDATORS as readonly string[]).includes(value);\n}\n\nexport function parseDbFlag(value: string): { db: DbOdm; driver: DbDriver } {\n const [odm, driver] = value.split(\":\");\n if (!odm || !isDbOdm(odm)) {\n throw new Error(\n `Invalid --db value \"${value}\". Use drizzle, prisma, or kysely (optionally with :postgres, :sqlite, or :mysql).`,\n );\n }\n\n if (driver === undefined || driver === \"\") {\n return { db: odm, driver: DEFAULT_DB_DRIVER };\n }\n\n if (!isDbDriver(driver)) {\n throw new Error(`Invalid database driver \"${driver}\". Use postgres, sqlite, or mysql.`);\n }\n\n return { db: odm, driver };\n}\n\nexport function parseFrameworkFlag(value: string): Framework {\n if (!isFramework(value)) {\n throw new Error(`Invalid --framework \"${value}\". Use ${FRAMEWORKS.join(\", \")}.`);\n }\n return value;\n}\n\n/**\n * Accepts curated deploy targets verbatim; unknown ids pass through to Nitro.\n * Returns a warning for passthrough ids so callers can surface it.\n */\nexport function parsePresetFlag(value: string): { preset: string; warning?: string } {\n if (!isCuratedDeploy(value)) {\n if (!/^[a-z0-9][a-z0-9-_]*$/i.test(value)) {\n throw new Error(`Invalid --preset \"${value}\".`);\n }\n return {\n preset: value,\n warning: `\"${value}\" is not a curated Taser.js deploy target; passing it through to Nitro as-is.`,\n };\n }\n return { preset: value };\n}\n\nexport function parseRuntimeFlag(value: string): Runtime {\n if (!isRuntime(value)) {\n throw new Error(`Invalid --runtime \"${value}\". Use node, bun, or deno.`);\n }\n return value;\n}\n\nexport function parseLoggerFlag(value: string): LoggerId {\n if (!isLoggerId(value)) {\n throw new Error(`Invalid --logger \"${value}\". Use pino or winston.`);\n }\n return value;\n}\n\nexport function parseValidatorFlag(value: string): ValidatorId {\n if (!isValidatorId(value)) {\n throw new Error(`Invalid --validator \"${value}\". Use zod, arktype, or valibot.`);\n }\n return value;\n}\n\nexport function resolveScaffoldDefaults(args: ParsedCreateArgs): ScaffoldContext {\n const framework: Framework = args.framework ?? \"none\";\n const preset = args.preset ?? DEFAULT_DEPLOY;\n\n if (!args.projectName) {\n throw new Error(\"Project name is required\");\n }\n\n // Throws with a precise reason when runtime × framework × deploy clash.\n const combination = validateCombination(args.runtime, framework, preset);\n if (!combination.ok) {\n throw new Error(combination.reason);\n }\n\n const result: ScaffoldContext = {\n projectName: args.projectName.trim(),\n targetDir: \"\",\n framework,\n preset: preset as DeployTarget,\n ...(args.runtime !== undefined ? { runtime: args.runtime } : {}),\n };\n\n if (args.db) {\n result.db = args.db;\n result.driver = args.driver ?? DEFAULT_DB_DRIVER;\n }\n\n if (args.logger) {\n result.logger = args.logger;\n }\n\n if (args.validator) {\n result.validator = args.validator;\n }\n\n return result;\n}\n\n/** Re-exported for CLI layers that need to warn about passthrough presets. */\nexport { resolveDeployEntry };\n"],"mappings":";;;AAuCA,SAAS,YAAY,OAAmC;CACtD,OAAQ,cAAA,WAAiC,SAAS,KAAK;AACzD;AAEA,SAAS,UAAU,OAAiC;CAClD,OAAQ,cAAA,SAA+B,SAAS,KAAK;AACvD;AAEA,SAAS,QAAQ,OAA+B;CAC9C,OAAQ,cAAA,QAA8B,SAAS,KAAK;AACtD;AAEA,SAAS,WAAW,OAAkC;CACpD,OAAQ,cAAA,WAAiC,SAAS,KAAK;AACzD;AAEA,SAAS,WAAW,OAAkC;CACpD,OAAQ,cAAA,QAA8B,SAAS,KAAK;AACtD;AAEA,SAAS,cAAc,OAAqC;CAC1D,OAAQ,cAAA,WAAiC,SAAS,KAAK;AACzD;AAEA,SAAgB,YAAY,OAAgD;CAC1E,MAAM,CAAC,KAAK,UAAU,MAAM,MAAM,GAAG;CACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,GACtB,MAAM,IAAI,MACR,uBAAuB,MAAM,mFAC/B;CAGF,IAAI,WAAW,KAAA,KAAa,WAAW,IACrC,OAAO;EAAE,IAAI;EAAK,QAAQ,cAAA;CAAkB;CAG9C,IAAI,CAAC,WAAW,MAAM,GACpB,MAAM,IAAI,MAAM,4BAA4B,OAAO,mCAAmC;CAGxF,OAAO;EAAE,IAAI;EAAK;CAAO;AAC3B;AAEA,SAAgB,mBAAmB,OAA0B;CAC3D,IAAI,CAAC,YAAY,KAAK,GACpB,MAAM,IAAI,MAAM,wBAAwB,MAAM,SAAS,cAAA,WAAW,KAAK,IAAI,EAAE,EAAE;CAEjF,OAAO;AACT;;;;;AAMA,SAAgB,gBAAgB,OAAqD;CACnF,IAAI,CAAC,gBAAA,gBAAgB,KAAK,GAAG;EAC3B,IAAI,CAAC,yBAAyB,KAAK,KAAK,GACtC,MAAM,IAAI,MAAM,qBAAqB,MAAM,GAAG;EAEhD,OAAO;GACL,QAAQ;GACR,SAAS,IAAI,MAAM;EACrB;CACF;CACA,OAAO,EAAE,QAAQ,MAAM;AACzB;AAEA,SAAgB,iBAAiB,OAAwB;CACvD,IAAI,CAAC,UAAU,KAAK,GAClB,MAAM,IAAI,MAAM,sBAAsB,MAAM,2BAA2B;CAEzE,OAAO;AACT;AAEA,SAAgB,gBAAgB,OAAyB;CACvD,IAAI,CAAC,WAAW,KAAK,GACnB,MAAM,IAAI,MAAM,qBAAqB,MAAM,wBAAwB;CAErE,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAA4B;CAC7D,IAAI,CAAC,cAAc,KAAK,GACtB,MAAM,IAAI,MAAM,wBAAwB,MAAM,iCAAiC;CAEjF,OAAO;AACT;AAEA,SAAgB,wBAAwB,MAAyC;CAC/E,MAAM,YAAuB,KAAK,aAAa;CAC/C,MAAM,SAAS,KAAK,UAAA;CAEpB,IAAI,CAAC,KAAK,aACR,MAAM,IAAI,MAAM,0BAA0B;CAI5C,MAAM,cAAc,gBAAA,oBAAoB,KAAK,SAAS,WAAW,MAAM;CACvE,IAAI,CAAC,YAAY,IACf,MAAM,IAAI,MAAM,YAAY,MAAM;CAGpC,MAAM,SAA0B;EAC9B,aAAa,KAAK,YAAY,KAAK;EACnC,WAAW;EACX;EACQ;EACR,GAAI,KAAK,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;CAChE;CAEA,IAAI,KAAK,IAAI;EACX,OAAO,KAAK,KAAK;EACjB,OAAO,SAAS,KAAK,UAAA;CACvB;CAEA,IAAI,KAAK,QACP,OAAO,SAAS,KAAK;CAGvB,IAAI,KAAK,WACP,OAAO,YAAY,KAAK;CAG1B,OAAO;AACT"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { DbDriver, DbOdm, Framework, LoggerId, Runtime, ScaffoldContext, ValidatorId } from './types.js';
|
|
2
|
-
import { resolveDeployEntry } from './targets.js';
|
|
3
|
-
export type ParsedCreateArgs = {
|
|
4
|
-
projectName?: string;
|
|
5
|
-
framework?: Framework;
|
|
6
|
-
/** Deployment target — a Nitro preset id. */
|
|
7
|
-
preset?: string;
|
|
8
|
-
runtime?: Runtime;
|
|
9
|
-
db?: DbOdm;
|
|
10
|
-
driver?: DbDriver;
|
|
11
|
-
logger?: LoggerId;
|
|
12
|
-
validator?: ValidatorId;
|
|
13
|
-
yes: boolean;
|
|
14
|
-
noInstall: boolean;
|
|
15
|
-
json: boolean;
|
|
16
|
-
};
|
|
17
|
-
export declare function parseDbFlag(value: string): {
|
|
18
|
-
db: DbOdm;
|
|
19
|
-
driver: DbDriver;
|
|
20
|
-
};
|
|
21
|
-
export declare function parseFrameworkFlag(value: string): Framework;
|
|
22
|
-
/**
|
|
23
|
-
* Accepts curated deploy targets verbatim; unknown ids pass through to Nitro.
|
|
24
|
-
* Returns a warning for passthrough ids so callers can surface it.
|
|
25
|
-
*/
|
|
26
|
-
export declare function parsePresetFlag(value: string): {
|
|
27
|
-
preset: string;
|
|
28
|
-
warning?: string;
|
|
29
|
-
};
|
|
30
|
-
export declare function parseRuntimeFlag(value: string): Runtime;
|
|
31
|
-
export declare function parseLoggerFlag(value: string): LoggerId;
|
|
32
|
-
export declare function parseValidatorFlag(value: string): ValidatorId;
|
|
33
|
-
export declare function resolveScaffoldDefaults(args: ParsedCreateArgs): ScaffoldContext;
|
|
34
|
-
/** Re-exported for CLI layers that need to warn about passthrough presets. */
|
|
35
|
-
export { resolveDeployEntry };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
let node_path = require("node:path");
|
|
3
|
-
node_path = require_runtime.__toESM(node_path, 1);
|
|
4
|
-
let node_fs_promises = require("node:fs/promises");
|
|
5
|
-
//#region src/core/project-config.ts
|
|
6
|
-
async function writeProjectConfig(root, ctx) {
|
|
7
|
-
const config = {
|
|
8
|
-
framework: ctx.framework ?? "none",
|
|
9
|
-
preset: ctx.preset ?? "node-server"
|
|
10
|
-
};
|
|
11
|
-
if (ctx.runtime) config.runtime = ctx.runtime;
|
|
12
|
-
if (ctx.db) {
|
|
13
|
-
config.db = ctx.db;
|
|
14
|
-
if (ctx.driver) config.driver = ctx.driver;
|
|
15
|
-
}
|
|
16
|
-
if (ctx.logger) config.logger = ctx.logger;
|
|
17
|
-
if (ctx.validator) config.validator = ctx.validator;
|
|
18
|
-
await (0, node_fs_promises.writeFile)(node_path.default.join(root, ".taser.json"), `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
exports.writeProjectConfig = writeProjectConfig;
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=project-config.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.cjs","names":[],"sources":["../../../src/core/project-config.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport type { ScaffoldContext } from \"./types.js\";\n\nexport async function writeProjectConfig(root: string, ctx: ScaffoldContext): Promise<void> {\n const config: Record<string, string> = {\n framework: ctx.framework ?? \"none\",\n preset: ctx.preset ?? \"node-server\",\n };\n\n if (ctx.runtime) {\n config.runtime = ctx.runtime;\n }\n\n if (ctx.db) {\n config.db = ctx.db;\n if (ctx.driver) {\n config.driver = ctx.driver;\n }\n }\n\n if (ctx.logger) {\n config.logger = ctx.logger;\n }\n\n if (ctx.validator) {\n config.validator = ctx.validator;\n }\n\n await writeFile(path.join(root, \".taser.json\"), `${JSON.stringify(config, null, 2)}\\n`, \"utf8\");\n}\n"],"mappings":";;;;;AAKA,eAAsB,mBAAmB,MAAc,KAAqC;CAC1F,MAAM,SAAiC;EACrC,WAAW,IAAI,aAAa;EAC5B,QAAQ,IAAI,UAAU;CACxB;CAEA,IAAI,IAAI,SACN,OAAO,UAAU,IAAI;CAGvB,IAAI,IAAI,IAAI;EACV,OAAO,KAAK,IAAI;EAChB,IAAI,IAAI,QACN,OAAO,SAAS,IAAI;CAExB;CAEA,IAAI,IAAI,QACN,OAAO,SAAS,IAAI;CAGtB,IAAI,IAAI,WACN,OAAO,YAAY,IAAI;CAGzB,OAAA,GAAM,iBAAA,UAAA,CAAU,UAAA,QAAK,KAAK,MAAM,aAAa,GAAG,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,KAAK,MAAM;AAChG"}
|