@qwickapps/server 1.3.0 → 1.3.1

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 (132) hide show
  1. package/README.md +154 -0
  2. package/dist/core/control-panel.d.ts.map +1 -1
  3. package/dist/core/control-panel.js +30 -2
  4. package/dist/core/control-panel.js.map +1 -1
  5. package/dist/core/plugin-registry.d.ts +36 -0
  6. package/dist/core/plugin-registry.d.ts.map +1 -1
  7. package/dist/core/plugin-registry.js +26 -0
  8. package/dist/core/plugin-registry.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/plugins/auth/adapters/index.d.ts +1 -0
  14. package/dist/plugins/auth/adapters/index.d.ts.map +1 -1
  15. package/dist/plugins/auth/adapters/index.js +1 -0
  16. package/dist/plugins/auth/adapters/index.js.map +1 -1
  17. package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -1
  18. package/dist/plugins/auth/adapters/supabase-adapter.js.map +1 -1
  19. package/dist/plugins/auth/adapters/supertokens-adapter.d.ts +18 -0
  20. package/dist/plugins/auth/adapters/supertokens-adapter.d.ts.map +1 -0
  21. package/dist/plugins/auth/adapters/supertokens-adapter.js +267 -0
  22. package/dist/plugins/auth/adapters/supertokens-adapter.js.map +1 -0
  23. package/dist/plugins/auth/env-config.d.ts +88 -0
  24. package/dist/plugins/auth/env-config.d.ts.map +1 -0
  25. package/dist/plugins/auth/env-config.js +489 -0
  26. package/dist/plugins/auth/env-config.js.map +1 -0
  27. package/dist/plugins/auth/index.d.ts +3 -1
  28. package/dist/plugins/auth/index.d.ts.map +1 -1
  29. package/dist/plugins/auth/index.js +3 -0
  30. package/dist/plugins/auth/index.js.map +1 -1
  31. package/dist/plugins/auth/supertokens-adapter.test.d.ts +10 -0
  32. package/dist/plugins/auth/supertokens-adapter.test.d.ts.map +1 -0
  33. package/dist/plugins/auth/supertokens-adapter.test.js +486 -0
  34. package/dist/plugins/auth/supertokens-adapter.test.js.map +1 -0
  35. package/dist/plugins/auth/types.d.ts +70 -0
  36. package/dist/plugins/auth/types.d.ts.map +1 -1
  37. package/dist/plugins/auth/types.js.map +1 -1
  38. package/dist/plugins/cache-plugin.test.js +3 -0
  39. package/dist/plugins/cache-plugin.test.js.map +1 -1
  40. package/dist/plugins/index.d.ts +4 -2
  41. package/dist/plugins/index.d.ts.map +1 -1
  42. package/dist/plugins/index.js +3 -1
  43. package/dist/plugins/index.js.map +1 -1
  44. package/dist/plugins/postgres-plugin.test.js +3 -0
  45. package/dist/plugins/postgres-plugin.test.js.map +1 -1
  46. package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts +7 -0
  47. package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts.map +1 -0
  48. package/dist/plugins/preferences/__tests__/deep-merge.test.js +215 -0
  49. package/dist/plugins/preferences/__tests__/deep-merge.test.js.map +1 -0
  50. package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts +7 -0
  51. package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts.map +1 -0
  52. package/dist/plugins/preferences/__tests__/preferences-plugin.test.js +265 -0
  53. package/dist/plugins/preferences/__tests__/preferences-plugin.test.js.map +1 -0
  54. package/dist/plugins/preferences/index.d.ts +12 -0
  55. package/dist/plugins/preferences/index.d.ts.map +1 -0
  56. package/dist/plugins/preferences/index.js +13 -0
  57. package/dist/plugins/preferences/index.js.map +1 -0
  58. package/dist/plugins/preferences/preferences-plugin.d.ts +39 -0
  59. package/dist/plugins/preferences/preferences-plugin.d.ts.map +1 -0
  60. package/dist/plugins/preferences/preferences-plugin.js +226 -0
  61. package/dist/plugins/preferences/preferences-plugin.js.map +1 -0
  62. package/dist/plugins/preferences/stores/index.d.ts +9 -0
  63. package/dist/plugins/preferences/stores/index.d.ts.map +1 -0
  64. package/dist/plugins/preferences/stores/index.js +9 -0
  65. package/dist/plugins/preferences/stores/index.js.map +1 -0
  66. package/dist/plugins/preferences/stores/postgres-store.d.ts +41 -0
  67. package/dist/plugins/preferences/stores/postgres-store.d.ts.map +1 -0
  68. package/dist/plugins/preferences/stores/postgres-store.js +181 -0
  69. package/dist/plugins/preferences/stores/postgres-store.js.map +1 -0
  70. package/dist/plugins/preferences/types.d.ts +91 -0
  71. package/dist/plugins/preferences/types.d.ts.map +1 -0
  72. package/dist/plugins/preferences/types.js +10 -0
  73. package/dist/plugins/preferences/types.js.map +1 -0
  74. package/dist/plugins/users/__tests__/users-plugin.test.d.ts +9 -0
  75. package/dist/plugins/users/__tests__/users-plugin.test.d.ts.map +1 -0
  76. package/dist/plugins/users/__tests__/users-plugin.test.js +546 -0
  77. package/dist/plugins/users/__tests__/users-plugin.test.js.map +1 -0
  78. package/dist/plugins/users/index.d.ts +2 -2
  79. package/dist/plugins/users/index.d.ts.map +1 -1
  80. package/dist/plugins/users/index.js +1 -1
  81. package/dist/plugins/users/index.js.map +1 -1
  82. package/dist/plugins/users/types.d.ts +36 -0
  83. package/dist/plugins/users/types.d.ts.map +1 -1
  84. package/dist/plugins/users/users-plugin.d.ts +8 -2
  85. package/dist/plugins/users/users-plugin.d.ts.map +1 -1
  86. package/dist/plugins/users/users-plugin.js +122 -5
  87. package/dist/plugins/users/users-plugin.js.map +1 -1
  88. package/dist-ui/assets/{index-Bsp2ntcw.js → index-BY8OxNgO.js} +112 -112
  89. package/dist-ui/assets/index-BY8OxNgO.js.map +1 -0
  90. package/dist-ui/index.html +1 -1
  91. package/dist-ui-lib/api/controlPanelApi.d.ts +53 -7
  92. package/dist-ui-lib/dashboard/WidgetComponentRegistry.d.ts +9 -5
  93. package/dist-ui-lib/dashboard/builtInWidgets.d.ts +7 -1
  94. package/dist-ui-lib/index.js +2382 -3651
  95. package/dist-ui-lib/index.js.map +1 -1
  96. package/dist-ui-lib/pages/AuthPage.d.ts +1 -0
  97. package/dist-ui-lib/pages/PluginsPage.d.ts +1 -0
  98. package/package.json +7 -2
  99. package/src/core/control-panel.ts +33 -2
  100. package/src/core/plugin-registry.ts +63 -0
  101. package/src/index.ts +7 -0
  102. package/src/plugins/auth/adapters/index.ts +1 -0
  103. package/src/plugins/auth/adapters/supabase-adapter.ts +22 -14
  104. package/src/plugins/auth/adapters/supertokens-adapter.ts +326 -0
  105. package/src/plugins/auth/env-config.ts +572 -0
  106. package/src/plugins/auth/index.ts +9 -0
  107. package/src/plugins/auth/supertokens-adapter.test.ts +621 -0
  108. package/src/plugins/auth/types.ts +80 -0
  109. package/src/plugins/cache-plugin.test.ts +3 -0
  110. package/src/plugins/index.ts +26 -0
  111. package/src/plugins/postgres-plugin.test.ts +3 -0
  112. package/src/plugins/preferences/__tests__/deep-merge.test.ts +242 -0
  113. package/src/plugins/preferences/__tests__/preferences-plugin.test.ts +350 -0
  114. package/src/plugins/preferences/index.ts +30 -0
  115. package/src/plugins/preferences/preferences-plugin.ts +270 -0
  116. package/src/plugins/preferences/stores/index.ts +9 -0
  117. package/src/plugins/preferences/stores/postgres-store.ts +252 -0
  118. package/src/plugins/preferences/types.ts +100 -0
  119. package/src/plugins/users/__tests__/users-plugin.test.ts +690 -0
  120. package/src/plugins/users/index.ts +3 -0
  121. package/src/plugins/users/types.ts +38 -0
  122. package/src/plugins/users/users-plugin.ts +142 -5
  123. package/ui/src/App.tsx +4 -1
  124. package/ui/src/api/controlPanelApi.ts +100 -1
  125. package/ui/src/components/ControlPanelApp.tsx +3 -0
  126. package/ui/src/dashboard/PluginWidgetRenderer.tsx +13 -10
  127. package/ui/src/dashboard/WidgetComponentRegistry.tsx +13 -9
  128. package/ui/src/dashboard/builtInWidgets.tsx +8 -2
  129. package/ui/src/pages/AuthPage.tsx +259 -0
  130. package/ui/src/pages/PluginsPage.tsx +394 -0
  131. package/ui/vite.lib.config.ts +5 -0
  132. package/dist-ui/assets/index-Bsp2ntcw.js.map +0 -1
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Auth Plugin Environment Configuration
3
+ *
4
+ * Factory function and utilities for configuring auth adapters via environment variables.
5
+ * Supports all adapters: Auth0, Supabase, Supertokens, Basic.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import { createAuthPlugin } from './auth-plugin.js';
10
+ import { auth0Adapter } from './adapters/auth0-adapter.js';
11
+ import { supabaseAdapter } from './adapters/supabase-adapter.js';
12
+ import { supertokensAdapter } from './adapters/supertokens-adapter.js';
13
+ import { basicAdapter } from './adapters/basic-adapter.js';
14
+ // ═══════════════════════════════════════════════════════════════════════════
15
+ // Module State
16
+ // ═══════════════════════════════════════════════════════════════════════════
17
+ let currentStatus = {
18
+ state: 'disabled',
19
+ adapter: null,
20
+ };
21
+ // ═══════════════════════════════════════════════════════════════════════════
22
+ // Environment Variable Helpers
23
+ // ═══════════════════════════════════════════════════════════════════════════
24
+ /**
25
+ * Get an environment variable, treating empty strings as undefined
26
+ */
27
+ function getEnv(key) {
28
+ const value = process.env[key];
29
+ if (value === undefined || value === null || value.trim() === '') {
30
+ return undefined;
31
+ }
32
+ return value.trim();
33
+ }
34
+ /**
35
+ * Parse a boolean environment variable
36
+ * Supports: true/false, 1/0, yes/no (case-insensitive)
37
+ */
38
+ function getEnvBool(key, defaultValue) {
39
+ const value = getEnv(key);
40
+ if (value === undefined) {
41
+ return defaultValue;
42
+ }
43
+ const lower = value.toLowerCase();
44
+ if (['true', '1', 'yes'].includes(lower)) {
45
+ return true;
46
+ }
47
+ if (['false', '0', 'no'].includes(lower)) {
48
+ return false;
49
+ }
50
+ return defaultValue;
51
+ }
52
+ /**
53
+ * Parse a comma-separated list environment variable
54
+ */
55
+ function getEnvList(key) {
56
+ const value = getEnv(key);
57
+ if (value === undefined) {
58
+ return undefined;
59
+ }
60
+ return value
61
+ .split(',')
62
+ .map((s) => s.trim())
63
+ .filter((s) => s.length > 0);
64
+ }
65
+ /**
66
+ * Mask a sensitive value for display
67
+ */
68
+ function maskValue(value) {
69
+ if (value.length <= 4) {
70
+ return '****';
71
+ }
72
+ return value.substring(0, 2) + '*'.repeat(Math.min(value.length - 4, 20)) + value.substring(value.length - 2);
73
+ }
74
+ /**
75
+ * Parse Supertokens configuration from environment variables
76
+ */
77
+ function parseSupertokensEnv() {
78
+ const errors = [];
79
+ const connectionUri = getEnv('SUPERTOKENS_CONNECTION_URI');
80
+ const appName = getEnv('SUPERTOKENS_APP_NAME');
81
+ const apiDomain = getEnv('SUPERTOKENS_API_DOMAIN');
82
+ const websiteDomain = getEnv('SUPERTOKENS_WEBSITE_DOMAIN');
83
+ // Check required vars
84
+ if (!connectionUri)
85
+ errors.push('SUPERTOKENS_CONNECTION_URI');
86
+ if (!appName)
87
+ errors.push('SUPERTOKENS_APP_NAME');
88
+ if (!apiDomain)
89
+ errors.push('SUPERTOKENS_API_DOMAIN');
90
+ if (!websiteDomain)
91
+ errors.push('SUPERTOKENS_WEBSITE_DOMAIN');
92
+ if (errors.length > 0) {
93
+ return { config: null, errors };
94
+ }
95
+ // Build config
96
+ const config = {
97
+ connectionUri: connectionUri,
98
+ appName: appName,
99
+ apiDomain: apiDomain,
100
+ websiteDomain: websiteDomain,
101
+ apiKey: getEnv('SUPERTOKENS_API_KEY'),
102
+ apiBasePath: getEnv('SUPERTOKENS_API_BASE_PATH') ?? '/auth',
103
+ websiteBasePath: getEnv('SUPERTOKENS_WEBSITE_BASE_PATH') ?? '/auth',
104
+ enableEmailPassword: getEnvBool('SUPERTOKENS_ENABLE_EMAIL_PASSWORD', true),
105
+ };
106
+ // Parse social providers
107
+ const googleClientId = getEnv('SUPERTOKENS_GOOGLE_CLIENT_ID');
108
+ const googleClientSecret = getEnv('SUPERTOKENS_GOOGLE_CLIENT_SECRET');
109
+ const githubClientId = getEnv('SUPERTOKENS_GITHUB_CLIENT_ID');
110
+ const githubClientSecret = getEnv('SUPERTOKENS_GITHUB_CLIENT_SECRET');
111
+ const appleClientId = getEnv('SUPERTOKENS_APPLE_CLIENT_ID');
112
+ const appleClientSecret = getEnv('SUPERTOKENS_APPLE_CLIENT_SECRET');
113
+ const appleKeyId = getEnv('SUPERTOKENS_APPLE_KEY_ID');
114
+ const appleTeamId = getEnv('SUPERTOKENS_APPLE_TEAM_ID');
115
+ // Only add social providers if both client ID and secret are provided
116
+ if (googleClientId && googleClientSecret) {
117
+ config.socialProviders = config.socialProviders || {};
118
+ config.socialProviders.google = {
119
+ clientId: googleClientId,
120
+ clientSecret: googleClientSecret,
121
+ };
122
+ }
123
+ if (githubClientId && githubClientSecret) {
124
+ config.socialProviders = config.socialProviders || {};
125
+ config.socialProviders.github = {
126
+ clientId: githubClientId,
127
+ clientSecret: githubClientSecret,
128
+ };
129
+ }
130
+ if (appleClientId && appleClientSecret && appleKeyId && appleTeamId) {
131
+ config.socialProviders = config.socialProviders || {};
132
+ config.socialProviders.apple = {
133
+ clientId: appleClientId,
134
+ clientSecret: appleClientSecret,
135
+ keyId: appleKeyId,
136
+ teamId: appleTeamId,
137
+ };
138
+ }
139
+ return { config, errors: [] };
140
+ }
141
+ /**
142
+ * Parse Auth0 configuration from environment variables
143
+ */
144
+ function parseAuth0Env() {
145
+ const errors = [];
146
+ const domain = getEnv('AUTH0_DOMAIN');
147
+ const clientId = getEnv('AUTH0_CLIENT_ID');
148
+ const clientSecret = getEnv('AUTH0_CLIENT_SECRET');
149
+ const baseUrl = getEnv('AUTH0_BASE_URL');
150
+ const secret = getEnv('AUTH0_SECRET');
151
+ // Check required vars
152
+ if (!domain)
153
+ errors.push('AUTH0_DOMAIN');
154
+ if (!clientId)
155
+ errors.push('AUTH0_CLIENT_ID');
156
+ if (!clientSecret)
157
+ errors.push('AUTH0_CLIENT_SECRET');
158
+ if (!baseUrl)
159
+ errors.push('AUTH0_BASE_URL');
160
+ if (!secret)
161
+ errors.push('AUTH0_SECRET');
162
+ if (errors.length > 0) {
163
+ return { config: null, errors };
164
+ }
165
+ // Build config
166
+ const config = {
167
+ domain: domain,
168
+ clientId: clientId,
169
+ clientSecret: clientSecret,
170
+ baseUrl: baseUrl,
171
+ secret: secret,
172
+ audience: getEnv('AUTH0_AUDIENCE'),
173
+ scopes: getEnvList('AUTH0_SCOPES') ?? ['openid', 'profile', 'email'],
174
+ allowedRoles: getEnvList('AUTH0_ALLOWED_ROLES'),
175
+ allowedDomains: getEnvList('AUTH0_ALLOWED_DOMAINS'),
176
+ exposeAccessToken: getEnvBool('AUTH0_EXPOSE_ACCESS_TOKEN', false),
177
+ routes: {
178
+ login: getEnv('AUTH0_LOGIN_PATH') ?? '/login',
179
+ logout: getEnv('AUTH0_LOGOUT_PATH') ?? '/logout',
180
+ callback: getEnv('AUTH0_CALLBACK_PATH') ?? '/callback',
181
+ },
182
+ };
183
+ return { config, errors: [] };
184
+ }
185
+ /**
186
+ * Parse Supabase configuration from environment variables
187
+ */
188
+ function parseSupabaseEnv() {
189
+ const errors = [];
190
+ const url = getEnv('SUPABASE_URL');
191
+ const anonKey = getEnv('SUPABASE_ANON_KEY');
192
+ // Check required vars
193
+ if (!url)
194
+ errors.push('SUPABASE_URL');
195
+ if (!anonKey)
196
+ errors.push('SUPABASE_ANON_KEY');
197
+ if (errors.length > 0) {
198
+ return { config: null, errors };
199
+ }
200
+ const config = {
201
+ url: url,
202
+ anonKey: anonKey,
203
+ };
204
+ return { config, errors: [] };
205
+ }
206
+ /**
207
+ * Parse Basic Auth configuration from environment variables
208
+ */
209
+ function parseBasicAuthEnv() {
210
+ const errors = [];
211
+ const username = getEnv('BASIC_AUTH_USERNAME');
212
+ const password = getEnv('BASIC_AUTH_PASSWORD');
213
+ // Check required vars
214
+ if (!username)
215
+ errors.push('BASIC_AUTH_USERNAME');
216
+ if (!password)
217
+ errors.push('BASIC_AUTH_PASSWORD');
218
+ if (errors.length > 0) {
219
+ return { config: null, errors };
220
+ }
221
+ const config = {
222
+ username: username,
223
+ password: password,
224
+ realm: getEnv('BASIC_AUTH_REALM') ?? 'Protected',
225
+ };
226
+ return { config, errors: [] };
227
+ }
228
+ // ═══════════════════════════════════════════════════════════════════════════
229
+ // Factory Function
230
+ // ═══════════════════════════════════════════════════════════════════════════
231
+ /**
232
+ * Valid adapter names
233
+ */
234
+ const VALID_ADAPTERS = ['supertokens', 'auth0', 'supabase', 'basic'];
235
+ /**
236
+ * Create an auth plugin configured from environment variables.
237
+ *
238
+ * The plugin state depends on environment configuration:
239
+ * - **disabled**: AUTH_ADAPTER not set - no authentication middleware is applied
240
+ * - **enabled**: Valid configuration - adapter is active and working
241
+ * - **error**: Invalid configuration - plugin is disabled with error details
242
+ *
243
+ * @example
244
+ * ```typescript
245
+ * // Zero-config setup - reads everything from env vars
246
+ * const authPlugin = createAuthPluginFromEnv();
247
+ *
248
+ * // With overrides
249
+ * const authPlugin = createAuthPluginFromEnv({
250
+ * excludePaths: ['/health', '/metrics'],
251
+ * authRequired: true,
252
+ * });
253
+ * ```
254
+ *
255
+ * @param options - Optional overrides (env vars take precedence for adapter config)
256
+ * @returns A Plugin instance
257
+ */
258
+ export function createAuthPluginFromEnv(options) {
259
+ const adapterName = getEnv('AUTH_ADAPTER')?.toLowerCase();
260
+ // No adapter specified - return disabled plugin
261
+ if (!adapterName) {
262
+ currentStatus = {
263
+ state: 'disabled',
264
+ adapter: null,
265
+ };
266
+ return createDisabledPlugin();
267
+ }
268
+ // Validate adapter name
269
+ if (!VALID_ADAPTERS.includes(adapterName)) {
270
+ const error = `Invalid AUTH_ADAPTER value: "${adapterName}". Valid options: ${VALID_ADAPTERS.join(', ')}`;
271
+ currentStatus = {
272
+ state: 'error',
273
+ adapter: null,
274
+ error,
275
+ };
276
+ return createErrorPlugin(error);
277
+ }
278
+ // Parse adapter-specific configuration
279
+ let parseResult;
280
+ switch (adapterName) {
281
+ case 'supertokens':
282
+ parseResult = parseSupertokensEnv();
283
+ break;
284
+ case 'auth0':
285
+ parseResult = parseAuth0Env();
286
+ break;
287
+ case 'supabase':
288
+ parseResult = parseSupabaseEnv();
289
+ break;
290
+ case 'basic':
291
+ parseResult = parseBasicAuthEnv();
292
+ break;
293
+ }
294
+ // Check for parsing errors
295
+ if (parseResult.errors.length > 0) {
296
+ const error = `Missing required environment variables for ${adapterName} adapter: ${parseResult.errors.join(', ')}`;
297
+ currentStatus = {
298
+ state: 'error',
299
+ adapter: adapterName,
300
+ error,
301
+ missingVars: parseResult.errors,
302
+ };
303
+ return createErrorPlugin(error);
304
+ }
305
+ // Create the adapter
306
+ let adapter;
307
+ switch (adapterName) {
308
+ case 'supertokens':
309
+ adapter = supertokensAdapter(parseResult.config);
310
+ break;
311
+ case 'auth0':
312
+ adapter = auth0Adapter(parseResult.config);
313
+ break;
314
+ case 'supabase':
315
+ adapter = supabaseAdapter(parseResult.config);
316
+ break;
317
+ case 'basic':
318
+ adapter = basicAdapter(parseResult.config);
319
+ break;
320
+ }
321
+ // Build plugin configuration
322
+ const excludePaths = options?.excludePaths ?? getEnvList('AUTH_EXCLUDE_PATHS') ?? [];
323
+ const authRequired = options?.authRequired ?? getEnvBool('AUTH_REQUIRED', true);
324
+ const debug = options?.debug ?? getEnvBool('AUTH_DEBUG', false);
325
+ const pluginConfig = {
326
+ adapter,
327
+ excludePaths,
328
+ authRequired,
329
+ debug,
330
+ onUnauthorized: options?.onUnauthorized,
331
+ };
332
+ // Update status
333
+ currentStatus = {
334
+ state: 'enabled',
335
+ adapter: adapterName,
336
+ config: getMaskedConfig(adapterName),
337
+ };
338
+ // Create the plugin
339
+ const basePlugin = createAuthPlugin(pluginConfig);
340
+ // Wrap to add config status routes
341
+ return {
342
+ ...basePlugin,
343
+ async onStart(pluginConfig, registry) {
344
+ // Call base plugin onStart
345
+ await basePlugin.onStart?.(pluginConfig, registry);
346
+ // Add config status routes
347
+ registerConfigRoutes(registry);
348
+ },
349
+ };
350
+ }
351
+ // ═══════════════════════════════════════════════════════════════════════════
352
+ // Status & Config API
353
+ // ═══════════════════════════════════════════════════════════════════════════
354
+ /**
355
+ * Get current auth plugin status
356
+ */
357
+ export function getAuthStatus() {
358
+ return { ...currentStatus };
359
+ }
360
+ /**
361
+ * Get masked configuration for the current adapter
362
+ */
363
+ function getMaskedConfig(adapter) {
364
+ const config = {};
365
+ // Sensitive keys that should be masked
366
+ const sensitiveKeys = [
367
+ 'SECRET',
368
+ 'PASSWORD',
369
+ 'KEY',
370
+ 'TOKEN',
371
+ 'CREDENTIAL',
372
+ 'ANON_KEY',
373
+ 'API_KEY',
374
+ 'CLIENT_SECRET',
375
+ ];
376
+ const isSensitive = (key) => {
377
+ const upper = key.toUpperCase();
378
+ return sensitiveKeys.some((s) => upper.includes(s));
379
+ };
380
+ // Get all env vars for the adapter
381
+ const prefixes = {
382
+ supertokens: ['SUPERTOKENS_'],
383
+ auth0: ['AUTH0_'],
384
+ supabase: ['SUPABASE_'],
385
+ basic: ['BASIC_AUTH_'],
386
+ };
387
+ for (const [key, value] of Object.entries(process.env)) {
388
+ const matchesPrefix = prefixes[adapter].some((p) => key.startsWith(p));
389
+ if (matchesPrefix && value) {
390
+ config[key] = isSensitive(key) ? maskValue(value) : value;
391
+ }
392
+ }
393
+ // Add general auth vars
394
+ const generalVars = ['AUTH_ADAPTER', 'AUTH_REQUIRED', 'AUTH_EXCLUDE_PATHS', 'AUTH_DEBUG'];
395
+ for (const key of generalVars) {
396
+ const value = process.env[key];
397
+ if (value) {
398
+ config[key] = value;
399
+ }
400
+ }
401
+ return config;
402
+ }
403
+ /**
404
+ * Register config API routes
405
+ */
406
+ function registerConfigRoutes(registry) {
407
+ // GET /api/auth/config/status - Get current auth status
408
+ registry.addRoute({
409
+ method: 'get',
410
+ path: '/api/auth/config/status',
411
+ pluginId: 'auth',
412
+ handler: (_req, res) => {
413
+ res.json(getAuthStatus());
414
+ },
415
+ });
416
+ // GET /api/auth/config - Get current configuration (masked)
417
+ registry.addRoute({
418
+ method: 'get',
419
+ path: '/api/auth/config',
420
+ pluginId: 'auth',
421
+ handler: (_req, res) => {
422
+ const status = getAuthStatus();
423
+ res.json({
424
+ state: status.state,
425
+ adapter: status.adapter,
426
+ config: status.config || {},
427
+ error: status.error,
428
+ missingVars: status.missingVars,
429
+ });
430
+ },
431
+ });
432
+ }
433
+ // ═══════════════════════════════════════════════════════════════════════════
434
+ // Disabled & Error Plugins
435
+ // ═══════════════════════════════════════════════════════════════════════════
436
+ /**
437
+ * Create a disabled plugin (no auth middleware)
438
+ */
439
+ function createDisabledPlugin() {
440
+ return {
441
+ id: 'auth',
442
+ name: 'Auth Plugin (Disabled)',
443
+ version: '1.0.0',
444
+ async onStart(_pluginConfig, registry) {
445
+ const logger = registry.getLogger('auth');
446
+ logger.info('Auth plugin disabled - AUTH_ADAPTER not set');
447
+ // Register status routes even when disabled
448
+ registerConfigRoutes(registry);
449
+ },
450
+ async onStop() {
451
+ // Nothing to cleanup
452
+ },
453
+ };
454
+ }
455
+ /**
456
+ * Create an error plugin (auth disabled due to configuration error)
457
+ */
458
+ function createErrorPlugin(error) {
459
+ return {
460
+ id: 'auth',
461
+ name: 'Auth Plugin (Error)',
462
+ version: '1.0.0',
463
+ async onStart(_pluginConfig, registry) {
464
+ const logger = registry.getLogger('auth');
465
+ logger.error(`Auth plugin error: ${error}`);
466
+ // Register status routes so admin can see the error
467
+ registerConfigRoutes(registry);
468
+ },
469
+ async onStop() {
470
+ // Nothing to cleanup
471
+ },
472
+ };
473
+ }
474
+ // ═══════════════════════════════════════════════════════════════════════════
475
+ // Exports for Testing
476
+ // ═══════════════════════════════════════════════════════════════════════════
477
+ // Export internal functions for testing
478
+ export const __testing = {
479
+ parseSupertokensEnv,
480
+ parseAuth0Env,
481
+ parseSupabaseEnv,
482
+ parseBasicAuthEnv,
483
+ getEnv,
484
+ getEnvBool,
485
+ getEnvList,
486
+ maskValue,
487
+ VALID_ADAPTERS,
488
+ };
489
+ //# sourceMappingURL=env-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.js","sourceRoot":"","sources":["../../../src/plugins/auth/env-config.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@
4
4
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
5
  */
6
6
  export { createAuthPlugin, isAuthenticated, getAuthenticatedUser, getAccessToken, requireAuth, requireRoles, requireAnyRole, } from './auth-plugin.js';
7
- export type { AuthPluginConfig, AuthAdapter, AuthenticatedUser, AuthenticatedRequest, Auth0AdapterConfig, SupabaseAdapterConfig, BasicAdapterConfig, } from './types.js';
7
+ export { createAuthPluginFromEnv, getAuthStatus } from './env-config.js';
8
+ export type { AuthPluginConfig, AuthAdapter, AuthenticatedUser, AuthenticatedRequest, Auth0AdapterConfig, SupabaseAdapterConfig, BasicAdapterConfig, SupertokensAdapterConfig, AuthPluginState, AuthEnvPluginOptions, AuthConfigStatus, } from './types.js';
8
9
  export { isAuthenticatedRequest } from './types.js';
9
10
  export { auth0Adapter } from './adapters/auth0-adapter.js';
10
11
  export { basicAdapter } from './adapters/basic-adapter.js';
11
12
  export { supabaseAdapter } from './adapters/supabase-adapter.js';
13
+ export { supertokensAdapter } from './adapters/supertokens-adapter.js';
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGzE,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EAExB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -5,9 +5,12 @@
5
5
  */
6
6
  // Main plugin
7
7
  export { createAuthPlugin, isAuthenticated, getAuthenticatedUser, getAccessToken, requireAuth, requireRoles, requireAnyRole, } from './auth-plugin.js';
8
+ // Environment-based configuration
9
+ export { createAuthPluginFromEnv, getAuthStatus } from './env-config.js';
8
10
  export { isAuthenticatedRequest } from './types.js';
9
11
  // Adapters
10
12
  export { auth0Adapter } from './adapters/auth0-adapter.js';
11
13
  export { basicAdapter } from './adapters/basic-adapter.js';
12
14
  export { supabaseAdapter } from './adapters/supabase-adapter.js';
15
+ export { supertokensAdapter } from './adapters/supertokens-adapter.js';
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc;AACd,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAY1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc;AACd,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,kCAAkC;AAClC,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiBzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Supertokens Adapter Tests
3
+ *
4
+ * Unit tests for the Supertokens authentication adapter.
5
+ * Tests against supertokens-node v20+ API.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=supertokens-adapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supertokens-adapter.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/supertokens-adapter.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}