boltstore 0.6.0 → 0.6.2
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 +132 -16
- package/dist/admin/oauth/user.d.ts.map +1 -1
- package/dist/admin/oauth/user.js +12 -3
- package/dist/admin/oauth/user.js.map +1 -1
- package/dist/auth/tables.d.ts.map +1 -1
- package/dist/auth/tables.js +10 -1
- package/dist/auth/tables.js.map +1 -1
- package/dist/auth/tokens.d.ts +0 -2
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +3 -6
- package/dist/auth/tokens.js.map +1 -1
- package/dist/auth/types.d.ts +3 -3
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/users.d.ts +5 -0
- package/dist/auth/users.d.ts.map +1 -1
- package/dist/auth/users.js +28 -6
- package/dist/auth/users.js.map +1 -1
- package/dist/bin.d.ts +16 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +73 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli-style.d.ts +17 -0
- package/dist/cli-style.d.ts.map +1 -0
- package/dist/cli-style.js +38 -0
- package/dist/cli-style.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +153 -61
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -43
- package/dist/config.js.map +1 -1
- package/dist/db/manager.d.ts.map +1 -1
- package/dist/db/manager.js +7 -0
- package/dist/db/manager.js.map +1 -1
- package/dist/entry.js +68 -66
- package/dist/entry.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -36
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +15 -1
- package/dist/logger.js.map +1 -1
- package/dist/middleware/auth.d.ts +1 -29
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +22 -28
- package/dist/middleware/auth.js.map +1 -1
- package/dist/prompt.d.ts +17 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +95 -0
- package/dist/prompt.js.map +1 -0
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +5 -0
- package/dist/routes/auth.js.map +1 -1
- package/dist/yaml.d.ts +14 -0
- package/dist/yaml.d.ts.map +1 -0
- package/dist/yaml.js +91 -0
- package/dist/yaml.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI output styling with a color-coded [⚡ boltstore] prefix.
|
|
3
|
+
* The prefix color indicates the message type; the message text is always plain.
|
|
4
|
+
*
|
|
5
|
+
* @module boltstore/cli-style
|
|
6
|
+
*/
|
|
7
|
+
/** ANSI escape codes for terminal colors. */
|
|
8
|
+
const COLORS = {
|
|
9
|
+
reset: "\x1b[0m",
|
|
10
|
+
red: "\x1b[31m",
|
|
11
|
+
green: "\x1b[32m",
|
|
12
|
+
yellow: "\x1b[33m",
|
|
13
|
+
bold: "\x1b[1m",
|
|
14
|
+
};
|
|
15
|
+
function prefix(color) {
|
|
16
|
+
return `${color}[${COLORS.bold}⚡${COLORS.reset}${color} boltstore]${COLORS.reset}`;
|
|
17
|
+
}
|
|
18
|
+
/** Informational message (bold ⚡, default color). */
|
|
19
|
+
export function info(msg) {
|
|
20
|
+
console.log(`${prefix(COLORS.reset)} ${msg}`);
|
|
21
|
+
}
|
|
22
|
+
/** Success message (green prefix). */
|
|
23
|
+
export function success(msg) {
|
|
24
|
+
console.log(`${prefix(COLORS.green)} ${msg}`);
|
|
25
|
+
}
|
|
26
|
+
/** Warning message (yellow prefix). */
|
|
27
|
+
export function warn(msg) {
|
|
28
|
+
console.warn(`${prefix(COLORS.yellow)} ${msg}`);
|
|
29
|
+
}
|
|
30
|
+
/** Error message (red prefix, to stderr). */
|
|
31
|
+
export function error(msg) {
|
|
32
|
+
console.error(`${prefix(COLORS.red)} ${msg}`);
|
|
33
|
+
}
|
|
34
|
+
/** Plain output without the prefix (data, JSON, etc.). */
|
|
35
|
+
export function out(msg) {
|
|
36
|
+
console.log(msg);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=cli-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-style.js","sourceRoot":"","sources":["../src/cli-style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,SAAS;CACP,CAAC;AAEX,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC;AACrF,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuCH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuZ1D"}
|
package/dist/cli.js
CHANGED
|
@@ -14,34 +14,57 @@ import { loadConfig } from "./config";
|
|
|
14
14
|
import { listMigrations, applyMigrations, rollbackLastMigration } from "./migrations";
|
|
15
15
|
import { importData, exportData } from "./admin/import-export";
|
|
16
16
|
import { createBackup, restoreFromFile } from "./admin/backup";
|
|
17
|
+
import { createAdminUser } from "./auth/users";
|
|
18
|
+
import { info, success, warn, error as cliError, out } from "./cli-style";
|
|
17
19
|
const HELP = `
|
|
18
|
-
|
|
20
|
+
⚡ boltstore — Lightweight backend-as-a-service
|
|
19
21
|
|
|
20
|
-
Usage: boltstore <command> [options]
|
|
22
|
+
Usage: boltstore <command> [options]
|
|
21
23
|
|
|
22
|
-
Commands:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
Commands:
|
|
25
|
+
serve Start the HTTP server
|
|
26
|
+
init [--json] Generate a config file (boltstore.yaml by default)
|
|
27
|
+
admin init Create an admin account interactively
|
|
28
|
+
migrate [--db <path>] [--dir <path>] Run pending migrations
|
|
29
|
+
migrate:rollback [--db <path>] Rollback last migration
|
|
30
|
+
migrations [--db <path>] List migration status
|
|
31
|
+
import <collection> <file> [--db <path>] [--format csv|json] Import data
|
|
32
|
+
export <collection> [--db <path>] [--format csv|json] Export data (stdout)
|
|
33
|
+
backup [--db <path>] [--label <text>] Create a backup snapshot
|
|
34
|
+
restore <file> [--db <path>] Restore from a backup file
|
|
35
|
+
status Display server health and stats
|
|
33
36
|
|
|
34
|
-
Options:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
Options:
|
|
38
|
+
--port <number> HTTP server port (default: 8080)
|
|
39
|
+
--db <path> Database path or data directory
|
|
40
|
+
--config <path> Path to config file
|
|
41
|
+
--log-level <level> Log level: debug, info, warn, error
|
|
42
|
+
--timezone <tz> Server timezone
|
|
43
|
+
--format <fmt> Format for import/export: csv or json
|
|
44
|
+
--help Show this help
|
|
42
45
|
`;
|
|
43
46
|
export async function runCli(args) {
|
|
44
47
|
const command = args[0];
|
|
48
|
+
// Commands that don't require a config file
|
|
49
|
+
const NO_CONFIG_COMMANDS = new Set(["init", "help", "--help", "-h"]);
|
|
50
|
+
if (!NO_CONFIG_COMMANDS.has(command)) {
|
|
51
|
+
let configExists = false;
|
|
52
|
+
for (const candidate of ["boltstore.yaml", "boltstore.yml", "boltstore.json"]) {
|
|
53
|
+
try {
|
|
54
|
+
if (await Bun.file(candidate).exists()) {
|
|
55
|
+
configExists = true;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Skip
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!configExists) {
|
|
64
|
+
cliError("No config file found. Run boltstore init first to create one.");
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
45
68
|
switch (command) {
|
|
46
69
|
case "serve": {
|
|
47
70
|
const config = await loadConfig();
|
|
@@ -66,13 +89,14 @@ export async function runCli(args) {
|
|
|
66
89
|
maxBatchSize: config.maxBatchSize,
|
|
67
90
|
trustedProxies: config.trustedProxies,
|
|
68
91
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
process.on("SIGINT", () => {
|
|
72
|
-
process.on("SIGTERM", () => {
|
|
92
|
+
info(`Server running on http://localhost:${config.port}`);
|
|
93
|
+
info(`Data directory: ${config.databasePath}`);
|
|
94
|
+
process.on("SIGINT", () => { info("Shutting down..."); stopServerBackgroundTasks(); manager.close(); server.stop(); process.exit(0); });
|
|
95
|
+
process.on("SIGTERM", () => { info("Shutting down..."); stopServerBackgroundTasks(); manager.close(); server.stop(); process.exit(0); });
|
|
73
96
|
break;
|
|
74
97
|
}
|
|
75
98
|
case "init": {
|
|
99
|
+
const asJson = args.includes("--json");
|
|
76
100
|
const jwtSecret = crypto.randomUUID().replace(/-/g, "") + crypto.randomUUID().replace(/-/g, "");
|
|
77
101
|
const config = {
|
|
78
102
|
port: 8080,
|
|
@@ -87,15 +111,85 @@ export async function runCli(args) {
|
|
|
87
111
|
corsMethods: ["GET", "POST", "PATCH", "DELETE", "OPTIONS"],
|
|
88
112
|
corsHeaders: ["Content-Type", "Authorization"],
|
|
89
113
|
logLevel: "info",
|
|
90
|
-
maxBodySize:
|
|
114
|
+
maxBodySize: 1048576,
|
|
91
115
|
requestTimeoutMs: 30000,
|
|
92
116
|
maxBatchSize: 1000,
|
|
93
117
|
queryTimeoutMs: 0,
|
|
94
118
|
trustedProxies: [],
|
|
95
119
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
120
|
+
if (asJson) {
|
|
121
|
+
await Bun.write("boltstore.json", JSON.stringify(config, null, 2));
|
|
122
|
+
success("Created boltstore.json");
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const yaml = `# Boltstore configuration
|
|
126
|
+
port: ${config.port}
|
|
127
|
+
databasePath: ${config.databasePath}
|
|
128
|
+
jwtSecret: "${config.jwtSecret}"
|
|
129
|
+
rateLimitPublic: ${config.rateLimitPublic}
|
|
130
|
+
rateLimitAuth: ${config.rateLimitAuth}
|
|
131
|
+
rateLimitAdmin: ${config.rateLimitAdmin}
|
|
132
|
+
rateLimitWindowSeconds: ${config.rateLimitWindowSeconds}
|
|
133
|
+
serverTimezone: ${config.serverTimezone}
|
|
134
|
+
corsOrigins:
|
|
135
|
+
corsMethods:
|
|
136
|
+
- GET
|
|
137
|
+
- POST
|
|
138
|
+
- PATCH
|
|
139
|
+
- DELETE
|
|
140
|
+
- OPTIONS
|
|
141
|
+
corsHeaders:
|
|
142
|
+
- Content-Type
|
|
143
|
+
- Authorization
|
|
144
|
+
logLevel: ${config.logLevel}
|
|
145
|
+
maxBodySize: ${config.maxBodySize}
|
|
146
|
+
requestTimeoutMs: ${config.requestTimeoutMs}
|
|
147
|
+
maxBatchSize: ${config.maxBatchSize}
|
|
148
|
+
queryTimeoutMs: ${config.queryTimeoutMs}
|
|
149
|
+
trustedProxies:
|
|
150
|
+
`;
|
|
151
|
+
await Bun.write("boltstore.yaml", yaml);
|
|
152
|
+
success("Created boltstore.yaml");
|
|
153
|
+
}
|
|
154
|
+
warn("A random JWT secret was generated. In production, set a strong JWT_SECRET and keep it secret.");
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case "admin": {
|
|
158
|
+
const subcommand = args[1];
|
|
159
|
+
if (subcommand === "init") {
|
|
160
|
+
const { prompt, promptPassword } = await import("./prompt");
|
|
161
|
+
out("");
|
|
162
|
+
info("Create an admin account for the Boltstore server.");
|
|
163
|
+
const name = (await prompt(" Name (optional): ")) || undefined;
|
|
164
|
+
const email = await prompt(" Email: ");
|
|
165
|
+
const password = await promptPassword(" Password (min 8 chars): ");
|
|
166
|
+
if (!email || !password) {
|
|
167
|
+
cliError("Email and password are required.");
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
const config = await loadConfig();
|
|
171
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
172
|
+
try {
|
|
173
|
+
const metaPool = manager.getMetaPool();
|
|
174
|
+
const user = await createAdminUser(metaPool, email.trim(), password, name?.trim() || undefined);
|
|
175
|
+
out("");
|
|
176
|
+
success(`Admin account created (source: ${user.source}).`);
|
|
177
|
+
out(` ID: ${user.id}`);
|
|
178
|
+
out(` Email: ${user.email}`);
|
|
179
|
+
if (user.name)
|
|
180
|
+
out(` Name: ${user.name}`);
|
|
181
|
+
out("");
|
|
182
|
+
info("You can now log in at POST /api/_system/auth/login");
|
|
183
|
+
out(` { "email": "${user.email}", "password": "..." }`);
|
|
184
|
+
out("");
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
manager.close();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
cliError("Usage: boltstore admin init");
|
|
192
|
+
}
|
|
99
193
|
break;
|
|
100
194
|
}
|
|
101
195
|
case "migrate": {
|
|
@@ -104,19 +198,18 @@ export async function runCli(args) {
|
|
|
104
198
|
const migrationDir = args.includes("--dir") ? args[args.indexOf("--dir") + 1] : "./migrations";
|
|
105
199
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
106
200
|
try {
|
|
107
|
-
// Create the database if it doesn't exist
|
|
108
201
|
if (!manager.exists(dbName)) {
|
|
109
202
|
manager.createDatabase(dbName);
|
|
110
203
|
}
|
|
111
204
|
const pool = manager.get(dbName);
|
|
112
205
|
const result = await applyMigrations(pool, migrationDir);
|
|
113
206
|
if (result.applied.length === 0) {
|
|
114
|
-
|
|
207
|
+
info("No pending migrations.");
|
|
115
208
|
}
|
|
116
209
|
else {
|
|
117
|
-
|
|
210
|
+
success(`Applied ${result.applied.length} migration(s):`);
|
|
118
211
|
for (const name of result.applied) {
|
|
119
|
-
|
|
212
|
+
out(` ✓ ${name}`);
|
|
120
213
|
}
|
|
121
214
|
}
|
|
122
215
|
}
|
|
@@ -131,16 +224,16 @@ export async function runCli(args) {
|
|
|
131
224
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
132
225
|
try {
|
|
133
226
|
if (!manager.exists(dbName)) {
|
|
134
|
-
|
|
227
|
+
cliError(`Database "${dbName}" not found.`);
|
|
135
228
|
break;
|
|
136
229
|
}
|
|
137
230
|
const pool = manager.get(dbName);
|
|
138
231
|
const result = rollbackLastMigration(pool);
|
|
139
232
|
if (result.rolledBack) {
|
|
140
|
-
|
|
233
|
+
success(`Rolled back: ${result.rolledBack}`);
|
|
141
234
|
}
|
|
142
235
|
else {
|
|
143
|
-
|
|
236
|
+
info("No migrations to roll back.");
|
|
144
237
|
}
|
|
145
238
|
}
|
|
146
239
|
finally {
|
|
@@ -154,18 +247,18 @@ export async function runCli(args) {
|
|
|
154
247
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
155
248
|
try {
|
|
156
249
|
if (!manager.exists(dbName)) {
|
|
157
|
-
|
|
250
|
+
cliError(`Database "${dbName}" not found.`);
|
|
158
251
|
break;
|
|
159
252
|
}
|
|
160
253
|
const pool = manager.get(dbName);
|
|
161
254
|
const migrations = listMigrations(pool);
|
|
162
255
|
if (migrations.length === 0) {
|
|
163
|
-
|
|
256
|
+
info("No migrations applied.");
|
|
164
257
|
}
|
|
165
258
|
else {
|
|
166
|
-
|
|
259
|
+
out(`Applied migrations (${migrations.length}):`);
|
|
167
260
|
for (const m of migrations) {
|
|
168
|
-
|
|
261
|
+
out(` ${m.name} — ${m.appliedAt}`);
|
|
169
262
|
}
|
|
170
263
|
}
|
|
171
264
|
}
|
|
@@ -178,7 +271,7 @@ export async function runCli(args) {
|
|
|
178
271
|
const collection = args[1];
|
|
179
272
|
const filePath = args[2];
|
|
180
273
|
if (!collection || !filePath) {
|
|
181
|
-
|
|
274
|
+
cliError("Usage: boltstore import <collection> <file> [--db <path>] [--format csv|json]");
|
|
182
275
|
break;
|
|
183
276
|
}
|
|
184
277
|
const config = await loadConfig();
|
|
@@ -190,7 +283,6 @@ export async function runCli(args) {
|
|
|
190
283
|
else if (formatArg === "json")
|
|
191
284
|
format = "json";
|
|
192
285
|
else {
|
|
193
|
-
// Auto-detect from file extension
|
|
194
286
|
if (filePath.endsWith(".csv"))
|
|
195
287
|
format = "csv";
|
|
196
288
|
else
|
|
@@ -205,14 +297,14 @@ export async function runCli(args) {
|
|
|
205
297
|
const pool = manager.get(dbName);
|
|
206
298
|
const result = importData(pool, collection, input, { format, autoCreate: true });
|
|
207
299
|
if (result.collection) {
|
|
208
|
-
|
|
300
|
+
info(`Created collection "${collection}" with auto-detected schema.`);
|
|
209
301
|
}
|
|
210
|
-
|
|
302
|
+
success(`Imported ${result.imported} record(s).`);
|
|
211
303
|
if (result.failed > 0) {
|
|
212
|
-
|
|
304
|
+
warn(`${result.failed} row(s) failed validation.`);
|
|
213
305
|
if (result.errors) {
|
|
214
306
|
for (const err of result.errors) {
|
|
215
|
-
|
|
307
|
+
cliError(`Row ${err.row + 1}: ${err.message}`);
|
|
216
308
|
}
|
|
217
309
|
}
|
|
218
310
|
}
|
|
@@ -225,7 +317,7 @@ export async function runCli(args) {
|
|
|
225
317
|
case "export": {
|
|
226
318
|
const collection = args[1];
|
|
227
319
|
if (!collection) {
|
|
228
|
-
|
|
320
|
+
cliError("Usage: boltstore export <collection> [--db <path>] [--format csv|json]");
|
|
229
321
|
break;
|
|
230
322
|
}
|
|
231
323
|
const config = await loadConfig();
|
|
@@ -235,7 +327,7 @@ export async function runCli(args) {
|
|
|
235
327
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
236
328
|
try {
|
|
237
329
|
if (!manager.exists(dbName)) {
|
|
238
|
-
|
|
330
|
+
cliError(`Database "${dbName}" not found.`);
|
|
239
331
|
break;
|
|
240
332
|
}
|
|
241
333
|
const pool = manager.get(dbName);
|
|
@@ -244,7 +336,7 @@ export async function runCli(args) {
|
|
|
244
336
|
process.stdout.write(result.data);
|
|
245
337
|
}
|
|
246
338
|
else {
|
|
247
|
-
|
|
339
|
+
out(result.data);
|
|
248
340
|
}
|
|
249
341
|
}
|
|
250
342
|
finally {
|
|
@@ -259,16 +351,16 @@ export async function runCli(args) {
|
|
|
259
351
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
260
352
|
try {
|
|
261
353
|
if (!manager.exists(dbName)) {
|
|
262
|
-
|
|
354
|
+
cliError(`Database "${dbName}" not found.`);
|
|
263
355
|
break;
|
|
264
356
|
}
|
|
265
357
|
const pool = manager.get(dbName);
|
|
266
358
|
const result = createBackup(pool, dbName, manager.getDataDir(), { label });
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
359
|
+
success(`Backup created: ${result.id}`);
|
|
360
|
+
out(` Path: ${result.path}`);
|
|
361
|
+
out(` Size: ${result.sizeBytes} bytes`);
|
|
270
362
|
if (result.label)
|
|
271
|
-
|
|
363
|
+
out(` Label: ${result.label}`);
|
|
272
364
|
}
|
|
273
365
|
finally {
|
|
274
366
|
manager.close();
|
|
@@ -278,7 +370,7 @@ export async function runCli(args) {
|
|
|
278
370
|
case "restore": {
|
|
279
371
|
const filePath = args[1];
|
|
280
372
|
if (!filePath) {
|
|
281
|
-
|
|
373
|
+
cliError("Usage: boltstore restore <file> [--db <path>]");
|
|
282
374
|
break;
|
|
283
375
|
}
|
|
284
376
|
const config = await loadConfig();
|
|
@@ -286,12 +378,12 @@ export async function runCli(args) {
|
|
|
286
378
|
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
287
379
|
try {
|
|
288
380
|
if (!manager.exists(dbName)) {
|
|
289
|
-
|
|
381
|
+
cliError(`Database "${dbName}" not found.`);
|
|
290
382
|
break;
|
|
291
383
|
}
|
|
292
384
|
const result = restoreFromFile(manager, dbName, filePath);
|
|
293
|
-
|
|
294
|
-
|
|
385
|
+
success(`Restored database "${result.database}" from ${result.backupPath}`);
|
|
386
|
+
out(` Restored at: ${result.restoredAt}`);
|
|
295
387
|
}
|
|
296
388
|
finally {
|
|
297
389
|
manager.close();
|
|
@@ -304,10 +396,10 @@ export async function runCli(args) {
|
|
|
304
396
|
try {
|
|
305
397
|
const response = await fetch(healthUrl);
|
|
306
398
|
const body = await response.json();
|
|
307
|
-
|
|
399
|
+
out(JSON.stringify(body.data, null, 2));
|
|
308
400
|
}
|
|
309
401
|
catch {
|
|
310
|
-
|
|
402
|
+
cliError("Server is not running.");
|
|
311
403
|
}
|
|
312
404
|
break;
|
|
313
405
|
}
|
|
@@ -315,7 +407,7 @@ export async function runCli(args) {
|
|
|
315
407
|
case "-h":
|
|
316
408
|
case "help":
|
|
317
409
|
default:
|
|
318
|
-
|
|
410
|
+
out(HELP);
|
|
319
411
|
break;
|
|
320
412
|
}
|
|
321
413
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE1E,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,4CAA4C;IAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAErE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,SAAS,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC;gBACH,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBACvC,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM;gBACR,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,+DAA+D,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;gBAClC,IAAI,EAAE;oBACJ,OAAO,EAAE,MAAM,CAAC,WAAW;oBAC3B,OAAO,EAAE,MAAM,CAAC,WAAW;oBAC3B,OAAO,EAAE,MAAM,CAAC,WAAW;iBAC5B;gBACD,SAAS,EAAE;oBACT,MAAM,EAAE,MAAM,CAAC,eAAe;oBAC9B,IAAI,EAAE,MAAM,CAAC,aAAa;oBAC1B,KAAK,EAAE,MAAM,CAAC,cAAc;oBAC5B,aAAa,EAAE,MAAM,CAAC,sBAAsB;iBAC7C;gBACD,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC,CAAC,CAAC;YAEH,IAAI,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,mBAAmB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAE/C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxI,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzI,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAEhG,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,QAAQ;gBACtB,SAAS;gBACT,eAAe,EAAE,GAAG;gBACpB,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,GAAG;gBACnB,sBAAsB,EAAE,EAAE;gBAC1B,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;gBAC1D,WAAW,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;gBAC9C,QAAQ,EAAE,MAAM;gBAChB,WAAW,EAAE,OAAO;gBACpB,gBAAgB,EAAE,KAAK;gBACvB,YAAY,EAAE,IAAI;gBAClB,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,EAAE;aACnB,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG;QACb,MAAM,CAAC,IAAI;gBACH,MAAM,CAAC,YAAY;cACrB,MAAM,CAAC,SAAS;mBACX,MAAM,CAAC,eAAe;iBACxB,MAAM,CAAC,aAAa;kBACnB,MAAM,CAAC,cAAc;0BACb,MAAM,CAAC,sBAAsB;kBACrC,MAAM,CAAC,cAAc;;;;;;;;;;;YAW3B,MAAM,CAAC,QAAQ;eACZ,MAAM,CAAC,WAAW;oBACb,MAAM,CAAC,gBAAgB;gBAC3B,MAAM,CAAC,YAAY;kBACjB,MAAM,CAAC,cAAc;;CAEtC,CAAC;gBACM,MAAM,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACxC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,+FAA+F,CAAC,CAAC;YACtG,MAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE5D,GAAG,CAAC,EAAE,CAAC,CAAC;gBACR,IAAI,CAAC,mDAAmD,CAAC,CAAC;gBAE1D,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,SAAS,CAAC;gBAChE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,4BAA4B,CAAC,CAAC;gBAEpE,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACxB,QAAQ,CAAC,kCAAkC,CAAC,CAAC;oBAC7C,MAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBAEtE,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;oBAEhG,GAAG,CAAC,EAAE,CAAC,CAAC;oBACR,OAAO,CAAC,kCAAkC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC3D,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3B,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,IAAI;wBAAE,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5C,GAAG,CAAC,EAAE,CAAC,CAAC;oBACR,IAAI,CAAC,oDAAoD,CAAC,CAAC;oBAC3D,GAAG,CAAC,iBAAiB,IAAI,CAAC,KAAK,wBAAwB,CAAC,CAAC;oBACzD,GAAG,CAAC,EAAE,CAAC,CAAC;gBACV,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,6BAA6B,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YAE/F,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAEzD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;oBAC1D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAClC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElF,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,aAAa,MAAM,cAAc,CAAC,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAE3C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,OAAO,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElF,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,aAAa,MAAM,cAAc,CAAC,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBAExC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,uBAAuB,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;oBAClD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,QAAQ,CAAC,+EAA+E,CAAC,CAAC;gBAC1F,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE7F,IAAI,MAAkC,CAAC;YACvC,IAAI,SAAS,KAAK,KAAK;gBAAE,MAAM,GAAG,KAAK,CAAC;iBACnC,IAAI,SAAS,KAAK,MAAM;gBAAE,MAAM,GAAG,MAAM,CAAC;iBAC1C,CAAC;gBACJ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,MAAM,GAAG,KAAK,CAAC;;oBACzC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEjF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,IAAI,CAAC,uBAAuB,UAAU,8BAA8B,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,CAAC,YAAY,MAAM,CAAC,QAAQ,aAAa,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAC;oBACnD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BAChC,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,QAAQ,CAAC,wEAAwE,CAAC,CAAC;gBACnF,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,MAAM,MAAM,GAAmB,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEtE,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,aAAa,MAAM,cAAc,CAAC,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAExD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEvF,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,aAAa,MAAM,cAAc,CAAC,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE3E,OAAO,CAAC,mBAAmB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9B,GAAG,CAAC,WAAW,MAAM,CAAC,SAAS,QAAQ,CAAC,CAAC;gBACzC,IAAI,MAAM,CAAC,KAAK;oBAAE,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,+CAA+C,CAAC,CAAC;gBAC1D,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElF,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,aAAa,MAAM,cAAc,CAAC,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAE1D,OAAO,CAAC,sBAAsB,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC5E,GAAG,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7C,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,oBAAoB,MAAM,CAAC,IAAI,aAAa,CAAC;YAE/D,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YACrC,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM,CAAC;QACZ;YACE,GAAG,CAAC,IAAI,CAAC,CAAC;YACV,MAAM;IACV,CAAC;AACH,CAAC"}
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;CACvB;AAqKD;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAsD3D"}
|
package/dist/config.js
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* Three sources, merged in priority order:
|
|
5
5
|
* 1. CLI flags (highest priority)
|
|
6
6
|
* 2. Environment variables
|
|
7
|
-
* 3. Config file (JSON)
|
|
7
|
+
* 3. Config file (YAML or JSON)
|
|
8
8
|
*
|
|
9
9
|
* @module boltstore/config
|
|
10
10
|
*/
|
|
11
|
+
import { parseYaml } from "./yaml";
|
|
11
12
|
const DEFAULT_CONFIG = {
|
|
12
13
|
port: 8080,
|
|
13
14
|
databasePath: "./data",
|
|
@@ -181,7 +182,8 @@ function parseEnvVars() {
|
|
|
181
182
|
return config;
|
|
182
183
|
}
|
|
183
184
|
/**
|
|
184
|
-
* Parse a JSON config
|
|
185
|
+
* Parse a config file (JSON or YAML) into a typed partial config.
|
|
186
|
+
* Format is detected by file extension.
|
|
185
187
|
*/
|
|
186
188
|
async function parseConfigFile(filePath) {
|
|
187
189
|
try {
|
|
@@ -190,62 +192,82 @@ async function parseConfigFile(filePath) {
|
|
|
190
192
|
if (!exists)
|
|
191
193
|
return {};
|
|
192
194
|
const content = await file.text();
|
|
193
|
-
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (typeof parsed.databasePath === "string")
|
|
198
|
-
config.databasePath = parsed.databasePath;
|
|
199
|
-
if (typeof parsed.jwtSecret === "string")
|
|
200
|
-
config.jwtSecret = parsed.jwtSecret;
|
|
201
|
-
if (typeof parsed.rateLimitPublic === "number")
|
|
202
|
-
config.rateLimitPublic = parsed.rateLimitPublic;
|
|
203
|
-
if (typeof parsed.rateLimitAuth === "number")
|
|
204
|
-
config.rateLimitAuth = parsed.rateLimitAuth;
|
|
205
|
-
if (typeof parsed.rateLimitAdmin === "number")
|
|
206
|
-
config.rateLimitAdmin = parsed.rateLimitAdmin;
|
|
207
|
-
if (typeof parsed.rateLimitWindowSeconds === "number")
|
|
208
|
-
config.rateLimitWindowSeconds = parsed.rateLimitWindowSeconds;
|
|
209
|
-
if (typeof parsed.serverTimezone === "string")
|
|
210
|
-
config.serverTimezone = parsed.serverTimezone;
|
|
211
|
-
if (Array.isArray(parsed.corsOrigins))
|
|
212
|
-
config.corsOrigins = parsed.corsOrigins;
|
|
213
|
-
if (Array.isArray(parsed.corsMethods))
|
|
214
|
-
config.corsMethods = parsed.corsMethods;
|
|
215
|
-
if (Array.isArray(parsed.corsHeaders))
|
|
216
|
-
config.corsHeaders = parsed.corsHeaders;
|
|
217
|
-
if (typeof parsed.logLevel === "string")
|
|
218
|
-
config.logLevel = parsed.logLevel;
|
|
219
|
-
if (typeof parsed.maxBodySize === "number")
|
|
220
|
-
config.maxBodySize = parsed.maxBodySize;
|
|
221
|
-
if (typeof parsed.requestTimeoutMs === "number")
|
|
222
|
-
config.requestTimeoutMs = parsed.requestTimeoutMs;
|
|
223
|
-
if (typeof parsed.maxBatchSize === "number")
|
|
224
|
-
config.maxBatchSize = parsed.maxBatchSize;
|
|
225
|
-
if (typeof parsed.queryTimeoutMs === "number")
|
|
226
|
-
config.queryTimeoutMs = parsed.queryTimeoutMs;
|
|
227
|
-
if (Array.isArray(parsed.trustedProxies))
|
|
228
|
-
config.trustedProxies = parsed.trustedProxies;
|
|
229
|
-
if (typeof parsed.maxImportRows === "number")
|
|
230
|
-
config.maxImportRows = parsed.maxImportRows;
|
|
231
|
-
return config;
|
|
195
|
+
// Detect format from extension
|
|
196
|
+
const isYaml = filePath.endsWith(".yaml") || filePath.endsWith(".yml");
|
|
197
|
+
const parsed = isYaml ? parseYaml(content) : JSON.parse(content);
|
|
198
|
+
return mapToConfig(parsed);
|
|
232
199
|
}
|
|
233
200
|
catch {
|
|
234
201
|
return {};
|
|
235
202
|
}
|
|
236
203
|
}
|
|
204
|
+
/** Map a parsed object to typed BoltstoreConfig fields. */
|
|
205
|
+
function mapToConfig(parsed) {
|
|
206
|
+
const config = {};
|
|
207
|
+
if (typeof parsed.port === "number")
|
|
208
|
+
config.port = parsed.port;
|
|
209
|
+
if (typeof parsed.databasePath === "string")
|
|
210
|
+
config.databasePath = parsed.databasePath;
|
|
211
|
+
if (typeof parsed.jwtSecret === "string")
|
|
212
|
+
config.jwtSecret = parsed.jwtSecret;
|
|
213
|
+
if (typeof parsed.rateLimitPublic === "number")
|
|
214
|
+
config.rateLimitPublic = parsed.rateLimitPublic;
|
|
215
|
+
if (typeof parsed.rateLimitAuth === "number")
|
|
216
|
+
config.rateLimitAuth = parsed.rateLimitAuth;
|
|
217
|
+
if (typeof parsed.rateLimitAdmin === "number")
|
|
218
|
+
config.rateLimitAdmin = parsed.rateLimitAdmin;
|
|
219
|
+
if (typeof parsed.rateLimitWindowSeconds === "number")
|
|
220
|
+
config.rateLimitWindowSeconds = parsed.rateLimitWindowSeconds;
|
|
221
|
+
if (typeof parsed.serverTimezone === "string")
|
|
222
|
+
config.serverTimezone = parsed.serverTimezone;
|
|
223
|
+
if (Array.isArray(parsed.corsOrigins))
|
|
224
|
+
config.corsOrigins = parsed.corsOrigins;
|
|
225
|
+
if (Array.isArray(parsed.corsMethods))
|
|
226
|
+
config.corsMethods = parsed.corsMethods;
|
|
227
|
+
if (Array.isArray(parsed.corsHeaders))
|
|
228
|
+
config.corsHeaders = parsed.corsHeaders;
|
|
229
|
+
if (typeof parsed.logLevel === "string")
|
|
230
|
+
config.logLevel = parsed.logLevel;
|
|
231
|
+
if (typeof parsed.maxBodySize === "number")
|
|
232
|
+
config.maxBodySize = parsed.maxBodySize;
|
|
233
|
+
if (typeof parsed.requestTimeoutMs === "number")
|
|
234
|
+
config.requestTimeoutMs = parsed.requestTimeoutMs;
|
|
235
|
+
if (typeof parsed.maxBatchSize === "number")
|
|
236
|
+
config.maxBatchSize = parsed.maxBatchSize;
|
|
237
|
+
if (typeof parsed.queryTimeoutMs === "number")
|
|
238
|
+
config.queryTimeoutMs = parsed.queryTimeoutMs;
|
|
239
|
+
if (Array.isArray(parsed.trustedProxies))
|
|
240
|
+
config.trustedProxies = parsed.trustedProxies;
|
|
241
|
+
if (typeof parsed.maxImportRows === "number")
|
|
242
|
+
config.maxImportRows = parsed.maxImportRows;
|
|
243
|
+
return config;
|
|
244
|
+
}
|
|
237
245
|
/**
|
|
238
246
|
* Load configuration from all three sources, merged in priority order.
|
|
239
247
|
*
|
|
240
248
|
* Priority: CLI flags > environment variables > config file > defaults
|
|
241
249
|
*/
|
|
242
250
|
export async function loadConfig() {
|
|
243
|
-
// Get config file path
|
|
251
|
+
// Get config file path: CLI flag > env var > auto-detect boltstore.yaml / boltstore.json
|
|
244
252
|
const cliArgs = process.argv.slice(2);
|
|
245
253
|
const configFlagIdx = cliArgs.indexOf("--config");
|
|
246
|
-
|
|
254
|
+
let configPath = configFlagIdx >= 0 && cliArgs[configFlagIdx + 1]
|
|
247
255
|
? cliArgs[configFlagIdx + 1]
|
|
248
256
|
: Bun.env.BOLTSTORE_CONFIG;
|
|
257
|
+
// Auto-detect boltstore.yaml or boltstore.json if no explicit path given
|
|
258
|
+
if (!configPath) {
|
|
259
|
+
for (const candidate of ["boltstore.yaml", "boltstore.yml", "boltstore.json"]) {
|
|
260
|
+
try {
|
|
261
|
+
if (await Bun.file(candidate).exists()) {
|
|
262
|
+
configPath = candidate;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// File doesn't exist or can't be read — skip
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
249
271
|
// Load from file
|
|
250
272
|
const fileConfig = configPath ? await parseConfigFile(configPath) : {};
|
|
251
273
|
// Load from environment
|