@waniwani/kit 0.1.6 → 0.1.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 +39 -39
- package/dist/cli/codegen.js +1105 -0
- package/dist/cli/codegen.js.map +1 -0
- package/{cli/env.mjs → dist/cli/env.js} +5 -6
- package/dist/cli/env.js.map +1 -0
- package/{cli/framework.mjs → dist/cli/framework.js} +112 -115
- package/dist/cli/framework.js.map +1 -0
- package/dist/cli/index.js +378 -0
- package/dist/cli/index.js.map +1 -0
- package/{cli/init.mjs → dist/cli/init.js} +218 -259
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/log.js +156 -0
- package/dist/cli/log.js.map +1 -0
- package/dist/cli/manifest.js +57 -0
- package/dist/cli/manifest.js.map +1 -0
- package/{cli/peers.mjs → dist/cli/peers.js} +77 -88
- package/dist/cli/peers.js.map +1 -0
- package/dist/cli/scan.js +100 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/template.js +173 -0
- package/dist/cli/template.js.map +1 -0
- package/dist/cli/types.js +14 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/validate.js +328 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/cli/vercel.js +103 -0
- package/dist/cli/vercel.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +0 -1
- package/dist/server.js.map +1 -1
- package/dist/web.d.ts +8 -7
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +7 -6
- package/dist/web.js.map +1 -1
- package/package.json +13 -9
- package/src/server.ts +7 -9
- package/src/web.tsx +12 -13
- package/cli/codegen.mjs +0 -1267
- package/cli/index.mjs +0 -409
- package/cli/log.mjs +0 -178
- package/cli/scan.mjs +0 -112
- package/cli/template.mjs +0 -190
- package/cli/validate.mjs +0 -391
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* The `waniwani` CLI.
|
|
4
|
+
*
|
|
5
|
+
* waniwani init scaffold a new app folder and install it
|
|
6
|
+
* waniwani check validate the app folder
|
|
7
|
+
* waniwani dev check, generate, run the dev server, watch for changes
|
|
8
|
+
* waniwani build check, generate, build for production
|
|
9
|
+
* waniwani start run the production build
|
|
10
|
+
* waniwani eject write the plumbing into the repo and hand it over
|
|
11
|
+
*
|
|
12
|
+
* Every command scans the app folder, validates it, and generates a complete
|
|
13
|
+
* framework project under `.waniwani/`. The app repo owns content; this CLI and
|
|
14
|
+
* the runtime own everything else.
|
|
15
|
+
*/
|
|
16
|
+
import { spawn } from "node:child_process";
|
|
17
|
+
import { existsSync, watch } from "node:fs";
|
|
18
|
+
import { dirname, join, resolve } from "node:path";
|
|
19
|
+
import { existingPlumbing, generate } from "./codegen.js";
|
|
20
|
+
import { loadAppEnv } from "./env.js";
|
|
21
|
+
import { devFilter, FRAMEWORK_ENV, frameworkBin, loadBuildSteps, runBuildSteps, startFilter, } from "./framework.js";
|
|
22
|
+
import { init } from "./init.js";
|
|
23
|
+
import { banner, bold, dim, green, printReport, red, yellow } from "./log.js";
|
|
24
|
+
import { PACKAGE_VERSION } from "./manifest.js";
|
|
25
|
+
import { scanApp } from "./scan.js";
|
|
26
|
+
import { DEFAULT_TEMPLATE, describeTemplate, resolveTemplate } from "./template.js";
|
|
27
|
+
import { validateApp } from "./validate.js";
|
|
28
|
+
import { stageBuildOutput } from "./vercel.js";
|
|
29
|
+
/** The commands a human sits and watches. `check` and `eject` are often scripted. */
|
|
30
|
+
const BANNERED = new Set(["init", "dev", "build", "start"]);
|
|
31
|
+
/**
|
|
32
|
+
* Diagnostics about this CLI's own machinery — which template was resolved, how
|
|
33
|
+
* many files it copied, which dependencies were overridden, stack traces. None
|
|
34
|
+
* of it is actionable from an app folder, so it is off unless asked for.
|
|
35
|
+
*/
|
|
36
|
+
const DEBUG = Boolean(process.env.WANIWANI_DEBUG);
|
|
37
|
+
/**
|
|
38
|
+
* Every `node_modules/.bin` from the generated project up to the filesystem
|
|
39
|
+
* root. The framework shells out to `vite` and `tsc` by bare name.
|
|
40
|
+
*/
|
|
41
|
+
function binPath(from) {
|
|
42
|
+
const dirs = [];
|
|
43
|
+
let current = resolve(from);
|
|
44
|
+
while (true) {
|
|
45
|
+
dirs.push(join(current, "node_modules", ".bin"));
|
|
46
|
+
const parent = dirname(current);
|
|
47
|
+
if (parent === current)
|
|
48
|
+
break;
|
|
49
|
+
current = parent;
|
|
50
|
+
}
|
|
51
|
+
return [...dirs, process.env.PATH].join(":");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Spawn a child under this CLI's PATH and environment.
|
|
55
|
+
*
|
|
56
|
+
* `stdoutFilter`/`stderrFilter` pipe that one stream through a line rewriter
|
|
57
|
+
* instead of inheriting it — the mechanism that keeps the framework's own
|
|
58
|
+
* narration out of this CLI's output (see ./framework.js). Every unfiltered
|
|
59
|
+
* stream is inherited, so an app's logs and tsc's diagnostics arrive untouched.
|
|
60
|
+
*
|
|
61
|
+
* `shell` is for the framework's build steps, which name their command as one
|
|
62
|
+
* string rather than an argv.
|
|
63
|
+
*/
|
|
64
|
+
function run(command, args, { cwd, env, shell = false, stdoutFilter, stderrFilter }) {
|
|
65
|
+
return new Promise((resolvePromise) => {
|
|
66
|
+
const child = spawn(command, args, {
|
|
67
|
+
cwd,
|
|
68
|
+
shell,
|
|
69
|
+
stdio: ["inherit", stdoutFilter ? "pipe" : "inherit", stderrFilter ? "pipe" : "inherit"],
|
|
70
|
+
env: { ...process.env, PATH: binPath(cwd), ...FRAMEWORK_ENV, ...env },
|
|
71
|
+
});
|
|
72
|
+
for (const [stream, filter] of [
|
|
73
|
+
[child.stdout, stdoutFilter],
|
|
74
|
+
[child.stderr, stderrFilter],
|
|
75
|
+
]) {
|
|
76
|
+
if (!filter || !stream)
|
|
77
|
+
continue;
|
|
78
|
+
stream.setEncoding("utf8");
|
|
79
|
+
stream.on("data", filter.write);
|
|
80
|
+
// Registered before the resolving listener, so a held partial line is
|
|
81
|
+
// emitted before the command reports its exit code.
|
|
82
|
+
child.on("close", filter.flush);
|
|
83
|
+
}
|
|
84
|
+
child.on("close", (code) => resolvePromise(code ?? 1));
|
|
85
|
+
child.on("error", (error) => {
|
|
86
|
+
console.error(red(`failed to run ${command}: ${error.message}`));
|
|
87
|
+
resolvePromise(1);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** The template source, most specific wins. */
|
|
92
|
+
function templateSource(flags) {
|
|
93
|
+
return flags.template ?? process.env.WANIWANI_TEMPLATE ?? DEFAULT_TEMPLATE;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Report what the runtime changed about the template's package.json. This is
|
|
97
|
+
* the fleet-wide fix mechanism made visible: every line is a decision taken
|
|
98
|
+
* once here instead of in 30 repos.
|
|
99
|
+
*
|
|
100
|
+
* Every line is about the plumbing rather than the app, so `dev` and `build`
|
|
101
|
+
* print it only under WANIWANI_DEBUG. `eject` prints it unconditionally —
|
|
102
|
+
* there the plumbing becomes the app's to maintain.
|
|
103
|
+
*/
|
|
104
|
+
function printOverrides(overrides) {
|
|
105
|
+
if (overrides.length === 0)
|
|
106
|
+
return;
|
|
107
|
+
console.log(`\n${dim("runtime overrides on top of the template")}`);
|
|
108
|
+
for (const { name, from, to, why, conflict, removed } of overrides) {
|
|
109
|
+
const marker = conflict ? yellow("!") : dim("·");
|
|
110
|
+
const change = removed ? "removed" : from ? `${from} → ${to}` : `+ ${to}`;
|
|
111
|
+
console.log(` ${marker} ${name} ${dim(change)}`);
|
|
112
|
+
console.log(` ${dim(why)}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function prepare(appRoot, flags, { quiet = false } = {}) {
|
|
116
|
+
const app = scanApp(appRoot);
|
|
117
|
+
const report = await validateApp(app);
|
|
118
|
+
if (!quiet) {
|
|
119
|
+
printReport(app, report);
|
|
120
|
+
}
|
|
121
|
+
if (!report.ok) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// Where the plumbing came from, how much of it there was, and which
|
|
125
|
+
// dependencies the runtime overrode are all facts about our own machinery.
|
|
126
|
+
// An app author can act on none of them, so they are diagnostics: on under
|
|
127
|
+
// WANIWANI_DEBUG, off otherwise. A stale or unreachable template is different
|
|
128
|
+
// — that one changes what they are running, so it always shows.
|
|
129
|
+
const template = await resolveTemplate(templateSource(flags));
|
|
130
|
+
if (!quiet && DEBUG) {
|
|
131
|
+
console.log(`\n${dim("template")} ${describeTemplate(template)}`);
|
|
132
|
+
}
|
|
133
|
+
if (!quiet && template.offline) {
|
|
134
|
+
console.log(`${yellow("!")} ${dim("GitHub unreachable — using the cached template")}`);
|
|
135
|
+
}
|
|
136
|
+
const { outDir, overrides, fromTemplate, manifest } = generate(app, { template });
|
|
137
|
+
if (!quiet && DEBUG) {
|
|
138
|
+
console.log(`${dim(`${fromTemplate.length} files copied`)} ${dim(manifest
|
|
139
|
+
? "· exclusions from the template's manifest"
|
|
140
|
+
: "· exclusions from the built-in defaults")}`);
|
|
141
|
+
printOverrides(overrides);
|
|
142
|
+
}
|
|
143
|
+
return { app, outDir, template };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build the generated project for production: compile the server, bundle the
|
|
147
|
+
* views, and emit a Vercel Build Output tree.
|
|
148
|
+
*
|
|
149
|
+
* The framework's own `build` command renders exactly these steps inside a
|
|
150
|
+
* branded UI, so the steps are driven here and reported in this CLI's format.
|
|
151
|
+
* When the step list can't be loaded, shelling out is the fallback: the build
|
|
152
|
+
* still runs, it just narrates itself.
|
|
153
|
+
*
|
|
154
|
+
* The tree is emitted inside the generated project and staged at the app root
|
|
155
|
+
* afterwards, which is where Vercel reads one. See ./vercel.js for why that
|
|
156
|
+
* move is what lets an app repo carry no deploy config.
|
|
157
|
+
*/
|
|
158
|
+
async function build(outDir, appRoot) {
|
|
159
|
+
const steps = await loadBuildSteps(outDir);
|
|
160
|
+
if (!steps) {
|
|
161
|
+
const code = await run("node", [frameworkBin(), "build"], { cwd: outDir });
|
|
162
|
+
if (code === 0)
|
|
163
|
+
stageBuildOutput(outDir, appRoot);
|
|
164
|
+
return code;
|
|
165
|
+
}
|
|
166
|
+
console.log(`\n${dim("building for production")}`);
|
|
167
|
+
const code = await runBuildSteps(steps, {
|
|
168
|
+
root: outDir,
|
|
169
|
+
// The steps name their command as one string (`tsc -b --force`), and reach
|
|
170
|
+
// for `tsc` and `vite` by bare name.
|
|
171
|
+
runShell: (command) => run(command, [], { cwd: outDir, shell: true }),
|
|
172
|
+
});
|
|
173
|
+
if (code !== 0)
|
|
174
|
+
return code;
|
|
175
|
+
const staged = stageBuildOutput(outDir, appRoot);
|
|
176
|
+
if (staged) {
|
|
177
|
+
console.log(` ${green("✓")} ${dim("Staging Vercel build output")}`);
|
|
178
|
+
}
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Write the plumbing into the app repo and step out of the way. What comes out
|
|
183
|
+
* is an ordinary project on the underlying framework, driven by its own CLI: a
|
|
184
|
+
* Dockerfile, a vercel.json, and the runtime vendored as readable source. No
|
|
185
|
+
* dependency on this CLI or on Waniwani remains.
|
|
186
|
+
*/
|
|
187
|
+
async function eject(appRoot, flags) {
|
|
188
|
+
const app = scanApp(appRoot);
|
|
189
|
+
const report = await validateApp(app);
|
|
190
|
+
printReport(app, report);
|
|
191
|
+
if (!report.ok)
|
|
192
|
+
return 1;
|
|
193
|
+
const outDir = flags.out ? resolve(flags.out) : appRoot;
|
|
194
|
+
const inPlace = outDir === appRoot;
|
|
195
|
+
// Which files count as plumbing depends on what the template ships, so the
|
|
196
|
+
// template has to be resolved before the question can be asked.
|
|
197
|
+
const template = await resolveTemplate(templateSource(flags));
|
|
198
|
+
console.log(`\n${dim("template")} ${describeTemplate(template)}`);
|
|
199
|
+
const clashes = existingPlumbing(outDir, template);
|
|
200
|
+
if (clashes.length > 0 && !flags.force) {
|
|
201
|
+
console.error(`\n${red("✗")} ${bold("would overwrite existing files")}\n`);
|
|
202
|
+
for (const file of clashes) {
|
|
203
|
+
console.error(` ${file}`);
|
|
204
|
+
}
|
|
205
|
+
console.error(`\n${dim("pass --force to overwrite, or --out <dir> to write elsewhere")}`);
|
|
206
|
+
return 1;
|
|
207
|
+
}
|
|
208
|
+
const { written, overrides, fromTemplate, moved } = generate(app, {
|
|
209
|
+
template,
|
|
210
|
+
layout: "eject",
|
|
211
|
+
outDir,
|
|
212
|
+
});
|
|
213
|
+
console.log(`\n${green("✓")} ${bold("Ejected")} ${dim(`→ ${outDir}`)}\n`);
|
|
214
|
+
for (const file of written) {
|
|
215
|
+
console.log(` ${file}`);
|
|
216
|
+
}
|
|
217
|
+
console.log(` ${dim(`+ ${fromTemplate.length} files from the template`)}`);
|
|
218
|
+
printOverrides(overrides);
|
|
219
|
+
console.log(`\n${bold("What changed")}`);
|
|
220
|
+
if (moved.length > 0) {
|
|
221
|
+
console.log(` ${dim("·")} your source ${bold("moved")} under ${bold("src/app/")}: ${moved.join(", ")}`);
|
|
222
|
+
console.log(` ${dim("the framework compiles from src/ — nothing outside it can be an input")}`);
|
|
223
|
+
}
|
|
224
|
+
console.log(` ${dim("·")} the runtime is now yours, vendored as source in ${bold("src/_runtime/")}`);
|
|
225
|
+
console.log(` ${dim("·")} @waniwani/kit imports point at src/_runtime/ — drop the dependency`);
|
|
226
|
+
console.log(` ${dim("·")} widgets/<name>/ no longer becomes a view — add ${bold("src/views/<name>.tsx")} by hand`);
|
|
227
|
+
if (inPlace) {
|
|
228
|
+
console.log(` ${dim("·")} ${bold(".waniwani/")} is dead weight — delete it`);
|
|
229
|
+
}
|
|
230
|
+
console.log(`\n${bold("From here")}`);
|
|
231
|
+
console.log(` npm install && npm run dev`);
|
|
232
|
+
console.log(`\n${yellow("!")} ${dim("one way — nothing turns an ejected repo back")}`);
|
|
233
|
+
return 0;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Mirror app-folder edits into the build output; nodemon and Vite do the rest.
|
|
237
|
+
* The template is resolved once at startup and reused, so a dev loop never
|
|
238
|
+
* touches the network.
|
|
239
|
+
*/
|
|
240
|
+
function watchApp(appRoot, template) {
|
|
241
|
+
let pending;
|
|
242
|
+
const rebuild = () => {
|
|
243
|
+
clearTimeout(pending);
|
|
244
|
+
pending = setTimeout(async () => {
|
|
245
|
+
const app = scanApp(appRoot);
|
|
246
|
+
const report = await validateApp(app);
|
|
247
|
+
if (!report.ok) {
|
|
248
|
+
printReport(app, report);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
// Rewriting the output restarts nodemon and triggers Vite HMR.
|
|
252
|
+
generate(app, { template });
|
|
253
|
+
console.log(dim(`[waniwani] regenerated ${new Date().toLocaleTimeString()}`));
|
|
254
|
+
}, 120);
|
|
255
|
+
};
|
|
256
|
+
for (const dir of ["tools", "widgets", "flows", "api"]) {
|
|
257
|
+
const path = join(appRoot, dir);
|
|
258
|
+
if (existsSync(path)) {
|
|
259
|
+
watch(path, { recursive: true }, rebuild);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const config = join(appRoot, "waniwani.config.ts");
|
|
263
|
+
if (existsSync(config)) {
|
|
264
|
+
watch(config, rebuild);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* The framework's dev server, under this CLI's narration.
|
|
269
|
+
*
|
|
270
|
+
* `--plain` trades the framework's interactive UI for one plain line per
|
|
271
|
+
* diagnostic on stderr, which is what makes the output rewritable. It also drops
|
|
272
|
+
* the framework's auto-open of its own DevTools page in the browser; the URL is
|
|
273
|
+
* printed instead.
|
|
274
|
+
*/
|
|
275
|
+
function devServer(outDir) {
|
|
276
|
+
return run("node", [frameworkBin(), "dev", "--plain"], {
|
|
277
|
+
cwd: outDir,
|
|
278
|
+
stderrFilter: devFilter(),
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
/** Flags that take a value; everything else is a boolean switch. */
|
|
282
|
+
const VALUE_FLAGS = new Set(["out", "template", "name"]);
|
|
283
|
+
/**
|
|
284
|
+
* `--out dir` / `--template=github:o/r#ref` alongside a positional app directory.
|
|
285
|
+
*
|
|
286
|
+
* `--no-install` sets `install` to false, so a switch that is on by default is
|
|
287
|
+
* read as one flag with two states instead of two flags a caller can set to
|
|
288
|
+
* contradict each other.
|
|
289
|
+
*/
|
|
290
|
+
function parseArgs(argv) {
|
|
291
|
+
const flags = {};
|
|
292
|
+
const positional = [];
|
|
293
|
+
for (let i = 0; i < argv.length; i++) {
|
|
294
|
+
const arg = argv[i];
|
|
295
|
+
if (!arg.startsWith("--")) {
|
|
296
|
+
positional.push(arg);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
const [name, inline] = arg.slice(2).split("=");
|
|
300
|
+
if (name.startsWith("no-")) {
|
|
301
|
+
flags[name.slice(3)] = false;
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
flags[name] = VALUE_FLAGS.has(name) ? (inline ?? argv[++i]) : true;
|
|
305
|
+
}
|
|
306
|
+
return { flags, positional };
|
|
307
|
+
}
|
|
308
|
+
async function main() {
|
|
309
|
+
const [command = "dev", ...rest] = process.argv.slice(2);
|
|
310
|
+
const { flags, positional } = parseArgs(rest);
|
|
311
|
+
const appRoot = resolve(positional[0] ?? process.cwd());
|
|
312
|
+
if (BANNERED.has(command)) {
|
|
313
|
+
banner(PACKAGE_VERSION);
|
|
314
|
+
}
|
|
315
|
+
// Before anything is spawned, so every child inherits the app's variables
|
|
316
|
+
// whatever order its modules evaluate in. `init` has no app to read yet.
|
|
317
|
+
if (command !== "init") {
|
|
318
|
+
loadAppEnv(appRoot);
|
|
319
|
+
}
|
|
320
|
+
if (command === "init") {
|
|
321
|
+
// Whether a directory was named matters only here: with none, the answer to
|
|
322
|
+
// the one question decides where the app goes.
|
|
323
|
+
process.exit(await init(appRoot, flags, { targeted: positional.length > 0 }));
|
|
324
|
+
}
|
|
325
|
+
if (command === "check") {
|
|
326
|
+
const app = scanApp(appRoot);
|
|
327
|
+
const report = await validateApp(app);
|
|
328
|
+
printReport(app, report);
|
|
329
|
+
process.exit(report.ok ? 0 : 1);
|
|
330
|
+
}
|
|
331
|
+
if (command === "dev") {
|
|
332
|
+
const prepared = await prepare(appRoot, flags);
|
|
333
|
+
if (!prepared)
|
|
334
|
+
process.exit(1);
|
|
335
|
+
watchApp(appRoot, prepared.template);
|
|
336
|
+
process.exit(await devServer(prepared.outDir));
|
|
337
|
+
}
|
|
338
|
+
if (command === "build") {
|
|
339
|
+
const prepared = await prepare(appRoot, flags);
|
|
340
|
+
if (!prepared)
|
|
341
|
+
process.exit(1);
|
|
342
|
+
const code = await build(prepared.outDir, prepared.app.root);
|
|
343
|
+
if (code !== 0)
|
|
344
|
+
process.exit(code);
|
|
345
|
+
console.log(`\n${green("✓")} built ${bold(prepared.outDir)}`);
|
|
346
|
+
process.exit(0);
|
|
347
|
+
}
|
|
348
|
+
if (command === "start") {
|
|
349
|
+
const outDir = join(appRoot, ".waniwani");
|
|
350
|
+
if (!existsSync(join(outDir, "dist"))) {
|
|
351
|
+
console.error(red("no build output — run `waniwani build` first"));
|
|
352
|
+
process.exit(1);
|
|
353
|
+
}
|
|
354
|
+
process.exit(await run("node", [frameworkBin(), "start"], { cwd: outDir, stdoutFilter: startFilter() }));
|
|
355
|
+
}
|
|
356
|
+
if (command === "eject") {
|
|
357
|
+
process.exit(await eject(appRoot, flags));
|
|
358
|
+
}
|
|
359
|
+
console.error(red(`unknown command: ${command}`));
|
|
360
|
+
console.error(dim("usage: waniwani <init|check|dev|build|start|eject> [dir]"));
|
|
361
|
+
process.exit(1);
|
|
362
|
+
}
|
|
363
|
+
try {
|
|
364
|
+
await main();
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
// Template resolution and generation failures are expected conditions —
|
|
368
|
+
// a bad ref, an unreachable network, a template whose shape moved.
|
|
369
|
+
console.error(`\n${red("✗")} ${error instanceof Error ? error.message : String(error)}`);
|
|
370
|
+
if (DEBUG) {
|
|
371
|
+
console.error(error);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
console.error(dim("set WANIWANI_DEBUG=1 for the stack trace"));
|
|
375
|
+
}
|
|
376
|
+
process.exit(1);
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":"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"}
|