@miyaoka/fsss 0.3.1 → 0.4.0
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/dist/cli.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/codegen.js +2 -0
- package/dist/help.d.ts +4 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +264 -180
- package/dist/router.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/cli.d.ts
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
interface AutoEnvConfig {
|
|
2
2
|
prefix: string;
|
|
3
3
|
}
|
|
4
|
+
interface VersionConfig {
|
|
5
|
+
number: string;
|
|
6
|
+
alias?: string | false;
|
|
7
|
+
}
|
|
4
8
|
interface CLIOptions {
|
|
5
9
|
name: string;
|
|
6
10
|
commandsDir?: string;
|
|
7
11
|
autoEnv?: AutoEnvConfig;
|
|
8
12
|
defaultCommand?: string;
|
|
13
|
+
version?: string | VersionConfig;
|
|
9
14
|
}
|
|
10
15
|
interface CLI {
|
|
11
16
|
run: () => Promise<void>;
|
|
12
17
|
}
|
|
13
18
|
declare function createCLI(options: CLIOptions): CLI;
|
|
14
19
|
export { createCLI };
|
|
15
|
-
export type { CLI, CLIOptions };
|
|
20
|
+
export type { CLI, CLIOptions, VersionConfig };
|
|
16
21
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAClC;AAED,UAAU,GAAG;IACX,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAwGD,iBAAS,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,GAAG,CAkK3C;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/codegen.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { join as e, relative as t } from "node:path";
|
|
3
3
|
import { mkdir as n, readFile as r, readdir as i, writeFile as a } from "node:fs/promises";
|
|
4
4
|
import { parseArgs as o } from "node:util";
|
|
5
|
+
//#region src/codegen.ts
|
|
5
6
|
var s = "_plugins", c = ".ts", l = /export\s+interface\s+(\w+)/g;
|
|
6
7
|
async function u(t) {
|
|
7
8
|
let n = [];
|
|
@@ -55,3 +56,4 @@ var { values: p } = o({ options: {
|
|
|
55
56
|
outDir: { type: "string" }
|
|
56
57
|
} });
|
|
57
58
|
(p.commandsDir === void 0 || p.outDir === void 0) && (console.error("Usage: bun run codegen.ts --commandsDir <path> --outDir <path>"), process.exit(1)), await f(p.commandsDir, p.outDir);
|
|
59
|
+
//#endregion
|
package/dist/help.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ interface HelpConfig {
|
|
|
6
6
|
description?: string;
|
|
7
7
|
argsDefs?: ArgsDefs;
|
|
8
8
|
envPrefix?: string;
|
|
9
|
+
showVersion: boolean;
|
|
10
|
+
versionAlias?: string;
|
|
9
11
|
}
|
|
10
12
|
declare function generateHelp(config: HelpConfig): string;
|
|
11
13
|
interface SubcommandHelpConfig {
|
|
@@ -22,6 +24,8 @@ interface DefaultCommandHelpConfig {
|
|
|
22
24
|
description?: string;
|
|
23
25
|
argsDefs?: ArgsDefs;
|
|
24
26
|
envPrefix?: string;
|
|
27
|
+
showVersion: boolean;
|
|
28
|
+
versionAlias?: string;
|
|
25
29
|
availableEntries: AvailableEntry[];
|
|
26
30
|
}
|
|
27
31
|
declare function generateDefaultCommandHelp(config: DefaultCommandHelpConfig): string;
|
package/dist/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAU,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGhD,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAU,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGhD,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwFD,iBAAS,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAkFhD;AAGD,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,iBAAS,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAuBpE;AAID,iBAAS,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAG/E;AAID,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAkE5E;AAED,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,GAC5B,CAAC;AACF,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createCLI } from './cli';
|
|
2
2
|
export { definePlugin } from './plugin';
|
|
3
3
|
export { defineCommand } from './types';
|
|
4
|
-
export type { CLI, CLIOptions } from './cli';
|
|
4
|
+
export type { CLI, CLIOptions, VersionConfig } from './cli';
|
|
5
5
|
export type { ArgDef, ArgDefBase, ArgsDefs, CommandConfig, Extensions, InferArgs, Middleware, MiddlewareContext, Params, PluginConfig, PluginContext, PluginSetup, RunContext, } from './types';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC5D,YAAY,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { join as e, relative as t, resolve as n } from "node:path";
|
|
|
2
2
|
import { ZodBoolean as r, ZodError as i, ZodNumber as a, z as o } from "zod";
|
|
3
3
|
import { readFile as s, readdir as c, stat as l } from "node:fs/promises";
|
|
4
4
|
import { homedir as u } from "node:os";
|
|
5
|
+
//#region src/config.ts
|
|
5
6
|
function d(e) {
|
|
6
7
|
return typeof e == "object" && !!e;
|
|
7
8
|
}
|
|
@@ -37,7 +38,7 @@ function h(t, n) {
|
|
|
37
38
|
let r = [];
|
|
38
39
|
return r.push(e(u(), ".config", t, "config.json")), r.push(e(process.cwd(), `${t}.config.json`)), n !== void 0 && r.push(n), r;
|
|
39
40
|
}
|
|
40
|
-
async function
|
|
41
|
+
async function g(e, t) {
|
|
41
42
|
let n = h(e, t), r;
|
|
42
43
|
for (let e of n) {
|
|
43
44
|
let t = await p(e);
|
|
@@ -51,124 +52,161 @@ async function ee(e, t) {
|
|
|
51
52
|
}
|
|
52
53
|
return r;
|
|
53
54
|
}
|
|
54
|
-
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/auto-mapping.ts
|
|
57
|
+
function _(e, t, n) {
|
|
55
58
|
return [
|
|
56
59
|
e,
|
|
57
60
|
...t,
|
|
58
61
|
n
|
|
59
62
|
].join("_").toUpperCase();
|
|
60
63
|
}
|
|
61
|
-
function
|
|
64
|
+
function v(e, t) {
|
|
62
65
|
return [...e, t].join(".");
|
|
63
66
|
}
|
|
64
|
-
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/zod-utils.ts
|
|
69
|
+
function y(e) {
|
|
65
70
|
return e instanceof r;
|
|
66
71
|
}
|
|
67
|
-
function
|
|
72
|
+
function ee(e) {
|
|
68
73
|
return e instanceof a;
|
|
69
74
|
}
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/help.ts
|
|
77
|
+
var b = " ", x = 2;
|
|
78
|
+
function S(e, t, n, r) {
|
|
72
79
|
if (e.env !== void 0) return e.env;
|
|
73
|
-
if (t !== void 0) return
|
|
80
|
+
if (t !== void 0) return _(t, n, r);
|
|
81
|
+
}
|
|
82
|
+
function te(e) {
|
|
83
|
+
switch (typeof e) {
|
|
84
|
+
case "string":
|
|
85
|
+
case "number":
|
|
86
|
+
case "boolean":
|
|
87
|
+
case "bigint": return String(e);
|
|
88
|
+
default: return JSON.stringify(e);
|
|
89
|
+
}
|
|
74
90
|
}
|
|
75
|
-
function
|
|
91
|
+
function C(e, t) {
|
|
76
92
|
let n = [];
|
|
77
|
-
return t !== void 0 && n.push(`env: ${t}`), "default" in e && e.default !== void 0 && n.push(`default: ${
|
|
93
|
+
return t !== void 0 && n.push(`env: ${t}`), "default" in e && e.default !== void 0 && n.push(`default: ${te(e.default)}`), n.length === 0 ? "" : ` (${n.join(", ")})`;
|
|
78
94
|
}
|
|
79
|
-
function
|
|
80
|
-
let i =
|
|
95
|
+
function w(e, t, n, r) {
|
|
96
|
+
let i = y(t.type) ? "" : ` <${e}>`, a = `${t.alias === void 0 ? " " : `-${t.alias}, `}--${e}${i}`, o = S(t, n, r, e);
|
|
81
97
|
return {
|
|
82
98
|
left: a,
|
|
83
|
-
right: `${t.description}${
|
|
99
|
+
right: `${t.description}${C(t, o)}`
|
|
84
100
|
};
|
|
85
101
|
}
|
|
86
|
-
function
|
|
102
|
+
function T() {
|
|
87
103
|
return {
|
|
88
104
|
left: "-h, --help",
|
|
89
105
|
right: "ヘルプを表示する"
|
|
90
106
|
};
|
|
91
107
|
}
|
|
92
|
-
function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
108
|
+
function E(e) {
|
|
109
|
+
return {
|
|
110
|
+
left: `${e === void 0 ? " " : `-${e}, `}--version`,
|
|
111
|
+
right: "バージョンを表示する"
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function D(e) {
|
|
115
|
+
let { programName: t, commandPath: n, description: r, argsDefs: i, envPrefix: a, showVersion: o, versionAlias: s } = e, c = [];
|
|
116
|
+
r !== void 0 && (c.push(r), c.push(""));
|
|
117
|
+
let l = [t, ...n];
|
|
96
118
|
if (i !== void 0) {
|
|
97
119
|
let e = Object.entries(i), t = e.some(([, e]) => e.positional === !0), n = e.some(([, e]) => e.positional !== !0);
|
|
98
120
|
if (t) {
|
|
99
121
|
let t = e.filter(([, e]) => e.positional === !0).map(([e]) => `<${e}>`);
|
|
100
|
-
|
|
122
|
+
l.push(...t);
|
|
123
|
+
}
|
|
124
|
+
n && l.push("[options]");
|
|
125
|
+
}
|
|
126
|
+
if (c.push(`Usage: ${l.join(" ")}`), c.push(""), i === void 0) {
|
|
127
|
+
if (o) {
|
|
128
|
+
c.push("Options:");
|
|
129
|
+
let e = [T(), E(s)], t = Math.max(...e.map((e) => e.left.length));
|
|
130
|
+
for (let n of e) {
|
|
131
|
+
let e = " ".repeat(t - n.left.length + x);
|
|
132
|
+
c.push(`${b}${n.left}${e}${n.right}`);
|
|
133
|
+
}
|
|
101
134
|
}
|
|
102
|
-
|
|
135
|
+
return c.join("\n");
|
|
103
136
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
137
|
+
let u = Object.entries(i).filter(([, e]) => e.positional !== !0);
|
|
138
|
+
if (u.length === 0) {
|
|
139
|
+
c.push("Options:");
|
|
140
|
+
let e = [T()];
|
|
141
|
+
o && e.push(E(s));
|
|
142
|
+
let t = Math.max(...e.map((e) => e.left.length));
|
|
143
|
+
for (let n of e) {
|
|
144
|
+
let e = " ".repeat(t - n.left.length + x);
|
|
145
|
+
c.push(`${b}${n.left}${e}${n.right}`);
|
|
146
|
+
}
|
|
147
|
+
return c.join("\n");
|
|
110
148
|
}
|
|
111
|
-
|
|
112
|
-
let
|
|
113
|
-
|
|
114
|
-
let
|
|
115
|
-
for (let e of
|
|
116
|
-
let t = " ".repeat(
|
|
117
|
-
|
|
149
|
+
c.push("Options:");
|
|
150
|
+
let d = u.map(([e, t]) => w(e, t, a, n));
|
|
151
|
+
d.push(T()), o && d.push(E(s));
|
|
152
|
+
let f = Math.max(...d.map((e) => e.left.length));
|
|
153
|
+
for (let e of d) {
|
|
154
|
+
let t = " ".repeat(f - e.left.length + x);
|
|
155
|
+
c.push(`${b}${e.left}${t}${e.right}`);
|
|
118
156
|
}
|
|
119
|
-
return
|
|
157
|
+
return c.join("\n");
|
|
120
158
|
}
|
|
121
|
-
function
|
|
159
|
+
function ne(e) {
|
|
122
160
|
let { programName: t, commandPath: n, availableEntries: r } = e, i = [], a = [t, ...n].join(" ");
|
|
123
161
|
if (i.push(`Usage: ${a} <command>`), i.push(""), r.length === 0) return i.push("No available commands."), i.join("\n");
|
|
124
162
|
i.push("Available commands:");
|
|
125
163
|
for (let e of r) {
|
|
126
164
|
if (e.isDynamic) {
|
|
127
|
-
i.push(`${
|
|
165
|
+
i.push(`${b}<${e.paramName}>`);
|
|
128
166
|
continue;
|
|
129
167
|
}
|
|
130
|
-
i.push(`${
|
|
168
|
+
i.push(`${b}${e.name}`);
|
|
131
169
|
}
|
|
132
170
|
return i.join("\n");
|
|
133
171
|
}
|
|
134
|
-
function
|
|
172
|
+
function O(e, t) {
|
|
135
173
|
return [
|
|
136
174
|
`Error: ${t.join(", ")}`,
|
|
137
175
|
"",
|
|
138
176
|
e
|
|
139
177
|
].join("\n");
|
|
140
178
|
}
|
|
141
|
-
function
|
|
142
|
-
let { programName: t, defaultCommandName: n, commandPath: r, description: i, argsDefs: a, envPrefix: o,
|
|
143
|
-
|
|
179
|
+
function re(e) {
|
|
180
|
+
let { programName: t, defaultCommandName: n, commandPath: r, description: i, argsDefs: a, envPrefix: o, showVersion: s, versionAlias: c, availableEntries: l } = e, u = [];
|
|
181
|
+
i !== void 0 && (u.push(i), u.push("")), a !== void 0 && Object.entries(a).some(([, e]) => e.positional !== !0) ? u.push(`Usage: ${t} [options]`) : u.push(`Usage: ${t}`), u.push(` ${t} <command>`), u.push("");
|
|
182
|
+
let d = [];
|
|
183
|
+
if (a !== void 0) {
|
|
144
184
|
let e = Object.entries(a).filter(([, e]) => e.positional !== !0);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
c.push(`${y}${e.left}${t}${e.right}`);
|
|
153
|
-
}
|
|
154
|
-
c.push("");
|
|
155
|
-
}
|
|
185
|
+
d.push(...e.map(([e, t]) => w(e, t, o, r)));
|
|
186
|
+
}
|
|
187
|
+
d.push(T()), s && d.push(E(c)), u.push("Options:");
|
|
188
|
+
let f = Math.max(...d.map((e) => e.left.length));
|
|
189
|
+
for (let e of d) {
|
|
190
|
+
let t = " ".repeat(f - e.left.length + x);
|
|
191
|
+
u.push(`${b}${e.left}${t}${e.right}`);
|
|
156
192
|
}
|
|
157
|
-
if (
|
|
158
|
-
|
|
159
|
-
for (let e of
|
|
193
|
+
if (u.push(""), l.length > 0) {
|
|
194
|
+
u.push("Available commands:");
|
|
195
|
+
for (let e of l) {
|
|
160
196
|
if (e.isDynamic) {
|
|
161
|
-
|
|
197
|
+
u.push(`${b}<${e.paramName}>`);
|
|
162
198
|
continue;
|
|
163
199
|
}
|
|
164
200
|
let t = e.name === n ? " (default)" : "";
|
|
165
|
-
|
|
201
|
+
u.push(`${b}${e.name}${t}`);
|
|
166
202
|
}
|
|
167
203
|
}
|
|
168
|
-
return
|
|
204
|
+
return u.join("\n");
|
|
169
205
|
}
|
|
170
|
-
|
|
171
|
-
|
|
206
|
+
//#endregion
|
|
207
|
+
//#region src/parser.ts
|
|
208
|
+
var k = "--", A = "-", j = "--", M = "--no-", N = "true", ie = "false";
|
|
209
|
+
function P(e, t, n) {
|
|
172
210
|
let r = e.get(t);
|
|
173
211
|
if (r) {
|
|
174
212
|
r.push(n);
|
|
@@ -176,51 +214,51 @@ function N(e, t, n) {
|
|
|
176
214
|
}
|
|
177
215
|
e.set(t, [n]);
|
|
178
216
|
}
|
|
179
|
-
function
|
|
217
|
+
function F(e, t) {
|
|
180
218
|
return t + 1 >= e.length ? !1 : !e[t + 1].startsWith(A);
|
|
181
219
|
}
|
|
182
|
-
function
|
|
183
|
-
let n = new Map(), r = [], i = [], a = 0;
|
|
220
|
+
function I(e, t) {
|
|
221
|
+
let n = /* @__PURE__ */ new Map(), r = [], i = [], a = 0;
|
|
184
222
|
for (; a < e.length;) {
|
|
185
223
|
let o = e[a];
|
|
186
|
-
if (o ===
|
|
224
|
+
if (o === j) {
|
|
187
225
|
i = e.slice(a + 1);
|
|
188
226
|
break;
|
|
189
227
|
}
|
|
190
|
-
if (o.startsWith(
|
|
191
|
-
|
|
228
|
+
if (o.startsWith(M)) {
|
|
229
|
+
P(n, o.slice(5), ie), a++;
|
|
192
230
|
continue;
|
|
193
231
|
}
|
|
194
232
|
if (o.startsWith(k) && o.includes("=")) {
|
|
195
233
|
let e = o.indexOf("=");
|
|
196
|
-
|
|
234
|
+
P(n, o.slice(2, e), o.slice(e + 1)), a++;
|
|
197
235
|
continue;
|
|
198
236
|
}
|
|
199
237
|
if (o.startsWith(k)) {
|
|
200
238
|
let r = o.slice(2);
|
|
201
239
|
if (t.booleanFlags.has(r)) {
|
|
202
|
-
|
|
240
|
+
P(n, r, N), a++;
|
|
203
241
|
continue;
|
|
204
242
|
}
|
|
205
|
-
if (
|
|
206
|
-
|
|
243
|
+
if (F(e, a)) {
|
|
244
|
+
P(n, r, e[a + 1]), a += 2;
|
|
207
245
|
continue;
|
|
208
246
|
}
|
|
209
247
|
throw Error(`Flag --${r} requires a value`);
|
|
210
248
|
}
|
|
211
249
|
if (o.startsWith(A) && !o.startsWith(k) && o.includes("=")) {
|
|
212
250
|
let e = o.indexOf("="), r = o.slice(1, e), i = o.slice(e + 1);
|
|
213
|
-
|
|
251
|
+
P(n, t.aliases.get(r) ?? r, i), a++;
|
|
214
252
|
continue;
|
|
215
253
|
}
|
|
216
254
|
if (o.startsWith(A) && !o.startsWith(k)) {
|
|
217
255
|
let r = o.slice(1), i = t.aliases.get(r) ?? r;
|
|
218
256
|
if (t.booleanFlags.has(i)) {
|
|
219
|
-
|
|
257
|
+
P(n, i, N), a++;
|
|
220
258
|
continue;
|
|
221
259
|
}
|
|
222
|
-
if (
|
|
223
|
-
|
|
260
|
+
if (F(e, a)) {
|
|
261
|
+
P(n, i, e[a + 1]), a += 2;
|
|
224
262
|
continue;
|
|
225
263
|
}
|
|
226
264
|
throw Error(`Flag -${r} requires a value`);
|
|
@@ -233,11 +271,13 @@ function F(e, t) {
|
|
|
233
271
|
doubleDashArgs: i
|
|
234
272
|
};
|
|
235
273
|
}
|
|
236
|
-
|
|
237
|
-
|
|
274
|
+
//#endregion
|
|
275
|
+
//#region src/plugin.ts
|
|
276
|
+
var L = "_plugins", R = ".ts";
|
|
277
|
+
function z(e) {
|
|
238
278
|
return e;
|
|
239
279
|
}
|
|
240
|
-
async function
|
|
280
|
+
async function B(e, t) {
|
|
241
281
|
let n = {}, r = [];
|
|
242
282
|
for (let i of e) {
|
|
243
283
|
let e = await i(t);
|
|
@@ -248,7 +288,7 @@ async function z(e, t) {
|
|
|
248
288
|
middlewares: r
|
|
249
289
|
};
|
|
250
290
|
}
|
|
251
|
-
function
|
|
291
|
+
function V(e, t) {
|
|
252
292
|
let n = t;
|
|
253
293
|
for (let t = e.length - 1; t >= 0; t--) {
|
|
254
294
|
let r = e[t], i = n;
|
|
@@ -256,29 +296,31 @@ function B(e, t) {
|
|
|
256
296
|
}
|
|
257
297
|
return n;
|
|
258
298
|
}
|
|
259
|
-
async function
|
|
299
|
+
async function H(t, n) {
|
|
260
300
|
let r = [];
|
|
261
301
|
for (let n of t) {
|
|
262
|
-
let t = e(n,
|
|
302
|
+
let t = e(n, L), i;
|
|
263
303
|
try {
|
|
264
304
|
i = await c(t, { withFileTypes: !0 });
|
|
265
305
|
} catch {
|
|
266
306
|
continue;
|
|
267
307
|
}
|
|
268
|
-
let a = i.filter((e) => e.isFile() && e.name.endsWith(
|
|
308
|
+
let a = i.filter((e) => e.isFile() && e.name.endsWith(R)).sort((e, t) => e.name.localeCompare(t.name));
|
|
269
309
|
for (let n of a) {
|
|
270
310
|
let i = e(t, n.name), a = (await import(i)).default;
|
|
271
311
|
if (a === void 0) throw Error(`Plugin file ${i} does not have a default export`);
|
|
272
312
|
r.push(a);
|
|
273
313
|
}
|
|
274
314
|
}
|
|
275
|
-
return
|
|
315
|
+
return B(r, n);
|
|
276
316
|
}
|
|
277
|
-
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/resolver.ts
|
|
319
|
+
function U(e, t, n, r) {
|
|
278
320
|
if (e !== void 0) return e;
|
|
279
|
-
if (t !== void 0) return
|
|
321
|
+
if (t !== void 0) return _(t, n, r);
|
|
280
322
|
}
|
|
281
|
-
function
|
|
323
|
+
function W(e) {
|
|
282
324
|
let { argsDefs: t, parsedTokens: n, env: r, config: i, commandPath: a, envPrefix: o } = e, s = {}, c = 0;
|
|
283
325
|
for (let [e, l] of Object.entries(t)) {
|
|
284
326
|
let t = n.flags.get(e);
|
|
@@ -294,7 +336,7 @@ function U(e) {
|
|
|
294
336
|
s[e] = n.positionals[c], c++;
|
|
295
337
|
continue;
|
|
296
338
|
}
|
|
297
|
-
let u =
|
|
339
|
+
let u = U(l.env, o, a, e);
|
|
298
340
|
if (u !== void 0) {
|
|
299
341
|
let t = r[u];
|
|
300
342
|
if (t !== void 0) {
|
|
@@ -303,7 +345,7 @@ function U(e) {
|
|
|
303
345
|
}
|
|
304
346
|
}
|
|
305
347
|
if (i !== void 0) {
|
|
306
|
-
let t = f(i, l.config ??
|
|
348
|
+
let t = f(i, l.config ?? v(a, e));
|
|
307
349
|
if (t !== void 0) {
|
|
308
350
|
s[e] = t;
|
|
309
351
|
continue;
|
|
@@ -316,29 +358,39 @@ function U(e) {
|
|
|
316
358
|
}
|
|
317
359
|
return s;
|
|
318
360
|
}
|
|
319
|
-
|
|
320
|
-
|
|
361
|
+
//#endregion
|
|
362
|
+
//#region src/router.ts
|
|
363
|
+
var G = /^\[(.+)]$/, K = [".ts", ".js"], q = "index", J = "_";
|
|
364
|
+
function Y(e) {
|
|
365
|
+
return K.find((t) => e.endsWith(t));
|
|
366
|
+
}
|
|
367
|
+
function ae(e, t) {
|
|
368
|
+
return e.slice(0, -t.length);
|
|
369
|
+
}
|
|
370
|
+
async function oe(e) {
|
|
321
371
|
try {
|
|
322
372
|
return (await l(e)).isFile();
|
|
323
373
|
} catch {
|
|
324
374
|
return !1;
|
|
325
375
|
}
|
|
326
376
|
}
|
|
327
|
-
async function
|
|
377
|
+
async function se(e) {
|
|
328
378
|
try {
|
|
329
|
-
let t = await c(e, { withFileTypes: !0 }), n = [];
|
|
330
|
-
for (let e of t)
|
|
331
|
-
if (e.
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
379
|
+
let t = (await c(e, { withFileTypes: !0 })).toSorted((e, t) => (e.isFile() ? K.indexOf(Y(e.name) ?? "") : -1) - (t.isFile() ? K.indexOf(Y(t.name) ?? "") : -1)), n = [], r = /* @__PURE__ */ new Set();
|
|
380
|
+
for (let e of t) {
|
|
381
|
+
if (e.name.startsWith(J)) continue;
|
|
382
|
+
let t = e.isFile() ? Y(e.name) : void 0;
|
|
383
|
+
if (t !== void 0) {
|
|
384
|
+
let i = ae(e.name, t);
|
|
385
|
+
if (i === q || r.has(i)) continue;
|
|
386
|
+
r.add(i), n.push({
|
|
387
|
+
name: i,
|
|
336
388
|
isDynamic: !1
|
|
337
389
|
});
|
|
338
390
|
continue;
|
|
339
391
|
}
|
|
340
392
|
if (e.isDirectory()) {
|
|
341
|
-
let t = e.name.match(
|
|
393
|
+
let t = e.name.match(G);
|
|
342
394
|
if (t !== null) {
|
|
343
395
|
n.push({
|
|
344
396
|
name: e.name,
|
|
@@ -363,52 +415,56 @@ async function X(t, r) {
|
|
|
363
415
|
for (let t = 0; t < r.length; t++) {
|
|
364
416
|
let n = r[t];
|
|
365
417
|
if (n.startsWith("-")) break;
|
|
366
|
-
let l = await c(i, { withFileTypes: !0 }), u =
|
|
367
|
-
if (
|
|
418
|
+
let l = await c(i, { withFileTypes: !0 }), u = K.reduce((e, t) => e ?? l.find((e) => e.isFile() && e.name === n + t), void 0);
|
|
419
|
+
if (u) return s = t + 1, {
|
|
368
420
|
kind: "resolved",
|
|
369
|
-
filePath: e(i,
|
|
421
|
+
filePath: e(i, u.name),
|
|
370
422
|
params: a,
|
|
371
423
|
remainingTokens: r.slice(s),
|
|
372
424
|
traversedDirs: o
|
|
373
425
|
};
|
|
374
|
-
let
|
|
375
|
-
if (
|
|
376
|
-
i = e(i,
|
|
426
|
+
let d = l.find((e) => e.isDirectory() && e.name === n);
|
|
427
|
+
if (d) {
|
|
428
|
+
i = e(i, d.name), o.push(i), s = t + 1;
|
|
377
429
|
continue;
|
|
378
430
|
}
|
|
379
|
-
let
|
|
431
|
+
let f, p = l.find((e) => {
|
|
380
432
|
if (!e.isDirectory()) return !1;
|
|
381
|
-
let t = e.name.match(
|
|
382
|
-
return t === null ? !1 : (
|
|
433
|
+
let t = e.name.match(G);
|
|
434
|
+
return t === null ? !1 : (f = t[1], !0);
|
|
383
435
|
});
|
|
384
|
-
if (
|
|
385
|
-
a[
|
|
436
|
+
if (p && f !== void 0) {
|
|
437
|
+
a[f] = n, i = e(i, p.name), o.push(i), s = t + 1;
|
|
386
438
|
continue;
|
|
387
439
|
}
|
|
388
440
|
break;
|
|
389
441
|
}
|
|
390
|
-
let
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
442
|
+
for (let t of K) {
|
|
443
|
+
let n = e(i, q + t);
|
|
444
|
+
if (await oe(n)) return {
|
|
445
|
+
kind: "resolved",
|
|
446
|
+
filePath: n,
|
|
447
|
+
params: a,
|
|
448
|
+
remainingTokens: r.slice(s),
|
|
449
|
+
traversedDirs: o
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
let l = await se(i);
|
|
399
453
|
return {
|
|
400
454
|
kind: "unresolved",
|
|
401
455
|
stoppedDir: i,
|
|
402
|
-
availableEntries:
|
|
456
|
+
availableEntries: l
|
|
403
457
|
};
|
|
404
458
|
}
|
|
405
|
-
|
|
406
|
-
|
|
459
|
+
//#endregion
|
|
460
|
+
//#region src/validator.ts
|
|
461
|
+
function ce(e) {
|
|
462
|
+
return y(e) ? o.preprocess((e) => typeof e == "string" ? e === "true" || e === "1" : e, e) : ee(e) ? o.preprocess((e) => typeof e == "string" ? Number(e) : e, e) : e;
|
|
407
463
|
}
|
|
408
|
-
function
|
|
464
|
+
function le(e, t) {
|
|
409
465
|
let n = {};
|
|
410
466
|
for (let [t, r] of Object.entries(e)) {
|
|
411
|
-
let e =
|
|
467
|
+
let e = ce(r.type);
|
|
412
468
|
if (r.multiple === !0) {
|
|
413
469
|
n[t] = o.array(e);
|
|
414
470
|
continue;
|
|
@@ -417,10 +473,21 @@ function ae(e, t) {
|
|
|
417
473
|
}
|
|
418
474
|
return o.object(n).parse(t);
|
|
419
475
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
476
|
+
//#endregion
|
|
477
|
+
//#region src/cli.ts
|
|
478
|
+
var ue = "commands", de = 2, Z = 1, Q = "V";
|
|
479
|
+
function fe(e) {
|
|
480
|
+
return typeof e == "string" ? {
|
|
481
|
+
number: e,
|
|
482
|
+
alias: Q
|
|
483
|
+
} : {
|
|
484
|
+
number: e.number,
|
|
485
|
+
alias: e.alias === !1 ? void 0 : e.alias ?? Q
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
function pe(e) {
|
|
489
|
+
let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Map();
|
|
490
|
+
for (let [r, i] of Object.entries(e)) y(i.type) && t.add(r), i.alias !== void 0 && n.set(i.alias, r);
|
|
424
491
|
return {
|
|
425
492
|
booleanFlags: t,
|
|
426
493
|
aliases: n
|
|
@@ -429,11 +496,11 @@ function Q(e) {
|
|
|
429
496
|
function $(e, r) {
|
|
430
497
|
return t(n(e), r).replace(/\.ts$/, "").split("/").filter((e) => e !== "index" && !e.startsWith("["));
|
|
431
498
|
}
|
|
432
|
-
function
|
|
499
|
+
function me(e, r) {
|
|
433
500
|
let i = t(n(e), r);
|
|
434
501
|
return i === "" || i === "." ? [] : i.split("/").filter((e) => !e.startsWith("["));
|
|
435
502
|
}
|
|
436
|
-
function
|
|
503
|
+
function he(e) {
|
|
437
504
|
let t, n = [];
|
|
438
505
|
for (let r = 0; r < e.length; r++) {
|
|
439
506
|
let i = e[r];
|
|
@@ -454,84 +521,101 @@ function le(e) {
|
|
|
454
521
|
remainingTokens: n
|
|
455
522
|
};
|
|
456
523
|
}
|
|
457
|
-
function
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
524
|
+
function ge(e, t) {
|
|
525
|
+
return e.some((e) => e === "--version" || t !== void 0 && e === `-${t}`);
|
|
526
|
+
}
|
|
527
|
+
function _e(e) {
|
|
528
|
+
let t = e.commandsDir ?? ue, r = e.name, a = e.autoEnv?.prefix, o = e.defaultCommand, s = e.version === void 0 ? void 0 : fe(e.version);
|
|
529
|
+
async function c() {
|
|
530
|
+
let { configPath: e, remainingTokens: c } = he(process.argv.slice(de)), l = await X(t, c);
|
|
531
|
+
if (l.kind === "unresolved") {
|
|
532
|
+
let e = n(l.stoppedDir) === n(t), i = c.some((e) => !e.startsWith("-"));
|
|
533
|
+
if (e && !i && s !== void 0 && ge(c, s.alias)) {
|
|
534
|
+
console.log(s.number);
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
if (e && o !== void 0) {
|
|
538
|
+
if (c.includes("--help") || c.includes("-h")) {
|
|
539
|
+
let e = await X(t, [o]);
|
|
540
|
+
if (e.kind === "unresolved") throw Error(`defaultCommand "${o}" does not match any command file`);
|
|
541
|
+
let n = (await import(e.filePath)).default, i = n.args ?? {}, c = re({
|
|
542
|
+
programName: r,
|
|
543
|
+
defaultCommandName: o,
|
|
544
|
+
commandPath: $(t, e.filePath),
|
|
545
|
+
description: n.description,
|
|
546
|
+
argsDefs: Object.keys(i).length > 0 ? i : void 0,
|
|
547
|
+
envPrefix: a,
|
|
548
|
+
showVersion: s !== void 0,
|
|
549
|
+
versionAlias: s?.alias,
|
|
550
|
+
availableEntries: l.availableEntries
|
|
551
|
+
});
|
|
552
|
+
console.log(c);
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
let e = await X(t, [o, ...c]);
|
|
464
556
|
if (e.kind === "unresolved") throw Error(`defaultCommand "${o}" does not match any command file`);
|
|
465
|
-
|
|
557
|
+
l = e;
|
|
558
|
+
} else {
|
|
559
|
+
let e = ne({
|
|
466
560
|
programName: r,
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
description: n.description,
|
|
470
|
-
argsDefs: Object.keys(i).length > 0 ? i : void 0,
|
|
471
|
-
envPrefix: a,
|
|
472
|
-
availableEntries: c.availableEntries
|
|
561
|
+
commandPath: me(t, l.stoppedDir),
|
|
562
|
+
availableEntries: l.availableEntries
|
|
473
563
|
});
|
|
474
|
-
console.log(
|
|
564
|
+
console.log(e);
|
|
475
565
|
return;
|
|
476
566
|
}
|
|
477
|
-
let e = await X(t, [o, ...s]);
|
|
478
|
-
if (e.kind === "unresolved") throw Error(`defaultCommand "${o}" does not match any command file`);
|
|
479
|
-
c = e;
|
|
480
|
-
} else {
|
|
481
|
-
let e = E({
|
|
482
|
-
programName: r,
|
|
483
|
-
commandPath: ce(t, c.stoppedDir),
|
|
484
|
-
availableEntries: c.availableEntries
|
|
485
|
-
});
|
|
486
|
-
console.log(e);
|
|
487
|
-
return;
|
|
488
567
|
}
|
|
489
|
-
let
|
|
568
|
+
let u = (await import(l.filePath)).default, d = u.args ?? {}, f = $(t, l.filePath), p = D({
|
|
490
569
|
programName: r,
|
|
491
|
-
commandPath:
|
|
492
|
-
description:
|
|
493
|
-
argsDefs: Object.keys(
|
|
494
|
-
envPrefix: a
|
|
570
|
+
commandPath: f,
|
|
571
|
+
description: u.description,
|
|
572
|
+
argsDefs: Object.keys(d).length > 0 ? d : void 0,
|
|
573
|
+
envPrefix: a,
|
|
574
|
+
showVersion: s !== void 0,
|
|
575
|
+
versionAlias: s?.alias
|
|
495
576
|
});
|
|
496
|
-
if (
|
|
497
|
-
console.log(
|
|
577
|
+
if (l.remainingTokens.includes("--help") || l.remainingTokens.includes("-h")) {
|
|
578
|
+
console.log(p);
|
|
498
579
|
return;
|
|
499
580
|
}
|
|
500
|
-
let
|
|
581
|
+
let m = pe(d), h;
|
|
501
582
|
try {
|
|
502
|
-
let t =
|
|
503
|
-
|
|
504
|
-
argsDefs:
|
|
583
|
+
let t = I(l.remainingTokens, m), n = await g(r, e);
|
|
584
|
+
h = le(d, W({
|
|
585
|
+
argsDefs: d,
|
|
505
586
|
parsedTokens: t,
|
|
506
587
|
env: process.env,
|
|
507
588
|
config: n,
|
|
508
|
-
commandPath:
|
|
589
|
+
commandPath: f,
|
|
509
590
|
envPrefix: a
|
|
510
591
|
}));
|
|
511
592
|
} catch (e) {
|
|
512
593
|
if (e instanceof i) {
|
|
513
594
|
let t = e.issues.map((e) => `${e.path.join(".")}: ${e.message}`);
|
|
514
|
-
console.error(
|
|
595
|
+
console.error(O(p, t)), process.exit(Z);
|
|
515
596
|
}
|
|
516
|
-
throw e instanceof Error && (console.error(
|
|
597
|
+
throw e instanceof Error && (console.error(O(p, [e.message])), process.exit(Z)), e;
|
|
517
598
|
}
|
|
518
|
-
let { extensions:
|
|
519
|
-
commandPath:
|
|
520
|
-
params:
|
|
521
|
-
args:
|
|
522
|
-
extensions:
|
|
599
|
+
let { extensions: _, middlewares: v } = await H(l.traversedDirs, { cliName: r }), y = {
|
|
600
|
+
commandPath: f,
|
|
601
|
+
params: l.params,
|
|
602
|
+
args: h,
|
|
603
|
+
extensions: _
|
|
523
604
|
};
|
|
524
|
-
await
|
|
525
|
-
await
|
|
605
|
+
await V(v, async (e) => {
|
|
606
|
+
await u.run({
|
|
526
607
|
params: e.params,
|
|
527
608
|
args: e.args,
|
|
528
609
|
extensions: e.extensions
|
|
529
610
|
});
|
|
530
|
-
})(
|
|
611
|
+
})(y);
|
|
531
612
|
}
|
|
532
|
-
return { run:
|
|
613
|
+
return { run: c };
|
|
533
614
|
}
|
|
534
|
-
|
|
615
|
+
//#endregion
|
|
616
|
+
//#region src/types.ts
|
|
617
|
+
function ve(e) {
|
|
535
618
|
return e;
|
|
536
619
|
}
|
|
537
|
-
|
|
620
|
+
//#endregion
|
|
621
|
+
export { _e as createCLI, ve as defineCommand, z as definePlugin };
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAiBA,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAsEnD,iBAAe,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAuFvF;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miyaoka/fsss",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A CLI framework where your file structure becomes your command structure, and a single schema gives you typed values whether they come from flags, env vars, or config files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "miyaoka",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@tsconfig/node24": "24.0.4",
|
|
40
40
|
"@types/bun": "1.3.10",
|
|
41
|
-
"oxfmt": "0.
|
|
42
|
-
"oxlint": "1.
|
|
41
|
+
"oxfmt": "0.37.0",
|
|
42
|
+
"oxlint": "1.52.0",
|
|
43
43
|
"oxlint-tsgolint": "0.16.0",
|
|
44
44
|
"typescript": "5.9.3",
|
|
45
45
|
"unplugin-dts": "1.0.0-beta.6",
|
|
46
|
-
"vite": "8.0.0-beta.
|
|
46
|
+
"vite": "8.0.0-beta.18"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "vite build",
|