@sirrlock/node 0.1.0 → 1.0.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/LICENSE +1 -1
- package/README.md +80 -7
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +13 -19
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +269 -41
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +207 -42
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# @sirrlock/node
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@sirrlock/node)
|
|
3
|
+
[](https://www.npmjs.com/package/@sirrlock/node)
|
|
5
4
|
[](https://www.npmjs.com/package/@sirrlock/node)
|
|
5
|
+
[](https://github.com/sirrlock/node/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
|
+
[](https://github.com/sirrlock/node)
|
|
9
|
+
[](https://github.com/sirrlock/node)
|
|
8
10
|
[](LICENSE)
|
|
9
11
|
|
|
10
12
|
**Node.js client and npx CLI for [Sirr](https://github.com/sirrlock/sirr) — ephemeral secret management.**
|
|
@@ -33,7 +35,7 @@ sirr push DB_URL="postgres://..." --reads 1 --ttl 1h
|
|
|
33
35
|
sirr get DB_URL
|
|
34
36
|
|
|
35
37
|
# Push entire .env — expires in 24h
|
|
36
|
-
sirr push .env --ttl 24h
|
|
38
|
+
sirr push .env --ttl 24h
|
|
37
39
|
|
|
38
40
|
# Manage
|
|
39
41
|
sirr list
|
|
@@ -44,7 +46,7 @@ sirr health
|
|
|
44
46
|
|
|
45
47
|
Config via env vars:
|
|
46
48
|
```bash
|
|
47
|
-
export SIRR_SERVER=http://localhost:
|
|
49
|
+
export SIRR_SERVER=http://localhost:39999
|
|
48
50
|
export SIRR_TOKEN=your-master-key
|
|
49
51
|
```
|
|
50
52
|
|
|
@@ -54,14 +56,20 @@ export SIRR_TOKEN=your-master-key
|
|
|
54
56
|
import { SirrClient, SirrError } from '@sirrlock/node'
|
|
55
57
|
|
|
56
58
|
const sirr = new SirrClient({
|
|
57
|
-
server: process.env.SIRR_SERVER ?? 'http://localhost:
|
|
59
|
+
server: process.env.SIRR_SERVER ?? 'http://localhost:39999',
|
|
58
60
|
token: process.env.SIRR_TOKEN!,
|
|
59
61
|
})
|
|
60
62
|
|
|
61
|
-
// Push a one-time secret
|
|
63
|
+
// Push a one-time secret (burned after first read)
|
|
62
64
|
await sirr.push('API_KEY', 'sk-...', { ttl: 3600, reads: 1 })
|
|
63
65
|
|
|
64
|
-
//
|
|
66
|
+
// Push a persistent secret (survives reads; patchable)
|
|
67
|
+
await sirr.push('DB_URL', 'postgres://...', { ttl: 86400, burnOnRead: false })
|
|
68
|
+
|
|
69
|
+
// Update TTL or value in place (only works if burnOnRead: false)
|
|
70
|
+
const meta = await sirr.patch('DB_URL', { ttl: 172800 })
|
|
71
|
+
|
|
72
|
+
// Retrieve — null if burned, expired, or sealed
|
|
65
73
|
const value = await sirr.get('API_KEY')
|
|
66
74
|
|
|
67
75
|
// Pull all secrets into a plain object
|
|
@@ -73,6 +81,10 @@ await sirr.withSecrets(async () => {
|
|
|
73
81
|
await runAgentTask()
|
|
74
82
|
})
|
|
75
83
|
|
|
84
|
+
// Inspect metadata without consuming a read (HEAD request)
|
|
85
|
+
const status = await sirr.check('API_KEY')
|
|
86
|
+
// { status: 'active', readCount: 0, readsRemaining: 1, burnOnRead: true, ... }
|
|
87
|
+
|
|
76
88
|
// Delete immediately
|
|
77
89
|
await sirr.delete('API_KEY')
|
|
78
90
|
|
|
@@ -80,6 +92,67 @@ await sirr.delete('API_KEY')
|
|
|
80
92
|
const list = await sirr.list()
|
|
81
93
|
```
|
|
82
94
|
|
|
95
|
+
### Multi-Tenant / Org Mode
|
|
96
|
+
|
|
97
|
+
When working with a multi-tenant Sirr server, pass an `org` slug to scope all
|
|
98
|
+
secret, audit, webhook, and prune operations under that org:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const sirr = new SirrClient({
|
|
102
|
+
server: 'http://localhost:39999',
|
|
103
|
+
token: process.env.SIRR_TOKEN!,
|
|
104
|
+
org: 'acme', // all paths become /orgs/acme/...
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
// These now hit /orgs/acme/secrets, /orgs/acme/audit, etc.
|
|
108
|
+
await sirr.push('DB_URL', 'postgres://...', { reads: 1 })
|
|
109
|
+
const secrets = await sirr.list()
|
|
110
|
+
const events = await sirr.audit()
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Without `org`, the client behaves exactly as before (`/secrets`, `/audit`, etc.).
|
|
114
|
+
|
|
115
|
+
#### /me endpoints
|
|
116
|
+
|
|
117
|
+
Manage the current principal's profile and API keys:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
const profile = await sirr.me() // GET /me
|
|
121
|
+
await sirr.updateMe({ metadata: { team: 'platform' } }) // PATCH /me
|
|
122
|
+
const key = await sirr.createKey({ name: 'ci' }) // POST /me/keys
|
|
123
|
+
const revoked = await sirr.deleteKey(key.id) // DELETE /me/keys/{id} → boolean
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Admin endpoints (master key only)
|
|
127
|
+
|
|
128
|
+
Manage orgs, principals, and roles. Available both as flat methods and through
|
|
129
|
+
namespaced sub-clients (`sirr.orgs.*`, `sirr.principals.*`, `sirr.webhooks.*`):
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// Orgs
|
|
133
|
+
const org = await sirr.orgs.create({ name: 'acme' }) // or sirr.createOrg(...)
|
|
134
|
+
const orgs = await sirr.orgs.list() // returns Org[]
|
|
135
|
+
await sirr.orgs.delete(org.id)
|
|
136
|
+
|
|
137
|
+
// Principals
|
|
138
|
+
const p = await sirr.principals.create(org.id, { name: 'alice', role: 'writer' })
|
|
139
|
+
const principals = await sirr.principals.list(org.id) // returns Principal[]
|
|
140
|
+
await sirr.principals.delete(org.id, p.id)
|
|
141
|
+
|
|
142
|
+
// Roles — permissions is a letter string, not an array
|
|
143
|
+
await sirr.createRole(org.id, { name: 'reader', permissions: 'rRlL' })
|
|
144
|
+
await sirr.listRoles(org.id)
|
|
145
|
+
await sirr.deleteRole(org.id, 'reader')
|
|
146
|
+
|
|
147
|
+
// Webhooks
|
|
148
|
+
const wh = await sirr.webhooks.create('https://example.com/hook')
|
|
149
|
+
const webhooks = await sirr.webhooks.list()
|
|
150
|
+
await sirr.webhooks.delete(wh.id)
|
|
151
|
+
|
|
152
|
+
// Audit log
|
|
153
|
+
const events = await sirr.audit({ action: 'secret.read', limit: 50 })
|
|
154
|
+
```
|
|
155
|
+
|
|
83
156
|
### Error Handling
|
|
84
157
|
|
|
85
158
|
```typescript
|
package/dist/cli.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Sirr CLI — thin Node.js wrapper for use via `npx sirr` or `npm i -g sirr`.
|
|
4
4
|
*
|
|
5
|
-
* Reads SIRR_SERVER (default: http://localhost:
|
|
5
|
+
* Reads SIRR_SERVER (default: http://localhost:39999) and SIRR_TOKEN.
|
|
6
6
|
*/
|
|
7
7
|
export declare function parseArgs(argv: string[]): Record<string, string | number | boolean>;
|
|
8
8
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Sirr CLI — thin Node.js wrapper for use via `npx sirr` or `npm i -g sirr`.
|
|
5
5
|
*
|
|
6
|
-
* Reads SIRR_SERVER (default: http://localhost:
|
|
6
|
+
* Reads SIRR_SERVER (default: http://localhost:39999) and SIRR_TOKEN.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.parseArgs = parseArgs;
|
|
10
10
|
const index_1 = require("./index");
|
|
11
|
-
const server = process.env.SIRR_SERVER ?? "http://localhost:
|
|
11
|
+
const server = process.env.SIRR_SERVER ?? "http://localhost:39999";
|
|
12
12
|
const token = process.env.SIRR_TOKEN ?? "";
|
|
13
13
|
function usage() {
|
|
14
14
|
console.error(`
|
|
@@ -30,7 +30,7 @@ Commands:
|
|
|
30
30
|
keys remove <id>
|
|
31
31
|
|
|
32
32
|
Environment:
|
|
33
|
-
SIRR_SERVER Server URL (default: http://localhost:
|
|
33
|
+
SIRR_SERVER Server URL (default: http://localhost:39999)
|
|
34
34
|
SIRR_TOKEN Bearer token
|
|
35
35
|
`);
|
|
36
36
|
process.exit(1);
|
|
@@ -193,25 +193,19 @@ async function main() {
|
|
|
193
193
|
usage();
|
|
194
194
|
switch (sub) {
|
|
195
195
|
case "list": {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
console.log("(no API keys)");
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
for (const k of keys) {
|
|
202
|
-
console.log(` ${k.id} ${k.label} [${k.permissions.join(",")}] prefix=${k.prefix ?? "*"}`);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
196
|
+
// No list-keys endpoint on the server API.
|
|
197
|
+
console.log("Key listing is not supported by the server API.");
|
|
205
198
|
break;
|
|
206
199
|
}
|
|
207
200
|
case "create": {
|
|
208
|
-
const
|
|
209
|
-
if (!
|
|
201
|
+
const name = args._1;
|
|
202
|
+
if (!name)
|
|
210
203
|
usage();
|
|
211
|
-
const
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
204
|
+
const validFor = args["valid-for"];
|
|
205
|
+
const result = await client.createKey({
|
|
206
|
+
name,
|
|
207
|
+
valid_for_seconds: validFor ? Number(validFor) : undefined,
|
|
208
|
+
});
|
|
215
209
|
console.log("API key created");
|
|
216
210
|
console.log(` id: ${result.id}`);
|
|
217
211
|
console.log(` key: ${result.key}`);
|
|
@@ -222,7 +216,7 @@ async function main() {
|
|
|
222
216
|
const id = args._1;
|
|
223
217
|
if (!id)
|
|
224
218
|
usage();
|
|
225
|
-
await client.
|
|
219
|
+
await client.deleteKey(id);
|
|
226
220
|
console.log(`API key ${id} removed`);
|
|
227
221
|
break;
|
|
228
222
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAiCH,8BAqBC;AApDD,mCAAqC;AAErC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,27 +1,77 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @sirrlock/node — Sirr Node.js client
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Zero-dependency TypeScript client for the Sirr HTTP API.
|
|
5
|
+
* Works in Node 18+, Deno, Bun, and edge runtimes.
|
|
6
6
|
*/
|
|
7
7
|
export interface SirrClientOptions {
|
|
8
|
-
/** Sirr server base URL. Default: http://localhost:
|
|
8
|
+
/** Sirr server base URL. Default: http://localhost:39999 */
|
|
9
9
|
server?: string;
|
|
10
|
-
/** Bearer token
|
|
10
|
+
/** Bearer token — master key or principal API key. */
|
|
11
11
|
token: string;
|
|
12
|
+
/**
|
|
13
|
+
* Org ID for multi-tenant mode. When set, all secret, audit, webhook, and
|
|
14
|
+
* prune operations are scoped under `/orgs/{org}/`.
|
|
15
|
+
*/
|
|
16
|
+
org?: string;
|
|
12
17
|
}
|
|
13
18
|
export interface PushOptions {
|
|
14
|
-
/**
|
|
19
|
+
/** Time-to-live in seconds. Omit for no expiration. */
|
|
20
|
+
ttl?: number;
|
|
21
|
+
/** Maximum reads before the secret is burned or sealed. */
|
|
22
|
+
reads?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to permanently delete the secret after reaching `reads`.
|
|
25
|
+
* `true` (default) = burn; `false` = seal (still patchable via `patch()`).
|
|
26
|
+
*/
|
|
27
|
+
burnOnRead?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Webhook URL to call when this secret is read or burned.
|
|
30
|
+
* Must be HTTPS and within the server's allowed origins.
|
|
31
|
+
*/
|
|
32
|
+
webhookUrl?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Restrict reads to specific principal key names (org-scoped secrets only).
|
|
35
|
+
* Omit to allow any key with read permission.
|
|
36
|
+
*/
|
|
37
|
+
allowedKeys?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface PatchOptions {
|
|
40
|
+
/** Replace the stored value. */
|
|
41
|
+
value?: string;
|
|
42
|
+
/** New TTL in seconds from now (resets the expiry clock). */
|
|
15
43
|
ttl?: number;
|
|
16
|
-
/**
|
|
44
|
+
/** New maximum read count. */
|
|
17
45
|
reads?: number;
|
|
18
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Metadata returned by `check()` (HEAD request).
|
|
49
|
+
* Does not consume a read counter.
|
|
50
|
+
*/
|
|
51
|
+
export interface SecretStatus {
|
|
52
|
+
/** `"active"` = readable; `"sealed"` = reads exhausted but not deleted. */
|
|
53
|
+
status: "active" | "sealed";
|
|
54
|
+
readCount: number;
|
|
55
|
+
readsRemaining: number | "unlimited";
|
|
56
|
+
/** `true` = burns on read; `false` = seals on read. */
|
|
57
|
+
burnOnRead: boolean;
|
|
58
|
+
createdAt: number;
|
|
59
|
+
expiresAt: number | null;
|
|
60
|
+
}
|
|
19
61
|
export interface SecretMeta {
|
|
20
62
|
key: string;
|
|
21
63
|
created_at: number;
|
|
22
64
|
expires_at: number | null;
|
|
23
65
|
max_reads: number | null;
|
|
24
66
|
read_count: number;
|
|
67
|
+
/**
|
|
68
|
+
* Whether the secret burns (`true`) or seals (`false`) on read-limit.
|
|
69
|
+
* Only present on secrets that were created with an explicit `burnOnRead`
|
|
70
|
+
* value or in responses from `patch()`.
|
|
71
|
+
*/
|
|
72
|
+
delete?: boolean;
|
|
73
|
+
/** ID of the principal that created this secret (org secrets only). */
|
|
74
|
+
owner_id?: string;
|
|
25
75
|
}
|
|
26
76
|
export interface AuditEvent {
|
|
27
77
|
id: number;
|
|
@@ -31,13 +81,22 @@ export interface AuditEvent {
|
|
|
31
81
|
source_ip: string;
|
|
32
82
|
success: boolean;
|
|
33
83
|
detail: string | null;
|
|
84
|
+
org_id?: string;
|
|
85
|
+
principal_id?: string;
|
|
34
86
|
}
|
|
35
|
-
|
|
87
|
+
/** Filter parameters for audit log queries. */
|
|
88
|
+
export interface AuditFilter {
|
|
89
|
+
/** Return events at or after this Unix timestamp. */
|
|
36
90
|
since?: number;
|
|
91
|
+
/** Return events at or before this Unix timestamp. */
|
|
37
92
|
until?: number;
|
|
93
|
+
/** Filter by action type, e.g. `"secret.read"`. */
|
|
38
94
|
action?: string;
|
|
95
|
+
/** Maximum number of entries to return (default 100, max 1000). */
|
|
39
96
|
limit?: number;
|
|
40
97
|
}
|
|
98
|
+
/** @deprecated Use `AuditFilter`. */
|
|
99
|
+
export type AuditOptions = AuditFilter;
|
|
41
100
|
export interface Webhook {
|
|
42
101
|
id: string;
|
|
43
102
|
url: string;
|
|
@@ -46,26 +105,132 @@ export interface Webhook {
|
|
|
46
105
|
}
|
|
47
106
|
export interface WebhookCreateResult {
|
|
48
107
|
id: string;
|
|
108
|
+
/** Signing secret — shown only once, save immediately. */
|
|
49
109
|
secret: string;
|
|
50
110
|
}
|
|
51
|
-
export interface
|
|
111
|
+
export interface Org {
|
|
112
|
+
id: string;
|
|
113
|
+
name: string;
|
|
114
|
+
metadata?: Record<string, string>;
|
|
115
|
+
created_at?: number;
|
|
116
|
+
}
|
|
117
|
+
export interface Principal {
|
|
118
|
+
id: string;
|
|
119
|
+
name: string;
|
|
120
|
+
role: string;
|
|
121
|
+
org_id: string;
|
|
122
|
+
metadata?: Record<string, string>;
|
|
123
|
+
created_at?: number;
|
|
124
|
+
}
|
|
125
|
+
export interface Role {
|
|
126
|
+
name: string;
|
|
127
|
+
/** Permission letter string, e.g. `"rRlL"`. */
|
|
128
|
+
permissions: string;
|
|
129
|
+
org_id?: string;
|
|
130
|
+
builtin?: boolean;
|
|
131
|
+
created_at?: number;
|
|
132
|
+
}
|
|
133
|
+
export interface PrincipalKey {
|
|
52
134
|
id: string;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
135
|
+
name: string;
|
|
136
|
+
valid_after: number;
|
|
137
|
+
valid_before: number;
|
|
56
138
|
created_at: number;
|
|
57
139
|
}
|
|
58
|
-
export interface
|
|
140
|
+
export interface MeResponse {
|
|
59
141
|
id: string;
|
|
142
|
+
name: string;
|
|
143
|
+
role: string;
|
|
144
|
+
org_id: string;
|
|
145
|
+
metadata: Record<string, string>;
|
|
146
|
+
created_at: number;
|
|
147
|
+
keys: PrincipalKey[];
|
|
148
|
+
}
|
|
149
|
+
export interface PrincipalKeyCreateResult {
|
|
150
|
+
id: string;
|
|
151
|
+
name: string;
|
|
152
|
+
/** Raw API key — shown only once, save immediately. */
|
|
60
153
|
key: string;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
154
|
+
valid_after: number;
|
|
155
|
+
valid_before: number;
|
|
156
|
+
}
|
|
157
|
+
export interface CreateOrgOptions {
|
|
158
|
+
name: string;
|
|
159
|
+
metadata?: Record<string, string>;
|
|
160
|
+
}
|
|
161
|
+
export interface CreatePrincipalOptions {
|
|
162
|
+
name: string;
|
|
163
|
+
/**
|
|
164
|
+
* Role to assign. Built-in: `reader`, `writer`, `admin`, `owner`.
|
|
165
|
+
* Custom roles can be created per-org.
|
|
166
|
+
*/
|
|
167
|
+
role: string;
|
|
168
|
+
metadata?: Record<string, string>;
|
|
64
169
|
}
|
|
65
|
-
export interface
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
170
|
+
export interface CreateRoleOptions {
|
|
171
|
+
name: string;
|
|
172
|
+
/**
|
|
173
|
+
* Permission letter string. Each letter enables a permission bit.
|
|
174
|
+
* Examples: `"r"` (read), `"rRlL"` (read + list), `"rRlLcCpPaAmMdD"` (full).
|
|
175
|
+
*
|
|
176
|
+
* | Letter | Permission |
|
|
177
|
+
* |--------|-----------|
|
|
178
|
+
* | `r` | ReadOrg |
|
|
179
|
+
* | `R` | ReadMy |
|
|
180
|
+
* | `l` | ListOrg |
|
|
181
|
+
* | `L` | ListMy |
|
|
182
|
+
* | `c` | CreateOrg |
|
|
183
|
+
* | `C` | CreateMy |
|
|
184
|
+
* | `p` | PatchOrg |
|
|
185
|
+
* | `P` | PatchMy |
|
|
186
|
+
* | `d` | DeleteOrg |
|
|
187
|
+
* | `D` | DeleteMy |
|
|
188
|
+
* | `a` | AuditRead |
|
|
189
|
+
* | `m` | ManageOrg |
|
|
190
|
+
*/
|
|
191
|
+
permissions: string;
|
|
192
|
+
}
|
|
193
|
+
export interface CreateKeyOptions {
|
|
194
|
+
/** Human-readable label for this key. */
|
|
195
|
+
name: string;
|
|
196
|
+
/** Lifetime in seconds from now. Defaults to 1 year. */
|
|
197
|
+
valid_for_seconds?: number;
|
|
198
|
+
/** Absolute expiry as a Unix timestamp. Overrides `valid_for_seconds`. */
|
|
199
|
+
valid_before?: number;
|
|
200
|
+
}
|
|
201
|
+
export interface PatchMeOptions {
|
|
202
|
+
/** Replaces the entire metadata map on the current principal. */
|
|
203
|
+
metadata: Record<string, string>;
|
|
204
|
+
}
|
|
205
|
+
export interface WebhookClient {
|
|
206
|
+
/**
|
|
207
|
+
* Register a webhook. Returns the ID and signing secret.
|
|
208
|
+
* @param url HTTPS endpoint to receive events
|
|
209
|
+
* @param opts Optional event filter (default `["*"]`)
|
|
210
|
+
*/
|
|
211
|
+
create(url: string, opts?: {
|
|
212
|
+
events?: string[];
|
|
213
|
+
}): Promise<WebhookCreateResult>;
|
|
214
|
+
/** List all registered webhooks. Signing secrets are redacted. */
|
|
215
|
+
list(): Promise<Webhook[]>;
|
|
216
|
+
/** Delete a webhook by ID. Returns false if not found. */
|
|
217
|
+
delete(id: string): Promise<boolean>;
|
|
218
|
+
}
|
|
219
|
+
export interface OrgClient {
|
|
220
|
+
/** Create a new organization. Requires master key. */
|
|
221
|
+
create(opts: CreateOrgOptions): Promise<Org>;
|
|
222
|
+
/** List all organizations. Requires master key. */
|
|
223
|
+
list(): Promise<Org[]>;
|
|
224
|
+
/** Delete an organization by ID. Requires master key. */
|
|
225
|
+
delete(id: string): Promise<void>;
|
|
226
|
+
}
|
|
227
|
+
export interface PrincipalClient {
|
|
228
|
+
/** Create a principal within an org. Requires master key. */
|
|
229
|
+
create(orgId: string, opts: CreatePrincipalOptions): Promise<Principal>;
|
|
230
|
+
/** List all principals in an org. Requires master key. */
|
|
231
|
+
list(orgId: string): Promise<Principal[]>;
|
|
232
|
+
/** Delete a principal by ID. Requires master key. */
|
|
233
|
+
delete(orgId: string, principalId: string): Promise<void>;
|
|
69
234
|
}
|
|
70
235
|
export declare class SirrError extends Error {
|
|
71
236
|
readonly status: number;
|
|
@@ -74,7 +239,18 @@ export declare class SirrError extends Error {
|
|
|
74
239
|
export declare class SirrClient {
|
|
75
240
|
private readonly server;
|
|
76
241
|
private readonly token;
|
|
242
|
+
private readonly org?;
|
|
243
|
+
/** Webhook management — `sirr.webhooks.create/list/delete`. */
|
|
244
|
+
readonly webhooks: WebhookClient;
|
|
245
|
+
/** Organization management — `sirr.orgs.create/list/delete`. Requires master key. */
|
|
246
|
+
readonly orgs: OrgClient;
|
|
247
|
+
/** Principal management — `sirr.principals.create/list/delete`. Requires master key. */
|
|
248
|
+
readonly principals: PrincipalClient;
|
|
77
249
|
constructor(opts: SirrClientOptions);
|
|
250
|
+
private secretsPath;
|
|
251
|
+
private auditPath;
|
|
252
|
+
private webhooksPath;
|
|
253
|
+
private prunePath;
|
|
78
254
|
private headers;
|
|
79
255
|
private request;
|
|
80
256
|
/** Check server health. Does not require authentication. */
|
|
@@ -84,47 +260,99 @@ export declare class SirrClient {
|
|
|
84
260
|
/**
|
|
85
261
|
* Push a secret to the vault.
|
|
86
262
|
*
|
|
87
|
-
* @param key Secret key name
|
|
88
|
-
* @param value Secret value
|
|
89
|
-
* @param opts TTL
|
|
263
|
+
* @param key Secret key name (1-256 chars, alphanumeric + `-_.`)
|
|
264
|
+
* @param value Secret value (max 1 MiB)
|
|
265
|
+
* @param opts TTL, read limit, and other options
|
|
90
266
|
*/
|
|
91
267
|
push(key: string, value: string, opts?: PushOptions): Promise<void>;
|
|
268
|
+
/**
|
|
269
|
+
* Update a secret's value, TTL, or read limit in place.
|
|
270
|
+
* Returns the updated metadata, or `null` if the secret does not exist.
|
|
271
|
+
*
|
|
272
|
+
* Only works on secrets created with `burnOnRead: false`. Attempting to
|
|
273
|
+
* patch a burn-on-read secret returns `409 Conflict` (thrown as `SirrError`).
|
|
274
|
+
*/
|
|
275
|
+
patch(key: string, opts: PatchOptions): Promise<SecretMeta | null>;
|
|
92
276
|
/**
|
|
93
277
|
* Retrieve a secret by key. Increments the read counter.
|
|
94
|
-
* Returns `null` if the secret does not exist
|
|
278
|
+
* Returns `null` if the secret does not exist, has expired, has been
|
|
279
|
+
* burned (`delete: true`), or is sealed (`delete: false`, reads exhausted).
|
|
95
280
|
*/
|
|
96
281
|
get(key: string): Promise<string | null>;
|
|
97
282
|
/** List metadata for all active secrets. Values are never returned. */
|
|
98
283
|
list(): Promise<SecretMeta[]>;
|
|
99
|
-
/** Delete a secret immediately. Returns true if it existed. */
|
|
284
|
+
/** Delete a secret immediately. Returns `true` if it existed. */
|
|
100
285
|
delete(key: string): Promise<boolean>;
|
|
101
286
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
287
|
+
* Inspect a secret's metadata without consuming a read counter (HEAD request).
|
|
288
|
+
* Returns `null` if the secret does not exist or has expired.
|
|
289
|
+
*
|
|
290
|
+
* Use this in AI agent workflows to verify a secret is still valid before
|
|
291
|
+
* fetching it and triggering an irreversible read.
|
|
292
|
+
*/
|
|
293
|
+
check(key: string): Promise<SecretStatus | null>;
|
|
294
|
+
/**
|
|
295
|
+
* Retrieve all secrets and return them as a `key → value` map.
|
|
296
|
+
* Each `get()` call increments the respective read counter.
|
|
104
297
|
*/
|
|
105
298
|
pullAll(): Promise<Record<string, string>>;
|
|
106
|
-
/** Trigger an immediate sweep of expired secrets on the server. */
|
|
107
|
-
prune(): Promise<number>;
|
|
108
299
|
/**
|
|
109
|
-
* Inject all vault secrets as process.env variables
|
|
110
|
-
*
|
|
300
|
+
* Inject all vault secrets as `process.env` variables for the duration of
|
|
301
|
+
* `fn`, then restore the original values (even if `fn` throws).
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* await sirr.withSecrets(async () => {
|
|
305
|
+
* await execa('python', ['agent.py'])
|
|
306
|
+
* })
|
|
111
307
|
*/
|
|
112
308
|
withSecrets<T>(fn: () => Promise<T>): Promise<T>;
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
/**
|
|
309
|
+
/** Trigger an immediate sweep of expired secrets on the server. Returns the pruned count. */
|
|
310
|
+
prune(): Promise<number>;
|
|
311
|
+
/**
|
|
312
|
+
* Query the audit log.
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* const events = await sirr.audit({ action: 'secret.read', limit: 50 })
|
|
316
|
+
*/
|
|
317
|
+
audit(opts?: AuditFilter): Promise<AuditEvent[]>;
|
|
318
|
+
/** @deprecated Use `audit()`. */
|
|
319
|
+
getAuditLog(opts?: AuditFilter): Promise<AuditEvent[]>;
|
|
320
|
+
/** Register a webhook. Returns the ID and signing secret (shown once). */
|
|
116
321
|
createWebhook(url: string, opts?: {
|
|
117
322
|
events?: string[];
|
|
118
323
|
}): Promise<WebhookCreateResult>;
|
|
119
|
-
/** List registered webhooks. Signing secrets are redacted. */
|
|
324
|
+
/** List all registered webhooks. Signing secrets are redacted. */
|
|
120
325
|
listWebhooks(): Promise<Webhook[]>;
|
|
121
|
-
/** Delete a webhook by ID. Returns false if not found. */
|
|
326
|
+
/** Delete a webhook by ID. Returns `false` if not found. */
|
|
122
327
|
deleteWebhook(id: string): Promise<boolean>;
|
|
123
|
-
/**
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
|
|
328
|
+
/** Get the current principal's profile, role, and key list. */
|
|
329
|
+
me(): Promise<MeResponse>;
|
|
330
|
+
/** Update the current principal's metadata. */
|
|
331
|
+
updateMe(opts: PatchMeOptions): Promise<Principal>;
|
|
332
|
+
/**
|
|
333
|
+
* Create a new API key for the current principal.
|
|
334
|
+
* The raw key is returned once — save it immediately.
|
|
335
|
+
*/
|
|
336
|
+
createKey(opts: CreateKeyOptions): Promise<PrincipalKeyCreateResult>;
|
|
337
|
+
/** Revoke one of the current principal's keys. Returns `false` if not found. */
|
|
338
|
+
deleteKey(keyId: string): Promise<boolean>;
|
|
339
|
+
/** Create an org. Requires master key. */
|
|
340
|
+
createOrg(opts: CreateOrgOptions): Promise<Org>;
|
|
341
|
+
/** List all orgs. Requires master key. */
|
|
342
|
+
listOrgs(): Promise<Org[]>;
|
|
343
|
+
/** Delete an org by ID. Requires master key. */
|
|
344
|
+
deleteOrg(orgId: string): Promise<void>;
|
|
345
|
+
/** Create a principal within an org. Requires master key. */
|
|
346
|
+
createPrincipal(orgId: string, opts: CreatePrincipalOptions): Promise<Principal>;
|
|
347
|
+
/** List all principals in an org. Requires master key. */
|
|
348
|
+
listPrincipals(orgId: string): Promise<Principal[]>;
|
|
349
|
+
/** Delete a principal by ID. Requires master key. */
|
|
350
|
+
deletePrincipal(orgId: string, principalId: string): Promise<void>;
|
|
351
|
+
/** Create a custom role within an org. Requires master key. */
|
|
352
|
+
createRole(orgId: string, opts: CreateRoleOptions): Promise<Role>;
|
|
353
|
+
/** List all roles (built-in and custom) in an org. Requires master key. */
|
|
354
|
+
listRoles(orgId: string): Promise<Role[]>;
|
|
355
|
+
/** Delete a custom role by name. Requires master key. */
|
|
356
|
+
deleteRole(orgId: string, roleName: string): Promise<void>;
|
|
129
357
|
}
|
|
130
358
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @sirrlock/node — Sirr Node.js client
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Zero-dependency TypeScript client for the Sirr HTTP API.
|
|
6
|
+
* Works in Node 18+, Deno, Bun, and edge runtimes.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.SirrClient = exports.SirrError = void 0;
|
|
10
|
+
// ── Error ─────────────────────────────────────────────────────────────────────
|
|
10
11
|
class SirrError extends Error {
|
|
11
12
|
constructor(status, message) {
|
|
12
13
|
super(`Sirr API error ${status}: ${message}`);
|
|
@@ -15,19 +16,53 @@ class SirrError extends Error {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
exports.SirrError = SirrError;
|
|
19
|
+
// ── Validation ────────────────────────────────────────────────────────────────
|
|
18
20
|
function validateKey(key) {
|
|
19
21
|
if (!key) {
|
|
20
22
|
throw new Error("Secret key must not be empty");
|
|
21
23
|
}
|
|
22
24
|
}
|
|
25
|
+
// ── Client ────────────────────────────────────────────────────────────────────
|
|
23
26
|
class SirrClient {
|
|
24
27
|
constructor(opts) {
|
|
25
28
|
if (!opts.token) {
|
|
26
29
|
throw new Error("SirrClient requires a non-empty token");
|
|
27
30
|
}
|
|
28
|
-
this.server = (opts.server ?? "http://localhost:
|
|
31
|
+
this.server = (opts.server ?? "http://localhost:39999").replace(/\/$/, "");
|
|
29
32
|
this.token = opts.token;
|
|
33
|
+
this.org = opts.org;
|
|
34
|
+
this.webhooks = {
|
|
35
|
+
create: (url, whOpts) => this.createWebhook(url, whOpts),
|
|
36
|
+
list: () => this.listWebhooks(),
|
|
37
|
+
delete: (id) => this.deleteWebhook(id),
|
|
38
|
+
};
|
|
39
|
+
this.orgs = {
|
|
40
|
+
create: (o) => this.createOrg(o),
|
|
41
|
+
list: () => this.listOrgs(),
|
|
42
|
+
delete: (id) => this.deleteOrg(id),
|
|
43
|
+
};
|
|
44
|
+
this.principals = {
|
|
45
|
+
create: (orgId, o) => this.createPrincipal(orgId, o),
|
|
46
|
+
list: (orgId) => this.listPrincipals(orgId),
|
|
47
|
+
delete: (orgId, principalId) => this.deletePrincipal(orgId, principalId),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// ── Path helpers ────────────────────────────────────────────────────────────
|
|
51
|
+
secretsPath(key) {
|
|
52
|
+
const base = this.org ? `/orgs/${encodeURIComponent(this.org)}/secrets` : "/secrets";
|
|
53
|
+
return key ? `${base}/${encodeURIComponent(key)}` : base;
|
|
30
54
|
}
|
|
55
|
+
auditPath() {
|
|
56
|
+
return this.org ? `/orgs/${encodeURIComponent(this.org)}/audit` : "/audit";
|
|
57
|
+
}
|
|
58
|
+
webhooksPath(id) {
|
|
59
|
+
const base = this.org ? `/orgs/${encodeURIComponent(this.org)}/webhooks` : "/webhooks";
|
|
60
|
+
return id ? `${base}/${encodeURIComponent(id)}` : base;
|
|
61
|
+
}
|
|
62
|
+
prunePath() {
|
|
63
|
+
return this.org ? `/orgs/${encodeURIComponent(this.org)}/prune` : "/prune";
|
|
64
|
+
}
|
|
65
|
+
// ── HTTP helpers ────────────────────────────────────────────────────────────
|
|
31
66
|
headers() {
|
|
32
67
|
return {
|
|
33
68
|
Authorization: `Bearer ${this.token}`,
|
|
@@ -60,6 +95,7 @@ class SirrClient {
|
|
|
60
95
|
}
|
|
61
96
|
return (await res.json());
|
|
62
97
|
}
|
|
98
|
+
// ── Health ──────────────────────────────────────────────────────────────────
|
|
63
99
|
/** Check server health. Does not require authentication. */
|
|
64
100
|
async health() {
|
|
65
101
|
const res = await fetch(`${this.server}/health`);
|
|
@@ -68,48 +104,82 @@ class SirrClient {
|
|
|
68
104
|
}
|
|
69
105
|
return res.json();
|
|
70
106
|
}
|
|
107
|
+
// ── Secrets ─────────────────────────────────────────────────────────────────
|
|
71
108
|
/**
|
|
72
109
|
* Push a secret to the vault.
|
|
73
110
|
*
|
|
74
|
-
* @param key Secret key name
|
|
75
|
-
* @param value Secret value
|
|
76
|
-
* @param opts TTL
|
|
111
|
+
* @param key Secret key name (1-256 chars, alphanumeric + `-_.`)
|
|
112
|
+
* @param value Secret value (max 1 MiB)
|
|
113
|
+
* @param opts TTL, read limit, and other options
|
|
77
114
|
*/
|
|
78
115
|
async push(key, value, opts = {}) {
|
|
79
116
|
validateKey(key);
|
|
80
|
-
|
|
117
|
+
const body = {
|
|
81
118
|
key,
|
|
82
119
|
value,
|
|
83
120
|
ttl_seconds: opts.ttl ?? null,
|
|
84
121
|
max_reads: opts.reads ?? null,
|
|
85
|
-
}
|
|
122
|
+
};
|
|
123
|
+
if (opts.burnOnRead !== undefined)
|
|
124
|
+
body.delete = opts.burnOnRead;
|
|
125
|
+
if (opts.webhookUrl !== undefined)
|
|
126
|
+
body.webhook_url = opts.webhookUrl;
|
|
127
|
+
if (opts.allowedKeys !== undefined)
|
|
128
|
+
body.allowed_keys = opts.allowedKeys;
|
|
129
|
+
await this.request("POST", this.secretsPath(), body);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Update a secret's value, TTL, or read limit in place.
|
|
133
|
+
* Returns the updated metadata, or `null` if the secret does not exist.
|
|
134
|
+
*
|
|
135
|
+
* Only works on secrets created with `burnOnRead: false`. Attempting to
|
|
136
|
+
* patch a burn-on-read secret returns `409 Conflict` (thrown as `SirrError`).
|
|
137
|
+
*/
|
|
138
|
+
async patch(key, opts) {
|
|
139
|
+
validateKey(key);
|
|
140
|
+
const body = {};
|
|
141
|
+
if (opts.value !== undefined)
|
|
142
|
+
body.value = opts.value;
|
|
143
|
+
if (opts.ttl !== undefined)
|
|
144
|
+
body.ttl_seconds = opts.ttl;
|
|
145
|
+
if (opts.reads !== undefined)
|
|
146
|
+
body.max_reads = opts.reads;
|
|
147
|
+
try {
|
|
148
|
+
return await this.request("PATCH", this.secretsPath(key), body);
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
if (e instanceof SirrError && e.status === 404)
|
|
152
|
+
return null;
|
|
153
|
+
throw e;
|
|
154
|
+
}
|
|
86
155
|
}
|
|
87
156
|
/**
|
|
88
157
|
* Retrieve a secret by key. Increments the read counter.
|
|
89
|
-
* Returns `null` if the secret does not exist
|
|
158
|
+
* Returns `null` if the secret does not exist, has expired, has been
|
|
159
|
+
* burned (`delete: true`), or is sealed (`delete: false`, reads exhausted).
|
|
90
160
|
*/
|
|
91
161
|
async get(key) {
|
|
92
162
|
validateKey(key);
|
|
93
163
|
try {
|
|
94
|
-
const data = await this.request("GET",
|
|
164
|
+
const data = await this.request("GET", this.secretsPath(key));
|
|
95
165
|
return data.value;
|
|
96
166
|
}
|
|
97
167
|
catch (e) {
|
|
98
|
-
if (e instanceof SirrError && e.status === 404)
|
|
168
|
+
if (e instanceof SirrError && (e.status === 404 || e.status === 410))
|
|
99
169
|
return null;
|
|
100
170
|
throw e;
|
|
101
171
|
}
|
|
102
172
|
}
|
|
103
173
|
/** List metadata for all active secrets. Values are never returned. */
|
|
104
174
|
async list() {
|
|
105
|
-
const data = await this.request("GET",
|
|
175
|
+
const data = await this.request("GET", this.secretsPath());
|
|
106
176
|
return data.secrets;
|
|
107
177
|
}
|
|
108
|
-
/** Delete a secret immediately. Returns true if it existed. */
|
|
178
|
+
/** Delete a secret immediately. Returns `true` if it existed. */
|
|
109
179
|
async delete(key) {
|
|
110
180
|
validateKey(key);
|
|
111
181
|
try {
|
|
112
|
-
await this.request("DELETE",
|
|
182
|
+
await this.request("DELETE", this.secretsPath(key));
|
|
113
183
|
return true;
|
|
114
184
|
}
|
|
115
185
|
catch (e) {
|
|
@@ -119,8 +189,38 @@ class SirrClient {
|
|
|
119
189
|
}
|
|
120
190
|
}
|
|
121
191
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
192
|
+
* Inspect a secret's metadata without consuming a read counter (HEAD request).
|
|
193
|
+
* Returns `null` if the secret does not exist or has expired.
|
|
194
|
+
*
|
|
195
|
+
* Use this in AI agent workflows to verify a secret is still valid before
|
|
196
|
+
* fetching it and triggering an irreversible read.
|
|
197
|
+
*/
|
|
198
|
+
async check(key) {
|
|
199
|
+
validateKey(key);
|
|
200
|
+
const res = await fetch(`${this.server}${this.secretsPath(key)}`, {
|
|
201
|
+
method: "HEAD",
|
|
202
|
+
headers: this.headers(),
|
|
203
|
+
});
|
|
204
|
+
if (res.status === 404)
|
|
205
|
+
return null;
|
|
206
|
+
if (!res.ok && res.status !== 410) {
|
|
207
|
+
throw new SirrError(res.status, "check failed");
|
|
208
|
+
}
|
|
209
|
+
const readsRemainingRaw = res.headers.get("X-Sirr-Reads-Remaining");
|
|
210
|
+
const readsRemaining = readsRemainingRaw === "unlimited" ? "unlimited" : Number(readsRemainingRaw ?? 0);
|
|
211
|
+
const expiresAtRaw = res.headers.get("X-Sirr-Expires-At");
|
|
212
|
+
return {
|
|
213
|
+
status: (res.headers.get("X-Sirr-Status") ?? "active"),
|
|
214
|
+
readCount: Number(res.headers.get("X-Sirr-Read-Count") ?? 0),
|
|
215
|
+
readsRemaining,
|
|
216
|
+
burnOnRead: res.headers.get("X-Sirr-Delete") === "true",
|
|
217
|
+
createdAt: Number(res.headers.get("X-Sirr-Created-At") ?? 0),
|
|
218
|
+
expiresAt: expiresAtRaw ? Number(expiresAtRaw) : null,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Retrieve all secrets and return them as a `key → value` map.
|
|
223
|
+
* Each `get()` call increments the respective read counter.
|
|
124
224
|
*/
|
|
125
225
|
async pullAll() {
|
|
126
226
|
const metas = await this.list();
|
|
@@ -132,14 +232,14 @@ class SirrClient {
|
|
|
132
232
|
}));
|
|
133
233
|
return result;
|
|
134
234
|
}
|
|
135
|
-
/** Trigger an immediate sweep of expired secrets on the server. */
|
|
136
|
-
async prune() {
|
|
137
|
-
const data = await this.request("POST", "/prune");
|
|
138
|
-
return data.pruned;
|
|
139
|
-
}
|
|
140
235
|
/**
|
|
141
|
-
* Inject all vault secrets as process.env variables
|
|
142
|
-
*
|
|
236
|
+
* Inject all vault secrets as `process.env` variables for the duration of
|
|
237
|
+
* `fn`, then restore the original values (even if `fn` throws).
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* await sirr.withSecrets(async () => {
|
|
241
|
+
* await execa('python', ['agent.py'])
|
|
242
|
+
* })
|
|
143
243
|
*/
|
|
144
244
|
async withSecrets(fn) {
|
|
145
245
|
const secrets = await this.pullAll();
|
|
@@ -160,8 +260,19 @@ class SirrClient {
|
|
|
160
260
|
}
|
|
161
261
|
}
|
|
162
262
|
}
|
|
163
|
-
/**
|
|
164
|
-
async
|
|
263
|
+
/** Trigger an immediate sweep of expired secrets on the server. Returns the pruned count. */
|
|
264
|
+
async prune() {
|
|
265
|
+
const data = await this.request("POST", this.prunePath());
|
|
266
|
+
return data.pruned;
|
|
267
|
+
}
|
|
268
|
+
// ── Audit log ───────────────────────────────────────────────────────────────
|
|
269
|
+
/**
|
|
270
|
+
* Query the audit log.
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* const events = await sirr.audit({ action: 'secret.read', limit: 50 })
|
|
274
|
+
*/
|
|
275
|
+
async audit(opts = {}) {
|
|
165
276
|
const params = new URLSearchParams();
|
|
166
277
|
if (opts.since != null)
|
|
167
278
|
params.set("since", String(opts.since));
|
|
@@ -172,25 +283,31 @@ class SirrClient {
|
|
|
172
283
|
if (opts.limit != null)
|
|
173
284
|
params.set("limit", String(opts.limit));
|
|
174
285
|
const qs = params.toString();
|
|
175
|
-
const data = await this.request("GET",
|
|
286
|
+
const data = await this.request("GET", `${this.auditPath()}${qs ? `?${qs}` : ""}`);
|
|
176
287
|
return data.events;
|
|
177
288
|
}
|
|
178
|
-
/**
|
|
289
|
+
/** @deprecated Use `audit()`. */
|
|
290
|
+
async getAuditLog(opts = {}) {
|
|
291
|
+
return this.audit(opts);
|
|
292
|
+
}
|
|
293
|
+
// ── Webhooks ─────────────────────────────────────────────────────────────────
|
|
294
|
+
// Also available as `sirr.webhooks.create/list/delete`.
|
|
295
|
+
/** Register a webhook. Returns the ID and signing secret (shown once). */
|
|
179
296
|
async createWebhook(url, opts) {
|
|
180
297
|
const body = { url };
|
|
181
298
|
if (opts?.events)
|
|
182
299
|
body.events = opts.events;
|
|
183
|
-
return this.request("POST",
|
|
300
|
+
return this.request("POST", this.webhooksPath(), body);
|
|
184
301
|
}
|
|
185
|
-
/** List registered webhooks. Signing secrets are redacted. */
|
|
302
|
+
/** List all registered webhooks. Signing secrets are redacted. */
|
|
186
303
|
async listWebhooks() {
|
|
187
|
-
const data = await this.request("GET",
|
|
304
|
+
const data = await this.request("GET", this.webhooksPath());
|
|
188
305
|
return data.webhooks;
|
|
189
306
|
}
|
|
190
|
-
/** Delete a webhook by ID. Returns false if not found. */
|
|
307
|
+
/** Delete a webhook by ID. Returns `false` if not found. */
|
|
191
308
|
async deleteWebhook(id) {
|
|
192
309
|
try {
|
|
193
|
-
await this.request("DELETE",
|
|
310
|
+
await this.request("DELETE", this.webhooksPath(id));
|
|
194
311
|
return true;
|
|
195
312
|
}
|
|
196
313
|
catch (e) {
|
|
@@ -199,19 +316,26 @@ class SirrClient {
|
|
|
199
316
|
throw e;
|
|
200
317
|
}
|
|
201
318
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
319
|
+
// ── /me ──────────────────────────────────────────────────────────────────────
|
|
320
|
+
/** Get the current principal's profile, role, and key list. */
|
|
321
|
+
async me() {
|
|
322
|
+
return this.request("GET", "/me");
|
|
205
323
|
}
|
|
206
|
-
/**
|
|
207
|
-
async
|
|
208
|
-
|
|
209
|
-
return data.keys;
|
|
324
|
+
/** Update the current principal's metadata. */
|
|
325
|
+
async updateMe(opts) {
|
|
326
|
+
return this.request("PATCH", "/me", opts);
|
|
210
327
|
}
|
|
211
|
-
/**
|
|
212
|
-
|
|
328
|
+
/**
|
|
329
|
+
* Create a new API key for the current principal.
|
|
330
|
+
* The raw key is returned once — save it immediately.
|
|
331
|
+
*/
|
|
332
|
+
async createKey(opts) {
|
|
333
|
+
return this.request("POST", "/me/keys", opts);
|
|
334
|
+
}
|
|
335
|
+
/** Revoke one of the current principal's keys. Returns `false` if not found. */
|
|
336
|
+
async deleteKey(keyId) {
|
|
213
337
|
try {
|
|
214
|
-
await this.request("DELETE", `/keys/${encodeURIComponent(
|
|
338
|
+
await this.request("DELETE", `/me/keys/${encodeURIComponent(keyId)}`);
|
|
215
339
|
return true;
|
|
216
340
|
}
|
|
217
341
|
catch (e) {
|
|
@@ -220,6 +344,47 @@ class SirrClient {
|
|
|
220
344
|
throw e;
|
|
221
345
|
}
|
|
222
346
|
}
|
|
347
|
+
// ── Admin endpoints (master key only) ────────────────────────────────────────
|
|
348
|
+
// Also available as `sirr.orgs.*` and `sirr.principals.*`.
|
|
349
|
+
/** Create an org. Requires master key. */
|
|
350
|
+
async createOrg(opts) {
|
|
351
|
+
return this.request("POST", "/orgs", opts);
|
|
352
|
+
}
|
|
353
|
+
/** List all orgs. Requires master key. */
|
|
354
|
+
async listOrgs() {
|
|
355
|
+
const data = await this.request("GET", "/orgs");
|
|
356
|
+
return data.orgs;
|
|
357
|
+
}
|
|
358
|
+
/** Delete an org by ID. Requires master key. */
|
|
359
|
+
async deleteOrg(orgId) {
|
|
360
|
+
await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}`);
|
|
361
|
+
}
|
|
362
|
+
/** Create a principal within an org. Requires master key. */
|
|
363
|
+
async createPrincipal(orgId, opts) {
|
|
364
|
+
return this.request("POST", `/orgs/${encodeURIComponent(orgId)}/principals`, opts);
|
|
365
|
+
}
|
|
366
|
+
/** List all principals in an org. Requires master key. */
|
|
367
|
+
async listPrincipals(orgId) {
|
|
368
|
+
const data = await this.request("GET", `/orgs/${encodeURIComponent(orgId)}/principals`);
|
|
369
|
+
return data.principals;
|
|
370
|
+
}
|
|
371
|
+
/** Delete a principal by ID. Requires master key. */
|
|
372
|
+
async deletePrincipal(orgId, principalId) {
|
|
373
|
+
await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}/principals/${encodeURIComponent(principalId)}`);
|
|
374
|
+
}
|
|
375
|
+
/** Create a custom role within an org. Requires master key. */
|
|
376
|
+
async createRole(orgId, opts) {
|
|
377
|
+
return this.request("POST", `/orgs/${encodeURIComponent(orgId)}/roles`, opts);
|
|
378
|
+
}
|
|
379
|
+
/** List all roles (built-in and custom) in an org. Requires master key. */
|
|
380
|
+
async listRoles(orgId) {
|
|
381
|
+
const data = await this.request("GET", `/orgs/${encodeURIComponent(orgId)}/roles`);
|
|
382
|
+
return data.roles;
|
|
383
|
+
}
|
|
384
|
+
/** Delete a custom role by name. Requires master key. */
|
|
385
|
+
async deleteRole(orgId, roleName) {
|
|
386
|
+
await this.request("DELETE", `/orgs/${encodeURIComponent(orgId)}/roles/${encodeURIComponent(roleName)}`);
|
|
387
|
+
}
|
|
223
388
|
}
|
|
224
389
|
exports.SirrClient = SirrClient;
|
|
225
390
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sirrlock/node",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Sirr (سر) — Node.js client and npx CLI for the ephemeral secret vault",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "sirrlock",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"build": "tsc",
|
|
42
42
|
"dev": "tsc --watch",
|
|
43
43
|
"test": "jest",
|
|
44
|
+
"test:integration": "jest --testPathIgnorePatterns /node_modules/ /dist/ --testPathPattern integration --testTimeout=30000",
|
|
44
45
|
"lint": "biome check src/",
|
|
45
46
|
"lint:fix": "biome check --write src/",
|
|
46
47
|
"prepublishOnly": "npm run lint && npm run build && npm test"
|
|
@@ -61,6 +62,6 @@
|
|
|
61
62
|
"jest": {
|
|
62
63
|
"preset": "ts-jest",
|
|
63
64
|
"testEnvironment": "node",
|
|
64
|
-
"testPathIgnorePatterns": ["/node_modules/", "/dist/"]
|
|
65
|
+
"testPathIgnorePatterns": ["/node_modules/", "/dist/", "integration\\.test"]
|
|
65
66
|
}
|
|
66
67
|
}
|