@bloomneo/appkit 1.2.9 → 1.5.2

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 (118) hide show
  1. package/AGENTS.md +195 -0
  2. package/CHANGELOG.md +253 -0
  3. package/README.md +147 -799
  4. package/bin/commands/generate.js +7 -7
  5. package/cookbook/README.md +26 -0
  6. package/cookbook/api-key-service.ts +106 -0
  7. package/cookbook/auth-protected-crud.ts +112 -0
  8. package/cookbook/file-upload-pipeline.ts +113 -0
  9. package/cookbook/multi-tenant-saas.ts +87 -0
  10. package/cookbook/real-time-chat.ts +121 -0
  11. package/dist/auth/auth.d.ts +21 -4
  12. package/dist/auth/auth.d.ts.map +1 -1
  13. package/dist/auth/auth.js +56 -44
  14. package/dist/auth/auth.js.map +1 -1
  15. package/dist/auth/defaults.d.ts +1 -1
  16. package/dist/auth/defaults.js +35 -35
  17. package/dist/cache/cache.d.ts +29 -6
  18. package/dist/cache/cache.d.ts.map +1 -1
  19. package/dist/cache/cache.js +72 -44
  20. package/dist/cache/cache.js.map +1 -1
  21. package/dist/cache/defaults.js +29 -29
  22. package/dist/cache/index.d.ts +19 -10
  23. package/dist/cache/index.d.ts.map +1 -1
  24. package/dist/cache/index.js +21 -18
  25. package/dist/cache/index.js.map +1 -1
  26. package/dist/config/defaults.d.ts +1 -1
  27. package/dist/config/defaults.js +11 -11
  28. package/dist/config/index.d.ts +3 -3
  29. package/dist/config/index.js +4 -4
  30. package/dist/database/adapters/mongoose.d.ts +4 -4
  31. package/dist/database/adapters/mongoose.js +7 -7
  32. package/dist/database/adapters/prisma.d.ts +4 -4
  33. package/dist/database/adapters/prisma.js +7 -7
  34. package/dist/database/defaults.d.ts +1 -1
  35. package/dist/database/defaults.js +4 -4
  36. package/dist/database/index.js +2 -2
  37. package/dist/database/index.js.map +1 -1
  38. package/dist/email/defaults.js +26 -26
  39. package/dist/email/index.js +7 -7
  40. package/dist/email/strategies/resend.js +1 -1
  41. package/dist/error/defaults.d.ts +1 -1
  42. package/dist/error/defaults.js +13 -13
  43. package/dist/error/error.d.ts +12 -0
  44. package/dist/error/error.d.ts.map +1 -1
  45. package/dist/error/error.js +19 -0
  46. package/dist/error/error.js.map +1 -1
  47. package/dist/error/index.d.ts +14 -3
  48. package/dist/error/index.d.ts.map +1 -1
  49. package/dist/error/index.js +14 -3
  50. package/dist/error/index.js.map +1 -1
  51. package/dist/event/defaults.js +35 -35
  52. package/dist/event/index.js +7 -7
  53. package/dist/logger/defaults.d.ts +1 -1
  54. package/dist/logger/defaults.js +40 -40
  55. package/dist/logger/index.d.ts +1 -0
  56. package/dist/logger/index.d.ts.map +1 -1
  57. package/dist/logger/index.js.map +1 -1
  58. package/dist/logger/logger.d.ts +8 -0
  59. package/dist/logger/logger.d.ts.map +1 -1
  60. package/dist/logger/logger.js +13 -3
  61. package/dist/logger/logger.js.map +1 -1
  62. package/dist/logger/transports/console.js +2 -2
  63. package/dist/logger/transports/http.d.ts +1 -1
  64. package/dist/logger/transports/http.js +2 -2
  65. package/dist/logger/transports/webhook.d.ts +1 -1
  66. package/dist/logger/transports/webhook.js +3 -3
  67. package/dist/queue/defaults.d.ts +2 -2
  68. package/dist/queue/defaults.js +38 -38
  69. package/dist/security/defaults.d.ts +1 -1
  70. package/dist/security/defaults.js +30 -30
  71. package/dist/security/index.d.ts +1 -1
  72. package/dist/security/index.js +3 -3
  73. package/dist/security/security.d.ts +1 -1
  74. package/dist/security/security.js +4 -4
  75. package/dist/storage/defaults.js +26 -26
  76. package/dist/storage/index.js +3 -3
  77. package/dist/util/defaults.d.ts +1 -1
  78. package/dist/util/defaults.js +41 -41
  79. package/dist/util/env.d.ts +35 -0
  80. package/dist/util/env.d.ts.map +1 -0
  81. package/dist/util/env.js +50 -0
  82. package/dist/util/env.js.map +1 -0
  83. package/dist/util/errors.d.ts +52 -0
  84. package/dist/util/errors.d.ts.map +1 -0
  85. package/dist/util/errors.js +82 -0
  86. package/dist/util/errors.js.map +1 -0
  87. package/dist/util/util.js +1 -1
  88. package/examples/.env.example +80 -0
  89. package/examples/README.md +16 -0
  90. package/examples/auth.ts +228 -0
  91. package/examples/cache.ts +36 -0
  92. package/examples/config.ts +45 -0
  93. package/examples/database.ts +69 -0
  94. package/examples/email.ts +53 -0
  95. package/examples/error.ts +50 -0
  96. package/examples/event.ts +42 -0
  97. package/examples/logger.ts +41 -0
  98. package/examples/queue.ts +58 -0
  99. package/examples/security.ts +46 -0
  100. package/examples/storage.ts +44 -0
  101. package/examples/util.ts +47 -0
  102. package/llms.txt +591 -0
  103. package/package.json +19 -10
  104. package/src/auth/README.md +850 -0
  105. package/src/cache/README.md +756 -0
  106. package/src/config/README.md +604 -0
  107. package/src/database/README.md +818 -0
  108. package/src/email/README.md +759 -0
  109. package/src/error/README.md +660 -0
  110. package/src/event/README.md +729 -0
  111. package/src/logger/README.md +435 -0
  112. package/src/queue/README.md +851 -0
  113. package/src/security/README.md +612 -0
  114. package/src/storage/README.md +1008 -0
  115. package/src/util/README.md +955 -0
  116. package/bin/templates/backend/docs/APPKIT_CLI.md +0 -507
  117. package/bin/templates/backend/docs/APPKIT_COMMENTS_GUIDELINES.md +0 -61
  118. package/bin/templates/backend/docs/APPKIT_LLM_GUIDE.md +0 -2539
@@ -65,15 +65,15 @@ function setNestedValue(obj, path, value) {
65
65
  function validateEnvironment() {
66
66
  const nodeEnv = process.env.NODE_ENV;
67
67
  if (nodeEnv && !['development', 'production', 'test', 'staging'].includes(nodeEnv)) {
68
- console.warn(`[VoilaJSX AppKit] Unusual NODE_ENV: "${nodeEnv}". ` +
68
+ console.warn(`[Bloomneo AppKit] Unusual NODE_ENV: "${nodeEnv}". ` +
69
69
  `Expected: development, production, test, or staging.`);
70
70
  }
71
71
  // Validate common required variables in production
72
72
  if (nodeEnv === 'production') {
73
- const requiredProdVars = ['VOILA_SERVICE_NAME'];
73
+ const requiredProdVars = ['BLOOM_SERVICE_NAME'];
74
74
  const missing = requiredProdVars.filter(varName => !process.env[varName]);
75
75
  if (missing.length > 0) {
76
- console.warn(`[VoilaJSX AppKit] Missing recommended production environment variables: ${missing.join(', ')}`);
76
+ console.warn(`[Bloomneo AppKit] Missing recommended production environment variables: ${missing.join(', ')}`);
77
77
  }
78
78
  }
79
79
  }
@@ -81,11 +81,11 @@ function validateEnvironment() {
81
81
  * Check if environment variable is a framework variable that should be ignored
82
82
  * @llm-rule WHEN: Filtering out framework variables from app config parsing
83
83
  * @llm-rule AVOID: Parsing framework variables as app config - they serve different purposes
84
- * @llm-rule NOTE: VoilaJSX AppKit uses VOILA_* and FLUX_* for internal configuration
84
+ * @llm-rule NOTE: Bloomneo AppKit uses BLOOM_* and FLUX_* for internal configuration
85
85
  */
86
86
  function isFrameworkVariable(envKey) {
87
87
  const frameworkPrefixes = [
88
- 'VOILA_', // VoilaJSX AppKit framework configuration
88
+ 'BLOOM_', // Bloomneo AppKit framework configuration
89
89
  'FLUX_', // Flux Framework internal variables
90
90
  'NODE_', // Node.js environment variables
91
91
  'npm_', // npm variables
@@ -146,7 +146,7 @@ function validateEnvVarFormat(envKey) {
146
146
  }
147
147
  // Check for proper UPPER_SNAKE_CASE format
148
148
  if (envKey !== envKey.toUpperCase()) {
149
- console.warn(`[VoilaJSX AppKit] Environment variable "${envKey}" should be uppercase for consistency`);
149
+ console.warn(`[Bloomneo AppKit] Environment variable "${envKey}" should be uppercase for consistency`);
150
150
  }
151
151
  return true;
152
152
  }
@@ -156,20 +156,20 @@ function validateEnvVarFormat(envKey) {
156
156
  * @llm-rule AVOID: Calling repeatedly - validates environment each time, expensive operation
157
157
  * @llm-rule NOTE: Called once at startup, cached globally for performance
158
158
  * @llm-rule CONVENTION: Only processes non-framework variables for user config
159
- * @llm-rule CONVENTION: Variables with VOILA_* and FLUX_* are AppKit internal
159
+ * @llm-rule CONVENTION: Variables with BLOOM_* and FLUX_* are AppKit internal
160
160
  */
161
161
  export function buildConfigFromEnv() {
162
162
  validateEnvironment();
163
163
  const config = {
164
164
  app: {
165
- name: process.env.VOILA_SERVICE_NAME || process.env.npm_package_name || 'voila-app',
165
+ name: process.env.BLOOM_SERVICE_NAME || process.env.npm_package_name || 'voila-app',
166
166
  environment: process.env.NODE_ENV || 'development',
167
167
  port: process.env.PORT ? parseInt(process.env.PORT, 10) : undefined,
168
168
  host: process.env.HOST || undefined,
169
169
  },
170
170
  };
171
171
  // Process ONLY user configuration variables using UPPER_SNAKE_CASE convention
172
- // IMPORTANT: Framework variables (VOILA_*, FLUX_*) are NOT processed as user config
172
+ // IMPORTANT: Framework variables (BLOOM_*, FLUX_*) are NOT processed as user config
173
173
  for (const envKey in process.env) {
174
174
  // Skip framework variables and system variables
175
175
  if (isFrameworkVariable(envKey) || isSystemVariable(envKey)) {
@@ -195,8 +195,8 @@ export function validateConfig(config) {
195
195
  // Production-specific validations
196
196
  if (environment === 'production') {
197
197
  if (!config.app.name || config.app.name === 'voila-app') {
198
- throw new Error('VOILA_SERVICE_NAME is required in production. ' +
199
- 'Set environment variable: VOILA_SERVICE_NAME=your-app-name');
198
+ throw new Error('BLOOM_SERVICE_NAME is required in production. ' +
199
+ 'Set environment variable: BLOOM_SERVICE_NAME=your-app-name');
200
200
  }
201
201
  }
202
202
  // Port validation
@@ -9,14 +9,14 @@
9
9
  * @llm-rule NOTE: Common pattern - configClass.get() → config.get('path', default) → use value
10
10
  *
11
11
  * CRITICAL UNDERSCORE CONVENTION:
12
- * - VOILA_* and FLUX_* = Framework internal variables (NOT parsed as app config)
12
+ * - BLOOM_* and FLUX_* = Framework internal variables (NOT parsed as app config)
13
13
  * - Everything else = Your app config (parsed into config object)
14
14
  *
15
15
  * Examples:
16
- * ✅ VOILA_AUTH_SECRET=secret → Framework internal (not in config object)
16
+ * ✅ BLOOM_AUTH_SECRET=secret → Framework internal (not in config object)
17
17
  * ✅ DATABASE_HOST=localhost → config.get('database.host')
18
18
  * ✅ REDIS_URL=redis://local → config.get('redis.url')
19
- * ❌ VOILA_DATABASE_HOST=localhost → Framework var (won't be parsed as app config)
19
+ * ❌ BLOOM_DATABASE_HOST=localhost → Framework var (won't be parsed as app config)
20
20
  */
21
21
  import { ConfigClass } from './config.js';
22
22
  import { type ConfigValue } from './defaults.js';
@@ -9,14 +9,14 @@
9
9
  * @llm-rule NOTE: Common pattern - configClass.get() → config.get('path', default) → use value
10
10
  *
11
11
  * CRITICAL UNDERSCORE CONVENTION:
12
- * - VOILA_* and FLUX_* = Framework internal variables (NOT parsed as app config)
12
+ * - BLOOM_* and FLUX_* = Framework internal variables (NOT parsed as app config)
13
13
  * - Everything else = Your app config (parsed into config object)
14
14
  *
15
15
  * Examples:
16
- * ✅ VOILA_AUTH_SECRET=secret → Framework internal (not in config object)
16
+ * ✅ BLOOM_AUTH_SECRET=secret → Framework internal (not in config object)
17
17
  * ✅ DATABASE_HOST=localhost → config.get('database.host')
18
18
  * ✅ REDIS_URL=redis://local → config.get('redis.url')
19
- * ❌ VOILA_DATABASE_HOST=localhost → Framework var (won't be parsed as app config)
19
+ * ❌ BLOOM_DATABASE_HOST=localhost → Framework var (won't be parsed as app config)
20
20
  */
21
21
  import { ConfigClass } from './config.js';
22
22
  import { getSmartDefaults } from './defaults.js';
@@ -101,7 +101,7 @@ function getEnvVars() {
101
101
  const envVars = {};
102
102
  for (const [key, value] of Object.entries(process.env)) {
103
103
  // Skip framework variables - only show app config
104
- if (!key.startsWith('VOILA_') &&
104
+ if (!key.startsWith('BLOOM_') &&
105
105
  !key.startsWith('FLUX_') &&
106
106
  !key.startsWith('NODE_') &&
107
107
  !key.startsWith('npm_') &&
@@ -3,7 +3,7 @@
3
3
  * @module @bloomneo/appkit/database
4
4
  * @file src/database/adapters/mongoose.ts
5
5
  *
6
- * @llm-rule WHEN: Using Mongoose ODM with MongoDB databases in VoilaJSX framework
6
+ * @llm-rule WHEN: Using Mongoose ODM with MongoDB databases in Bloomneo framework
7
7
  * @llm-rule AVOID: Using with SQL databases - use prisma adapter instead
8
8
  * @llm-rule NOTE: Auto-discovers apps from /apps directory structure, applies tenant filtering
9
9
  */
@@ -36,7 +36,7 @@ interface MongooseConnection {
36
36
  [key: string]: any;
37
37
  }
38
38
  /**
39
- * Simplified Mongoose adapter with VoilaJSX app discovery
39
+ * Simplified Mongoose adapter with Bloomneo app discovery
40
40
  */
41
41
  export declare class MongooseAdapter {
42
42
  private options;
@@ -54,7 +54,7 @@ export declare class MongooseAdapter {
54
54
  */
55
55
  applyTenantMiddleware(connection: MongooseConnection, tenantId: string, options?: TenantMiddlewareOptions): Promise<MongooseConnection>;
56
56
  /**
57
- * Auto-discover VoilaJSX apps with Mongoose models
57
+ * Auto-discover Bloomneo apps with Mongoose models
58
58
  */
59
59
  discoverApps(): Promise<DiscoveredApp[]>;
60
60
  /**
@@ -82,7 +82,7 @@ export declare class MongooseAdapter {
82
82
  */
83
83
  disconnect(): Promise<void>;
84
84
  /**
85
- * Detect current app from file path (VoilaJSX structure)
85
+ * Detect current app from file path (Bloomneo structure)
86
86
  */
87
87
  private _detectCurrentApp;
88
88
  /**
@@ -3,7 +3,7 @@
3
3
  * @module @bloomneo/appkit/database
4
4
  * @file src/database/adapters/mongoose.ts
5
5
  *
6
- * @llm-rule WHEN: Using Mongoose ODM with MongoDB databases in VoilaJSX framework
6
+ * @llm-rule WHEN: Using Mongoose ODM with MongoDB databases in Bloomneo framework
7
7
  * @llm-rule AVOID: Using with SQL databases - use prisma adapter instead
8
8
  * @llm-rule NOTE: Auto-discovers apps from /apps directory structure, applies tenant filtering
9
9
  */
@@ -11,7 +11,7 @@ import fs from 'fs';
11
11
  import path from 'path';
12
12
  import { createDatabaseError } from '../defaults.js';
13
13
  /**
14
- * Simplified Mongoose adapter with VoilaJSX app discovery
14
+ * Simplified Mongoose adapter with Bloomneo app discovery
15
15
  */
16
16
  export class MongooseAdapter {
17
17
  options;
@@ -182,7 +182,7 @@ export class MongooseAdapter {
182
182
  return connection;
183
183
  }
184
184
  /**
185
- * Auto-discover VoilaJSX apps with Mongoose models
185
+ * Auto-discover Bloomneo apps with Mongoose models
186
186
  */
187
187
  async discoverApps() {
188
188
  if (this.discoveredApps)
@@ -203,7 +203,7 @@ export class MongooseAdapter {
203
203
  .filter((dirent) => dirent.isDirectory())
204
204
  .map((dirent) => dirent.name);
205
205
  for (const appName of appFolders) {
206
- // VoilaJSX standard: apps/{appName}/models or apps/{appName}/src/models
206
+ // Bloomneo standard: apps/{appName}/models or apps/{appName}/src/models
207
207
  const possibleModelPaths = [
208
208
  path.join(appsDir, appName, 'models'),
209
209
  path.join(appsDir, appName, 'src/models'),
@@ -341,7 +341,7 @@ export class MongooseAdapter {
341
341
  }
342
342
  // Private helper methods
343
343
  /**
344
- * Detect current app from file path (VoilaJSX structure)
344
+ * Detect current app from file path (Bloomneo structure)
345
345
  */
346
346
  async _detectCurrentApp() {
347
347
  try {
@@ -380,8 +380,8 @@ export class MongooseAdapter {
380
380
  */
381
381
  _findAppsDirectory() {
382
382
  // Check environment variable first
383
- if (process.env.VOILA_APPS_DIR && fs.existsSync(process.env.VOILA_APPS_DIR)) {
384
- return process.env.VOILA_APPS_DIR;
383
+ if (process.env.BLOOM_APPS_DIR && fs.existsSync(process.env.BLOOM_APPS_DIR)) {
384
+ return process.env.BLOOM_APPS_DIR;
385
385
  }
386
386
  // Search upwards from current directory
387
387
  let currentDir = process.cwd();
@@ -3,7 +3,7 @@
3
3
  * @module @bloomneo/appkit/database
4
4
  * @file src/database/adapters/prisma.ts
5
5
  *
6
- * @llm-rule WHEN: Using Prisma ORM with PostgreSQL, MySQL, or SQLite databases in VoilaJSX framework
6
+ * @llm-rule WHEN: Using Prisma ORM with PostgreSQL, MySQL, or SQLite databases in Bloomneo framework
7
7
  * @llm-rule AVOID: Using with MongoDB - use mongoose adapter instead
8
8
  * @llm-rule NOTE: Auto-discovers apps from /apps directory structure, applies tenant filtering
9
9
  */
@@ -33,7 +33,7 @@ interface PrismaClient {
33
33
  [key: string]: any;
34
34
  }
35
35
  /**
36
- * Simplified Prisma adapter with VoilaJSX app discovery
36
+ * Simplified Prisma adapter with Bloomneo app discovery
37
37
  */
38
38
  export declare class PrismaAdapter {
39
39
  private options;
@@ -50,7 +50,7 @@ export declare class PrismaAdapter {
50
50
  */
51
51
  applyTenantMiddleware(client: PrismaClient, tenantId: string, options?: TenantMiddlewareOptions): Promise<PrismaClient>;
52
52
  /**
53
- * Auto-discover VoilaJSX apps with Prisma clients
53
+ * Auto-discover Bloomneo apps with Prisma clients
54
54
  */
55
55
  discoverApps(): Promise<DiscoveredApp[]>;
56
56
  /**
@@ -78,7 +78,7 @@ export declare class PrismaAdapter {
78
78
  */
79
79
  disconnect(): Promise<void>;
80
80
  /**
81
- * Detect current app from file path (VoilaJSX structure)
81
+ * Detect current app from file path (Bloomneo structure)
82
82
  */
83
83
  private _detectCurrentApp;
84
84
  /**
@@ -3,7 +3,7 @@
3
3
  * @module @bloomneo/appkit/database
4
4
  * @file src/database/adapters/prisma.ts
5
5
  *
6
- * @llm-rule WHEN: Using Prisma ORM with PostgreSQL, MySQL, or SQLite databases in VoilaJSX framework
6
+ * @llm-rule WHEN: Using Prisma ORM with PostgreSQL, MySQL, or SQLite databases in Bloomneo framework
7
7
  * @llm-rule AVOID: Using with MongoDB - use mongoose adapter instead
8
8
  * @llm-rule NOTE: Auto-discovers apps from /apps directory structure, applies tenant filtering
9
9
  */
@@ -11,7 +11,7 @@ import fs from 'fs';
11
11
  import path from 'path';
12
12
  import { createDatabaseError } from '../defaults.js';
13
13
  /**
14
- * Simplified Prisma adapter with VoilaJSX app discovery
14
+ * Simplified Prisma adapter with Bloomneo app discovery
15
15
  */
16
16
  export class PrismaAdapter {
17
17
  options;
@@ -149,7 +149,7 @@ export class PrismaAdapter {
149
149
  return client;
150
150
  }
151
151
  /**
152
- * Auto-discover VoilaJSX apps with Prisma clients
152
+ * Auto-discover Bloomneo apps with Prisma clients
153
153
  */
154
154
  async discoverApps() {
155
155
  if (this.discoveredApps)
@@ -170,7 +170,7 @@ export class PrismaAdapter {
170
170
  .filter((dirent) => dirent.isDirectory())
171
171
  .map((dirent) => dirent.name);
172
172
  for (const appName of appFolders) {
173
- // VoilaJSX standard: apps/{appName}/prisma/generated/client
173
+ // Bloomneo standard: apps/{appName}/prisma/generated/client
174
174
  const clientPath = path.join(appsDir, appName, 'prisma/generated/client/index.js');
175
175
  if (fs.existsSync(clientPath)) {
176
176
  apps.push({
@@ -315,7 +315,7 @@ export class PrismaAdapter {
315
315
  }
316
316
  // Private helper methods
317
317
  /**
318
- * Detect current app from file path (VoilaJSX structure)
318
+ * Detect current app from file path (Bloomneo structure)
319
319
  */
320
320
  async _detectCurrentApp() {
321
321
  try {
@@ -354,8 +354,8 @@ export class PrismaAdapter {
354
354
  */
355
355
  _findAppsDirectory() {
356
356
  // Check environment variable first
357
- if (process.env.VOILA_APPS_DIR && fs.existsSync(process.env.VOILA_APPS_DIR)) {
358
- return process.env.VOILA_APPS_DIR;
357
+ if (process.env.BLOOM_APPS_DIR && fs.existsSync(process.env.BLOOM_APPS_DIR)) {
358
+ return process.env.BLOOM_APPS_DIR;
359
359
  }
360
360
  // Search upwards from current directory
361
361
  let currentDir = process.cwd();
@@ -6,7 +6,7 @@
6
6
  * - DATABASE_URL: Database connection string
7
7
  *
8
8
  * Optional Environment Variables:
9
- * - VOILA_DB_TENANT: Enable tenant mode (auto/true/false)
9
+ * - BLOOM_DB_TENANT: Enable tenant mode (auto/true/false)
10
10
  * - ORG_{NAME}: Organization-specific database URLs
11
11
  *
12
12
  * @module @bloomneo/appkit/database
@@ -6,7 +6,7 @@
6
6
  * - DATABASE_URL: Database connection string
7
7
  *
8
8
  * Optional Environment Variables:
9
- * - VOILA_DB_TENANT: Enable tenant mode (auto/true/false)
9
+ * - BLOOM_DB_TENANT: Enable tenant mode (auto/true/false)
10
10
  * - ORG_{NAME}: Organization-specific database URLs
11
11
  *
12
12
  * @module @bloomneo/appkit/database
@@ -113,14 +113,14 @@ export function validateEnvironment() {
113
113
  else {
114
114
  config.hasDatabase = true;
115
115
  }
116
- const tenantMode = process.env.VOILA_DB_TENANT;
116
+ const tenantMode = process.env.BLOOM_DB_TENANT;
117
117
  if (tenantMode) {
118
118
  const mode = tenantMode.toLowerCase();
119
119
  if (['true', 'auto'].includes(mode)) {
120
120
  config.hasTenants = true;
121
121
  }
122
122
  else if (mode !== 'false') {
123
- warnings.push(`Unknown VOILA_DB_TENANT value: ${tenantMode}. Use 'auto', 'true', or 'false'`);
123
+ warnings.push(`Unknown BLOOM_DB_TENANT value: ${tenantMode}. Use 'auto', 'true', or 'false'`);
124
124
  }
125
125
  }
126
126
  const orgVars = getOrgEnvironmentVars();
@@ -166,7 +166,7 @@ export function getSmartDefaults() {
166
166
  },
167
167
  tenant: {
168
168
  enabled: validation.hasTenants,
169
- mode: process.env.VOILA_DB_TENANT?.toLowerCase() || 'false',
169
+ mode: process.env.BLOOM_DB_TENANT?.toLowerCase() || 'false',
170
170
  fieldName: 'tenant_id',
171
171
  },
172
172
  org: {
@@ -59,7 +59,7 @@ function detectOrg(req) {
59
59
  function detectTenant(req) {
60
60
  if (!req)
61
61
  return null;
62
- if (!process.env.VOILA_DB_TENANT)
62
+ if (!process.env.BLOOM_DB_TENANT)
63
63
  return null;
64
64
  return (req.headers?.['x-tenant-id'] ||
65
65
  req.user?.tenant_id ||
@@ -338,7 +338,7 @@ export const databaseClass = {
338
338
  async disconnect() {
339
339
  const disconnectPromises = [];
340
340
  for (const [key, connection] of connections) {
341
- disconnectPromises.push(this._closeConnection(connection).catch((error) => console.warn(`Error disconnecting ${key}:`, error.message)));
341
+ disconnectPromises.push(this._closeConnection(connection).catch((error) => console.warn(`[@bloomneo/appkit/database] Disconnect warning for "${key}":`, error.message)));
342
342
  }
343
343
  await Promise.all(disconnectPromises);
344
344
  connections.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuCzD,yCAAyC;AACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;AAC3D,IAAI,UAAU,GAAwB,IAAI,CAAC;AAE3C;;GAEG;AACH,SAAS,eAAe;IACtB,IAAI,UAAU;QAAE,OAAO;IAEvB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE;YAC1C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,iCAAiC;gBACjC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;gBAE3B,yCAAyC;gBACzC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAEpB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAS;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,OAAO,CACL,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;QACzB,GAAG,CAAC,IAAI,EAAE,MAAM;QAChB,GAAG,CAAC,MAAM,EAAE,KAAK;QACjB,GAAG,CAAC,KAAK,EAAE,GAAG;QACd,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;QAChC,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAS;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,CACL,GAAG,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;QAC5B,GAAG,CAAC,IAAI,EAAE,SAAS;QACnB,GAAG,CAAC,MAAM,EAAE,QAAQ;QACpB,GAAG,CAAC,KAAK,EAAE,MAAM;QACjB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC;QACnC,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAAQ,EAAE,IAAsB;IAC5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,yBAAyB;YACzB,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,mBAAmB;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAElD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,gCAAgC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACzC,IAAI,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,OAAO,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,WAA0B,IAAI,EAAE,QAAuB,IAAI;IAClG,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;IAEnE,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACpC,CAAC;IAED,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAoB,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAExH,gBAAgB;QAChB,IAAI,MAAM,GAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtD,oCAAoC;QACpC,IAAI,QAAQ,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC9C,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE;gBAC7D,SAAS,EAAE,WAAW;gBACtB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC;QACnC,MAAM,CAAC,SAAS,GAAG,QAAQ,IAAI,SAAS,CAAC;QACzC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QAElB,mBAAmB;QACnB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,WAAW;IAEP,KAAK,CAAS;IACtB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,MAAW,IAAI;QACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAW,IAAI;QAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5E,CAAC;QAED,4CAA4C;QAC5C,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,MAAW,IAAI;QACvB,kCAAkC;QAClC,eAAe,EAAE,CAAC;QAElB,iBAAiB;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAEnC,sBAAsB;QACtB,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAEtE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAW,IAAI;QAC9B,eAAe,EAAE,CAAC;QAElB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAEtE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,EAAE,GAAQ,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YAEjC,2BAA2B;YAC3B,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBACjB,gBAAgB;gBAChB,MAAM,EAAE,CAAC,SAAS,CAAA,UAAU,CAAC;YAC/B,CAAC;iBAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjB,sBAAsB;gBACtB,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,WAAW,CAAC,IAAI;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,WAAW,EAAE,WAAW,CAAC,IAAI;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,MAAW,IAAI;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,MAAW,IAAI;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,MAAW,IAAI;QAC5C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,gEAAgE;QAChE,2DAA2D;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAY,EAAE,MAAW,IAAI;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE9C,2CAA2C;QAC3C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,kBAAkB,GAAoB,EAAE,CAAC;QAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5C,kBAAkB,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CACrD,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAC3D,CACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACtC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,yBAAyB;IAEzB;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAW;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,mDAAmD;gBACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAC7C,CAAC;gBAEF,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;4BAC/C,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;4BAC3B,QAAQ,EAAE,CAAC,WAAW,CAAC;4BACvB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;yBACpC,CAAC,CAAC;wBAEH,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,EAAE;4BAC9B,IAAI,MAAM,CAAC,SAAS;gCAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,uCAAuC;wBACvC,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,MAAW,EAAE,QAAgB;QAChD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,gBAAgB;gBAChB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,UAAU,CAC9C,CAAC;gBAEF,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;4BAC/C,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;yBAC/B,CAAC,CAAC;wBACH,IAAI,MAAM;4BAAE,OAAO,IAAI,CAAC;oBAC1B,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAW,EAAE,QAAgB;QACtD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,6CAA6C;gBAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAC/C,CAAC;gBAEF,MAAM,gBAAgB,GAAU,EAAE,CAAC;gBAEnC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,gBAAgB,CAAC,IAAI,CACnB,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;4BAC3B,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;yBAC/B,CAAC,CACH,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,QAAgB;QAChC,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,UAAe;QACpC,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC3B,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC;iBAAM,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iCAAiC;AACjC,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
@@ -27,14 +27,14 @@ export function getSmartDefaults() {
27
27
  strategy,
28
28
  // Default sender with service identification
29
29
  from: {
30
- name: process.env.VOILA_EMAIL_FROM_NAME || process.env.VOILA_SERVICE_NAME || 'App',
31
- email: process.env.VOILA_EMAIL_FROM_EMAIL || getDefaultFromEmail(strategy),
30
+ name: process.env.BLOOM_EMAIL_FROM_NAME || process.env.BLOOM_SERVICE_NAME || 'App',
31
+ email: process.env.BLOOM_EMAIL_FROM_EMAIL || getDefaultFromEmail(strategy),
32
32
  },
33
33
  // Resend configuration (only used when strategy is 'resend')
34
34
  resend: {
35
35
  apiKey: process.env.RESEND_API_KEY || '',
36
36
  baseURL: process.env.RESEND_BASE_URL || 'https://api.resend.com',
37
- timeout: parseInt(process.env.VOILA_EMAIL_RESEND_TIMEOUT || '30000'),
37
+ timeout: parseInt(process.env.BLOOM_EMAIL_RESEND_TIMEOUT || '30000'),
38
38
  },
39
39
  // SMTP configuration (only used when strategy is 'smtp')
40
40
  smtp: {
@@ -45,14 +45,14 @@ export function getSmartDefaults() {
45
45
  user: process.env.SMTP_USER || '',
46
46
  pass: process.env.SMTP_PASS || '',
47
47
  },
48
- timeout: parseInt(process.env.VOILA_EMAIL_SMTP_TIMEOUT || '30000'),
48
+ timeout: parseInt(process.env.BLOOM_EMAIL_SMTP_TIMEOUT || '30000'),
49
49
  pool: process.env.SMTP_POOL !== 'false', // Default to true for performance
50
50
  },
51
51
  // Console configuration (only used when strategy is 'console')
52
52
  console: {
53
- colorize: process.env.VOILA_EMAIL_CONSOLE_COLOR !== 'false' && !isProduction,
54
- showPreview: process.env.VOILA_EMAIL_CONSOLE_PREVIEW !== 'false' && isDevelopment,
55
- format: process.env.VOILA_EMAIL_CONSOLE_FORMAT || 'simple',
53
+ colorize: process.env.BLOOM_EMAIL_CONSOLE_COLOR !== 'false' && !isProduction,
54
+ showPreview: process.env.BLOOM_EMAIL_CONSOLE_PREVIEW !== 'false' && isDevelopment,
55
+ format: process.env.BLOOM_EMAIL_CONSOLE_FORMAT || 'simple',
56
56
  },
57
57
  // Environment information
58
58
  environment: {
@@ -71,7 +71,7 @@ export function getSmartDefaults() {
71
71
  */
72
72
  function detectEmailStrategy() {
73
73
  // Explicit override wins (for testing/debugging)
74
- const explicit = process.env.VOILA_EMAIL_STRATEGY?.toLowerCase();
74
+ const explicit = process.env.BLOOM_EMAIL_STRATEGY?.toLowerCase();
75
75
  if (explicit === 'resend' || explicit === 'smtp' || explicit === 'console') {
76
76
  return explicit;
77
77
  }
@@ -84,7 +84,7 @@ function detectEmailStrategy() {
84
84
  }
85
85
  // Default to console for development/testing
86
86
  if (process.env.NODE_ENV === 'production') {
87
- console.warn('[VoilaJSX AppKit] No email provider configured in production. ' +
87
+ console.warn('[Bloomneo AppKit] No email provider configured in production. ' +
88
88
  'Using console strategy which will only log emails. ' +
89
89
  'Set RESEND_API_KEY or SMTP_HOST for production email sending.');
90
90
  }
@@ -139,9 +139,9 @@ function isDefaultSecurePort() {
139
139
  */
140
140
  function validateEnvironment() {
141
141
  // Validate email strategy if explicitly set
142
- const strategy = process.env.VOILA_EMAIL_STRATEGY;
142
+ const strategy = process.env.BLOOM_EMAIL_STRATEGY;
143
143
  if (strategy && !['resend', 'smtp', 'console'].includes(strategy.toLowerCase())) {
144
- throw new Error(`Invalid VOILA_EMAIL_STRATEGY: "${strategy}". Must be "resend", "smtp", or "console"`);
144
+ throw new Error(`Invalid BLOOM_EMAIL_STRATEGY: "${strategy}". Must be "resend", "smtp", or "console"`);
145
145
  }
146
146
  // Validate Resend API key format if provided
147
147
  const resendApiKey = process.env.RESEND_API_KEY;
@@ -154,18 +154,18 @@ function validateEnvironment() {
154
154
  validateSmtpConfig();
155
155
  }
156
156
  // Validate FROM email if provided
157
- const fromEmail = process.env.VOILA_EMAIL_FROM_EMAIL;
157
+ const fromEmail = process.env.BLOOM_EMAIL_FROM_EMAIL;
158
158
  if (fromEmail && !isValidEmail(fromEmail)) {
159
- throw new Error(`Invalid VOILA_EMAIL_FROM_EMAIL: "${fromEmail}". Must be a valid email address`);
159
+ throw new Error(`Invalid BLOOM_EMAIL_FROM_EMAIL: "${fromEmail}". Must be a valid email address`);
160
160
  }
161
161
  // Validate numeric values
162
162
  validateNumericEnv('SMTP_PORT', 1, 65535);
163
- validateNumericEnv('VOILA_EMAIL_RESEND_TIMEOUT', 1000, 300000); // 1s to 5min
164
- validateNumericEnv('VOILA_EMAIL_SMTP_TIMEOUT', 1000, 300000); // 1s to 5min
163
+ validateNumericEnv('BLOOM_EMAIL_RESEND_TIMEOUT', 1000, 300000); // 1s to 5min
164
+ validateNumericEnv('BLOOM_EMAIL_SMTP_TIMEOUT', 1000, 300000); // 1s to 5min
165
165
  // Validate console format if provided
166
- const consoleFormat = process.env.VOILA_EMAIL_CONSOLE_FORMAT;
166
+ const consoleFormat = process.env.BLOOM_EMAIL_CONSOLE_FORMAT;
167
167
  if (consoleFormat && !['simple', 'detailed'].includes(consoleFormat)) {
168
- throw new Error(`Invalid VOILA_EMAIL_CONSOLE_FORMAT: "${consoleFormat}". Must be "simple" or "detailed"`);
168
+ throw new Error(`Invalid BLOOM_EMAIL_CONSOLE_FORMAT: "${consoleFormat}". Must be "simple" or "detailed"`);
169
169
  }
170
170
  // Production-specific validations
171
171
  const nodeEnv = process.env.NODE_ENV;
@@ -174,7 +174,7 @@ function validateEnvironment() {
174
174
  }
175
175
  // Validate NODE_ENV
176
176
  if (nodeEnv && !['development', 'production', 'test', 'staging'].includes(nodeEnv)) {
177
- console.warn(`[VoilaJSX AppKit] Unusual NODE_ENV: "${nodeEnv}". ` +
177
+ console.warn(`[Bloomneo AppKit] Unusual NODE_ENV: "${nodeEnv}". ` +
178
178
  `Expected: development, production, test, or staging`);
179
179
  }
180
180
  }
@@ -192,7 +192,7 @@ function validateSmtpConfig() {
192
192
  }
193
193
  // Many SMTP servers require authentication
194
194
  if (!user && !pass) {
195
- console.warn('[VoilaJSX AppKit] SMTP configured without authentication. ' +
195
+ console.warn('[Bloomneo AppKit] SMTP configured without authentication. ' +
196
196
  'Set SMTP_USER and SMTP_PASS if your server requires authentication.');
197
197
  }
198
198
  if (user && !pass) {
@@ -210,15 +210,15 @@ function validateSmtpConfig() {
210
210
  function validateProductionConfig() {
211
211
  const strategy = detectEmailStrategy();
212
212
  if (strategy === 'console') {
213
- console.warn('[VoilaJSX AppKit] Using console email strategy in production. ' +
213
+ console.warn('[Bloomneo AppKit] Using console email strategy in production. ' +
214
214
  'Emails will only be logged, not sent. ' +
215
215
  'Set RESEND_API_KEY or SMTP_HOST for production email sending.');
216
216
  }
217
217
  // Validate FROM email is set in production
218
- const fromEmail = process.env.VOILA_EMAIL_FROM_EMAIL;
218
+ const fromEmail = process.env.BLOOM_EMAIL_FROM_EMAIL;
219
219
  if (!fromEmail) {
220
- console.warn('[VoilaJSX AppKit] No FROM email configured in production. ' +
221
- 'Set VOILA_EMAIL_FROM_EMAIL for professional email sending.');
220
+ console.warn('[Bloomneo AppKit] No FROM email configured in production. ' +
221
+ 'Set BLOOM_EMAIL_FROM_EMAIL for professional email sending.');
222
222
  }
223
223
  }
224
224
  /**
@@ -269,7 +269,7 @@ export function validateProductionRequirements() {
269
269
  const config = getSmartDefaults();
270
270
  if (config.environment.isProduction) {
271
271
  if (config.strategy === 'console') {
272
- console.warn('[VoilaJSX AppKit] Using console email strategy in production. ' +
272
+ console.warn('[Bloomneo AppKit] Using console email strategy in production. ' +
273
273
  'Emails will only be logged, not sent. ' +
274
274
  'Set RESEND_API_KEY or SMTP_HOST for production email sending.');
275
275
  }
@@ -325,10 +325,10 @@ export function validateStartupConfiguration() {
325
325
  // FROM email validation
326
326
  if (!config.from.email || config.from.email.includes('example.com')) {
327
327
  if (config.environment.isProduction) {
328
- errors.push('VOILA_EMAIL_FROM_EMAIL must be set in production');
328
+ errors.push('BLOOM_EMAIL_FROM_EMAIL must be set in production');
329
329
  }
330
330
  else {
331
- warnings.push('VOILA_EMAIL_FROM_EMAIL not configured - using default');
331
+ warnings.push('BLOOM_EMAIL_FROM_EMAIL not configured - using default');
332
332
  }
333
333
  }
334
334
  // Environment-specific warnings
@@ -126,13 +126,13 @@ function validateConfig() {
126
126
  try {
127
127
  const validation = validateStartupConfiguration();
128
128
  if (validation.errors.length > 0) {
129
- console.error('[VoilaJSX AppKit] Email configuration errors:', validation.errors);
129
+ console.error('[Bloomneo AppKit] Email configuration errors:', validation.errors);
130
130
  }
131
131
  if (validation.warnings.length > 0) {
132
- console.warn('[VoilaJSX AppKit] Email configuration warnings:', validation.warnings);
132
+ console.warn('[Bloomneo AppKit] Email configuration warnings:', validation.warnings);
133
133
  }
134
134
  if (validation.ready) {
135
- console.log(`✅ [VoilaJSX AppKit] Email configured with ${validation.strategy} strategy`);
135
+ console.log(`✅ [Bloomneo AppKit] Email configured with ${validation.strategy} strategy`);
136
136
  }
137
137
  return {
138
138
  valid: validation.errors.length === 0,
@@ -144,7 +144,7 @@ function validateConfig() {
144
144
  }
145
145
  catch (error) {
146
146
  const errorMessage = error.message;
147
- console.error('[VoilaJSX AppKit] Email configuration validation failed:', errorMessage);
147
+ console.error('[Bloomneo AppKit] Email configuration validation failed:', errorMessage);
148
148
  return {
149
149
  valid: false,
150
150
  strategy: 'unknown',
@@ -164,13 +164,13 @@ function validateProduction() {
164
164
  try {
165
165
  validateProductionRequirements();
166
166
  if (process.env.NODE_ENV === 'production' && !hasProvider()) {
167
- console.warn('[VoilaJSX AppKit] No email provider configured in production. ' +
167
+ console.warn('[Bloomneo AppKit] No email provider configured in production. ' +
168
168
  'Set RESEND_API_KEY or SMTP_HOST to send real emails.');
169
169
  }
170
- console.log('✅ [VoilaJSX AppKit] Production email requirements validated');
170
+ console.log('✅ [Bloomneo AppKit] Production email requirements validated');
171
171
  }
172
172
  catch (error) {
173
- console.error('[VoilaJSX AppKit] Production email validation failed:', error.message);
173
+ console.error('[Bloomneo AppKit] Production email validation failed:', error.message);
174
174
  throw error;
175
175
  }
176
176
  }
@@ -195,7 +195,7 @@ export class ResendStrategy {
195
195
  headers: {
196
196
  'Authorization': `Bearer ${this.apiKey}`,
197
197
  'Content-Type': 'application/json',
198
- 'User-Agent': 'VoilaJSX-AppKit-Email/1.0.0',
198
+ 'User-Agent': 'Bloomneo-AppKit-Email/1.0.0',
199
199
  },
200
200
  body: JSON.stringify(payload),
201
201
  });
@@ -31,7 +31,7 @@ export interface ErrorConfig {
31
31
  environment: EnvironmentConfig;
32
32
  }
33
33
  /**
34
- * Gets smart defaults using VOILA_ERROR_* environment variables
34
+ * Gets smart defaults using BLOOM_ERROR_* environment variables
35
35
  * @llm-rule WHEN: App startup to get production-ready error configuration
36
36
  * @llm-rule AVOID: Calling repeatedly - expensive validation, cache the result
37
37
  * @llm-rule NOTE: Automatically configures dev vs production error behavior