boltstore 0.6.2 → 0.6.3
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 +19 -8
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +10 -2
- package/dist/audit.js.map +1 -1
- package/dist/auth/jwt.js +1 -1
- package/dist/bin.js +4 -4
- package/dist/bin.js.map +1 -1
- package/dist/cli/admin.d.ts +2 -0
- package/dist/cli/admin.d.ts.map +1 -0
- package/dist/cli/admin.js +65 -0
- package/dist/cli/admin.js.map +1 -0
- package/dist/cli/applications.d.ts +2 -0
- package/dist/cli/applications.d.ts.map +1 -0
- package/dist/cli/applications.js +105 -0
- package/dist/cli/applications.js.map +1 -0
- package/dist/cli/backup.d.ts +3 -0
- package/dist/cli/backup.d.ts.map +1 -0
- package/dist/cli/backup.js +49 -0
- package/dist/cli/backup.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +36 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/import-export.d.ts +3 -0
- package/dist/cli/import-export.d.ts.map +1 -0
- package/dist/cli/import-export.js +80 -0
- package/dist/cli/import-export.js.map +1 -0
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +105 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/migrate.d.ts +4 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +77 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/serve.d.ts +2 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +33 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +15 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli.d.ts +0 -10
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +95 -402
- package/dist/cli.js.map +1 -1
- package/dist/db/manager.d.ts +21 -21
- package/dist/db/manager.d.ts.map +1 -1
- package/dist/db/manager.js +97 -65
- package/dist/db/manager.js.map +1 -1
- package/dist/entry.js +4 -4
- package/dist/entry.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -113,9 +113,8 @@ Without a command argument, the server starts on port 8080. With a command argum
|
|
|
113
113
|
### CLI commands
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
# Start the server
|
|
116
|
+
# Start the server (auto-generates boltstore.yaml if missing)
|
|
117
117
|
bun run boltstore serve
|
|
118
|
-
# or: bun run bolt serve
|
|
119
118
|
|
|
120
119
|
# Generate a config file (YAML by default)
|
|
121
120
|
bun run boltstore init
|
|
@@ -124,7 +123,19 @@ bun run boltstore init
|
|
|
124
123
|
bun run boltstore init --json
|
|
125
124
|
|
|
126
125
|
# Create an admin account (CLI-only, interactive prompt)
|
|
127
|
-
bun run boltstore admin
|
|
126
|
+
bun run boltstore admin
|
|
127
|
+
|
|
128
|
+
# List applications with their database IDs and paths
|
|
129
|
+
bun run boltstore applications
|
|
130
|
+
|
|
131
|
+
# Create a new application
|
|
132
|
+
bun run boltstore applications --create myapp
|
|
133
|
+
|
|
134
|
+
# Rename an application
|
|
135
|
+
bun run boltstore applications --rename myapp "new-name"
|
|
136
|
+
|
|
137
|
+
# Delete an application (irreversible — requires confirmation)
|
|
138
|
+
bun run boltstore applications --delete myapp
|
|
128
139
|
|
|
129
140
|
# Run pending migrations
|
|
130
141
|
bun run boltstore migrate --db myapp --dir ./migrations
|
|
@@ -133,19 +144,19 @@ bun run boltstore migrate --db myapp --dir ./migrations
|
|
|
133
144
|
bun run boltstore migrate:rollback --db myapp
|
|
134
145
|
|
|
135
146
|
# List migration status
|
|
136
|
-
bun run boltstore
|
|
147
|
+
bun run boltstore migrate:list --db myapp
|
|
137
148
|
|
|
138
149
|
# Import data
|
|
139
|
-
bun run boltstore import todos mydata.csv --db myapp --format csv
|
|
150
|
+
bun run boltstore db:import todos mydata.csv --db myapp --format csv
|
|
140
151
|
|
|
141
152
|
# Export data (prints to stdout)
|
|
142
|
-
bun run boltstore export todos --db myapp --format json
|
|
153
|
+
bun run boltstore db:export todos --db myapp --format json
|
|
143
154
|
|
|
144
155
|
# Create a backup
|
|
145
|
-
bun run boltstore backup --db myapp --label "pre-deploy"
|
|
156
|
+
bun run boltstore db:backup --db myapp --label "pre-deploy"
|
|
146
157
|
|
|
147
158
|
# Restore from a backup file
|
|
148
|
-
bun run boltstore restore ./data/backups/myapp-20260101.db --db myapp
|
|
159
|
+
bun run boltstore db:restore ./data/backups/myapp-20260101.db --db myapp
|
|
149
160
|
|
|
150
161
|
# Check server status
|
|
151
162
|
bun run boltstore status
|
package/dist/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,kCAAkC;AAClC,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,eAAe,GACf,aAAa,GACb,cAAc,GACd,qBAAqB,GACrB,sBAAsB,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,uBAAuB,GACvB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,qBAAqB,CAAC;AAE1B,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CA4B7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAgD1E;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAIxE"}
|
package/dist/audit.js
CHANGED
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
* @module boltstore/audit
|
|
9
9
|
*/
|
|
10
10
|
import logger from "./logger";
|
|
11
|
+
import { generateSecureId, ID_PREFIXES } from "@boltstore/utils";
|
|
11
12
|
/** Bootstrap the audit log table in a database. */
|
|
12
13
|
export function bootstrapAuditTables(pool) {
|
|
13
14
|
const db = pool.write();
|
|
14
15
|
db.run(`
|
|
15
16
|
CREATE TABLE IF NOT EXISTS _audit_log (
|
|
16
17
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
18
|
+
log_id TEXT,
|
|
17
19
|
type TEXT NOT NULL,
|
|
18
20
|
principal_id TEXT,
|
|
19
21
|
principal_type TEXT,
|
|
@@ -29,6 +31,10 @@ export function bootstrapAuditTables(pool) {
|
|
|
29
31
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
30
32
|
)
|
|
31
33
|
`);
|
|
34
|
+
try {
|
|
35
|
+
db.run("ALTER TABLE _audit_log ADD COLUMN log_id TEXT");
|
|
36
|
+
}
|
|
37
|
+
catch { }
|
|
32
38
|
db.run(`
|
|
33
39
|
CREATE INDEX IF NOT EXISTS idx_audit_log_created_at ON _audit_log(created_at)
|
|
34
40
|
`);
|
|
@@ -60,9 +66,11 @@ export function logAuditEvent(event, pool) {
|
|
|
60
66
|
try {
|
|
61
67
|
bootstrapAuditTables(pool);
|
|
62
68
|
const db = pool.write();
|
|
69
|
+
const logId = generateSecureId(ID_PREFIXES.auditLog);
|
|
63
70
|
db.run(`INSERT INTO _audit_log
|
|
64
|
-
(type, principal_id, principal_type, database, collection, action, target, ip, user_agent, success, details_json, error)
|
|
65
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
71
|
+
(log_id, type, principal_id, principal_type, database, collection, action, target, ip, user_agent, success, details_json, error)
|
|
72
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
73
|
+
logId,
|
|
66
74
|
event.type,
|
|
67
75
|
event.principalId ?? null,
|
|
68
76
|
event.principalType ?? null,
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,MAAM,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/jwt.js
CHANGED
package/dist/bin.js
CHANGED
|
@@ -19,10 +19,10 @@ import { loadConfig } from "./config";
|
|
|
19
19
|
import { info, success, error } from "./cli-style";
|
|
20
20
|
const command = process.argv[2];
|
|
21
21
|
const CLI_COMMANDS = new Set([
|
|
22
|
-
"serve", "init", "admin", "status", "help", "--help", "-h",
|
|
23
|
-
"migrate", "migrate:rollback", "migrations",
|
|
24
|
-
"import", "export",
|
|
25
|
-
"backup", "restore",
|
|
22
|
+
"serve", "init", "admin", "applications", "status", "help", "--help", "-h",
|
|
23
|
+
"migrate", "migrate:rollback", "migrate:list", "migrations",
|
|
24
|
+
"import", "export", "db:import", "db:export",
|
|
25
|
+
"backup", "restore", "db:backup", "db:restore",
|
|
26
26
|
]);
|
|
27
27
|
try {
|
|
28
28
|
if (command && CLI_COMMANDS.has(command)) {
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEhE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { DatabaseManager } from "../db/manager";
|
|
2
|
+
import { loadConfig } from "../config";
|
|
3
|
+
import { createAdminUser } from "../auth/users";
|
|
4
|
+
import { info, success, error as cliError, out } from "../cli-style";
|
|
5
|
+
import { deprecateCommand } from "./help";
|
|
6
|
+
export async function adminCommand(args) {
|
|
7
|
+
const subcommand = args[1];
|
|
8
|
+
if (subcommand === "databases") {
|
|
9
|
+
deprecateCommand("admin databases", "applications");
|
|
10
|
+
const { applicationsCommand } = await import("./applications");
|
|
11
|
+
args[0] = "applications";
|
|
12
|
+
return applicationsCommand(args);
|
|
13
|
+
}
|
|
14
|
+
if (subcommand === "init" || !subcommand) {
|
|
15
|
+
const { prompt, promptPassword } = await import("../prompt");
|
|
16
|
+
if (!subcommand) {
|
|
17
|
+
out("");
|
|
18
|
+
info("This will create a new admin account for the Boltstore server.");
|
|
19
|
+
out(" Admin accounts can manage databases, collections, and users.");
|
|
20
|
+
out(" Regular users are created via the register endpoint in each app database.");
|
|
21
|
+
out("");
|
|
22
|
+
const { prompt: confirmPrompt } = await import("../prompt");
|
|
23
|
+
const confirm = await confirmPrompt("Proceed with creating an admin account? [Y/n]: ");
|
|
24
|
+
if (confirm.toLowerCase() === "n" || confirm.toLowerCase() === "no") {
|
|
25
|
+
info("Cancelled.");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (subcommand === "init") {
|
|
30
|
+
deprecateCommand("admin init", "admin");
|
|
31
|
+
}
|
|
32
|
+
out("");
|
|
33
|
+
info("Create an admin account for the Boltstore server.");
|
|
34
|
+
const name = (await prompt(" Name (optional): ")) || undefined;
|
|
35
|
+
const email = await prompt(" Email: ");
|
|
36
|
+
const password = await promptPassword(" Password (min 8 chars): ");
|
|
37
|
+
if (!email || !password) {
|
|
38
|
+
cliError("Email and password are required.");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const config = await loadConfig();
|
|
42
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
43
|
+
try {
|
|
44
|
+
const metaPool = manager.getMetaPool();
|
|
45
|
+
const user = await createAdminUser(metaPool, email.trim(), password, name?.trim() || undefined);
|
|
46
|
+
out("");
|
|
47
|
+
success(`Admin account created (source: ${user.source}).`);
|
|
48
|
+
out(` ID: ${user.id}`);
|
|
49
|
+
out(` Email: ${user.email}`);
|
|
50
|
+
if (user.name)
|
|
51
|
+
out(` Name: ${user.name}`);
|
|
52
|
+
out("");
|
|
53
|
+
info("You can now log in at POST /api/_system/auth/login");
|
|
54
|
+
out(` { "email": "${user.email}", "password": "..." }`);
|
|
55
|
+
out("");
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
manager.close();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
cliError("Usage: boltstore admin | boltstore applications");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;QACzB,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,IAAI,CAAC,gEAAgE,CAAC,CAAC;YACvE,GAAG,CAAC,gEAAgE,CAAC,CAAC;YACtE,GAAG,CAAC,6EAA6E,CAAC,CAAC;YACnF,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,iDAAiD,CAAC,CAAC;YACvF,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,SAAS,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,4BAA4B,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,QAAQ,CAAC,kCAAkC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;YAEhG,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,OAAO,CAAC,kCAAkC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAC3D,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI;gBAAE,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAC3D,GAAG,CAAC,iBAAiB,IAAI,CAAC,KAAK,wBAAwB,CAAC,CAAC;YACzD,GAAG,CAAC,EAAE,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,iDAAiD,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/cli/applications.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { DatabaseManager } from "../db/manager";
|
|
2
|
+
import { loadConfig } from "../config";
|
|
3
|
+
import { info, success, error as cliError, out } from "../cli-style";
|
|
4
|
+
export async function applicationsCommand(args) {
|
|
5
|
+
const config = await loadConfig();
|
|
6
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
7
|
+
try {
|
|
8
|
+
try {
|
|
9
|
+
const createIdx = args.indexOf("--create");
|
|
10
|
+
if (createIdx >= 0) {
|
|
11
|
+
const appName = args[createIdx + 1];
|
|
12
|
+
if (!appName) {
|
|
13
|
+
cliError("Usage: boltstore applications --create <application-name>");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const result = manager.createDatabase(appName);
|
|
17
|
+
out("");
|
|
18
|
+
success(`Application "${result.name}" created.`);
|
|
19
|
+
out(` DB ID: ${result.id}`);
|
|
20
|
+
out(` DB Path: ${result.path}`);
|
|
21
|
+
out(` Files Dir: ${result.path.replace("/db/", "/files/").replace(/\/[^/]+\.db$/, "")}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
const e = err;
|
|
27
|
+
if (e.message)
|
|
28
|
+
cliError(e.message);
|
|
29
|
+
else
|
|
30
|
+
cliError(String(err));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const renameIdx = args.indexOf("--rename");
|
|
34
|
+
if (renameIdx >= 0) {
|
|
35
|
+
const appRef = args[renameIdx + 1];
|
|
36
|
+
const newName = args[renameIdx + 2];
|
|
37
|
+
if (!appRef || !newName) {
|
|
38
|
+
cliError("Usage: boltstore applications --rename <app-id-or-name> <new-name>");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const dbList = manager.listDatabases();
|
|
42
|
+
const db = dbList.find((d) => d.id === appRef || d.name === appRef);
|
|
43
|
+
if (!db) {
|
|
44
|
+
cliError(`Application "${appRef}" not found.`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const metaDb = manager.getMetaPool().write();
|
|
48
|
+
metaDb.run("UPDATE _databases SET name=?, updated_at=? WHERE id=?", [newName, new Date().toISOString(), db.id]);
|
|
49
|
+
success(`Renamed application "${db.name}" → "${newName}"`);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const deleteIdx = args.indexOf("--delete");
|
|
53
|
+
if (deleteIdx >= 0) {
|
|
54
|
+
const appRef = args[deleteIdx + 1];
|
|
55
|
+
if (!appRef) {
|
|
56
|
+
cliError("Usage: boltstore applications --delete <app-id-or-name>");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const dbList = manager.listDatabases();
|
|
60
|
+
const db = dbList.find((d) => d.id === appRef || d.name === appRef);
|
|
61
|
+
if (!db) {
|
|
62
|
+
cliError(`Application "${appRef}" not found.`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
out("");
|
|
66
|
+
cliError("⚠ WARNING: This action is IRREVERSIBLE!");
|
|
67
|
+
out("");
|
|
68
|
+
out(` You are about to permanently delete application "${db.name}" (${db.id}):`);
|
|
69
|
+
out(` • Database file: ${db.path}`);
|
|
70
|
+
out(` • All records will be lost`);
|
|
71
|
+
out(` • All uploaded files for this application will be deleted`);
|
|
72
|
+
out("");
|
|
73
|
+
const { prompt } = await import("../prompt");
|
|
74
|
+
const confirm = await prompt(` Type the application name "${db.name}" to confirm: `);
|
|
75
|
+
if (confirm !== db.name) {
|
|
76
|
+
cliError("Confirmation failed. Application was not deleted.");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
manager.deleteDatabase(db.name);
|
|
80
|
+
success(`Application "${db.name}" has been permanently deleted.`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const databases = manager.listDatabases();
|
|
84
|
+
if (databases.length === 0) {
|
|
85
|
+
info("No applications found.");
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
out("");
|
|
89
|
+
info(`Applications (${databases.length}):`);
|
|
90
|
+
out("");
|
|
91
|
+
for (const db of databases) {
|
|
92
|
+
out(` Application: ${db.name}`);
|
|
93
|
+
out(` DB ID: ${db.id}`);
|
|
94
|
+
out(` DB Path: ${db.path}`);
|
|
95
|
+
out(` Files Dir: ${db.path.replace("/db/", "/files/").replace(/\/[^/]+\.db$/, "")}`);
|
|
96
|
+
out(` Created: ${db.createdAt}`);
|
|
97
|
+
out("");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
manager.close();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=applications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applications.js","sourceRoot":"","sources":["../../src/cli/applications.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/cli/backup.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DatabaseManager } from "../db/manager";
|
|
2
|
+
import { loadConfig } from "../config";
|
|
3
|
+
import { createBackup, restoreFromFile } from "../admin/backup";
|
|
4
|
+
import { success, error as cliError, out } from "../cli-style";
|
|
5
|
+
export async function backupCommand(args) {
|
|
6
|
+
const config = await loadConfig();
|
|
7
|
+
const dbName = args.includes("--db") ? args[args.indexOf("--db") + 1] : "default";
|
|
8
|
+
const label = args.includes("--label") ? args[args.indexOf("--label") + 1] : undefined;
|
|
9
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
10
|
+
try {
|
|
11
|
+
if (!manager.exists(dbName)) {
|
|
12
|
+
cliError(`Database "${dbName}" not found.`);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const pool = manager.get(dbName);
|
|
16
|
+
const result = createBackup(pool, dbName, manager.getDataDir(), { label });
|
|
17
|
+
success(`Backup created: ${result.id}`);
|
|
18
|
+
out(` Path: ${result.path}`);
|
|
19
|
+
out(` Size: ${result.sizeBytes} bytes`);
|
|
20
|
+
if (result.label)
|
|
21
|
+
out(` Label: ${result.label}`);
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
manager.close();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function restoreCommand(args) {
|
|
28
|
+
const filePath = args[1];
|
|
29
|
+
if (!filePath) {
|
|
30
|
+
cliError("Usage: boltstore db:restore <file> [--db <path>]");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const config = await loadConfig();
|
|
34
|
+
const dbName = args.includes("--db") ? args[args.indexOf("--db") + 1] : "default";
|
|
35
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
36
|
+
try {
|
|
37
|
+
if (!manager.exists(dbName)) {
|
|
38
|
+
cliError(`Database "${dbName}" not found.`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const result = restoreFromFile(manager, dbName, filePath);
|
|
42
|
+
success(`Restored database "${result.database}" from ${result.backupPath}`);
|
|
43
|
+
out(` Restored at: ${result.restoredAt}`);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
manager.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/cli/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const HELP = "\n \u26A1 boltstore \u2014 Lightweight backend-as-a-service\n\n Usage: boltstore <command> [options]\n\n Commands:\n serve Start the HTTP server\n init [--json] Generate a config file (boltstore.yaml by default)\n admin Create an admin account interactively\n applications List applications with their databases and file paths\n applications --create <name> Create a new application with database\n applications --rename <app> <new-name> Rename an application\n applications --delete <app> Delete an application (irreversible!)\n migrate Run pending migrations\n migrate:rollback Rollback last migration\n migrate:list List migration status\n db:import <col> <file> Import data into a collection\n db:export <col> Export data from a collection (stdout)\n db:backup Create a backup snapshot\n db:restore <file> Restore from a backup file\n status Display server health and stats\n\n Options:\n --port <number> HTTP server port (default: 8080)\n --db <path> Database path or data directory\n --config <path> Path to config file\n --log-level <level> Log level: debug, info, warn, error\n --timezone <tz> Server timezone\n --format <fmt> Format for import/export: csv or json\n --help Show this help\n";
|
|
2
|
+
export declare function deprecateCommand(oldCmd: string, newCmd: string): void;
|
|
3
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,o7CA8BhB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAErE"}
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { warn } from "../cli-style";
|
|
2
|
+
export const HELP = `
|
|
3
|
+
⚡ boltstore — Lightweight backend-as-a-service
|
|
4
|
+
|
|
5
|
+
Usage: boltstore <command> [options]
|
|
6
|
+
|
|
7
|
+
Commands:
|
|
8
|
+
serve Start the HTTP server
|
|
9
|
+
init [--json] Generate a config file (boltstore.yaml by default)
|
|
10
|
+
admin Create an admin account interactively
|
|
11
|
+
applications List applications with their databases and file paths
|
|
12
|
+
applications --create <name> Create a new application with database
|
|
13
|
+
applications --rename <app> <new-name> Rename an application
|
|
14
|
+
applications --delete <app> Delete an application (irreversible!)
|
|
15
|
+
migrate Run pending migrations
|
|
16
|
+
migrate:rollback Rollback last migration
|
|
17
|
+
migrate:list List migration status
|
|
18
|
+
db:import <col> <file> Import data into a collection
|
|
19
|
+
db:export <col> Export data from a collection (stdout)
|
|
20
|
+
db:backup Create a backup snapshot
|
|
21
|
+
db:restore <file> Restore from a backup file
|
|
22
|
+
status Display server health and stats
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--port <number> HTTP server port (default: 8080)
|
|
26
|
+
--db <path> Database path or data directory
|
|
27
|
+
--config <path> Path to config file
|
|
28
|
+
--log-level <level> Log level: debug, info, warn, error
|
|
29
|
+
--timezone <tz> Server timezone
|
|
30
|
+
--format <fmt> Format for import/export: csv or json
|
|
31
|
+
--help Show this help
|
|
32
|
+
`;
|
|
33
|
+
export function deprecateCommand(oldCmd, newCmd) {
|
|
34
|
+
warn(`"${oldCmd}" is deprecated and will be removed in the next release. Use "${newCmd}" instead.`);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAc;IAC7D,IAAI,CAAC,IAAI,MAAM,iEAAiE,MAAM,YAAY,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-export.d.ts","sourceRoot":"","sources":["../../src/cli/import-export.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CjE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCjE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { DatabaseManager } from "../db/manager";
|
|
2
|
+
import { loadConfig } from "../config";
|
|
3
|
+
import { importData, exportData } from "../admin/import-export";
|
|
4
|
+
import { info, success, warn, error as cliError, out } from "../cli-style";
|
|
5
|
+
export async function importCommand(args) {
|
|
6
|
+
const collection = args[1];
|
|
7
|
+
const filePath = args[2];
|
|
8
|
+
if (!collection || !filePath) {
|
|
9
|
+
cliError("Usage: boltstore db:import <collection> <file> [--db <path>] [--format csv|json]");
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const config = await loadConfig();
|
|
13
|
+
const dbName = args.includes("--db") ? args[args.indexOf("--db") + 1] : "default";
|
|
14
|
+
const formatArg = args.includes("--format") ? args[args.indexOf("--format") + 1] : undefined;
|
|
15
|
+
let format;
|
|
16
|
+
if (formatArg === "csv")
|
|
17
|
+
format = "csv";
|
|
18
|
+
else if (formatArg === "json")
|
|
19
|
+
format = "json";
|
|
20
|
+
else {
|
|
21
|
+
if (filePath.endsWith(".csv"))
|
|
22
|
+
format = "csv";
|
|
23
|
+
else
|
|
24
|
+
format = "json";
|
|
25
|
+
}
|
|
26
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
27
|
+
try {
|
|
28
|
+
if (!manager.exists(dbName)) {
|
|
29
|
+
manager.createDatabase(dbName);
|
|
30
|
+
}
|
|
31
|
+
const input = await Bun.file(filePath).text();
|
|
32
|
+
const pool = manager.get(dbName);
|
|
33
|
+
const result = importData(pool, collection, input, { format, autoCreate: true });
|
|
34
|
+
if (result.collection) {
|
|
35
|
+
info(`Created collection "${collection}" with auto-detected schema.`);
|
|
36
|
+
}
|
|
37
|
+
success(`Imported ${result.imported} record(s).`);
|
|
38
|
+
if (result.failed > 0) {
|
|
39
|
+
warn(`${result.failed} row(s) failed validation.`);
|
|
40
|
+
if (result.errors) {
|
|
41
|
+
for (const err of result.errors) {
|
|
42
|
+
cliError(`Row ${err.row + 1}: ${err.message}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
manager.close();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export async function exportCommand(args) {
|
|
52
|
+
const collection = args[1];
|
|
53
|
+
if (!collection) {
|
|
54
|
+
cliError("Usage: boltstore db:export <collection> [--db <path>] [--format csv|json]");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const config = await loadConfig();
|
|
58
|
+
const dbName = args.includes("--db") ? args[args.indexOf("--db") + 1] : "default";
|
|
59
|
+
const formatArg = args.includes("--format") ? args[args.indexOf("--format") + 1] : "json";
|
|
60
|
+
const format = (formatArg === "csv" ? "csv" : "json");
|
|
61
|
+
const manager = new DatabaseManager({ dataDir: config.databasePath });
|
|
62
|
+
try {
|
|
63
|
+
if (!manager.exists(dbName)) {
|
|
64
|
+
cliError(`Database "${dbName}" not found.`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const pool = manager.get(dbName);
|
|
68
|
+
const result = exportData(pool, collection, { format });
|
|
69
|
+
if (format === "csv") {
|
|
70
|
+
process.stdout.write(result.data);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
out(result.data);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
manager.close();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=import-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-export.js","sourceRoot":"","sources":["../../src/cli/import-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAsC7E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D/D"}
|