@plyaz/db 0.0.0

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/README.md +169 -0
  2. package/dist/adapters/drizzle/DrizzleAdapter.d.ts +269 -0
  3. package/dist/adapters/drizzle/DrizzleAdapter.d.ts.map +1 -0
  4. package/dist/adapters/index.d.ts +20 -0
  5. package/dist/adapters/index.d.ts.map +1 -0
  6. package/dist/adapters/sql/SQLAdapter.d.ts +282 -0
  7. package/dist/adapters/sql/SQLAdapter.d.ts.map +1 -0
  8. package/dist/adapters/supabase/SupabaseAdapter.d.ts +305 -0
  9. package/dist/adapters/supabase/SupabaseAdapter.d.ts.map +1 -0
  10. package/dist/advanced/backup/BackupService.d.ts +159 -0
  11. package/dist/advanced/backup/BackupService.d.ts.map +1 -0
  12. package/dist/advanced/backup/index.d.ts +2 -0
  13. package/dist/advanced/backup/index.d.ts.map +1 -0
  14. package/dist/advanced/caching/CacheEvict.decorator.d.ts +3 -0
  15. package/dist/advanced/caching/CacheEvict.decorator.d.ts.map +1 -0
  16. package/dist/advanced/caching/Cacheable.decorator.d.ts +99 -0
  17. package/dist/advanced/caching/Cacheable.decorator.d.ts.map +1 -0
  18. package/dist/advanced/caching/RedisCache.d.ts +417 -0
  19. package/dist/advanced/caching/RedisCache.d.ts.map +1 -0
  20. package/dist/advanced/caching/index.d.ts +4 -0
  21. package/dist/advanced/caching/index.d.ts.map +1 -0
  22. package/dist/advanced/connection-pool/DynamicPool.d.ts +234 -0
  23. package/dist/advanced/connection-pool/DynamicPool.d.ts.map +1 -0
  24. package/dist/advanced/connection-pool/index.d.ts +2 -0
  25. package/dist/advanced/connection-pool/index.d.ts.map +1 -0
  26. package/dist/advanced/index.d.ts +8 -0
  27. package/dist/advanced/index.d.ts.map +1 -0
  28. package/dist/advanced/monitoring/AlertManager.d.ts +72 -0
  29. package/dist/advanced/monitoring/AlertManager.d.ts.map +1 -0
  30. package/dist/advanced/monitoring/MetricsCollector.d.ts +81 -0
  31. package/dist/advanced/monitoring/MetricsCollector.d.ts.map +1 -0
  32. package/dist/advanced/monitoring/index.d.ts +3 -0
  33. package/dist/advanced/monitoring/index.d.ts.map +1 -0
  34. package/dist/advanced/multi-tenancy/TenantContext.d.ts +52 -0
  35. package/dist/advanced/multi-tenancy/TenantContext.d.ts.map +1 -0
  36. package/dist/advanced/multi-tenancy/TenantRepository.d.ts +292 -0
  37. package/dist/advanced/multi-tenancy/TenantRepository.d.ts.map +1 -0
  38. package/dist/advanced/multi-tenancy/index.d.ts +3 -0
  39. package/dist/advanced/multi-tenancy/index.d.ts.map +1 -0
  40. package/dist/advanced/read-replica/ReadReplicaAdapter.d.ts +516 -0
  41. package/dist/advanced/read-replica/ReadReplicaAdapter.d.ts.map +1 -0
  42. package/dist/advanced/read-replica/ReadReplicaManager.d.ts +68 -0
  43. package/dist/advanced/read-replica/ReadReplicaManager.d.ts.map +1 -0
  44. package/dist/advanced/read-replica/UseReplica.decorator.d.ts +24 -0
  45. package/dist/advanced/read-replica/UseReplica.decorator.d.ts.map +1 -0
  46. package/dist/advanced/read-replica/index.d.ts +3 -0
  47. package/dist/advanced/read-replica/index.d.ts.map +1 -0
  48. package/dist/advanced/sharding/ShardKey.d.ts +80 -0
  49. package/dist/advanced/sharding/ShardKey.d.ts.map +1 -0
  50. package/dist/advanced/sharding/ShardRouter.d.ts +66 -0
  51. package/dist/advanced/sharding/ShardRouter.d.ts.map +1 -0
  52. package/dist/advanced/sharding/index.d.ts +3 -0
  53. package/dist/advanced/sharding/index.d.ts.map +1 -0
  54. package/dist/builder/query/index.d.ts +7 -0
  55. package/dist/builder/query/index.d.ts.map +1 -0
  56. package/dist/builder/query/orm.d.ts +22 -0
  57. package/dist/builder/query/orm.d.ts.map +1 -0
  58. package/dist/builder/query/sql.d.ts +29 -0
  59. package/dist/builder/query/sql.d.ts.map +1 -0
  60. package/dist/extensions/AuditExtension.d.ts +468 -0
  61. package/dist/extensions/AuditExtension.d.ts.map +1 -0
  62. package/dist/extensions/CachingAdapter.d.ts +451 -0
  63. package/dist/extensions/CachingAdapter.d.ts.map +1 -0
  64. package/dist/extensions/EncryptionExtension.d.ts +95 -0
  65. package/dist/extensions/EncryptionExtension.d.ts.map +1 -0
  66. package/dist/extensions/ReadReplicaAdapter.d.ts +32 -0
  67. package/dist/extensions/ReadReplicaAdapter.d.ts.map +1 -0
  68. package/dist/extensions/SoftDeleteExtension.d.ts +430 -0
  69. package/dist/extensions/SoftDeleteExtension.d.ts.map +1 -0
  70. package/dist/extensions/index.d.ts +79 -0
  71. package/dist/extensions/index.d.ts.map +1 -0
  72. package/dist/factory/AdapterFactory.d.ts +111 -0
  73. package/dist/factory/AdapterFactory.d.ts.map +1 -0
  74. package/dist/factory/createDatabaseService.d.ts +121 -0
  75. package/dist/factory/createDatabaseService.d.ts.map +1 -0
  76. package/dist/index.cjs +8518 -0
  77. package/dist/index.cjs.map +1 -0
  78. package/dist/index.d.ts +19 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.mjs +8480 -0
  81. package/dist/index.mjs.map +1 -0
  82. package/dist/repository/BaseRepository.d.ts +209 -0
  83. package/dist/repository/BaseRepository.d.ts.map +1 -0
  84. package/dist/repository/index.d.ts +80 -0
  85. package/dist/repository/index.d.ts.map +1 -0
  86. package/dist/security/index.cjs +118 -0
  87. package/dist/security/index.cjs.map +1 -0
  88. package/dist/security/index.d.ts +3 -0
  89. package/dist/security/index.d.ts.map +1 -0
  90. package/dist/security/index.mjs +114 -0
  91. package/dist/security/index.mjs.map +1 -0
  92. package/dist/security/sanitizers/html.sanitizer.d.ts +31 -0
  93. package/dist/security/sanitizers/html.sanitizer.d.ts.map +1 -0
  94. package/dist/security/serializers/DataValidation.d.ts +34 -0
  95. package/dist/security/serializers/DataValidation.d.ts.map +1 -0
  96. package/dist/service/DatabaseService.d.ts +136 -0
  97. package/dist/service/DatabaseService.d.ts.map +1 -0
  98. package/dist/service/EventEmitter.d.ts +110 -0
  99. package/dist/service/EventEmitter.d.ts.map +1 -0
  100. package/dist/service/HealthManager.d.ts +166 -0
  101. package/dist/service/HealthManager.d.ts.map +1 -0
  102. package/dist/utils/ConfigMerger.d.ts +227 -0
  103. package/dist/utils/ConfigMerger.d.ts.map +1 -0
  104. package/dist/utils/databaseResultHelpers.d.ts +98 -0
  105. package/dist/utils/databaseResultHelpers.d.ts.map +1 -0
  106. package/dist/utils/index.d.ts +7 -0
  107. package/dist/utils/index.d.ts.map +1 -0
  108. package/dist/utils/normalizeDetails.d.ts +111 -0
  109. package/dist/utils/normalizeDetails.d.ts.map +1 -0
  110. package/dist/utils/pagination.d.ts +77 -0
  111. package/dist/utils/pagination.d.ts.map +1 -0
  112. package/dist/utils/regex.d.ts +199 -0
  113. package/dist/utils/regex.d.ts.map +1 -0
  114. package/dist/utils/typeGuards.d.ts +57 -0
  115. package/dist/utils/typeGuards.d.ts.map +1 -0
  116. package/dist/utils/validation.d.ts +146 -0
  117. package/dist/utils/validation.d.ts.map +1 -0
  118. package/package.json +156 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * DATABASE SERVICE FACTORY - Main Entry Point
3
+ *
4
+ * This file is responsible for creating fully configured database services with extension chains.
5
+ * It implements the decorator pattern to wrap base adapters with feature extensions.
6
+ *
7
+ * **RESPONSIBILITIES:**
8
+ * 1. Config Validation - Ensures valid configuration before proceeding
9
+ * 2. Base Adapter Creation - Creates core database adapters (Drizzle/Supabase/SQL)
10
+ * 3. Adapter Chain Building - Wraps adapters with extensions in correct order
11
+ * 4. Service Assembly - Creates final DatabaseService with all components
12
+ * 5. Initialization - Establishes database connections and readiness
13
+ *
14
+ * **ADAPTER CHAIN ORDER:**
15
+ * Base → Encryption → SoftDelete → Caching → Audit → ReadReplica
16
+ * (innermost to outermost - each wraps the previous)
17
+ */
18
+ import type { DatabaseServiceInterface, DatabaseServiceConfig } from "@plyaz/types/db";
19
+ /**
20
+ * MAIN FACTORY - Application Entry Point
21
+ *
22
+ * Creates a fully configured database service with extension chain.
23
+ * This is the ONLY way applications should create database services.
24
+ *
25
+ * **Application Flow:**
26
+ * 1. App calls createDatabaseService() at startup
27
+ * 2. Factory validates config and creates base adapter (Drizzle/Supabase/etc.)
28
+ * 3. Factory builds 6-layer adapter chain: Base → Encryption → SoftDelete → Cache → Audit → ReadReplica
29
+ * 4. Factory creates DatabaseService with final wrapped adapter
30
+ * 5. App uses returned DatabaseServiceInterface in repositories/services
31
+ *
32
+ * **What this function does:**
33
+ * - Validates configuration using validateConfig()
34
+ * - Creates base adapter via AdapterFactory.create()
35
+ * - Builds decorator chain via buildAdapterChain()
36
+ * - Initializes database connection
37
+ * - Returns configured DatabaseService instance
38
+ *
39
+ * **Called by:** Application startup code (app.ts, main.ts)
40
+ * **Calls:** validateConfig(), AdapterFactory.create(), buildAdapterChain(), DatabaseService constructor
41
+ * **Returns to:** Application layer for injection into repositories
42
+ *
43
+ * @param config Complete database service configuration including adapter and extensions
44
+ * @returns Promise resolving to configured DatabaseServiceInterface instance
45
+ *
46
+ * @throws {BaseError} When configuration is invalid or initialization fails
47
+ *
48
+ * @example
49
+ * ### Basic Setup (app.ts)
50
+ * ```typescript
51
+ * import { createDatabaseService, Tables } from '@plyaz/db';
52
+ *
53
+ * // Called once at application startup
54
+ * const db = await createDatabaseService({
55
+ * adapter: 'drizzle',
56
+ * config: { connectionString: process.env.DATABASE_URL }
57
+ * });
58
+ *
59
+ * // Inject into services
60
+ * const userService = new UserService(db);
61
+ * ```
62
+ *
63
+ * @example
64
+ * ### Production Configuration
65
+ * ```typescript
66
+ * const db = await createDatabaseService({
67
+ * adapter: 'drizzle',
68
+ * config: {
69
+ * connectionString: process.env.DATABASE_URL,
70
+ * poolSize: 20
71
+ * },
72
+ *
73
+ * // Extensions applied in order: Base → Encryption → SoftDelete → Cache → Audit → ReadReplica
74
+ * encryption: {
75
+ * enabled: true,
76
+ * key: process.env.ENCRYPTION_KEY,
77
+ * fields: {
78
+ * [Tables.USERS]: ['ssn', 'taxId'],
79
+ * [Tables.PAYMENTS]: ['cardNumber', 'cvv']
80
+ * }
81
+ * },
82
+ *
83
+ * softDelete: {
84
+ * enabled: true,
85
+ * field: 'deletedAt'
86
+ * },
87
+ *
88
+ * audit: {
89
+ * enabled: true,
90
+ * retentionDays: 90,
91
+ * onAuditAfterWrite: async (event) => {
92
+ * await complianceService.recordAudit(event);
93
+ * }
94
+ * },
95
+ *
96
+ * cache: {
97
+ * enabled: true,
98
+ * ttl: 300,
99
+ * invalidation: 'write'
100
+ * },
101
+ *
102
+ * events: {
103
+ * onAfterWrite: async (event) => {
104
+ * await notificationService.send(event);
105
+ * }
106
+ * }
107
+ * });
108
+ * ```
109
+ *
110
+ * @example
111
+ * ### Testing Setup
112
+ * ```typescript
113
+ * // Use mock adapter for tests
114
+ * const db = await createDatabaseService({
115
+ * adapter: 'mock',
116
+ * config: { logging: true }
117
+ * });
118
+ * ```
119
+ */
120
+ export declare function createDatabaseService(config: DatabaseServiceConfig): Promise<DatabaseServiceInterface>;
121
+ //# sourceMappingURL=createDatabaseService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDatabaseService.d.ts","sourceRoot":"","sources":["../../src/factory/createDatabaseService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmBH,OAAO,KAAK,EACV,wBAAwB,EAKxB,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAuLzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAmDnC"}