axvault 1.11.2 → 1.12.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/README.md +31 -26
- package/dist/cli.js +9 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/credential.d.ts +4 -4
- package/dist/commands/credential.d.ts.map +1 -1
- package/dist/commands/credential.js +33 -15
- package/dist/commands/credential.js.map +1 -1
- package/dist/commands/init.d.ts +2 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -39
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/key-create.d.ts +2 -2
- package/dist/commands/key-create.d.ts.map +1 -1
- package/dist/commands/key-create.js +19 -8
- package/dist/commands/key-create.js.map +1 -1
- package/dist/commands/key-list.d.ts +2 -2
- package/dist/commands/key-list.d.ts.map +1 -1
- package/dist/commands/key-list.js +19 -8
- package/dist/commands/key-list.js.map +1 -1
- package/dist/commands/key-revoke.d.ts +2 -2
- package/dist/commands/key-revoke.d.ts.map +1 -1
- package/dist/commands/key-revoke.js +19 -11
- package/dist/commands/key-revoke.js.map +1 -1
- package/dist/commands/key-update.d.ts +2 -2
- package/dist/commands/key-update.d.ts.map +1 -1
- package/dist/commands/key-update.js +29 -33
- package/dist/commands/key-update.js.map +1 -1
- package/dist/commands/serve.d.ts +2 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +52 -51
- package/dist/commands/serve.js.map +1 -1
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -3
- package/dist/config.js.map +1 -1
- package/dist/db/create-pool.d.ts +5 -0
- package/dist/db/create-pool.d.ts.map +1 -0
- package/dist/db/create-pool.js +13 -0
- package/dist/db/create-pool.js.map +1 -0
- package/dist/db/migrations/001-initial.sql +40 -0
- package/dist/db/repositories/api-keys.d.ts +11 -37
- package/dist/db/repositories/api-keys.d.ts.map +1 -1
- package/dist/db/repositories/api-keys.js +23 -67
- package/dist/db/repositories/api-keys.js.map +1 -1
- package/dist/db/repositories/audit-log.d.ts +7 -7
- package/dist/db/repositories/audit-log.d.ts.map +1 -1
- package/dist/db/repositories/audit-log.js +22 -23
- package/dist/db/repositories/audit-log.js.map +1 -1
- package/dist/db/repositories/create-api-key.d.ts +30 -0
- package/dist/db/repositories/create-api-key.d.ts.map +1 -0
- package/dist/db/repositories/create-api-key.js +37 -0
- package/dist/db/repositories/create-api-key.js.map +1 -0
- package/dist/db/repositories/credentials-queries.d.ts +6 -6
- package/dist/db/repositories/credentials-queries.d.ts.map +1 -1
- package/dist/db/repositories/credentials-queries.js +8 -8
- package/dist/db/repositories/credentials-queries.js.map +1 -1
- package/dist/db/repositories/credentials.d.ts +9 -25
- package/dist/db/repositories/credentials.d.ts.map +1 -1
- package/dist/db/repositories/credentials.js +38 -34
- package/dist/db/repositories/credentials.js.map +1 -1
- package/dist/db/repositories/list-credentials-paginated.d.ts +2 -2
- package/dist/db/repositories/list-credentials-paginated.d.ts.map +1 -1
- package/dist/db/repositories/list-credentials-paginated.js +26 -26
- package/dist/db/repositories/list-credentials-paginated.js.map +1 -1
- package/dist/db/repositories/update-api-key-access.d.ts +12 -0
- package/dist/db/repositories/update-api-key-access.d.ts.map +1 -0
- package/dist/db/repositories/update-api-key-access.js +29 -0
- package/dist/db/repositories/update-api-key-access.js.map +1 -0
- package/dist/db/repositories/update-credential-if-unchanged.d.ts +20 -0
- package/dist/db/repositories/update-credential-if-unchanged.d.ts.map +1 -0
- package/dist/db/repositories/update-credential-if-unchanged.js +22 -0
- package/dist/db/repositories/update-credential-if-unchanged.js.map +1 -0
- package/dist/db/run-migrations.d.ts +4 -0
- package/dist/db/run-migrations.d.ts.map +1 -0
- package/dist/db/run-migrations.js +51 -0
- package/dist/db/run-migrations.js.map +1 -0
- package/dist/db/types.d.ts +5 -2
- package/dist/db/types.d.ts.map +1 -1
- package/dist/db/types.js +1 -1
- package/dist/format-error-message.d.ts +7 -0
- package/dist/format-error-message.d.ts.map +1 -0
- package/dist/format-error-message.js +19 -0
- package/dist/format-error-message.js.map +1 -0
- package/dist/handlers/create-key.d.ts +6 -3
- package/dist/handlers/create-key.d.ts.map +1 -1
- package/dist/handlers/create-key.js +8 -47
- package/dist/handlers/create-key.js.map +1 -1
- package/dist/handlers/delete-credential.d.ts +7 -7
- package/dist/handlers/delete-credential.d.ts.map +1 -1
- package/dist/handlers/delete-credential.js +9 -12
- package/dist/handlers/delete-credential.js.map +1 -1
- package/dist/handlers/delete-key.d.ts +7 -7
- package/dist/handlers/delete-key.d.ts.map +1 -1
- package/dist/handlers/delete-key.js +5 -7
- package/dist/handlers/delete-key.js.map +1 -1
- package/dist/handlers/get-credential.d.ts +7 -5
- package/dist/handlers/get-credential.d.ts.map +1 -1
- package/dist/handlers/get-credential.js +16 -20
- package/dist/handlers/get-credential.js.map +1 -1
- package/dist/handlers/get-key.d.ts +7 -7
- package/dist/handlers/get-key.d.ts.map +1 -1
- package/dist/handlers/get-key.js +4 -5
- package/dist/handlers/get-key.js.map +1 -1
- package/dist/handlers/list-credentials.d.ts +7 -6
- package/dist/handlers/list-credentials.d.ts.map +1 -1
- package/dist/handlers/list-credentials.js +13 -52
- package/dist/handlers/list-credentials.js.map +1 -1
- package/dist/handlers/list-keys.d.ts +3 -3
- package/dist/handlers/list-keys.d.ts.map +1 -1
- package/dist/handlers/list-keys.js +5 -3
- package/dist/handlers/list-keys.js.map +1 -1
- package/dist/handlers/put-credential.d.ts +8 -7
- package/dist/handlers/put-credential.d.ts.map +1 -1
- package/dist/handlers/put-credential.js +10 -27
- package/dist/handlers/put-credential.js.map +1 -1
- package/dist/handlers/refresh-credential-on-read.d.ts +5 -2
- package/dist/handlers/refresh-credential-on-read.d.ts.map +1 -1
- package/dist/handlers/refresh-credential-on-read.js +9 -9
- package/dist/handlers/refresh-credential-on-read.js.map +1 -1
- package/dist/handlers/update-key.d.ts +9 -7
- package/dist/handlers/update-key.d.ts.map +1 -1
- package/dist/handlers/update-key.js +10 -54
- package/dist/handlers/update-key.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/format-key-details.d.ts +17 -0
- package/dist/lib/format-key-details.d.ts.map +1 -0
- package/dist/lib/format-key-details.js +25 -0
- package/dist/lib/format-key-details.js.map +1 -0
- package/dist/middleware/auth.d.ts +10 -10
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +12 -14
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/require-grant-access.d.ts +3 -3
- package/dist/middleware/require-grant-access.d.ts.map +1 -1
- package/dist/middleware/require-grant-access.js +4 -7
- package/dist/middleware/require-grant-access.js.map +1 -1
- package/dist/schemas/api.d.ts +109 -0
- package/dist/schemas/api.d.ts.map +1 -0
- package/dist/schemas/api.js +119 -0
- package/dist/schemas/api.js.map +1 -0
- package/dist/server/routes.d.ts +10 -11
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +182 -52
- package/dist/server/routes.js.map +1 -1
- package/dist/server/server.d.ts +10 -6
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +128 -88
- package/dist/server/server.js.map +1 -1
- package/package.json +11 -6
- package/dist/db/client.d.ts +0 -14
- package/dist/db/client.d.ts.map +0 -1
- package/dist/db/client.js +0 -39
- package/dist/db/client.js.map +0 -1
- package/dist/db/migrations.d.ts +0 -14
- package/dist/db/migrations.d.ts.map +0 -1
- package/dist/db/migrations.js +0 -141
- package/dist/db/migrations.js.map +0 -1
- package/dist/middleware/validate-key-id.d.ts +0 -10
- package/dist/middleware/validate-key-id.d.ts.map +0 -1
- package/dist/middleware/validate-key-id.js +0 -20
- package/dist/middleware/validate-key-id.js.map +0 -1
- package/dist/middleware/validate-parameters.d.ts +0 -11
- package/dist/middleware/validate-parameters.d.ts.map +0 -1
- package/dist/middleware/validate-parameters.js +0 -20
- package/dist/middleware/validate-parameters.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@ Remote credential storage server for a╳kit.
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
7
|
- Node.js 22.19+
|
|
8
|
+
- PostgreSQL 14+ (local install or via Docker: `docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:17-alpine`)
|
|
8
9
|
- `pnpm` (for `pnpm dlx axvault`) or `npx` (for `npx -y axvault`)
|
|
9
10
|
- `jq` for scripting against `--json` output
|
|
10
11
|
|
|
@@ -13,14 +14,22 @@ If `axvault` is not installed globally, prefix commands with `npx -y axvault` (o
|
|
|
13
14
|
## Quick start
|
|
14
15
|
|
|
15
16
|
```bash
|
|
17
|
+
# Start PostgreSQL (if not already running)
|
|
18
|
+
docker run -d --name axvault-db -p 5432:5432 \
|
|
19
|
+
-e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=axvault \
|
|
20
|
+
postgres:17-alpine
|
|
21
|
+
|
|
22
|
+
# Generate encryption key
|
|
16
23
|
umask 077
|
|
17
24
|
printf 'AXVAULT_ENCRYPTION_KEY=' > .env
|
|
18
25
|
openssl rand -base64 32 >> .env
|
|
26
|
+
printf '\nAXVAULT_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/axvault\n' >> .env
|
|
19
27
|
chmod 600 .env
|
|
20
28
|
set -a
|
|
21
29
|
. ./.env
|
|
22
30
|
set +a
|
|
23
|
-
|
|
31
|
+
|
|
32
|
+
# Initialize database and start server
|
|
24
33
|
npx -y axvault init
|
|
25
34
|
npx -y axvault serve
|
|
26
35
|
```
|
|
@@ -86,14 +95,15 @@ or list/delete stored credentials. List commands output TSV by default; add
|
|
|
86
95
|
|
|
87
96
|
### Environment Variables
|
|
88
97
|
|
|
89
|
-
| Variable | Description | Default
|
|
90
|
-
| ---------------------------- | -------------------------------------------------------------------- |
|
|
91
|
-
| `AXVAULT_PORT` | Port to listen on | `3847`
|
|
92
|
-
| `AXVAULT_HOST` | Host to bind to | `127.0.0.1`
|
|
93
|
-
| `
|
|
94
|
-
| `AXVAULT_ENCRYPTION_KEY` | Encryption key (min 32 chars, required) | —
|
|
95
|
-
| `AXVAULT_REFRESH_THRESHOLD` | Refresh credentials expiring within this many seconds (0 to disable) | `3600`
|
|
96
|
-
| `AXVAULT_REFRESH_TIMEOUT_MS` | Timeout for refresh operations in milliseconds | `30000`
|
|
98
|
+
| Variable | Description | Default |
|
|
99
|
+
| ---------------------------- | -------------------------------------------------------------------- | ------------------------------------- |
|
|
100
|
+
| `AXVAULT_PORT` | Port to listen on | `3847` |
|
|
101
|
+
| `AXVAULT_HOST` | Host to bind to | `127.0.0.1` |
|
|
102
|
+
| `AXVAULT_DATABASE_URL` | PostgreSQL connection URL | `postgresql://localhost:5432/axvault` |
|
|
103
|
+
| `AXVAULT_ENCRYPTION_KEY` | Encryption key (min 32 chars, required) | — |
|
|
104
|
+
| `AXVAULT_REFRESH_THRESHOLD` | Refresh credentials expiring within this many seconds (0 to disable) | `3600` |
|
|
105
|
+
| `AXVAULT_REFRESH_TIMEOUT_MS` | Timeout for refresh operations in milliseconds | `30000` |
|
|
106
|
+
| `AXVAULT_LOG_LEVEL` | Log level (trace, debug, info, warn, error, fatal, silent) | `info` |
|
|
97
107
|
|
|
98
108
|
### CLI Flags
|
|
99
109
|
|
|
@@ -103,9 +113,10 @@ The `serve` command accepts flags that override environment variables:
|
|
|
103
113
|
npx -y axvault serve \
|
|
104
114
|
--port 8080 \
|
|
105
115
|
--host 0.0.0.0 \
|
|
106
|
-
--
|
|
116
|
+
--database-url postgresql://localhost:5432/axvault \
|
|
107
117
|
--refresh-threshold 7200 \
|
|
108
|
-
--refresh-timeout 60000
|
|
118
|
+
--refresh-timeout 60000 \
|
|
119
|
+
--log-level debug
|
|
109
120
|
```
|
|
110
121
|
|
|
111
122
|
Setting `--refresh-threshold 0` disables automatic credential refresh.
|
|
@@ -201,13 +212,13 @@ The image uses an external UID pattern—no user is baked into the image. **Alwa
|
|
|
201
212
|
> **Security note:** Without `-u`/`--user`, the container runs as root. For Kubernetes, set `runAsUser: 1000` and `runAsNonRoot: true` in your SecurityContext.
|
|
202
213
|
|
|
203
214
|
```bash
|
|
204
|
-
# Docker
|
|
215
|
+
# Docker (requires a PostgreSQL instance accessible from the container)
|
|
205
216
|
docker run -d \
|
|
206
217
|
--name axvault \
|
|
207
218
|
-p 3847:3847 \
|
|
208
219
|
-u 1000:1000 \
|
|
209
220
|
-e AXVAULT_ENCRYPTION_KEY="your-secret-key-minimum-32-chars!" \
|
|
210
|
-
-
|
|
221
|
+
-e AXVAULT_DATABASE_URL="postgresql://user:pass@db-host:5432/axvault" \
|
|
211
222
|
registry.j4k.dev/axvault:latest
|
|
212
223
|
|
|
213
224
|
# Podman
|
|
@@ -216,29 +227,23 @@ podman run -d \
|
|
|
216
227
|
-p 3847:3847 \
|
|
217
228
|
--user 1000:1000 \
|
|
218
229
|
-e AXVAULT_ENCRYPTION_KEY="your-secret-key-minimum-32-chars!" \
|
|
219
|
-
-
|
|
230
|
+
-e AXVAULT_DATABASE_URL="postgresql://user:pass@db-host:5432/axvault" \
|
|
220
231
|
registry.j4k.dev/axvault:latest
|
|
221
232
|
```
|
|
222
233
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
The data volume must be owned by the UID/GID the container runs as:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
# Create directory and set ownership before first run
|
|
229
|
-
sudo mkdir -p /srv/axvault/data
|
|
230
|
-
sudo chown 1000:1000 /srv/axvault/data
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
For rootless Podman, use your user's UID or let Podman handle mapping automatically.
|
|
234
|
+
**Note:** `AXVAULT_DATABASE_URL` must point to an accessible PostgreSQL instance. The Containerfile default (`postgresql://localhost:5432/axvault`) refers to the container itself, so standalone `docker run` users must provide this variable. For a batteries-included setup, use `docker-compose.yml` which includes a PostgreSQL service.
|
|
234
235
|
|
|
235
236
|
#### Quadlet (systemd)
|
|
236
237
|
|
|
238
|
+
This example references `axvault-db.service`, which is a PostgreSQL container you must provide separately as a companion Quadlet (`axvault-db.container`). Alternatively, point `AXVAULT_DATABASE_URL` at an existing PostgreSQL instance and remove the `Requires`/`After` lines.
|
|
239
|
+
|
|
237
240
|
Create `/etc/containers/systemd/axvault.container`:
|
|
238
241
|
|
|
239
242
|
```ini
|
|
240
243
|
[Unit]
|
|
241
244
|
Description=axvault credential server
|
|
245
|
+
Requires=axvault-db.service
|
|
246
|
+
After=axvault-db.service
|
|
242
247
|
|
|
243
248
|
[Container]
|
|
244
249
|
Image=registry.j4k.dev/axvault:latest
|
|
@@ -246,7 +251,7 @@ PublishPort=3847:3847
|
|
|
246
251
|
User=1000
|
|
247
252
|
Group=1000
|
|
248
253
|
Environment=AXVAULT_ENCRYPTION_KEY=your-secret-key-minimum-32-chars!
|
|
249
|
-
|
|
254
|
+
Environment=AXVAULT_DATABASE_URL=postgresql://axvault:axvault@axvault-db:5432/axvault
|
|
250
255
|
|
|
251
256
|
[Service]
|
|
252
257
|
Restart=always
|
package/dist/cli.js
CHANGED
|
@@ -57,7 +57,7 @@ Examples:
|
|
|
57
57
|
program
|
|
58
58
|
.command("init")
|
|
59
59
|
.description("Initialize database and configuration")
|
|
60
|
-
.option("--
|
|
60
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
61
61
|
.option("-v, --verbose", "Enable verbose output")
|
|
62
62
|
.action(handleInit);
|
|
63
63
|
program
|
|
@@ -65,9 +65,10 @@ program
|
|
|
65
65
|
.description("Start the vault server")
|
|
66
66
|
.option("-p, --port <port>", "Port to listen on")
|
|
67
67
|
.option("-H, --host <host>", "Host to bind to")
|
|
68
|
-
.option("--
|
|
68
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
69
69
|
.option("--refresh-threshold <seconds>", "Refresh credentials expiring within this many seconds (0 to disable)")
|
|
70
70
|
.option("--refresh-timeout <ms>", "Timeout for refresh operations in milliseconds")
|
|
71
|
+
.option("--log-level <level>", "Log level (trace, debug, info, warn, error, fatal, silent)")
|
|
71
72
|
.option("-v, --verbose", "Enable verbose output")
|
|
72
73
|
.action(handleServe);
|
|
73
74
|
// API key management commands
|
|
@@ -83,13 +84,13 @@ keyCommand
|
|
|
83
84
|
.option("-w, --write <access>", "Comma-separated write access list (e.g., 'claude.ci' or '*')")
|
|
84
85
|
.option("-g, --grant <access>", "Comma-separated grant access list (can delegate these to other keys)")
|
|
85
86
|
.option("--json", "Output as JSON")
|
|
86
|
-
.option("--
|
|
87
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
87
88
|
.action(handleKeyCreate);
|
|
88
89
|
keyCommand
|
|
89
90
|
.command("list")
|
|
90
91
|
.description("List all API keys")
|
|
91
92
|
.option("--json", "Output as JSON")
|
|
92
|
-
.option("--
|
|
93
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
93
94
|
.action(handleKeyList);
|
|
94
95
|
keyCommand
|
|
95
96
|
.command("revoke")
|
|
@@ -98,7 +99,7 @@ keyCommand
|
|
|
98
99
|
.option("-f, --force", "Confirm destructive action")
|
|
99
100
|
.option("-y, --yes", "Alias for --force")
|
|
100
101
|
.option("-v, --verbose", "Enable verbose output")
|
|
101
|
-
.option("--
|
|
102
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
102
103
|
.action(handleKeyRevoke);
|
|
103
104
|
keyCommand
|
|
104
105
|
.command("update")
|
|
@@ -112,7 +113,7 @@ keyCommand
|
|
|
112
113
|
.option("--remove-grant <access>", "Remove grant access entries")
|
|
113
114
|
.option("--json", "Output as JSON")
|
|
114
115
|
.option("-v, --verbose", "Enable verbose output")
|
|
115
|
-
.option("--
|
|
116
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
116
117
|
.action(handleKeyUpdate);
|
|
117
118
|
// Credential management commands
|
|
118
119
|
const credentialCommand = program
|
|
@@ -123,7 +124,7 @@ credentialCommand
|
|
|
123
124
|
.command("list")
|
|
124
125
|
.description("List all stored credentials")
|
|
125
126
|
.option("--json", "Output as JSON")
|
|
126
|
-
.option("--
|
|
127
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
127
128
|
.action(handleCredentialList);
|
|
128
129
|
credentialCommand
|
|
129
130
|
.command("delete")
|
|
@@ -132,7 +133,7 @@ credentialCommand
|
|
|
132
133
|
.option("-f, --force", "Confirm destructive action")
|
|
133
134
|
.option("-y, --yes", "Alias for --force")
|
|
134
135
|
.option("-v, --verbose", "Enable verbose output")
|
|
135
|
-
.option("--
|
|
136
|
+
.option("--database-url <url>", "PostgreSQL connection URL")
|
|
136
137
|
.action(handleCredentialDelete);
|
|
137
138
|
await program.parseAsync(process.argv);
|
|
138
139
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KACtB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;KACpC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;KAC7C,kBAAkB,CAAC,yCAAyC,CAAC;KAC7D,wBAAwB,EAAE;KAC1B,WAAW,CAAC,KAAK,CAAC;KAClB,WAAW,CACV,OAAO,EACP,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAoCkC,CAC7C,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* Credential management command handlers.
|
|
3
3
|
*/
|
|
4
4
|
interface CredentialListOptions {
|
|
5
|
-
|
|
5
|
+
databaseUrl?: string;
|
|
6
6
|
json?: boolean;
|
|
7
7
|
}
|
|
8
8
|
interface CredentialDeleteOptions {
|
|
9
|
-
|
|
9
|
+
databaseUrl?: string;
|
|
10
10
|
force?: boolean;
|
|
11
11
|
yes?: boolean;
|
|
12
12
|
verbose?: boolean;
|
|
13
13
|
}
|
|
14
|
-
export declare function handleCredentialList(options: CredentialListOptions): void
|
|
15
|
-
export declare function handleCredentialDelete(credentialName: string, options: CredentialDeleteOptions): void
|
|
14
|
+
export declare function handleCredentialList(options: CredentialListOptions): Promise<void>;
|
|
15
|
+
export declare function handleCredentialDelete(credentialName: string, options: CredentialDeleteOptions): Promise<void>;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=credential.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwDD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Credential management command handlers.
|
|
3
3
|
*/
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { getServerConfig } from "../config.js";
|
|
5
|
-
import {
|
|
6
|
-
import { runMigrations } from "../db/migrations.js";
|
|
6
|
+
import { closePool, createPool } from "../db/create-pool.js";
|
|
7
|
+
import { runMigrations } from "../db/run-migrations.js";
|
|
7
8
|
import { deleteCredential, listCredentials, } from "../db/repositories/credentials.js";
|
|
9
|
+
import { formatErrorMessage } from "../format-error-message.js";
|
|
8
10
|
import { containsControlChars, formatRelativeTime, getErrorMessage, sanitizeForTsv, } from "../lib/format.js";
|
|
9
11
|
import { CREDENTIAL_NAME_FORMAT_DESCRIPTION, isValidCredentialName, } from "../lib/credential-name.js";
|
|
10
12
|
/** Print credentials as TSV table */
|
|
@@ -27,7 +29,6 @@ function printCredentialTable(credentials) {
|
|
|
27
29
|
* (e.g., "\nwork" would otherwise become "work" after trim).
|
|
28
30
|
*/
|
|
29
31
|
function parseCredentialName(name) {
|
|
30
|
-
// Reject inputs containing control characters BEFORE trimming
|
|
31
32
|
if (containsControlChars(name)) {
|
|
32
33
|
return {
|
|
33
34
|
ok: false,
|
|
@@ -49,12 +50,21 @@ function parseCredentialName(name) {
|
|
|
49
50
|
}
|
|
50
51
|
return { ok: true, name: trimmed };
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
|
|
54
|
+
export async function handleCredentialList(options) {
|
|
55
|
+
let config;
|
|
53
56
|
try {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
config = getServerConfig(options);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`Error: ${formatErrorMessage(error)}`);
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const pool = createPool(config.databaseUrl);
|
|
65
|
+
try {
|
|
66
|
+
await runMigrations(pool, migrationsDirectory);
|
|
67
|
+
const credentials = await listCredentials(pool);
|
|
58
68
|
if (options.json) {
|
|
59
69
|
const output = credentials.map((cred) => ({
|
|
60
70
|
name: cred.name,
|
|
@@ -82,10 +92,10 @@ export function handleCredentialList(options) {
|
|
|
82
92
|
process.exitCode = 1;
|
|
83
93
|
}
|
|
84
94
|
finally {
|
|
85
|
-
|
|
95
|
+
await closePool(pool);
|
|
86
96
|
}
|
|
87
97
|
}
|
|
88
|
-
export function handleCredentialDelete(credentialName, options) {
|
|
98
|
+
export async function handleCredentialDelete(credentialName, options) {
|
|
89
99
|
// Validate credential name first (before config parsing)
|
|
90
100
|
const parsed = parseCredentialName(credentialName);
|
|
91
101
|
if (!parsed.ok) {
|
|
@@ -100,11 +110,19 @@ export function handleCredentialDelete(credentialName, options) {
|
|
|
100
110
|
return;
|
|
101
111
|
}
|
|
102
112
|
const { name } = parsed;
|
|
113
|
+
let config;
|
|
114
|
+
try {
|
|
115
|
+
config = getServerConfig(options);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
console.error(`Error: ${formatErrorMessage(error)}`);
|
|
119
|
+
process.exitCode = 1;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const pool = createPool(config.databaseUrl);
|
|
103
123
|
try {
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
runMigrations(database);
|
|
107
|
-
const deleted = deleteCredential(database, name);
|
|
124
|
+
await runMigrations(pool, migrationsDirectory);
|
|
125
|
+
const deleted = await deleteCredential(pool, name);
|
|
108
126
|
if (deleted) {
|
|
109
127
|
if (options.verbose) {
|
|
110
128
|
console.error(`Deleted credential: ${sanitizeForTsv(name)}`);
|
|
@@ -120,7 +138,7 @@ export function handleCredentialDelete(credentialName, options) {
|
|
|
120
138
|
process.exitCode = 1;
|
|
121
139
|
}
|
|
122
140
|
finally {
|
|
123
|
-
|
|
141
|
+
await closePool(pool);
|
|
124
142
|
}
|
|
125
143
|
}
|
|
126
144
|
//# sourceMappingURL=credential.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Initialize database command handler.
|
|
3
3
|
*/
|
|
4
4
|
interface InitOptions {
|
|
5
|
-
|
|
5
|
+
databaseUrl?: string;
|
|
6
6
|
verbose?: boolean;
|
|
7
7
|
}
|
|
8
|
-
export declare function handleInit(options: InitOptions): void
|
|
8
|
+
export declare function handleInit(options: InitOptions): Promise<void>;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BpE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,56 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Initialize database command handler.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
6
5
|
import { getServerConfig } from "../config.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { closePool, createPool } from "../db/create-pool.js";
|
|
7
|
+
import { runMigrations } from "../db/run-migrations.js";
|
|
8
|
+
import { formatErrorMessage } from "../format-error-message.js";
|
|
9
|
+
const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
|
|
10
|
+
export async function handleInit(options) {
|
|
11
11
|
const verbose = options.verbose === true;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
try {
|
|
16
|
-
mkdirSync(dataDirectory, { recursive: true });
|
|
17
|
-
if (verbose)
|
|
18
|
-
console.error(`Created data directory: ${dataDirectory}`);
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
22
|
-
console.error(`Failed to create data directory '${dataDirectory}': ${message}`);
|
|
23
|
-
process.exitCode = 1;
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
12
|
+
let config;
|
|
13
|
+
try {
|
|
14
|
+
config = getServerConfig({ databaseUrl: options.databaseUrl });
|
|
26
15
|
}
|
|
27
|
-
|
|
16
|
+
catch (error) {
|
|
17
|
+
const message = formatErrorMessage(error);
|
|
18
|
+
console.error(`Error: ${message}`);
|
|
19
|
+
process.exitCode = 1;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const pool = createPool(config.databaseUrl);
|
|
28
23
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
console.error(`Database initialized at: ${config.databasePath}`);
|
|
37
|
-
console.error(`Schema version: ${versionAfter}`);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (versionBefore === versionAfter) {
|
|
41
|
-
console.error(`Database already at version ${versionAfter} (current: ${CURRENT_VERSION})`);
|
|
42
|
-
return;
|
|
24
|
+
await runMigrations(pool, migrationsDirectory);
|
|
25
|
+
if (verbose) {
|
|
26
|
+
const sanitizedUrl = new URL(config.databaseUrl);
|
|
27
|
+
if (sanitizedUrl.password) {
|
|
28
|
+
sanitizedUrl.password = "***";
|
|
29
|
+
}
|
|
30
|
+
console.error(`Database initialized at: ${sanitizedUrl.toString()}`);
|
|
43
31
|
}
|
|
44
|
-
console.error(`Database migrated from v${versionBefore} to v${versionAfter}`);
|
|
45
32
|
}
|
|
46
33
|
catch (error) {
|
|
47
|
-
const message =
|
|
34
|
+
const message = formatErrorMessage(error);
|
|
48
35
|
console.error(`Failed to initialize database: ${message}`);
|
|
49
|
-
console.error("If this is a schema version mismatch, delete the database file and re-run `axvault init`.");
|
|
50
36
|
process.exitCode = 1;
|
|
51
37
|
}
|
|
52
38
|
finally {
|
|
53
|
-
|
|
39
|
+
await closePool(pool);
|
|
54
40
|
}
|
|
55
41
|
}
|
|
56
42
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOhE,MAAM,mBAAmB,GAAG,aAAa,CACvC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAEzC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAE/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,4BAA4B,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* API key create command handler.
|
|
3
3
|
*/
|
|
4
4
|
interface KeyCreateOptions {
|
|
5
|
-
|
|
5
|
+
databaseUrl?: string;
|
|
6
6
|
name: string;
|
|
7
7
|
read?: string;
|
|
8
8
|
write?: string;
|
|
9
9
|
grant?: string;
|
|
10
10
|
json?: boolean;
|
|
11
11
|
}
|
|
12
|
-
export declare function handleKeyCreate(options: KeyCreateOptions): void
|
|
12
|
+
export declare function handleKeyCreate(options: KeyCreateOptions): Promise<void>;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=key-create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-create.d.ts","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"key-create.d.ts","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAMD,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoHf"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API key create command handler.
|
|
3
3
|
*/
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { getServerConfig } from "../config.js";
|
|
5
|
-
import {
|
|
6
|
-
import { runMigrations } from "../db/migrations.js";
|
|
6
|
+
import { closePool, createPool } from "../db/create-pool.js";
|
|
7
|
+
import { runMigrations } from "../db/run-migrations.js";
|
|
7
8
|
import { createApiKey } from "../db/repositories/api-keys.js";
|
|
9
|
+
import { formatErrorMessage } from "../format-error-message.js";
|
|
8
10
|
import { containsControlChars, formatAccessList, getAccessListErrorMessage, getErrorMessage, normalizeAccessList, parseAccessList, sanitizeForTsv, } from "../lib/format.js";
|
|
9
|
-
|
|
11
|
+
const migrationsDirectory = fileURLToPath(new URL("../db/migrations", import.meta.url));
|
|
12
|
+
export async function handleKeyCreate(options) {
|
|
10
13
|
// Validate key name (reject control characters)
|
|
11
14
|
if (containsControlChars(options.name)) {
|
|
12
15
|
console.error("Error: Key name contains control characters.");
|
|
@@ -54,11 +57,19 @@ export function handleKeyCreate(options) {
|
|
|
54
57
|
process.exitCode = 2;
|
|
55
58
|
return;
|
|
56
59
|
}
|
|
60
|
+
let config;
|
|
57
61
|
try {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
config = getServerConfig(options);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error(`Error: ${formatErrorMessage(error)}`);
|
|
66
|
+
process.exitCode = 1;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const pool = createPool(config.databaseUrl);
|
|
70
|
+
try {
|
|
71
|
+
await runMigrations(pool, migrationsDirectory);
|
|
72
|
+
const apiKey = await createApiKey(pool, {
|
|
62
73
|
name: options.name,
|
|
63
74
|
readAccess,
|
|
64
75
|
writeAccess,
|
|
@@ -94,7 +105,7 @@ export function handleKeyCreate(options) {
|
|
|
94
105
|
process.exitCode = 1;
|
|
95
106
|
}
|
|
96
107
|
finally {
|
|
97
|
-
|
|
108
|
+
await closePool(pool);
|
|
98
109
|
}
|
|
99
110
|
}
|
|
100
111
|
//# sourceMappingURL=key-create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-create.js","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"key-create.js","sourceRoot":"","sources":["../../src/commands/key-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* API key list command handler.
|
|
3
3
|
*/
|
|
4
4
|
interface KeyListOptions {
|
|
5
|
-
|
|
5
|
+
databaseUrl?: string;
|
|
6
6
|
json?: boolean;
|
|
7
7
|
}
|
|
8
|
-
export declare function handleKeyList(options: KeyListOptions): void
|
|
8
|
+
export declare function handleKeyList(options: KeyListOptions): Promise<void>;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=key-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-list.d.ts","sourceRoot":"","sources":["../../src/commands/key-list.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"key-list.d.ts","sourceRoot":"","sources":["../../src/commands/key-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAMD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C1E"}
|