@bloomneo/appkit 1.5.1 → 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 (111) 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 +25 -25
  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 +8 -8
  28. package/dist/config/index.d.ts +3 -3
  29. package/dist/config/index.js +4 -4
  30. package/dist/database/adapters/mongoose.js +2 -2
  31. package/dist/database/adapters/prisma.js +2 -2
  32. package/dist/database/defaults.d.ts +1 -1
  33. package/dist/database/defaults.js +4 -4
  34. package/dist/database/index.js +2 -2
  35. package/dist/database/index.js.map +1 -1
  36. package/dist/email/defaults.js +20 -20
  37. package/dist/error/defaults.d.ts +1 -1
  38. package/dist/error/defaults.js +12 -12
  39. package/dist/error/error.d.ts +12 -0
  40. package/dist/error/error.d.ts.map +1 -1
  41. package/dist/error/error.js +19 -0
  42. package/dist/error/error.js.map +1 -1
  43. package/dist/error/index.d.ts +14 -3
  44. package/dist/error/index.d.ts.map +1 -1
  45. package/dist/error/index.js +14 -3
  46. package/dist/error/index.js.map +1 -1
  47. package/dist/event/defaults.js +30 -30
  48. package/dist/logger/defaults.d.ts +1 -1
  49. package/dist/logger/defaults.js +40 -40
  50. package/dist/logger/index.d.ts +1 -0
  51. package/dist/logger/index.d.ts.map +1 -1
  52. package/dist/logger/index.js.map +1 -1
  53. package/dist/logger/logger.d.ts +8 -0
  54. package/dist/logger/logger.d.ts.map +1 -1
  55. package/dist/logger/logger.js +13 -3
  56. package/dist/logger/logger.js.map +1 -1
  57. package/dist/logger/transports/console.js +1 -1
  58. package/dist/logger/transports/http.d.ts +1 -1
  59. package/dist/logger/transports/http.js +1 -1
  60. package/dist/logger/transports/webhook.d.ts +1 -1
  61. package/dist/logger/transports/webhook.js +1 -1
  62. package/dist/queue/defaults.d.ts +2 -2
  63. package/dist/queue/defaults.js +38 -38
  64. package/dist/security/defaults.d.ts +1 -1
  65. package/dist/security/defaults.js +29 -29
  66. package/dist/security/index.d.ts +1 -1
  67. package/dist/security/index.js +3 -3
  68. package/dist/security/security.d.ts +1 -1
  69. package/dist/security/security.js +4 -4
  70. package/dist/storage/defaults.js +19 -19
  71. package/dist/util/defaults.d.ts +1 -1
  72. package/dist/util/defaults.js +34 -34
  73. package/dist/util/env.d.ts +35 -0
  74. package/dist/util/env.d.ts.map +1 -0
  75. package/dist/util/env.js +50 -0
  76. package/dist/util/env.js.map +1 -0
  77. package/dist/util/errors.d.ts +52 -0
  78. package/dist/util/errors.d.ts.map +1 -0
  79. package/dist/util/errors.js +82 -0
  80. package/dist/util/errors.js.map +1 -0
  81. package/examples/.env.example +80 -0
  82. package/examples/README.md +16 -0
  83. package/examples/auth.ts +228 -0
  84. package/examples/cache.ts +36 -0
  85. package/examples/config.ts +45 -0
  86. package/examples/database.ts +69 -0
  87. package/examples/email.ts +53 -0
  88. package/examples/error.ts +50 -0
  89. package/examples/event.ts +42 -0
  90. package/examples/logger.ts +41 -0
  91. package/examples/queue.ts +58 -0
  92. package/examples/security.ts +46 -0
  93. package/examples/storage.ts +44 -0
  94. package/examples/util.ts +47 -0
  95. package/llms.txt +591 -0
  96. package/package.json +19 -10
  97. package/src/auth/README.md +850 -0
  98. package/src/cache/README.md +756 -0
  99. package/src/config/README.md +604 -0
  100. package/src/database/README.md +818 -0
  101. package/src/email/README.md +759 -0
  102. package/src/error/README.md +660 -0
  103. package/src/event/README.md +729 -0
  104. package/src/logger/README.md +435 -0
  105. package/src/queue/README.md +851 -0
  106. package/src/security/README.md +612 -0
  107. package/src/storage/README.md +1008 -0
  108. package/src/util/README.md +955 -0
  109. package/bin/templates/backend/docs/APPKIT_CLI.md +0 -507
  110. package/bin/templates/backend/docs/APPKIT_COMMENTS_GUIDELINES.md +0 -61
  111. package/bin/templates/backend/docs/APPKIT_LLM_GUIDE.md +0 -2539
package/dist/auth/auth.js CHANGED
@@ -11,6 +11,13 @@
11
11
  import jwt from 'jsonwebtoken';
12
12
  import bcrypt from 'bcrypt';
13
13
  import { validateRounds, validateRoleLevel, validatePermission, } from './defaults.js';
14
+ /**
15
+ * Canonical doc URL appended to runtime errors so devs (and AI agents)
16
+ * can self-correct without grepping the codebase. Points at the auth
17
+ * module README on GitHub which has the LLM Quick Reference + Common
18
+ * Mistakes sections that match the most-hit error scenarios.
19
+ */
20
+ const DOCS_URL = 'https://github.com/bloomneo/appkit/blob/main/src/auth/README.md';
14
21
  /**
15
22
  * Authentication class with JWT, password, and role-level-permission system
16
23
  */
@@ -51,33 +58,33 @@ export class AuthenticationClass {
51
58
  */
52
59
  signToken(payload, expiresIn) {
53
60
  if (!payload || typeof payload !== 'object') {
54
- throw new Error('Payload must be an object');
61
+ throw new Error(`[@bloomneo/appkit/auth] Payload must be an object. See: ${DOCS_URL}#token-generation`);
55
62
  }
56
63
  // Validate based on token type
57
64
  if (payload.type === 'login') {
58
65
  if (!payload.userId) {
59
- throw new Error('Login token must include userId');
66
+ throw new Error(`[@bloomneo/appkit/auth] Login token must include userId. Use auth.generateLoginToken({ userId, role, level }). See: ${DOCS_URL}#token-generation`);
60
67
  }
61
68
  }
62
69
  else if (payload.type === 'api_key') {
63
70
  if (!payload.keyId) {
64
- throw new Error('API token must include keyId');
71
+ throw new Error(`[@bloomneo/appkit/auth] API token must include keyId. Use auth.generateApiToken({ keyId, role, level }). See: ${DOCS_URL}#token-generation`);
65
72
  }
66
73
  }
67
74
  else {
68
- throw new Error('Token type must be "login" or "api_key"');
75
+ throw new Error(`[@bloomneo/appkit/auth] Token type must be "login" or "api_key". Use auth.generateLoginToken() or auth.generateApiToken(). See: ${DOCS_URL}#token-generation`);
69
76
  }
70
77
  if (!payload.role || !payload.level) {
71
- throw new Error('Payload must include both role and level');
78
+ throw new Error(`[@bloomneo/appkit/auth] Payload must include both role and level (e.g. role: 'admin', level: 'tenant'). See: ${DOCS_URL}#role-level-permission-architecture`);
72
79
  }
73
80
  // Validate role.level exists
74
81
  const roleLevel = `${payload.role}.${payload.level}`;
75
82
  if (!validateRoleLevel(roleLevel, this.config.roles)) {
76
- throw new Error(`Invalid role.level: "${roleLevel}"`);
83
+ throw new Error(`[@bloomneo/appkit/auth] Invalid role.level: "${roleLevel}". The default hierarchy ships with user.basic, user.pro, user.max, moderator.review, moderator.approve, moderator.manage, admin.tenant, admin.org, admin.system. To register custom roles, set BLOOM_AUTH_ROLES env var. See: ${DOCS_URL}#role-level-permission-architecture`);
77
84
  }
78
85
  const jwtSecret = this.config.jwt.secret;
79
86
  if (!jwtSecret) {
80
- throw new Error('JWT secret required. Set VOILA_AUTH_SECRET environment variable');
87
+ throw new Error('JWT secret required. Set BLOOM_AUTH_SECRET environment variable');
81
88
  }
82
89
  const tokenExpiration = expiresIn || this.config.jwt.expiresIn;
83
90
  try {
@@ -101,7 +108,7 @@ export class AuthenticationClass {
101
108
  }
102
109
  const jwtSecret = this.config.jwt.secret;
103
110
  if (!jwtSecret) {
104
- throw new Error('JWT secret required. Set VOILA_AUTH_SECRET environment variable');
111
+ throw new Error('JWT secret required. Set BLOOM_AUTH_SECRET environment variable');
105
112
  }
106
113
  try {
107
114
  const decoded = jwt.verify(token, jwtSecret, {
@@ -223,55 +230,60 @@ export class AuthenticationClass {
223
230
  return userLevel >= requiredLevel;
224
231
  }
225
232
  /**
226
- * Checks if user has specific permission with automatic action inheritance
233
+ * Checks if user has specific permission with automatic action inheritance.
234
+ *
235
+ * Permission resolution rule (REPLACEMENT, not additive):
236
+ * - If `user.permissions` is set (an array, even empty), it is the COMPLETE
237
+ * permission set for the user. Role defaults are NOT consulted.
238
+ * - If `user.permissions` is undefined / null, the role.level's default
239
+ * permissions from the configured RolePermissionConfig are used.
240
+ *
241
+ * This matches AWS IAM, Casbin, OPA, Auth0 RBAC, and every mainstream
242
+ * permission system: explicit permissions are the truth, defaults are the
243
+ * fallback. To downgrade a user below their role's defaults, pass an
244
+ * explicit `permissions: [...]` array (even an empty `[]` is valid — it
245
+ * means "no permissions despite the role").
246
+ *
247
+ * Action inheritance rule (within a scope):
248
+ * - `manage:<scope>` includes view, create, edit, delete for that scope
249
+ * - No upward inheritance: `edit:tenant` does NOT grant `manage:tenant`
250
+ *
227
251
  * @llm-rule WHEN: Checking fine-grained permissions for specific actions
228
- * @llm-rule AVOID: Hardcoding permission checks - this handles action inheritance
252
+ * @llm-rule AVOID: Hardcoding permission checks - this handles inheritance
229
253
  * @llm-rule NOTE: 'manage:scope' includes ALL other actions for that scope
230
- * @llm-rule NOTE: PERMISSION INHERITANCE EXAMPLES:
254
+ * @llm-rule NOTE: Explicit user.permissions REPLACES role defaults (not additive)
231
255
  * @llm-rule NOTE: If user has 'manage:tenant' → can('edit:tenant') returns TRUE
232
- * @llm-rule NOTE: If user has 'manage:tenant' → can('view:tenant') returns TRUE
233
256
  * @llm-rule NOTE: If user has 'edit:tenant' → can('manage:tenant') returns FALSE
257
+ * @llm-rule NOTE: To downgrade a user, pass permissions: [] (empty array)
234
258
  * @llm-rule NOTE: Actions hierarchy: manage > delete > edit > create > view
235
259
  */
236
260
  can(user, permission) {
237
- // PERMISSION INHERITANCE: 'manage:tenant' automatically includes:
238
- // - view:tenant, create:tenant, edit:tenant, delete:tenant
239
- // Example: if user has 'manage:tenant', they can do 'edit:tenant'
240
261
  if (!user || !permission) {
241
262
  return false;
242
263
  }
243
264
  if (!validatePermission(permission)) {
244
- throw new Error(`Invalid permission format: "${permission}"`);
245
- }
246
- // Check if user has the specific permission
247
- if (user.permissions && Array.isArray(user.permissions)) {
248
- if (user.permissions.includes(permission)) {
249
- return true;
250
- }
251
- // Check for manage permission (includes all other actions)
252
- const [action, scope] = permission.split(':');
253
- if (action !== 'manage') {
254
- const managePermission = `manage:${scope}`;
255
- if (user.permissions.includes(managePermission)) {
256
- return true;
257
- }
258
- }
259
- }
260
- // Fallback: check default permissions for user's role.level
261
- const userRoleLevel = `${user.role}.${user.level}`;
262
- const defaultPermissions = this.config.permissions.defaults[userRoleLevel];
263
- if (defaultPermissions && Array.isArray(defaultPermissions)) {
264
- if (defaultPermissions.includes(permission)) {
265
+ throw new Error(`[@bloomneo/appkit/auth] Invalid permission format: "${permission}". ` +
266
+ `Permissions must be in "action:scope" form (e.g. "edit:tenant", "manage:users"). ` +
267
+ `See: https://github.com/bloomneo/appkit/blob/main/src/auth/README.md#role-level-permission-architecture`);
268
+ }
269
+ // PERMISSION RESOLUTION: explicit user.permissions REPLACES role defaults.
270
+ // If you want a user to have ONLY a narrow set of permissions, pass them
271
+ // explicitly. If you want the role's defaults, omit user.permissions entirely.
272
+ const effectivePermissions = user.permissions && Array.isArray(user.permissions)
273
+ ? user.permissions
274
+ : this.config.permissions.defaults[`${user.role}.${user.level}`] ?? [];
275
+ // Direct match
276
+ if (effectivePermissions.includes(permission)) {
277
+ return true;
278
+ }
279
+ // Action inheritance: manage:<scope> grants all other actions for that scope.
280
+ // No upward inheritance — edit:scope does NOT grant manage:scope.
281
+ const [action, scope] = permission.split(':');
282
+ if (action !== 'manage') {
283
+ const managePermission = `manage:${scope}`;
284
+ if (effectivePermissions.includes(managePermission)) {
265
285
  return true;
266
286
  }
267
- // Check for manage permission in defaults
268
- const [action, scope] = permission.split(':');
269
- if (action !== 'manage') {
270
- const managePermission = `manage:${scope}`;
271
- if (defaultPermissions.includes(managePermission)) {
272
- return true;
273
- }
274
- }
275
287
  }
276
288
  return false;
277
289
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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"}
@@ -69,7 +69,7 @@ declare const CORE_SCOPES: string[];
69
69
  */
70
70
  declare const DEFAULT_PERMISSIONS: PermissionDefaults;
71
71
  /**
72
- * Gets smart defaults using VOILA_AUTH_* environment variables
72
+ * Gets smart defaults using BLOOM_AUTH_* environment variables
73
73
  * @llm-rule WHEN: App startup to get production-ready auth configuration
74
74
  * @llm-rule AVOID: Calling repeatedly - validates environment each time, expensive operation
75
75
  * @llm-rule AVOID: Calling in request handlers - expensive environment parsing
@@ -71,7 +71,7 @@ const DEFAULT_PERMISSIONS = {
71
71
  'admin.system': ['manage:tenant', 'manage:org', 'manage:system'],
72
72
  };
73
73
  /**
74
- * Gets smart defaults using VOILA_AUTH_* environment variables
74
+ * Gets smart defaults using BLOOM_AUTH_* environment variables
75
75
  * @llm-rule WHEN: App startup to get production-ready auth configuration
76
76
  * @llm-rule AVOID: Calling repeatedly - validates environment each time, expensive operation
77
77
  * @llm-rule AVOID: Calling in request handlers - expensive environment parsing
@@ -83,12 +83,12 @@ export function getSmartDefaults() {
83
83
  const isProduction = process.env.NODE_ENV === 'production';
84
84
  return {
85
85
  jwt: {
86
- secret: process.env.VOILA_AUTH_SECRET,
87
- expiresIn: process.env.VOILA_AUTH_EXPIRES_IN || '7d',
86
+ secret: process.env.BLOOM_AUTH_SECRET,
87
+ expiresIn: process.env.BLOOM_AUTH_EXPIRES_IN || '7d',
88
88
  algorithm: 'HS256',
89
89
  },
90
90
  password: {
91
- saltRounds: parseInt(process.env.VOILA_AUTH_BCRYPT_ROUNDS || '10'),
91
+ saltRounds: parseInt(process.env.BLOOM_AUTH_BCRYPT_ROUNDS || '10'),
92
92
  },
93
93
  roles: parseRoleHierarchy(),
94
94
  permissions: {
@@ -97,8 +97,8 @@ export function getSmartDefaults() {
97
97
  defaults: parseDefaultPermissions(),
98
98
  },
99
99
  user: {
100
- defaultRole: process.env.VOILA_AUTH_DEFAULT_ROLE || 'user',
101
- defaultLevel: process.env.VOILA_AUTH_DEFAULT_LEVEL || 'basic',
100
+ defaultRole: process.env.BLOOM_AUTH_DEFAULT_ROLE || 'user',
101
+ defaultLevel: process.env.BLOOM_AUTH_DEFAULT_LEVEL || 'basic',
102
102
  },
103
103
  middleware: {
104
104
  tokenSources: ['header', 'cookie', 'query'],
@@ -119,12 +119,12 @@ export function getSmartDefaults() {
119
119
  }
120
120
  /**
121
121
  * Parses role hierarchy from environment variable or uses defaults
122
- * @llm-rule WHEN: App startup to build role configuration from VOILA_AUTH_ROLES
122
+ * @llm-rule WHEN: App startup to build role configuration from BLOOM_AUTH_ROLES
123
123
  * @llm-rule AVOID: Using invalid role.level format - must be role.level:number
124
- * @llm-rule NOTE: Format: VOILA_AUTH_ROLES=user.basic:1,admin.tenant:5,admin.system:9
124
+ * @llm-rule NOTE: Format: BLOOM_AUTH_ROLES=user.basic:1,admin.tenant:5,admin.system:9
125
125
  */
126
126
  function parseRoleHierarchy() {
127
- const envRoles = process.env.VOILA_AUTH_ROLES;
127
+ const envRoles = process.env.BLOOM_AUTH_ROLES;
128
128
  if (!envRoles) {
129
129
  return DEFAULT_ROLE_HIERARCHY;
130
130
  }
@@ -133,7 +133,7 @@ function parseRoleHierarchy() {
133
133
  for (const rolePair of rolePairs) {
134
134
  const [roleLevel, levelStr] = rolePair.trim().split(':');
135
135
  if (!roleLevel || !levelStr) {
136
- throw new Error(`Invalid VOILA_AUTH_ROLES format: "${rolePair}". Expected format: "role.level:number"`);
136
+ throw new Error(`Invalid BLOOM_AUTH_ROLES format: "${rolePair}". Expected format: "role.level:number"`);
137
137
  }
138
138
  if (!validateRoleLevelFormat(roleLevel)) {
139
139
  throw new Error(`Invalid role.level format: "${roleLevel}". Must be "role.level" (e.g., "admin.tenant")`);
@@ -157,12 +157,12 @@ function parseRoleHierarchy() {
157
157
  }
158
158
  /**
159
159
  * Parses permission defaults from environment variable or uses defaults
160
- * @llm-rule WHEN: App startup to build permission configuration from VOILA_AUTH_PERMISSIONS
160
+ * @llm-rule WHEN: App startup to build permission configuration from BLOOM_AUTH_PERMISSIONS
161
161
  * @llm-rule AVOID: Using invalid permission format - must be action:scope
162
- * @llm-rule NOTE: Format: VOILA_AUTH_PERMISSIONS=user.basic:view:own,admin.tenant:manage:tenant
162
+ * @llm-rule NOTE: Format: BLOOM_AUTH_PERMISSIONS=user.basic:view:own,admin.tenant:manage:tenant
163
163
  */
164
164
  function parseDefaultPermissions() {
165
- const envPermissions = process.env.VOILA_AUTH_PERMISSIONS;
165
+ const envPermissions = process.env.BLOOM_AUTH_PERMISSIONS;
166
166
  if (!envPermissions) {
167
167
  return DEFAULT_PERMISSIONS;
168
168
  }
@@ -171,7 +171,7 @@ function parseDefaultPermissions() {
171
171
  for (const permissionPair of permissionPairs) {
172
172
  const parts = permissionPair.trim().split(':');
173
173
  if (parts.length !== 3) {
174
- throw new Error(`Invalid VOILA_AUTH_PERMISSIONS format: "${permissionPair}". Expected format: "role.level:action:scope"`);
174
+ throw new Error(`Invalid BLOOM_AUTH_PERMISSIONS format: "${permissionPair}". Expected format: "role.level:action:scope"`);
175
175
  }
176
176
  const [roleLevel, action, scope] = parts;
177
177
  const permission = `${action}:${scope}`;
@@ -200,9 +200,9 @@ export function validateSecret(secret) {
200
200
  console.error('\n🚨 ============================================');
201
201
  console.error('āŒ CRITICAL AUTH CONFIGURATION ERROR');
202
202
  console.error('🚨 ============================================');
203
- console.error('šŸ”‘ MISSING REQUIRED ENVIRONMENT VARIABLE: VOILA_AUTH_SECRET');
203
+ console.error('šŸ”‘ MISSING REQUIRED ENVIRONMENT VARIABLE: BLOOM_AUTH_SECRET');
204
204
  console.error('🚨 ============================================\n');
205
- throw new Error('VOILA_AUTH_SECRET is required. Set environment variable: VOILA_AUTH_SECRET=your-jwt-secret-key');
205
+ throw new Error('BLOOM_AUTH_SECRET is required. Set environment variable: BLOOM_AUTH_SECRET=your-jwt-secret-key');
206
206
  }
207
207
  if (secret.length < 32) {
208
208
  console.error('\n🚨 ============================================');
@@ -210,20 +210,20 @@ export function validateSecret(secret) {
210
210
  console.error('🚨 ============================================');
211
211
  console.error(`šŸ”‘ Current length: ${secret.length} characters (minimum: 32)`);
212
212
  console.error('🚨 ============================================\n');
213
- throw new Error(`VOILA_AUTH_SECRET must be at least 32 characters for security. Current length: ${secret.length}`);
213
+ throw new Error(`BLOOM_AUTH_SECRET must be at least 32 characters for security. Current length: ${secret.length}`);
214
214
  }
215
215
  if (secret === 'your-jwt-secret-key' || secret === 'secret' || secret === 'supersecret') {
216
216
  console.error('\n🚨 ============================================');
217
217
  console.error('āŒ INSECURE AUTH SECRET DETECTED');
218
218
  console.error('🚨 ============================================');
219
- console.error('šŸ”‘ VOILA_AUTH_SECRET appears to be a default/example value');
219
+ console.error('šŸ”‘ BLOOM_AUTH_SECRET appears to be a default/example value');
220
220
  console.error('āš ļø This is a security risk in production!');
221
221
  console.error('');
222
222
  console.error('šŸ’” SOLUTION:');
223
223
  console.error(' Generate a strong, random secret:');
224
- console.error(' VOILA_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
224
+ console.error(' BLOOM_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
225
225
  console.error('🚨 ============================================\n');
226
- throw new Error('VOILA_AUTH_SECRET appears to be a default/example value. Use a strong, random secret');
226
+ throw new Error('BLOOM_AUTH_SECRET appears to be a default/example value. Use a strong, random secret');
227
227
  }
228
228
  }
229
229
  /**
@@ -291,17 +291,17 @@ function validatePermissionFormat(permission) {
291
291
  * Enhanced environment validation with better error messages
292
292
  */
293
293
  function validateEnvironment() {
294
- const secret = process.env.VOILA_AUTH_SECRET;
294
+ const secret = process.env.BLOOM_AUTH_SECRET;
295
295
  // Enhanced validation with clear console logging and better error messages
296
296
  if (!secret) {
297
297
  console.error('\n🚨 ============================================');
298
298
  console.error('āŒ CRITICAL AUTH CONFIGURATION ERROR');
299
299
  console.error('🚨 ============================================');
300
- console.error('šŸ”‘ MISSING REQUIRED ENVIRONMENT VARIABLE: VOILA_AUTH_SECRET');
300
+ console.error('šŸ”‘ MISSING REQUIRED ENVIRONMENT VARIABLE: BLOOM_AUTH_SECRET');
301
301
  console.error('');
302
302
  console.error('šŸ’” SOLUTION:');
303
303
  console.error(' Add the following to your .env file:');
304
- console.error(' VOILA_AUTH_SECRET=your-secure-32-character-secret-key-here');
304
+ console.error(' BLOOM_AUTH_SECRET=your-secure-32-character-secret-key-here');
305
305
  console.error('');
306
306
  console.error('šŸ“‹ REQUIREMENTS:');
307
307
  console.error(' - Must be at least 32 characters long');
@@ -309,48 +309,48 @@ function validateEnvironment() {
309
309
  console.error(' - Do not use default values like "secret" or "supersecret"');
310
310
  console.error('');
311
311
  console.error('šŸ”§ EXAMPLE:');
312
- console.error(' VOILA_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
312
+ console.error(' BLOOM_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
313
313
  console.error('');
314
314
  console.error('āš ļø Without this variable, authentication features will not work');
315
315
  console.error('🚨 ============================================\n');
316
- throw new Error('VOILA_AUTH_SECRET is required. Set environment variable: VOILA_AUTH_SECRET=your-jwt-secret-key');
316
+ throw new Error('BLOOM_AUTH_SECRET is required. Set environment variable: BLOOM_AUTH_SECRET=your-jwt-secret-key');
317
317
  }
318
318
  if (secret.length < 32) {
319
319
  console.error('\n🚨 ============================================');
320
320
  console.error('āŒ AUTH SECRET TOO SHORT');
321
321
  console.error('🚨 ============================================');
322
- console.error(`šŸ”‘ Current VOILA_AUTH_SECRET length: ${secret.length} characters`);
322
+ console.error(`šŸ”‘ Current BLOOM_AUTH_SECRET length: ${secret.length} characters`);
323
323
  console.error('āš ļø Minimum required: 32 characters');
324
324
  console.error('');
325
325
  console.error('šŸ’” SOLUTION:');
326
326
  console.error(' Generate a stronger secret with at least 32 characters');
327
327
  console.error('');
328
328
  console.error('šŸ”§ EXAMPLE:');
329
- console.error(' VOILA_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
329
+ console.error(' BLOOM_AUTH_SECRET=k8s9m2n4p7q1w3e5r8t0y2u4i6o9a1s5d7f9g2h4j6l8');
330
330
  console.error('🚨 ============================================\n');
331
- throw new Error(`VOILA_AUTH_SECRET must be at least 32 characters for security. Current length: ${secret.length}`);
331
+ throw new Error(`BLOOM_AUTH_SECRET must be at least 32 characters for security. Current length: ${secret.length}`);
332
332
  }
333
333
  validateSecret(secret);
334
- const rounds = process.env.VOILA_AUTH_BCRYPT_ROUNDS;
334
+ const rounds = process.env.BLOOM_AUTH_BCRYPT_ROUNDS;
335
335
  if (rounds) {
336
336
  const roundsNum = parseInt(rounds);
337
337
  if (isNaN(roundsNum)) {
338
- throw new Error(`Invalid VOILA_AUTH_BCRYPT_ROUNDS: "${rounds}". Must be a number between 8 and 15`);
338
+ throw new Error(`Invalid BLOOM_AUTH_BCRYPT_ROUNDS: "${rounds}". Must be a number between 8 and 15`);
339
339
  }
340
340
  validateRounds(roundsNum);
341
341
  }
342
- const expiresIn = process.env.VOILA_AUTH_EXPIRES_IN;
342
+ const expiresIn = process.env.BLOOM_AUTH_EXPIRES_IN;
343
343
  if (expiresIn && !isValidTimespan(expiresIn)) {
344
- throw new Error(`Invalid VOILA_AUTH_EXPIRES_IN: "${expiresIn}". Must be a valid time span (e.g., '7d', '1h', '30m')`);
344
+ throw new Error(`Invalid BLOOM_AUTH_EXPIRES_IN: "${expiresIn}". Must be a valid time span (e.g., '7d', '1h', '30m')`);
345
345
  }
346
- const defaultRole = process.env.VOILA_AUTH_DEFAULT_ROLE;
347
- const defaultLevel = process.env.VOILA_AUTH_DEFAULT_LEVEL;
346
+ const defaultRole = process.env.BLOOM_AUTH_DEFAULT_ROLE;
347
+ const defaultLevel = process.env.BLOOM_AUTH_DEFAULT_LEVEL;
348
348
  if (defaultRole && defaultLevel) {
349
349
  const roleLevel = `${defaultRole}.${defaultLevel}`;
350
350
  const roles = parseRoleHierarchy();
351
351
  if (!validateRoleLevel(roleLevel, roles)) {
352
352
  const validRoles = Object.keys(roles).join(', ');
353
- throw new Error(`Invalid VOILA_AUTH_DEFAULT_ROLE.LEVEL: "${roleLevel}". Must be one of: ${validRoles}`);
353
+ throw new Error(`Invalid BLOOM_AUTH_DEFAULT_ROLE.LEVEL: "${roleLevel}". Must be one of: ${validRoles}`);
354
354
  }
355
355
  }
356
356
  const nodeEnv = process.env.NODE_ENV;
@@ -8,6 +8,32 @@
8
8
  * @llm-rule NOTE: Auto-detects Redis vs Memory from environment, namespace passed to get() function
9
9
  */
10
10
  import type { CacheConfig } from './defaults.js';
11
+ /**
12
+ * Thrown by all cache operations when the underlying strategy fails.
13
+ * Catch this in your route/service and decide whether to fall back to the
14
+ * database, re-throw, or log — the cache module never makes that call for you.
15
+ *
16
+ * @example
17
+ * import { CacheError } from '@bloomneo/appkit/cache';
18
+ *
19
+ * try {
20
+ * const user = await cache.get<User>('user:123');
21
+ * } catch (err) {
22
+ * if (err instanceof CacheError) {
23
+ * logger.warn('Cache unavailable, falling back to DB', { code: err.code });
24
+ * return await db.user.findUnique({ where: { id: 123 } });
25
+ * }
26
+ * throw err; // re-throw unrelated errors
27
+ * }
28
+ */
29
+ export declare class CacheError extends Error {
30
+ /** Machine-readable error code, e.g. 'CACHE_GET_FAILED', 'CACHE_CONNECT_FAILED' */
31
+ readonly code: string;
32
+ constructor(message: string, options?: {
33
+ code?: string;
34
+ cause?: unknown;
35
+ });
36
+ }
11
37
  export interface CacheStrategy {
12
38
  connect(): Promise<void>;
13
39
  disconnect(): Promise<void>;
@@ -52,14 +78,14 @@ export declare class CacheClass {
52
78
  * @llm-rule AVOID: Manual key management - automatic prefixing handles namespacing
53
79
  * @llm-rule NOTE: Returns null if key not found or expired
54
80
  */
55
- get(key: string): Promise<any>;
81
+ get<T = unknown>(key: string): Promise<T | null>;
56
82
  /**
57
83
  * Sets a value in cache with TTL and automatic key prefixing
58
84
  * @llm-rule WHEN: Storing data in cache with optional expiration
59
85
  * @llm-rule AVOID: Storing large objects without TTL - can cause memory issues
60
86
  * @llm-rule NOTE: Uses default TTL from config if not specified
61
87
  */
62
- set(key: string, value: any, ttl?: number): Promise<boolean>;
88
+ set<T = unknown>(key: string, value: T, ttl?: number): Promise<boolean>;
63
89
  /**
64
90
  * Deletes a key from cache
65
91
  * @llm-rule WHEN: Removing specific cached data or cache invalidation
@@ -79,7 +105,7 @@ export declare class CacheClass {
79
105
  * @llm-rule AVOID: Manual get/set logic - this handles race conditions properly
80
106
  * @llm-rule NOTE: Factory function only called on cache miss
81
107
  */
82
- getOrSet(key: string, factory: () => Promise<any>, ttl?: number): Promise<any>;
108
+ getOrSet<T = unknown>(key: string, factory: () => Promise<T>, ttl?: number): Promise<T>;
83
109
  /**
84
110
  * Gets current cache strategy name for debugging
85
111
  * @llm-rule WHEN: Debugging or health checks to see which strategy is active
@@ -110,9 +136,6 @@ export declare class CacheClass {
110
136
  * Validates cache key format and length
111
137
  */
112
138
  private validateKey;
113
- /**
114
- * Validates cache value
115
- */
116
139
  private validateValue;
117
140
  }
118
141
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,UAAU;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAMlD;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAapC;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAelE;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa3C;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBpF;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,SAAS,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACpB;IAYD;;OAEG;YACW,eAAe;IAM7B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAYtB"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAQ1E;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,UAAU;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAMlD;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC;;;;;OAKG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAetD;;;;;OAKG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB7E;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe3C;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB/B;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7F;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,SAAS,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACpB;IAYD;;OAEG;YACW,eAAe;IAM7B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,aAAa;CAUtB"}