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,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portal Namespace - User authentication and session orchestration.
|
|
3
|
+
*
|
|
4
|
+
* Provides login, logout, session management, profile, and navigation access.
|
|
5
|
+
*/
|
|
6
|
+
export class PortalNamespace {
|
|
7
|
+
client;
|
|
8
|
+
constructor(client) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
}
|
|
11
|
+
// ========================================
|
|
12
|
+
// AUTHENTICATION
|
|
13
|
+
// ========================================
|
|
14
|
+
/**
|
|
15
|
+
* Login user with password.
|
|
16
|
+
*
|
|
17
|
+
* @param username - Username or email
|
|
18
|
+
* @param password - User password
|
|
19
|
+
* @param tenantId - Optional tenant UUID/slug. If not provided, uses user's first available tenant.
|
|
20
|
+
* @returns User info, active tenant, available tenants list, and session_id
|
|
21
|
+
*/
|
|
22
|
+
async login(username, password, tenantId) {
|
|
23
|
+
const body = { username, password };
|
|
24
|
+
if (tenantId) {
|
|
25
|
+
body.tenant_id = tenantId;
|
|
26
|
+
}
|
|
27
|
+
return this.client.request({
|
|
28
|
+
endpoint: '/api/portal/auth/login',
|
|
29
|
+
body,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Login service client with PSK.
|
|
34
|
+
*
|
|
35
|
+
* Client is looked up by PSK directly - no client_id needed.
|
|
36
|
+
*
|
|
37
|
+
* @param psk - Pre-shared key
|
|
38
|
+
* @param tenantId - Optional tenant UUID. If not provided, uses client's first assigned tenant.
|
|
39
|
+
*/
|
|
40
|
+
async loginClient(psk, tenantId) {
|
|
41
|
+
const body = { psk };
|
|
42
|
+
if (tenantId) {
|
|
43
|
+
body.tenant_id = tenantId;
|
|
44
|
+
}
|
|
45
|
+
return this.client.request({
|
|
46
|
+
endpoint: '/api/portal/auth/login-client',
|
|
47
|
+
body,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* End session and clear cookie.
|
|
52
|
+
*
|
|
53
|
+
* @param userToken - User's JWT token (required for user-authenticated requests)
|
|
54
|
+
*/
|
|
55
|
+
async logout(userToken) {
|
|
56
|
+
return this.client.request({
|
|
57
|
+
endpoint: '/api/portal/auth/logout',
|
|
58
|
+
body: {},
|
|
59
|
+
userToken,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Refresh JWT token using existing session.
|
|
64
|
+
*
|
|
65
|
+
* @param userToken - User's current JWT token (can be expired)
|
|
66
|
+
* @returns New access token and session info
|
|
67
|
+
*/
|
|
68
|
+
async refresh(userToken) {
|
|
69
|
+
return this.client.request({
|
|
70
|
+
endpoint: '/api/portal/auth/refresh',
|
|
71
|
+
body: {},
|
|
72
|
+
userToken,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get current user/client info.
|
|
77
|
+
*
|
|
78
|
+
* @param userToken - User's JWT token (required for user-authenticated requests)
|
|
79
|
+
*/
|
|
80
|
+
async me(userToken) {
|
|
81
|
+
return this.client.request({
|
|
82
|
+
endpoint: '/api/portal/auth/me',
|
|
83
|
+
method: 'GET',
|
|
84
|
+
userToken,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Switch active tenant context.
|
|
89
|
+
*
|
|
90
|
+
* @param tenantId - Tenant UUID to switch to
|
|
91
|
+
* @param userToken - User's JWT token (required for user-authenticated requests)
|
|
92
|
+
*/
|
|
93
|
+
async switchTenant(tenantId, userToken) {
|
|
94
|
+
return this.client.request({
|
|
95
|
+
endpoint: '/api/portal/auth/switch-tenant',
|
|
96
|
+
body: { tenant_id: tenantId },
|
|
97
|
+
userToken,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// ========================================
|
|
101
|
+
// SECURITY
|
|
102
|
+
// ========================================
|
|
103
|
+
/**
|
|
104
|
+
* Change current user's password.
|
|
105
|
+
*
|
|
106
|
+
* @param currentPassword - Current password
|
|
107
|
+
* @param newPassword - New password
|
|
108
|
+
* @param userToken - User's JWT token
|
|
109
|
+
*/
|
|
110
|
+
async changePassword(currentPassword, newPassword, userToken) {
|
|
111
|
+
return this.client.request({
|
|
112
|
+
endpoint: '/api/portal/security/change-password',
|
|
113
|
+
body: {
|
|
114
|
+
current_password: currentPassword,
|
|
115
|
+
new_password: newPassword,
|
|
116
|
+
},
|
|
117
|
+
userToken,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Request password reset email.
|
|
122
|
+
* Note: This does not require user authentication.
|
|
123
|
+
*/
|
|
124
|
+
async requestPasswordReset(email) {
|
|
125
|
+
return this.client.request({
|
|
126
|
+
endpoint: '/api/portal/security/request-reset',
|
|
127
|
+
body: { email },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Confirm password reset with token.
|
|
132
|
+
* Note: This does not require user authentication.
|
|
133
|
+
*/
|
|
134
|
+
async confirmPasswordReset(token, newPassword) {
|
|
135
|
+
return this.client.request({
|
|
136
|
+
endpoint: '/api/portal/security/confirm-reset',
|
|
137
|
+
body: { token, new_password: newPassword },
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* List all active sessions for current user.
|
|
142
|
+
*
|
|
143
|
+
* @param userToken - User's JWT token
|
|
144
|
+
*/
|
|
145
|
+
async listSessions(userToken) {
|
|
146
|
+
const result = await this.client.request({
|
|
147
|
+
endpoint: '/api/portal/security/sessions',
|
|
148
|
+
method: 'GET',
|
|
149
|
+
userToken,
|
|
150
|
+
});
|
|
151
|
+
return Array.isArray(result) ? result : result.sessions || [];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Revoke a specific session.
|
|
155
|
+
*
|
|
156
|
+
* @param sessionId - Session UUID to revoke
|
|
157
|
+
* @param userToken - User's JWT token
|
|
158
|
+
*/
|
|
159
|
+
async revokeSession(sessionId, userToken) {
|
|
160
|
+
return this.client.request({
|
|
161
|
+
endpoint: `/api/portal/security/sessions/${sessionId}`,
|
|
162
|
+
method: 'DELETE',
|
|
163
|
+
userToken,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Revoke all sessions except current.
|
|
168
|
+
*
|
|
169
|
+
* @param userToken - User's JWT token
|
|
170
|
+
*/
|
|
171
|
+
async revokeAllSessions(userToken) {
|
|
172
|
+
return this.client.request({
|
|
173
|
+
endpoint: '/api/portal/security/sessions/revoke-all',
|
|
174
|
+
body: {},
|
|
175
|
+
userToken,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
// ========================================
|
|
179
|
+
// PROFILE
|
|
180
|
+
// ========================================
|
|
181
|
+
/**
|
|
182
|
+
* Get current user's profile.
|
|
183
|
+
*
|
|
184
|
+
* @param userToken - User's JWT token
|
|
185
|
+
*/
|
|
186
|
+
async getProfile(userToken) {
|
|
187
|
+
return this.client.request({
|
|
188
|
+
endpoint: '/api/portal/profile',
|
|
189
|
+
method: 'GET',
|
|
190
|
+
userToken,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Update user profile.
|
|
195
|
+
*
|
|
196
|
+
* @param params - Profile fields to update
|
|
197
|
+
* @param userToken - User's JWT token
|
|
198
|
+
*/
|
|
199
|
+
async updateProfile(params, userToken) {
|
|
200
|
+
const body = {};
|
|
201
|
+
if (params.displayName !== undefined)
|
|
202
|
+
body.display_name = params.displayName;
|
|
203
|
+
if (params.avatarUrl !== undefined)
|
|
204
|
+
body.avatar_url = params.avatarUrl;
|
|
205
|
+
if (params.bio !== undefined)
|
|
206
|
+
body.bio = params.bio;
|
|
207
|
+
if (params.phone !== undefined)
|
|
208
|
+
body.phone = params.phone;
|
|
209
|
+
if (params.extra !== undefined)
|
|
210
|
+
body.extra = params.extra;
|
|
211
|
+
return this.client.request({
|
|
212
|
+
endpoint: '/api/portal/profile',
|
|
213
|
+
method: 'PUT',
|
|
214
|
+
body,
|
|
215
|
+
userToken,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get current user's preferences.
|
|
220
|
+
*
|
|
221
|
+
* @param userToken - User's JWT token
|
|
222
|
+
*/
|
|
223
|
+
async getPreferences(userToken) {
|
|
224
|
+
return this.client.request({
|
|
225
|
+
endpoint: '/api/portal/profile/preferences',
|
|
226
|
+
method: 'GET',
|
|
227
|
+
userToken,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Update user preferences.
|
|
232
|
+
*
|
|
233
|
+
* @param params - Preference fields to update
|
|
234
|
+
* @param userToken - User's JWT token
|
|
235
|
+
*/
|
|
236
|
+
async updatePreferences(params, userToken) {
|
|
237
|
+
const body = {};
|
|
238
|
+
if (params.theme !== undefined)
|
|
239
|
+
body.theme = params.theme;
|
|
240
|
+
if (params.language !== undefined)
|
|
241
|
+
body.language = params.language;
|
|
242
|
+
if (params.timezone !== undefined)
|
|
243
|
+
body.timezone = params.timezone;
|
|
244
|
+
if (params.sidebarCollapsed !== undefined)
|
|
245
|
+
body.sidebar_collapsed = params.sidebarCollapsed;
|
|
246
|
+
if (params.notificationsEnabled !== undefined)
|
|
247
|
+
body.notifications_enabled = params.notificationsEnabled;
|
|
248
|
+
if (params.emailNotifications !== undefined)
|
|
249
|
+
body.email_notifications = params.emailNotifications;
|
|
250
|
+
if (params.extra !== undefined)
|
|
251
|
+
body.extra = params.extra;
|
|
252
|
+
return this.client.request({
|
|
253
|
+
endpoint: '/api/portal/profile/preferences',
|
|
254
|
+
method: 'PUT',
|
|
255
|
+
body,
|
|
256
|
+
userToken,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
// ========================================
|
|
260
|
+
// NAVIGATION
|
|
261
|
+
// ========================================
|
|
262
|
+
/**
|
|
263
|
+
* Get navigation tree for current user's tenant.
|
|
264
|
+
*
|
|
265
|
+
* @param userToken - User's JWT token
|
|
266
|
+
*/
|
|
267
|
+
async getNavigation(userToken) {
|
|
268
|
+
return this.client.request({
|
|
269
|
+
endpoint: '/api/portal/nav/tree',
|
|
270
|
+
method: 'GET',
|
|
271
|
+
userToken,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Check if current user can access a page.
|
|
276
|
+
*
|
|
277
|
+
* @param pagePath - Page path to check (e.g., "/dashboard/admin")
|
|
278
|
+
* @param userToken - User's JWT token
|
|
279
|
+
*/
|
|
280
|
+
async checkPageAccess(pagePath, userToken) {
|
|
281
|
+
return this.client.request({
|
|
282
|
+
endpoint: '/api/portal/nav/check-access',
|
|
283
|
+
body: { page_path: pagePath },
|
|
284
|
+
userToken,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
// ========================================
|
|
288
|
+
// REGISTRATION
|
|
289
|
+
// ========================================
|
|
290
|
+
/**
|
|
291
|
+
* Self-register new user.
|
|
292
|
+
*/
|
|
293
|
+
async register(username, email, password, tenantId) {
|
|
294
|
+
return this.client.request({
|
|
295
|
+
endpoint: '/api/portal/register',
|
|
296
|
+
body: {
|
|
297
|
+
username,
|
|
298
|
+
email,
|
|
299
|
+
password,
|
|
300
|
+
tenant_id: tenantId,
|
|
301
|
+
},
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Verify email with token.
|
|
306
|
+
*/
|
|
307
|
+
async verifyEmail(token) {
|
|
308
|
+
return this.client.request({
|
|
309
|
+
endpoint: '/api/portal/register/verify',
|
|
310
|
+
body: { token },
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Resend verification email.
|
|
315
|
+
*/
|
|
316
|
+
async resendVerification(email) {
|
|
317
|
+
return this.client.request({
|
|
318
|
+
endpoint: '/api/portal/register/resend-verification',
|
|
319
|
+
body: { email },
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Accept admin invitation and set password.
|
|
324
|
+
*/
|
|
325
|
+
async acceptInvitation(token, password) {
|
|
326
|
+
return this.client.request({
|
|
327
|
+
endpoint: '/api/portal/register/accept-invitation',
|
|
328
|
+
body: { token, password },
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/namespaces/portal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C,2CAA2C;IAC3C,iBAAiB;IACjB,2CAA2C;IAE3C;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,QAAgB,EAChB,QAAiB;QAEjB,MAAM,IAAI,GAA2B,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,wBAAwB;YAClC,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CACf,GAAW,EACX,QAAiB;QAEjB,MAAM,IAAI,GAA2B,EAAE,GAAG,EAAE,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,+BAA+B;YACzC,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,SAAkB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,yBAAyB;YACnC,IAAI,EAAE,EAAE;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,SAAkB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,0BAA0B;YACpC,IAAI,EAAE,EAAE;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,SAAkB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,MAAM,EAAE,KAAK;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,gCAAgC;YAC1C,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC7B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,WAAW;IACX,2CAA2C;IAE3C;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,eAAuB,EACvB,WAAmB,EACnB,SAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,sCAAsC;YAChD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,eAAe;gBACjC,YAAY,EAAE,WAAW;aAC1B;YACD,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,oCAAoC;YAC9C,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,WAAmB;QAEnB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,oCAAoC;YAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,SAAkB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsC;YAC5E,QAAQ,EAAE,+BAA+B;YACzC,MAAM,EAAE,KAAK;YACb,SAAS;SACV,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAkB;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,iCAAiC,SAAS,EAAE;YACtD,MAAM,EAAE,QAAQ;YAChB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,EAAE;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,UAAU;IACV,2CAA2C;IAE3C;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAkB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,MAAM,EAAE,KAAK;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,MAMnB,EAAE,SAAkB;QACnB,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7E,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QACvE,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACpD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,SAAkB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,iCAAiC;YAC3C,MAAM,EAAE,KAAK;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAQvB,EAAE,SAAkB;QACnB,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnE,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;YAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC5F,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;YAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACxG,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;YAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAClG,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,iCAAiC;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,aAAa;IACb,2CAA2C;IAE3C;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAkB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,sBAAsB;YAChC,MAAM,EAAE,KAAK;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,SAAkB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC7B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,eAAe;IACf,2CAA2C;IAE3C;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,KAAa,EACb,QAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,sBAAsB;YAChC,IAAI,EAAE;gBACJ,QAAQ;gBACR,KAAK;gBACL,QAAQ;gBACR,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,6BAA6B;YACvC,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,QAAgB;QAEhB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,wCAAwC;YAClD,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
import type { DominusClient } from '../lib/client.js';
|
|
8
|
+
export interface SetResult {
|
|
9
|
+
key: string;
|
|
10
|
+
stored: boolean;
|
|
11
|
+
ttl_seconds: number;
|
|
12
|
+
}
|
|
13
|
+
export interface GetResult {
|
|
14
|
+
found: boolean;
|
|
15
|
+
value?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface ListResult {
|
|
18
|
+
keys: string[];
|
|
19
|
+
cursor?: string;
|
|
20
|
+
count: number;
|
|
21
|
+
}
|
|
22
|
+
export interface SetnxResult {
|
|
23
|
+
acquired: boolean;
|
|
24
|
+
existing?: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface IncrResult {
|
|
27
|
+
value: number;
|
|
28
|
+
}
|
|
29
|
+
export interface HsetResult {
|
|
30
|
+
set: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface HgetallResult {
|
|
33
|
+
found: boolean;
|
|
34
|
+
fields?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export declare class RedisNamespace {
|
|
37
|
+
private client;
|
|
38
|
+
constructor(client: DominusClient);
|
|
39
|
+
/**
|
|
40
|
+
* Set a value with TTL.
|
|
41
|
+
*
|
|
42
|
+
* @param key - Key name
|
|
43
|
+
* @param value - Any JSON-serializable value
|
|
44
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
45
|
+
* @param category - Optional namespace category
|
|
46
|
+
*/
|
|
47
|
+
set(key: string, value: unknown, ttl?: number, category?: string): Promise<SetResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Get a value, optionally refreshing TTL.
|
|
50
|
+
*
|
|
51
|
+
* @param key - Key name
|
|
52
|
+
* @param options - Get options (category, nudge, ttl)
|
|
53
|
+
*/
|
|
54
|
+
get(key: string, options?: {
|
|
55
|
+
category?: string;
|
|
56
|
+
nudge?: boolean;
|
|
57
|
+
ttl?: number;
|
|
58
|
+
}): Promise<GetResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Delete a key.
|
|
61
|
+
*
|
|
62
|
+
* @param key - Key name
|
|
63
|
+
* @param category - Optional namespace category
|
|
64
|
+
*/
|
|
65
|
+
delete(key: string, category?: string): Promise<{
|
|
66
|
+
deleted: boolean;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* List keys by prefix with pagination.
|
|
70
|
+
*
|
|
71
|
+
* @param options - List options (prefix, category, limit, cursor)
|
|
72
|
+
*/
|
|
73
|
+
list(options?: {
|
|
74
|
+
prefix?: string;
|
|
75
|
+
category?: string;
|
|
76
|
+
limit?: number;
|
|
77
|
+
cursor?: string;
|
|
78
|
+
}): Promise<ListResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Get multiple keys at once.
|
|
81
|
+
*
|
|
82
|
+
* @param keys - List of key specs (max 100)
|
|
83
|
+
*/
|
|
84
|
+
mget(keys: Array<{
|
|
85
|
+
logical_path: string;
|
|
86
|
+
category?: string;
|
|
87
|
+
}>): Promise<{
|
|
88
|
+
results: Array<GetResult>;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Set if not exists (for distributed locks).
|
|
92
|
+
*
|
|
93
|
+
* @param key - Key name
|
|
94
|
+
* @param value - Any JSON-serializable value
|
|
95
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 60)
|
|
96
|
+
* @param category - Optional namespace category
|
|
97
|
+
*/
|
|
98
|
+
setnx(key: string, value: unknown, ttl?: number, category?: string): Promise<SetnxResult>;
|
|
99
|
+
/**
|
|
100
|
+
* Increment counter (creates if not exists).
|
|
101
|
+
*
|
|
102
|
+
* @param key - Key name
|
|
103
|
+
* @param delta - Increment amount (default: 1)
|
|
104
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
105
|
+
* @param category - Optional namespace category
|
|
106
|
+
*/
|
|
107
|
+
incr(key: string, delta?: number, ttl?: number, category?: string): Promise<IncrResult>;
|
|
108
|
+
/**
|
|
109
|
+
* Set a hash field.
|
|
110
|
+
*
|
|
111
|
+
* @param key - Hash key name
|
|
112
|
+
* @param field - Field name
|
|
113
|
+
* @param value - Any JSON-serializable value
|
|
114
|
+
* @param ttl - Time-to-live in seconds (60-86400, default: 3600)
|
|
115
|
+
* @param category - Optional namespace category
|
|
116
|
+
*/
|
|
117
|
+
hset(key: string, field: string, value: unknown, ttl?: number, category?: string): Promise<HsetResult>;
|
|
118
|
+
/**
|
|
119
|
+
* Get a hash field.
|
|
120
|
+
*
|
|
121
|
+
* @param key - Hash key name
|
|
122
|
+
* @param field - Field name
|
|
123
|
+
* @param category - Optional namespace category
|
|
124
|
+
*/
|
|
125
|
+
hget(key: string, field: string, category?: string): Promise<GetResult>;
|
|
126
|
+
/**
|
|
127
|
+
* Get all fields from a hash.
|
|
128
|
+
*
|
|
129
|
+
* @param key - Hash key name
|
|
130
|
+
* @param category - Optional namespace category
|
|
131
|
+
*/
|
|
132
|
+
hgetall(key: string, category?: string): Promise<HgetallResult>;
|
|
133
|
+
/**
|
|
134
|
+
* Delete a hash field.
|
|
135
|
+
*
|
|
136
|
+
* @param key - Hash key name
|
|
137
|
+
* @param field - Field name to delete
|
|
138
|
+
* @param category - Optional namespace category
|
|
139
|
+
*/
|
|
140
|
+
hdel(key: string, field: string, category?: string): Promise<{
|
|
141
|
+
deleted: boolean;
|
|
142
|
+
}>;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/namespaces/redis.ts"],"names":[],"mappings":"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"}
|