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.
Files changed (75) hide show
  1. package/LLM-GUIDE.md +537 -0
  2. package/README.md +585 -0
  3. package/dist/index.d.ts +191 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +224 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/cache.d.ts +112 -0
  8. package/dist/lib/cache.d.ts.map +1 -0
  9. package/dist/lib/cache.js +237 -0
  10. package/dist/lib/cache.js.map +1 -0
  11. package/dist/lib/client.d.ts +38 -0
  12. package/dist/lib/client.d.ts.map +1 -0
  13. package/dist/lib/client.js +425 -0
  14. package/dist/lib/client.js.map +1 -0
  15. package/dist/lib/config.d.ts +20 -0
  16. package/dist/lib/config.d.ts.map +1 -0
  17. package/dist/lib/config.js +32 -0
  18. package/dist/lib/config.js.map +1 -0
  19. package/dist/lib/crypto.d.ts +70 -0
  20. package/dist/lib/crypto.d.ts.map +1 -0
  21. package/dist/lib/crypto.js +95 -0
  22. package/dist/lib/crypto.js.map +1 -0
  23. package/dist/lib/errors.d.ts +77 -0
  24. package/dist/lib/errors.d.ts.map +1 -0
  25. package/dist/lib/errors.js +134 -0
  26. package/dist/lib/errors.js.map +1 -0
  27. package/dist/namespaces/auth.d.ts +237 -0
  28. package/dist/namespaces/auth.d.ts.map +1 -0
  29. package/dist/namespaces/auth.js +785 -0
  30. package/dist/namespaces/auth.js.map +1 -0
  31. package/dist/namespaces/courier.d.ts +67 -0
  32. package/dist/namespaces/courier.d.ts.map +1 -0
  33. package/dist/namespaces/courier.js +90 -0
  34. package/dist/namespaces/courier.js.map +1 -0
  35. package/dist/namespaces/db.d.ts +117 -0
  36. package/dist/namespaces/db.d.ts.map +1 -0
  37. package/dist/namespaces/db.js +149 -0
  38. package/dist/namespaces/db.js.map +1 -0
  39. package/dist/namespaces/ddl.d.ts +84 -0
  40. package/dist/namespaces/ddl.d.ts.map +1 -0
  41. package/dist/namespaces/ddl.js +211 -0
  42. package/dist/namespaces/ddl.js.map +1 -0
  43. package/dist/namespaces/files.d.ts +107 -0
  44. package/dist/namespaces/files.d.ts.map +1 -0
  45. package/dist/namespaces/files.js +161 -0
  46. package/dist/namespaces/files.js.map +1 -0
  47. package/dist/namespaces/health.d.ts +30 -0
  48. package/dist/namespaces/health.d.ts.map +1 -0
  49. package/dist/namespaces/health.js +66 -0
  50. package/dist/namespaces/health.js.map +1 -0
  51. package/dist/namespaces/logs.d.ts +97 -0
  52. package/dist/namespaces/logs.d.ts.map +1 -0
  53. package/dist/namespaces/logs.js +194 -0
  54. package/dist/namespaces/logs.js.map +1 -0
  55. package/dist/namespaces/open.d.ts +27 -0
  56. package/dist/namespaces/open.d.ts.map +1 -0
  57. package/dist/namespaces/open.js +46 -0
  58. package/dist/namespaces/open.js.map +1 -0
  59. package/dist/namespaces/portal.d.ts +172 -0
  60. package/dist/namespaces/portal.d.ts.map +1 -0
  61. package/dist/namespaces/portal.js +332 -0
  62. package/dist/namespaces/portal.js.map +1 -0
  63. package/dist/namespaces/redis.d.ts +144 -0
  64. package/dist/namespaces/redis.d.ts.map +1 -0
  65. package/dist/namespaces/redis.js +218 -0
  66. package/dist/namespaces/redis.js.map +1 -0
  67. package/dist/namespaces/secrets.d.ts +50 -0
  68. package/dist/namespaces/secrets.d.ts.map +1 -0
  69. package/dist/namespaces/secrets.js +93 -0
  70. package/dist/namespaces/secrets.js.map +1 -0
  71. package/dist/namespaces/secure.d.ts +102 -0
  72. package/dist/namespaces/secure.d.ts.map +1 -0
  73. package/dist/namespaces/secure.js +151 -0
  74. package/dist/namespaces/secure.js.map +1 -0
  75. 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":"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"}
@@ -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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"}