dominus-sdk-nodejs-dev 1.2.4
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/LLM-GUIDE.md +537 -0
- package/README.md +585 -0
- package/dist/index.d.ts +191 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +224 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +112 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +237 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/client.d.ts +38 -0
- package/dist/lib/client.d.ts.map +1 -0
- package/dist/lib/client.js +425 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/config.d.ts +20 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +32 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/crypto.d.ts +70 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +95 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/errors.d.ts +77 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +134 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/namespaces/auth.d.ts +237 -0
- package/dist/namespaces/auth.d.ts.map +1 -0
- package/dist/namespaces/auth.js +785 -0
- package/dist/namespaces/auth.js.map +1 -0
- package/dist/namespaces/courier.d.ts +67 -0
- package/dist/namespaces/courier.d.ts.map +1 -0
- package/dist/namespaces/courier.js +90 -0
- package/dist/namespaces/courier.js.map +1 -0
- package/dist/namespaces/db.d.ts +117 -0
- package/dist/namespaces/db.d.ts.map +1 -0
- package/dist/namespaces/db.js +149 -0
- package/dist/namespaces/db.js.map +1 -0
- package/dist/namespaces/ddl.d.ts +84 -0
- package/dist/namespaces/ddl.d.ts.map +1 -0
- package/dist/namespaces/ddl.js +211 -0
- package/dist/namespaces/ddl.js.map +1 -0
- package/dist/namespaces/files.d.ts +107 -0
- package/dist/namespaces/files.d.ts.map +1 -0
- package/dist/namespaces/files.js +161 -0
- package/dist/namespaces/files.js.map +1 -0
- package/dist/namespaces/health.d.ts +30 -0
- package/dist/namespaces/health.d.ts.map +1 -0
- package/dist/namespaces/health.js +66 -0
- package/dist/namespaces/health.js.map +1 -0
- package/dist/namespaces/logs.d.ts +97 -0
- package/dist/namespaces/logs.d.ts.map +1 -0
- package/dist/namespaces/logs.js +194 -0
- package/dist/namespaces/logs.js.map +1 -0
- package/dist/namespaces/open.d.ts +27 -0
- package/dist/namespaces/open.d.ts.map +1 -0
- package/dist/namespaces/open.js +46 -0
- package/dist/namespaces/open.js.map +1 -0
- package/dist/namespaces/portal.d.ts +172 -0
- package/dist/namespaces/portal.d.ts.map +1 -0
- package/dist/namespaces/portal.js +332 -0
- package/dist/namespaces/portal.js.map +1 -0
- package/dist/namespaces/redis.d.ts +144 -0
- package/dist/namespaces/redis.d.ts.map +1 -0
- package/dist/namespaces/redis.js +218 -0
- package/dist/namespaces/redis.js.map +1 -0
- package/dist/namespaces/secrets.d.ts +50 -0
- package/dist/namespaces/secrets.d.ts.map +1 -0
- package/dist/namespaces/secrets.js +93 -0
- package/dist/namespaces/secrets.js.map +1 -0
- package/dist/namespaces/secure.d.ts +102 -0
- package/dist/namespaces/secure.d.ts.map +1 -0
- package/dist/namespaces/secure.js +151 -0
- package/dist/namespaces/secure.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Namespace - Whisperer caching operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides Redis caching operations via Upstash REST API.
|
|
5
|
+
* TTL enforced: min 60 seconds, max 86400 seconds (24 hours).
|
|
6
|
+
*/
|
|
7
|
+
export class RedisNamespace {
|
|
8
|
+
client;
|
|
9
|
+
constructor(client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Set a value with TTL.
|
|
14
|
+
*
|
|
15
|
+
* @param key - Key name
|
|
16
|
+
* @param value - Any JSON-serializable value
|
|
17
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
18
|
+
* @param category - Optional namespace category
|
|
19
|
+
*/
|
|
20
|
+
async set(key, value, ttl = 3600, category) {
|
|
21
|
+
const body = {
|
|
22
|
+
logical_path: key,
|
|
23
|
+
value,
|
|
24
|
+
ttl_seconds: ttl,
|
|
25
|
+
};
|
|
26
|
+
if (category)
|
|
27
|
+
body.category = category;
|
|
28
|
+
return this.client.request({
|
|
29
|
+
endpoint: '/api/whisperer/set',
|
|
30
|
+
body,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get a value, optionally refreshing TTL.
|
|
35
|
+
*
|
|
36
|
+
* @param key - Key name
|
|
37
|
+
* @param options - Get options (category, nudge, ttl)
|
|
38
|
+
*/
|
|
39
|
+
async get(key, options = {}) {
|
|
40
|
+
const { category, nudge = false, ttl } = options;
|
|
41
|
+
const body = {
|
|
42
|
+
logical_path: key,
|
|
43
|
+
nudge,
|
|
44
|
+
};
|
|
45
|
+
if (category)
|
|
46
|
+
body.category = category;
|
|
47
|
+
if (ttl && nudge)
|
|
48
|
+
body.ttl_seconds = ttl;
|
|
49
|
+
return this.client.request({
|
|
50
|
+
endpoint: '/api/whisperer/get',
|
|
51
|
+
body,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Delete a key.
|
|
56
|
+
*
|
|
57
|
+
* @param key - Key name
|
|
58
|
+
* @param category - Optional namespace category
|
|
59
|
+
*/
|
|
60
|
+
async delete(key, category) {
|
|
61
|
+
const body = { logical_path: key };
|
|
62
|
+
if (category)
|
|
63
|
+
body.category = category;
|
|
64
|
+
return this.client.request({
|
|
65
|
+
endpoint: '/api/whisperer/delete',
|
|
66
|
+
body,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* List keys by prefix with pagination.
|
|
71
|
+
*
|
|
72
|
+
* @param options - List options (prefix, category, limit, cursor)
|
|
73
|
+
*/
|
|
74
|
+
async list(options = {}) {
|
|
75
|
+
const { prefix, category, limit = 100, cursor } = options;
|
|
76
|
+
const body = { limit: Math.min(limit, 500) };
|
|
77
|
+
if (prefix)
|
|
78
|
+
body.logical_prefix = prefix;
|
|
79
|
+
if (category)
|
|
80
|
+
body.category = category;
|
|
81
|
+
if (cursor)
|
|
82
|
+
body.cursor = cursor;
|
|
83
|
+
return this.client.request({
|
|
84
|
+
endpoint: '/api/whisperer/list',
|
|
85
|
+
body,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get multiple keys at once.
|
|
90
|
+
*
|
|
91
|
+
* @param keys - List of key specs (max 100)
|
|
92
|
+
*/
|
|
93
|
+
async mget(keys) {
|
|
94
|
+
return this.client.request({
|
|
95
|
+
endpoint: '/api/whisperer/mget',
|
|
96
|
+
body: { keys: keys.slice(0, 100) },
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Set if not exists (for distributed locks).
|
|
101
|
+
*
|
|
102
|
+
* @param key - Key name
|
|
103
|
+
* @param value - Any JSON-serializable value
|
|
104
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 60)
|
|
105
|
+
* @param category - Optional namespace category
|
|
106
|
+
*/
|
|
107
|
+
async setnx(key, value, ttl = 60, category) {
|
|
108
|
+
const body = {
|
|
109
|
+
logical_path: key,
|
|
110
|
+
value,
|
|
111
|
+
ttl_seconds: ttl,
|
|
112
|
+
};
|
|
113
|
+
if (category)
|
|
114
|
+
body.category = category;
|
|
115
|
+
return this.client.request({
|
|
116
|
+
endpoint: '/api/whisperer/setnx',
|
|
117
|
+
body,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Increment counter (creates if not exists).
|
|
122
|
+
*
|
|
123
|
+
* @param key - Key name
|
|
124
|
+
* @param delta - Increment amount (default: 1)
|
|
125
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
126
|
+
* @param category - Optional namespace category
|
|
127
|
+
*/
|
|
128
|
+
async incr(key, delta = 1, ttl = 3600, category) {
|
|
129
|
+
const body = {
|
|
130
|
+
logical_path: key,
|
|
131
|
+
delta,
|
|
132
|
+
ttl_seconds: ttl,
|
|
133
|
+
};
|
|
134
|
+
if (category)
|
|
135
|
+
body.category = category;
|
|
136
|
+
return this.client.request({
|
|
137
|
+
endpoint: '/api/whisperer/incr',
|
|
138
|
+
body,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Set a hash field.
|
|
143
|
+
*
|
|
144
|
+
* @param key - Hash key name
|
|
145
|
+
* @param field - Field name
|
|
146
|
+
* @param value - Any JSON-serializable value
|
|
147
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
148
|
+
* @param category - Optional namespace category
|
|
149
|
+
*/
|
|
150
|
+
async hset(key, field, value, ttl = 3600, category) {
|
|
151
|
+
const body = {
|
|
152
|
+
logical_path: key,
|
|
153
|
+
field,
|
|
154
|
+
value,
|
|
155
|
+
ttl_seconds: ttl,
|
|
156
|
+
};
|
|
157
|
+
if (category)
|
|
158
|
+
body.category = category;
|
|
159
|
+
return this.client.request({
|
|
160
|
+
endpoint: '/api/whisperer/hset',
|
|
161
|
+
body,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get a hash field.
|
|
166
|
+
*
|
|
167
|
+
* @param key - Hash key name
|
|
168
|
+
* @param field - Field name
|
|
169
|
+
* @param category - Optional namespace category
|
|
170
|
+
*/
|
|
171
|
+
async hget(key, field, category) {
|
|
172
|
+
const body = {
|
|
173
|
+
logical_path: key,
|
|
174
|
+
field,
|
|
175
|
+
};
|
|
176
|
+
if (category)
|
|
177
|
+
body.category = category;
|
|
178
|
+
return this.client.request({
|
|
179
|
+
endpoint: '/api/whisperer/hget',
|
|
180
|
+
body,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get all fields from a hash.
|
|
185
|
+
*
|
|
186
|
+
* @param key - Hash key name
|
|
187
|
+
* @param category - Optional namespace category
|
|
188
|
+
*/
|
|
189
|
+
async hgetall(key, category) {
|
|
190
|
+
const body = { logical_path: key };
|
|
191
|
+
if (category)
|
|
192
|
+
body.category = category;
|
|
193
|
+
return this.client.request({
|
|
194
|
+
endpoint: '/api/whisperer/hgetall',
|
|
195
|
+
body,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Delete a hash field.
|
|
200
|
+
*
|
|
201
|
+
* @param key - Hash key name
|
|
202
|
+
* @param field - Field name to delete
|
|
203
|
+
* @param category - Optional namespace category
|
|
204
|
+
*/
|
|
205
|
+
async hdel(key, field, category) {
|
|
206
|
+
const body = {
|
|
207
|
+
logical_path: key,
|
|
208
|
+
field,
|
|
209
|
+
};
|
|
210
|
+
if (category)
|
|
211
|
+
body.category = category;
|
|
212
|
+
return this.client.request({
|
|
213
|
+
endpoint: '/api/whisperer/hdel',
|
|
214
|
+
body,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/namespaces/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets Namespace - Warden secrets management.
|
|
3
|
+
*
|
|
4
|
+
* Provides CRUD operations for secrets stored in the Warden service.
|
|
5
|
+
*/
|
|
6
|
+
import type { DominusClient } from '../lib/client.js';
|
|
7
|
+
export interface Secret {
|
|
8
|
+
key: string;
|
|
9
|
+
value: unknown;
|
|
10
|
+
comment?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface UpsertResult {
|
|
13
|
+
operation: 'created' | 'updated';
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export declare class SecretsNamespace {
|
|
17
|
+
private client;
|
|
18
|
+
constructor(client: DominusClient);
|
|
19
|
+
/**
|
|
20
|
+
* Get a secret value.
|
|
21
|
+
*
|
|
22
|
+
* @param key - Secret key name
|
|
23
|
+
* @returns Secret value
|
|
24
|
+
*/
|
|
25
|
+
get(key: string): Promise<unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Create or update a secret.
|
|
28
|
+
*
|
|
29
|
+
* @param key - Secret key name
|
|
30
|
+
* @param value - Secret value
|
|
31
|
+
* @param comment - Optional comment/description
|
|
32
|
+
* @returns Operation result with created/updated status
|
|
33
|
+
*/
|
|
34
|
+
upsert(key: string, value: string, comment?: string): Promise<UpsertResult>;
|
|
35
|
+
/**
|
|
36
|
+
* List secrets, optionally filtered by prefix.
|
|
37
|
+
*
|
|
38
|
+
* @param prefix - Optional key prefix filter
|
|
39
|
+
* @returns List of secret metadata (keys only, not values)
|
|
40
|
+
*/
|
|
41
|
+
list(prefix?: string): Promise<Array<Record<string, unknown>>>;
|
|
42
|
+
/**
|
|
43
|
+
* Delete a secret.
|
|
44
|
+
*
|
|
45
|
+
* @param key - Secret key to delete
|
|
46
|
+
* @returns Operation result
|
|
47
|
+
*/
|
|
48
|
+
delete(key: string): Promise<Record<string, unknown>>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/namespaces/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQxC;;;;;;;OAOG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC;IAkCxB;;;;;OAKG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAepE;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAM5D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets Namespace - Warden secrets management.
|
|
3
|
+
*
|
|
4
|
+
* Provides CRUD operations for secrets stored in the Warden service.
|
|
5
|
+
*/
|
|
6
|
+
export class SecretsNamespace {
|
|
7
|
+
client;
|
|
8
|
+
constructor(client) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get a secret value.
|
|
13
|
+
*
|
|
14
|
+
* @param key - Secret key name
|
|
15
|
+
* @returns Secret value
|
|
16
|
+
*/
|
|
17
|
+
async get(key) {
|
|
18
|
+
const result = await this.client.request({
|
|
19
|
+
endpoint: '/api/warden/secrets',
|
|
20
|
+
body: { action: 'get', key },
|
|
21
|
+
});
|
|
22
|
+
return result.secret?.value;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create or update a secret.
|
|
26
|
+
*
|
|
27
|
+
* @param key - Secret key name
|
|
28
|
+
* @param value - Secret value
|
|
29
|
+
* @param comment - Optional comment/description
|
|
30
|
+
* @returns Operation result with created/updated status
|
|
31
|
+
*/
|
|
32
|
+
async upsert(key, value, comment) {
|
|
33
|
+
const body = {
|
|
34
|
+
action: 'update',
|
|
35
|
+
key,
|
|
36
|
+
value,
|
|
37
|
+
};
|
|
38
|
+
if (comment) {
|
|
39
|
+
body.comment = comment;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const result = await this.client.request({
|
|
43
|
+
endpoint: '/api/warden/secrets',
|
|
44
|
+
body,
|
|
45
|
+
});
|
|
46
|
+
return { ...result, operation: 'updated' };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// If update fails (secret doesn't exist), try create
|
|
50
|
+
if (error instanceof Error &&
|
|
51
|
+
'statusCode' in error &&
|
|
52
|
+
error.statusCode === 500) {
|
|
53
|
+
body.action = 'create';
|
|
54
|
+
const result = await this.client.request({
|
|
55
|
+
endpoint: '/api/warden/secrets',
|
|
56
|
+
body,
|
|
57
|
+
});
|
|
58
|
+
return { ...result, operation: 'created' };
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* List secrets, optionally filtered by prefix.
|
|
65
|
+
*
|
|
66
|
+
* @param prefix - Optional key prefix filter
|
|
67
|
+
* @returns List of secret metadata (keys only, not values)
|
|
68
|
+
*/
|
|
69
|
+
async list(prefix) {
|
|
70
|
+
const body = { action: 'list' };
|
|
71
|
+
if (prefix) {
|
|
72
|
+
body.prefix = prefix;
|
|
73
|
+
}
|
|
74
|
+
const result = await this.client.request({
|
|
75
|
+
endpoint: '/api/warden/secrets',
|
|
76
|
+
body,
|
|
77
|
+
});
|
|
78
|
+
return result.secrets || [];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Delete a secret.
|
|
82
|
+
*
|
|
83
|
+
* @param key - Secret key to delete
|
|
84
|
+
* @returns Operation result
|
|
85
|
+
*/
|
|
86
|
+
async delete(key) {
|
|
87
|
+
return this.client.request({
|
|
88
|
+
endpoint: '/api/warden/secrets',
|
|
89
|
+
body: { action: 'delete', key },
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/namespaces/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB;YAC5D,QAAQ,EAAE,qBAAqB;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;SAC7B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,GAAW,EACX,KAAa,EACb,OAAgB;QAEhB,MAAM,IAAI,GAA4B;YACpC,MAAM,EAAE,QAAQ;YAChB,GAAG;YACH,KAAK;SACN,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe;gBACrD,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI;aACL,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qDAAqD;YACrD,IACE,KAAK,YAAY,KAAK;gBACtB,YAAY,IAAI,KAAK;gBACpB,KAAgC,CAAC,UAAU,KAAK,GAAG,EACpD,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe;oBACrD,QAAQ,EAAE,qBAAqB;oBAC/B,IAAI;iBACL,CAAC,CAAC;gBACH,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACzD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAErC;YACD,QAAQ,EAAE,qBAAqB;YAC/B,IAAI;SACL,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure Namespace - Operations requiring audit logging.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenience methods for accessing tables registered as secure.
|
|
5
|
+
* All operations automatically include reason/actor for audit trail.
|
|
6
|
+
*
|
|
7
|
+
* Secure tables are registered via auth.createSecureTable() and require
|
|
8
|
+
* a justification reason for every access.
|
|
9
|
+
*/
|
|
10
|
+
import type { DominusClient } from '../lib/client.js';
|
|
11
|
+
import type { QueryResult, TableInfo, ColumnInfo } from './db.js';
|
|
12
|
+
export interface SecureQueryOptions {
|
|
13
|
+
schema?: string;
|
|
14
|
+
filters?: Record<string, unknown>;
|
|
15
|
+
sortBy?: string;
|
|
16
|
+
sortOrder?: 'ASC' | 'DESC';
|
|
17
|
+
limit?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SecureAccessContext {
|
|
21
|
+
/** Justification for accessing secure data (required) */
|
|
22
|
+
reason: string;
|
|
23
|
+
/** User ID or identifier performing the action */
|
|
24
|
+
actor: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class SecureNamespace {
|
|
27
|
+
private client;
|
|
28
|
+
constructor(client: DominusClient);
|
|
29
|
+
/**
|
|
30
|
+
* List tables in a schema.
|
|
31
|
+
*
|
|
32
|
+
* @param schema - Schema name (default: "public")
|
|
33
|
+
* @returns List of table metadata
|
|
34
|
+
*/
|
|
35
|
+
tables(schema?: string): Promise<TableInfo[]>;
|
|
36
|
+
/**
|
|
37
|
+
* List columns in a table.
|
|
38
|
+
*
|
|
39
|
+
* @param table - Table name
|
|
40
|
+
* @param schema - Schema name (default: "public")
|
|
41
|
+
* @returns List of column metadata
|
|
42
|
+
*/
|
|
43
|
+
columns(table: string, schema?: string): Promise<ColumnInfo[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Query secure table data with audit logging.
|
|
46
|
+
*
|
|
47
|
+
* @param table - Table name
|
|
48
|
+
* @param context - Access context (reason and actor required)
|
|
49
|
+
* @param options - Query options
|
|
50
|
+
* @returns Query result with rows and total count
|
|
51
|
+
*/
|
|
52
|
+
query(table: string, context: SecureAccessContext, options?: SecureQueryOptions): Promise<QueryResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Insert a row into a secure table with audit logging.
|
|
55
|
+
*
|
|
56
|
+
* @param table - Table name
|
|
57
|
+
* @param data - Column:value dictionary
|
|
58
|
+
* @param context - Access context (reason and actor required)
|
|
59
|
+
* @param schema - Schema name (default: "public")
|
|
60
|
+
* @returns Inserted row data
|
|
61
|
+
*/
|
|
62
|
+
insert(table: string, data: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<Record<string, unknown>>;
|
|
63
|
+
/**
|
|
64
|
+
* Update rows in a secure table with audit logging.
|
|
65
|
+
*
|
|
66
|
+
* @param table - Table name
|
|
67
|
+
* @param data - Column:value dictionary of updates
|
|
68
|
+
* @param filters - Column:value dictionary for WHERE clause
|
|
69
|
+
* @param context - Access context (reason and actor required)
|
|
70
|
+
* @param schema - Schema name (default: "public")
|
|
71
|
+
* @returns Affected rows count
|
|
72
|
+
*/
|
|
73
|
+
update(table: string, data: Record<string, unknown>, filters: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<{
|
|
74
|
+
affected_rows: number;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Delete rows from a secure table with audit logging.
|
|
78
|
+
*
|
|
79
|
+
* @param table - Table name
|
|
80
|
+
* @param filters - Column:value dictionary for WHERE clause
|
|
81
|
+
* @param context - Access context (reason and actor required)
|
|
82
|
+
* @param schema - Schema name (default: "public")
|
|
83
|
+
* @returns Affected rows count
|
|
84
|
+
*/
|
|
85
|
+
delete(table: string, filters: Record<string, unknown>, context: SecureAccessContext, schema?: string): Promise<{
|
|
86
|
+
affected_rows: number;
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Insert multiple rows into a secure table with audit logging.
|
|
90
|
+
*
|
|
91
|
+
* @param table - Table name
|
|
92
|
+
* @param rows - List of column:value dictionaries
|
|
93
|
+
* @param context - Access context (reason and actor required)
|
|
94
|
+
* @param schema - Schema name (default: "public")
|
|
95
|
+
* @returns Insert count and optionally rows
|
|
96
|
+
*/
|
|
97
|
+
bulkInsert(table: string, rows: Array<Record<string, unknown>>, context: SecureAccessContext, schema?: string): Promise<{
|
|
98
|
+
inserted_count: number;
|
|
99
|
+
rows?: Array<Record<string, unknown>>;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=secure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure.d.ts","sourceRoot":"","sources":["../../src/namespaces/secure.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAMzC;;;;;OAKG;IACG,MAAM,CAAC,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IASrD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStE;;;;;;;OAOG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC;IAwBvB;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAWnC;;;;;;;;;OASG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrC;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAWrC;;;;;;;;OAQG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,SAAW,GAChB,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;CAU9E"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure Namespace - Operations requiring audit logging.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenience methods for accessing tables registered as secure.
|
|
5
|
+
* All operations automatically include reason/actor for audit trail.
|
|
6
|
+
*
|
|
7
|
+
* Secure tables are registered via auth.createSecureTable() and require
|
|
8
|
+
* a justification reason for every access.
|
|
9
|
+
*/
|
|
10
|
+
export class SecureNamespace {
|
|
11
|
+
client;
|
|
12
|
+
constructor(client) {
|
|
13
|
+
this.client = client;
|
|
14
|
+
}
|
|
15
|
+
// ========================================
|
|
16
|
+
// SECURE DATA OPERATIONS
|
|
17
|
+
// ========================================
|
|
18
|
+
/**
|
|
19
|
+
* List tables in a schema.
|
|
20
|
+
*
|
|
21
|
+
* @param schema - Schema name (default: "public")
|
|
22
|
+
* @returns List of table metadata
|
|
23
|
+
*/
|
|
24
|
+
async tables(schema = 'public') {
|
|
25
|
+
const result = await this.client.request({
|
|
26
|
+
endpoint: `/api/scribe/data/${schema}/tables`,
|
|
27
|
+
method: 'GET',
|
|
28
|
+
});
|
|
29
|
+
if (Array.isArray(result))
|
|
30
|
+
return result;
|
|
31
|
+
return result.tables || [];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* List columns in a table.
|
|
35
|
+
*
|
|
36
|
+
* @param table - Table name
|
|
37
|
+
* @param schema - Schema name (default: "public")
|
|
38
|
+
* @returns List of column metadata
|
|
39
|
+
*/
|
|
40
|
+
async columns(table, schema = 'public') {
|
|
41
|
+
const result = await this.client.request({
|
|
42
|
+
endpoint: `/api/scribe/data/${schema}/${table}/columns`,
|
|
43
|
+
method: 'GET',
|
|
44
|
+
});
|
|
45
|
+
if (Array.isArray(result))
|
|
46
|
+
return result;
|
|
47
|
+
return result.columns || [];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Query secure table data with audit logging.
|
|
51
|
+
*
|
|
52
|
+
* @param table - Table name
|
|
53
|
+
* @param context - Access context (reason and actor required)
|
|
54
|
+
* @param options - Query options
|
|
55
|
+
* @returns Query result with rows and total count
|
|
56
|
+
*/
|
|
57
|
+
async query(table, context, options = {}) {
|
|
58
|
+
const { schema = 'public', filters, sortBy, sortOrder = 'ASC', limit = 100, offset = 0, } = options;
|
|
59
|
+
return this.client.request({
|
|
60
|
+
endpoint: `/api/scribe/data/${schema}/${table}/query`,
|
|
61
|
+
body: {
|
|
62
|
+
filters,
|
|
63
|
+
sort_by: sortBy,
|
|
64
|
+
sort_order: sortOrder,
|
|
65
|
+
limit,
|
|
66
|
+
offset,
|
|
67
|
+
reason: context.reason,
|
|
68
|
+
actor: context.actor,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Insert a row into a secure table with audit logging.
|
|
74
|
+
*
|
|
75
|
+
* @param table - Table name
|
|
76
|
+
* @param data - Column:value dictionary
|
|
77
|
+
* @param context - Access context (reason and actor required)
|
|
78
|
+
* @param schema - Schema name (default: "public")
|
|
79
|
+
* @returns Inserted row data
|
|
80
|
+
*/
|
|
81
|
+
async insert(table, data, context, schema = 'public') {
|
|
82
|
+
return this.client.request({
|
|
83
|
+
endpoint: `/api/scribe/data/${schema}/${table}/insert`,
|
|
84
|
+
body: {
|
|
85
|
+
data,
|
|
86
|
+
reason: context.reason,
|
|
87
|
+
actor: context.actor,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Update rows in a secure table with audit logging.
|
|
93
|
+
*
|
|
94
|
+
* @param table - Table name
|
|
95
|
+
* @param data - Column:value dictionary of updates
|
|
96
|
+
* @param filters - Column:value dictionary for WHERE clause
|
|
97
|
+
* @param context - Access context (reason and actor required)
|
|
98
|
+
* @param schema - Schema name (default: "public")
|
|
99
|
+
* @returns Affected rows count
|
|
100
|
+
*/
|
|
101
|
+
async update(table, data, filters, context, schema = 'public') {
|
|
102
|
+
return this.client.request({
|
|
103
|
+
endpoint: `/api/scribe/data/${schema}/${table}/update`,
|
|
104
|
+
body: {
|
|
105
|
+
data,
|
|
106
|
+
filters,
|
|
107
|
+
reason: context.reason,
|
|
108
|
+
actor: context.actor,
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Delete rows from a secure table with audit logging.
|
|
114
|
+
*
|
|
115
|
+
* @param table - Table name
|
|
116
|
+
* @param filters - Column:value dictionary for WHERE clause
|
|
117
|
+
* @param context - Access context (reason and actor required)
|
|
118
|
+
* @param schema - Schema name (default: "public")
|
|
119
|
+
* @returns Affected rows count
|
|
120
|
+
*/
|
|
121
|
+
async delete(table, filters, context, schema = 'public') {
|
|
122
|
+
return this.client.request({
|
|
123
|
+
endpoint: `/api/scribe/data/${schema}/${table}/delete`,
|
|
124
|
+
body: {
|
|
125
|
+
filters,
|
|
126
|
+
reason: context.reason,
|
|
127
|
+
actor: context.actor,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Insert multiple rows into a secure table with audit logging.
|
|
133
|
+
*
|
|
134
|
+
* @param table - Table name
|
|
135
|
+
* @param rows - List of column:value dictionaries
|
|
136
|
+
* @param context - Access context (reason and actor required)
|
|
137
|
+
* @param schema - Schema name (default: "public")
|
|
138
|
+
* @returns Insert count and optionally rows
|
|
139
|
+
*/
|
|
140
|
+
async bulkInsert(table, rows, context, schema = 'public') {
|
|
141
|
+
return this.client.request({
|
|
142
|
+
endpoint: `/api/scribe/data/${schema}/${table}/bulk-insert`,
|
|
143
|
+
body: {
|
|
144
|
+
rows,
|
|
145
|
+
reason: context.reason,
|
|
146
|
+
actor: context.actor,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=secure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure.js","sourceRoot":"","sources":["../../src/namespaces/secure.ts"],"names":[],"mappings":"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"}
|