@plyaz/core 1.2.0 → 1.3.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 (240) hide show
  1. package/README.md +248 -183
  2. package/dist/adapters/index.d.ts +16 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/nestjs.d.ts +79 -0
  5. package/dist/adapters/nestjs.d.ts.map +1 -0
  6. package/dist/adapters/nextjs.d.ts +28 -0
  7. package/dist/adapters/nextjs.d.ts.map +1 -0
  8. package/dist/backend/example/example.controller.d.ts +121 -0
  9. package/dist/backend/example/example.controller.d.ts.map +1 -0
  10. package/dist/backend/example/example.module.d.ts +29 -0
  11. package/dist/backend/example/example.module.d.ts.map +1 -0
  12. package/dist/backend/example/index.d.ts +8 -0
  13. package/dist/backend/example/index.d.ts.map +1 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  15. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
  17. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
  18. package/dist/backend/featureFlags/config/validation.d.ts +6 -6
  19. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
  20. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
  21. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  22. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
  23. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  24. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
  25. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
  26. package/dist/backend/featureFlags/index.d.ts +6 -7
  27. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  28. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
  30. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
  31. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
  32. package/dist/backend/index.d.ts +5 -0
  33. package/dist/backend/index.d.ts.map +1 -1
  34. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  35. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  36. package/dist/base/cache/index.d.ts +1 -0
  37. package/dist/base/cache/index.d.ts.map +1 -1
  38. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  39. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  40. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  41. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  42. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  43. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  44. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  45. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  46. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  47. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  48. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  49. package/dist/base/observability/index.d.ts +17 -0
  50. package/dist/base/observability/index.d.ts.map +1 -0
  51. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  52. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  53. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  54. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  55. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  56. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  57. package/dist/domain/base/BaseMapper.d.ts +100 -0
  58. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  59. package/dist/domain/base/BaseValidator.d.ts +105 -0
  60. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  61. package/dist/domain/base/index.d.ts +10 -0
  62. package/dist/domain/base/index.d.ts.map +1 -0
  63. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  64. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  65. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  66. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  67. package/dist/domain/example/index.d.ts +10 -0
  68. package/dist/domain/example/index.d.ts.map +1 -0
  69. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  70. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  71. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  72. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  73. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  74. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  75. package/dist/domain/featureFlags/index.d.ts +10 -5
  76. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  77. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  78. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  79. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  80. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  81. package/dist/domain/featureFlags/module.d.ts +20 -0
  82. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  83. package/dist/domain/featureFlags/provider.d.ts +40 -1
  84. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  85. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  86. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  87. package/dist/domain/featureFlags/providers/database.d.ts +54 -47
  88. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  89. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  90. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  91. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  92. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  93. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  94. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  95. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  96. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  97. package/dist/domain/featureFlags/service.d.ts +112 -0
  98. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  99. package/dist/domain/index.d.ts +2 -0
  100. package/dist/domain/index.d.ts.map +1 -1
  101. package/dist/engine/featureFlags/engine.d.ts +8 -0
  102. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  103. package/dist/entry-backend.d.ts +26 -0
  104. package/dist/entry-backend.d.ts.map +1 -0
  105. package/dist/entry-backend.js +15455 -0
  106. package/dist/entry-backend.js.map +1 -0
  107. package/dist/entry-backend.mjs +15339 -0
  108. package/dist/entry-backend.mjs.map +1 -0
  109. package/dist/entry-frontend.d.ts +23 -0
  110. package/dist/entry-frontend.d.ts.map +1 -0
  111. package/dist/entry-frontend.js +11340 -0
  112. package/dist/entry-frontend.js.map +1 -0
  113. package/dist/entry-frontend.mjs +11278 -0
  114. package/dist/entry-frontend.mjs.map +1 -0
  115. package/dist/events/CoreEventManager.d.ts +116 -0
  116. package/dist/events/CoreEventManager.d.ts.map +1 -0
  117. package/dist/events/index.d.ts +27 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/frontend/base/index.d.ts +8 -0
  120. package/dist/frontend/base/index.d.ts.map +1 -0
  121. package/dist/frontend/components/InitializationError.d.ts +25 -0
  122. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  123. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  124. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  125. package/dist/frontend/components/index.d.ts +9 -0
  126. package/dist/frontend/components/index.d.ts.map +1 -0
  127. package/dist/frontend/example/index.d.ts +9 -0
  128. package/dist/frontend/example/index.d.ts.map +1 -0
  129. package/dist/frontend/featureFlags/index.d.ts +28 -7
  130. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  131. package/dist/frontend/index.d.ts +4 -0
  132. package/dist/frontend/index.d.ts.map +1 -1
  133. package/dist/frontend/providers/ApiProvider.d.ts +2 -2
  134. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
  135. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  136. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  137. package/dist/frontend/providers/index.d.ts +1 -0
  138. package/dist/frontend/providers/index.d.ts.map +1 -1
  139. package/dist/frontend/store/feature-flags.d.ts +63 -0
  140. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  141. package/dist/frontend/store/index.d.ts +14 -0
  142. package/dist/frontend/store/index.d.ts.map +1 -0
  143. package/dist/frontend/store/integrations.d.ts +36 -0
  144. package/dist/frontend/store/integrations.d.ts.map +1 -0
  145. package/dist/frontend/store/service-accessors.d.ts +78 -0
  146. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  147. package/dist/index.d.ts +5 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +15262 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/index.mjs +13667 -4861
  152. package/dist/index.mjs.map +1 -1
  153. package/dist/init/CoreInitializer.d.ts +583 -0
  154. package/dist/init/CoreInitializer.d.ts.map +1 -0
  155. package/dist/init/ServiceRegistry.d.ts +256 -0
  156. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  157. package/dist/init/index.d.ts +14 -0
  158. package/dist/init/index.d.ts.map +1 -0
  159. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  160. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  161. package/dist/init/nestjs/index.d.ts +5 -0
  162. package/dist/init/nestjs/index.d.ts.map +1 -0
  163. package/dist/init/nestjs/index.js +9234 -0
  164. package/dist/init/nestjs/index.js.map +1 -0
  165. package/dist/init/nestjs/index.mjs +9230 -0
  166. package/dist/init/nestjs/index.mjs.map +1 -0
  167. package/dist/init/react.d.ts +33 -0
  168. package/dist/init/react.d.ts.map +1 -0
  169. package/dist/models/example/ExampleRepository.d.ts +166 -0
  170. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  171. package/dist/models/example/index.d.ts +7 -0
  172. package/dist/models/example/index.d.ts.map +1 -0
  173. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +161 -0
  174. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  175. package/dist/models/featureFlags/index.d.ts +7 -0
  176. package/dist/models/featureFlags/index.d.ts.map +1 -0
  177. package/dist/models/index.d.ts +9 -0
  178. package/dist/models/index.d.ts.map +1 -0
  179. package/dist/services/ApiClientService.d.ts +92 -4
  180. package/dist/services/ApiClientService.d.ts.map +1 -1
  181. package/dist/services/CacheService.d.ts +176 -0
  182. package/dist/services/CacheService.d.ts.map +1 -0
  183. package/dist/services/DbService.d.ts +393 -0
  184. package/dist/services/DbService.d.ts.map +1 -0
  185. package/dist/services/NotificationService.d.ts +153 -0
  186. package/dist/services/NotificationService.d.ts.map +1 -0
  187. package/dist/services/StorageService.d.ts +146 -0
  188. package/dist/services/StorageService.d.ts.map +1 -0
  189. package/dist/services/index.d.ts +4 -0
  190. package/dist/services/index.d.ts.map +1 -1
  191. package/dist/utils/common/id.d.ts +83 -0
  192. package/dist/utils/common/id.d.ts.map +1 -0
  193. package/dist/utils/common/index.d.ts +2 -0
  194. package/dist/utils/common/index.d.ts.map +1 -1
  195. package/dist/utils/common/object.d.ts +70 -0
  196. package/dist/utils/common/object.d.ts.map +1 -0
  197. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  198. package/dist/utils/featureFlags/context.d.ts +0 -1
  199. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  200. package/dist/utils/index.d.ts +1 -0
  201. package/dist/utils/index.d.ts.map +1 -1
  202. package/dist/utils/mapperUtils.d.ts +38 -0
  203. package/dist/utils/mapperUtils.d.ts.map +1 -0
  204. package/dist/utils/runtime.d.ts +15 -0
  205. package/dist/utils/runtime.d.ts.map +1 -0
  206. package/dist/version.d.ts +24 -0
  207. package/dist/version.d.ts.map +1 -0
  208. package/dist/web_app/auth/add_user.d.ts +2 -2
  209. package/dist/web_app/auth/add_user.d.ts.map +1 -1
  210. package/dist/web_app/auth/update_user.d.ts +1 -1
  211. package/dist/web_app/auth/update_user.d.ts.map +1 -1
  212. package/package.json +89 -15
  213. package/dist/backend/featureFlags/database/connection.d.ts +0 -321
  214. package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
  215. package/dist/backend/featureFlags/database/repository.d.ts +0 -518
  216. package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
  217. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  218. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  219. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
  220. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  221. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  222. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  223. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  224. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  225. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  226. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  227. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  229. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  230. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  231. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  232. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  233. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  234. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  235. package/dist/index.cjs +0 -6435
  236. package/dist/index.cjs.map +0 -1
  237. package/dist/utils/db/databaseService.d.ts +0 -6
  238. package/dist/utils/db/databaseService.d.ts.map +0 -1
  239. package/dist/utils/db/index.d.ts +0 -2
  240. package/dist/utils/db/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"update_user.d.ts","sourceRoot":"","sources":["../../../src/web_app/auth/update_user.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,MAAM,EAC/C,OAAO,MAAM,EACb,IAAI,MAAM,EACV,OAAO,CAAC,KACP,OAAO,CAAC,OAAO,CAIjB,CAAC"}
1
+ {"version":3,"file":"update_user.d.ts","sourceRoot":"","sources":["../../../src/web_app/auth/update_user.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,MAAM,EACb,IAAI,MAAM,EACV,OAAO,CAAC,KACP,OAAO,CAAC,OAAO,CAIjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plyaz/core",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Shared core logic and utilities for Plyaz apps, services, and future SDKs – centralized, reusable, and scalable.",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -15,11 +15,29 @@
15
15
  "require": "./dist/index.js",
16
16
  "default": "./dist/index.mjs"
17
17
  },
18
+ "./frontend": {
19
+ "types": "./dist/entry-frontend.d.ts",
20
+ "import": "./dist/entry-frontend.mjs",
21
+ "require": "./dist/entry-frontend.js",
22
+ "default": "./dist/entry-frontend.mjs"
23
+ },
24
+ "./backend": {
25
+ "types": "./dist/entry-backend.d.ts",
26
+ "import": "./dist/entry-backend.mjs",
27
+ "require": "./dist/entry-backend.js",
28
+ "default": "./dist/entry-backend.mjs"
29
+ },
30
+ "./nestjs": {
31
+ "types": "./dist/init/nestjs/index.d.ts",
32
+ "import": "./dist/init/nestjs/index.mjs",
33
+ "require": "./dist/init/nestjs/index.js",
34
+ "default": "./dist/init/nestjs/index.mjs"
35
+ },
18
36
  "./package.json": "./package.json"
19
37
  },
20
38
  "engines": {
21
- "node": ">=22.4.0",
22
- "pnpm": ">=8.0.0"
39
+ "node": ">=23.0.0",
40
+ "pnpm": ">=8.10.0"
23
41
  },
24
42
  "author": "Redeemer Pace",
25
43
  "license": "ISC",
@@ -29,24 +47,33 @@
29
47
  "dependencies": {
30
48
  "@nestjs/common": "^11.1.3",
31
49
  "@nestjs/core": "^11.1.6",
32
- "@plyaz/api": "^1.2.2",
33
- "@plyaz/config": "^1.7.18",
34
- "@plyaz/db": "^0.1.0",
35
- "@plyaz/errors": "^1.3.7",
36
- "@plyaz/logger": "^1.3.2",
50
+ "@nestjs/platform-express": "^11.1.9",
51
+ "@plyaz/api": "^1.5.5",
52
+ "@plyaz/config": "^1.9.0",
53
+ "@plyaz/db": "^0.5.0",
54
+ "@plyaz/errors": "^1.5.1",
55
+ "@plyaz/logger": "^1.4.1",
56
+ "@plyaz/notifications": "^1.0.1",
57
+ "@plyaz/storage": "^1.0.1",
58
+ "@plyaz/store": "^1.1.3",
37
59
  "@plyaz/translations": "^1.4.5",
38
- "@plyaz/types": "^1.15.19",
60
+ "@plyaz/types": "^1.24.0",
39
61
  "@supabase/supabase-js": "^2.79.0",
62
+ "dd-trace": "^5.80.0",
40
63
  "dotenv": "^17.2.3",
41
64
  "drizzle-orm": "^0.36.4",
65
+ "fetchff": "^4.1.0",
66
+ "hot-shots": "^11.4.0",
42
67
  "ioredis": "^5.6.1",
43
68
  "next": "15.4.7",
44
69
  "postgres": "^3.4.7",
45
- "react": "^19.1.0",
46
- "react-dom": "^19.1.0",
70
+ "react": "^19.2.0",
71
+ "react-dom": "^19.2.0",
47
72
  "rxjs": "^7.8.2",
48
73
  "viem": "^2.31.7",
49
- "yaml": "^2.8.0"
74
+ "yaml": "^2.8.0",
75
+ "zod": "4.1.5",
76
+ "zustand": "^5.0.9"
50
77
  },
51
78
  "devDependencies": {
52
79
  "@changesets/cli": "^2.29.5",
@@ -54,6 +81,8 @@
54
81
  "@eslint/eslintrc": "^3.2.0",
55
82
  "@eslint/js": "^9.15.0",
56
83
  "@eslint/markdown": "^6.5.0",
84
+ "@nestjs/cli": "^11.0.7",
85
+ "@nestjs/schematics": "^11.0.5",
57
86
  "@next/eslint-plugin-next": "^15.0.3",
58
87
  "@plyaz/devtools": "^1.9.4",
59
88
  "@plyaz/testing": "^1.5.1",
@@ -62,13 +91,15 @@
62
91
  "@testing-library/user-event": "^14.6.1",
63
92
  "@types/express": "^5.0.5",
64
93
  "@types/node": "^22.14.0",
65
- "@types/react": "^19.1.8",
66
- "@types/react-dom": "^19.1.6",
94
+ "@types/react": "^19.2.2",
95
+ "@types/react-dom": "^19.2.2",
67
96
  "@typescript-eslint/eslint-plugin": "^8.15.0",
68
97
  "@typescript-eslint/parser": "^8.15.0",
69
98
  "@vitest/coverage-istanbul": "3.2.4",
70
99
  "@vitest/coverage-v8": "^3.1.3",
71
100
  "chalk": "^5.4.1",
101
+ "commander": "^12.1.0",
102
+ "cross-env": "^10.1.0",
72
103
  "eslint": "^9.29.0",
73
104
  "eslint-config-next": "^15.3.3",
74
105
  "eslint-config-prettier": "^9.1.0",
@@ -108,6 +139,8 @@
108
139
  "standard-version": "^9.5.0",
109
140
  "tailwindcss": "^4.1.8",
110
141
  "ts-morph": "^26.0.0",
142
+ "ts-node": "^10.9.2",
143
+ "tsconfig-paths": "^4.2.0",
111
144
  "tsup": "8.5.0",
112
145
  "typescript": "^5",
113
146
  "typescript-eslint": "^8.34.0",
@@ -135,13 +168,54 @@
135
168
  "lint:fix": "eslint ./src ./tests --fix",
136
169
  "format": "prettier --write './**/*.{ts,tsx,js,jsx}'",
137
170
  "format:check": "prettier --check './**/*.{ts,tsx,js,jsx}'",
138
- "type:check": "tsc --noEmit",
171
+ "type:check": "node --max-old-space-size=8192 node_modules/typescript/bin/tsc --noEmit",
139
172
  "test": "vitest run --no-watch",
140
173
  "test:ci": "vitest run --no-watch",
141
174
  "test:watch": "vitest --watch",
142
175
  "test:coverage": "vitest run --coverage",
143
176
  "test:ui": "vitest --ui",
144
177
  "clean": "rm -rf dist",
178
+ "example:db": "npx tsx examples/db-service.ts",
179
+ "nest:dev": "npx tsx --watch server/main.ts",
180
+ "nest:start": "npx tsx server/main.ts",
181
+ "nest:start:debug": "npx tsx --inspect server/main.ts",
182
+ "nest:start:prod": "node dist/server/main.js",
183
+ "nest:generate": "nest generate",
184
+ "generate": "npx tsx bin/generate.ts",
185
+ "generate:feature": "npx tsx bin/generate.ts feature",
186
+ "generate:list": "npx tsx bin/generate.ts list --files",
187
+ "generate:info": "npx tsx bin/generate.ts info",
188
+ "generate:init": "npx tsx bin/generate.ts init",
189
+ "generate:undo": "npx tsx bin/generate.ts undo",
190
+ "generate:history": "npx tsx bin/generate.ts history",
191
+ "generate:no-author": "npx tsx bin/generate.ts feature --no-author",
192
+ "g": "npx tsx bin/generate.ts",
193
+ "g:f": "npx tsx bin/generate.ts feature",
194
+ "g:f:na": "npx tsx bin/generate.ts feature --no-author",
195
+ "g:u": "npx tsx bin/generate.ts undo",
196
+ "db:init": "plyaz-db init",
197
+ "db:version": "plyaz-db version",
198
+ "db:migrate": "plyaz-db migrate up",
199
+ "db:migrate:down": "plyaz-db migrate down",
200
+ "db:migrate:down:all": "plyaz-db migrate reset --confirm",
201
+ "db:migrate:status": "plyaz-db migrate status",
202
+ "db:migrate:verify": "plyaz-db migrate verify",
203
+ "db:migrate:generate-down": "plyaz-db migrate generate-down",
204
+ "db:migrate:generate-down:write": "plyaz-db migrate generate-down --write",
205
+ "db:seed": "plyaz-db seed run",
206
+ "db:seed:status": "plyaz-db seed status",
207
+ "db:seed:reset": "plyaz-db seed reset --confirm",
208
+ "db:health": "plyaz-db health",
209
+ "db:create:migration": "plyaz-db create migration",
210
+ "db:create:migration:ts": "plyaz-db create migration -t ts",
211
+ "db:create:migration:i": "plyaz-db create migration -i",
212
+ "db:create:seed": "plyaz-db create seed",
213
+ "db:create:seed:sql": "plyaz-db create seed -t sql",
214
+ "db:create:seed:csv": "plyaz-db create seed -t csv",
215
+ "db:create:seed:i": "plyaz-db create seed -i",
216
+ "db:reset": "plyaz-db reset --confirm --drop-schemas --migrate --schemas public,backoffice ",
217
+ "db:clear": "plyaz-db clear --confirm --schemas public,backoffice,audit",
218
+ "db:drop": "plyaz-db drop --confirm --all --schemas public,backoffice,audit",
145
219
  "audit": "pnpm audit",
146
220
  "audit:moderate": "pnpm audit --audit-level moderate",
147
221
  "audit:high": "pnpm audit --audit-level high",
@@ -1,321 +0,0 @@
1
- import { type DatabaseServiceInterface, type Transaction } from '@plyaz/types/db';
2
- /**
3
- * DatabaseConnectionManager - Singleton manager for feature flag database connections
4
- *
5
- * @description Manages Supabase database connections for the feature flag system using a singleton pattern.
6
- * Handles connection initialization, table registration, transactions, and cleanup. This is the core
7
- * database layer that all feature flag operations depend on.
8
- *
9
- * **Initialization Flow:**
10
- * 1. FeatureFlagService calls initialize() during onModuleInit()
11
- * 2. Reads Supabase credentials from environment variables
12
- * 3. Creates database service with @plyaz/db
13
- * 4. Registers feature flag tables
14
- * 5. Enables caching and other optimizations
15
- *
16
- * **Required Environment Variables:**
17
- * - SUPABASE_URL: Your Supabase project URL
18
- * - SUPABASE_SERVICE_ROLE_KEY: Service role key for admin operations
19
- * - SUPABASE_ANON_PUBLIC_KEY: Anonymous key for public operations
20
- *
21
- * @example Environment Setup (.env.local)
22
- * ```bash
23
- * SUPABASE_URL=https://your-project.supabase.co
24
- * SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
25
- * SUPABASE_ANON_PUBLIC_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
26
- * ```
27
- *
28
- * @example Basic Usage (Internal - called by FeatureFlagService)
29
- * ```typescript
30
- * // During system initialization:
31
- * const manager = DatabaseConnectionManager.getInstance();
32
- * await manager.initialize();
33
- *
34
- * // During runtime operations:
35
- * const db = manager.getDatabase();
36
- * const flags = await db.query('feature_flags', { limit: 100 });
37
- * ```
38
- *
39
- * @example Transaction Usage
40
- * ```typescript
41
- * const manager = DatabaseConnectionManager.getInstance();
42
- *
43
- * // Atomic flag creation with rules
44
- * const result = await manager.transaction(async (tx) => {
45
- * // Create flag
46
- * const flag = await tx.create('feature_flags', {
47
- * key: 'NEW_FEATURE',
48
- * value: true,
49
- * is_enabled: true
50
- * });
51
- *
52
- * // Create associated rule
53
- * const rule = await tx.create('feature_flag_rules', {
54
- * flag_key: 'NEW_FEATURE',
55
- * name: 'Premium Users Only',
56
- * conditions: [{ field: 'userRole', operator: 'equals', value: 'premium' }]
57
- * });
58
- *
59
- * return { flag, rule };
60
- * });
61
- * ```
62
- *
63
- */
64
- export declare class DatabaseConnectionManager {
65
- private static instance;
66
- private databaseService;
67
- private constructor();
68
- /**
69
- * Gets the singleton instance of DatabaseConnectionManager
70
- *
71
- * @description Returns the single instance of the connection manager, creating it if it doesn't exist.
72
- * This ensures only one database connection pool is maintained across the application.
73
- *
74
- * @returns {DatabaseConnectionManager} The singleton instance
75
- *
76
- * @example Getting the Instance
77
- * ```typescript
78
- * // Always returns the same instance
79
- * const manager1 = DatabaseConnectionManager.getInstance();
80
- * const manager2 = DatabaseConnectionManager.getInstance();
81
- * console.log(manager1 === manager2); // true
82
- *
83
- * // Use in services
84
- * class FeatureFlagRepository {
85
- * private connectionManager = DatabaseConnectionManager.getInstance();
86
- *
87
- * async getFlags() {
88
- * const db = this.connectionManager.getDatabase();
89
- * return db.query('feature_flags');
90
- * }
91
- * }
92
- * ```
93
- */
94
- static getInstance(): DatabaseConnectionManager;
95
- /**
96
- * Initializes the database connection and registers feature flag tables
97
- *
98
- * @description Sets up the Supabase connection using environment variables and registers
99
- * all feature flag related tables. This method is idempotent - calling it multiple
100
- * times won't create additional connections.
101
- *
102
- * **What it does:**
103
- * 1. Validates required environment variables
104
- * 2. Creates Supabase database service
105
- * 3. Configures caching (5-minute TTL)
106
- * 4. Registers feature flag tables with proper ID columns
107
- * 5. Disables audit logging (until tables are created)
108
- *
109
- * @throws {DatabaseError} When environment variables are missing or connection fails
110
- *
111
- * @example Initialization Process
112
- * ```typescript
113
- * // Called automatically by FeatureFlagService.onModuleInit()
114
- * const manager = DatabaseConnectionManager.getInstance();
115
- *
116
- * try {
117
- * await manager.initialize();
118
- * console.log('Database connection established');
119
- * } catch (error) {
120
- * console.error('Failed to connect to database:', error.message);
121
- * // Error: Missing environment variables for Supabase connection
122
- * }
123
- * ```
124
- *
125
- * @example Environment Variable Validation
126
- * ```typescript
127
- * // If any of these are missing, initialization fails:
128
- * // SUPABASE_URL=undefined
129
- * // SUPABASE_SERVICE_ROLE_KEY=undefined
130
- * // SUPABASE_ANON_PUBLIC_KEY=undefined
131
- *
132
- * // Throws: DatabaseError with code CONFIG_REQUIRED
133
- * ```
134
- *
135
- * @example Registered Tables
136
- * ```typescript
137
- * // These tables are automatically registered:
138
- * // - feature_flags (ID: key)
139
- * // - feature_flag_rules (ID: id)
140
- * // - feature_flag_overrides (ID: id)
141
- * // - feature_flag_evaluations (ID: id)
142
- * ```
143
- */
144
- initialize(): Promise<void>;
145
- /**
146
- * Gets the initialized database service instance
147
- *
148
- * @description Returns the database service for performing queries. The database must be
149
- * initialized first using initialize() method, otherwise this will throw an error.
150
- *
151
- * @returns {DatabaseServiceInterface} The database service instance
152
- * @throws {DatabaseError} When database is not initialized
153
- *
154
- * @example Basic Usage
155
- * ```typescript
156
- * const manager = DatabaseConnectionManager.getInstance();
157
- * await manager.initialize(); // Must initialize first
158
- *
159
- * const db = manager.getDatabase();
160
- *
161
- * // Query feature flags
162
- * const result = await db.query('feature_flags', {
163
- * filters: [{ field: 'is_enabled', operator: 'eq', value: true }],
164
- * sort: [{ field: 'key', direction: 'asc' }]
165
- * });
166
- *
167
- * if (result.success) {
168
- * console.log('Found flags:', result.value.data);
169
- * }
170
- * ```
171
- *
172
- * @example Error Handling
173
- * ```typescript
174
- * const manager = DatabaseConnectionManager.getInstance();
175
- * // Don't call initialize()
176
- *
177
- * try {
178
- * const db = manager.getDatabase();
179
- * } catch (error) {
180
- * console.error(error.message);
181
- * // "Database not initialized. Call initialize() first."
182
- * }
183
- * ```
184
- *
185
- * @example CRUD Operations
186
- * ```typescript
187
- * const db = manager.getDatabase();
188
- *
189
- * // Create a flag
190
- * const createResult = await db.create('feature_flags', {
191
- * key: 'NEW_FEATURE',
192
- * value: true,
193
- * is_enabled: true
194
- * });
195
- *
196
- * // Update a flag
197
- * const updateResult = await db.update('feature_flags', 'NEW_FEATURE', {
198
- * value: false
199
- * });
200
- *
201
- * // Delete a flag
202
- * const deleteResult = await db.delete('feature_flags', 'NEW_FEATURE');
203
- * ```
204
- */
205
- getDatabase(): DatabaseServiceInterface;
206
- /**
207
- * Executes a database transaction with automatic rollback on failure
208
- *
209
- * @description Provides atomic database operations by wrapping multiple queries in a transaction.
210
- * If any operation fails, all changes are rolled back automatically. This is essential for
211
- * maintaining data consistency when creating flags with rules or performing bulk operations.
212
- *
213
- * @template T The return type of the transaction callback
214
- * @param {Function} callback - Function that receives transaction object and performs operations
215
- * @returns {Promise<T>} The result of the transaction callback
216
- * @throws {DatabaseError} When transaction fails or returns no value
217
- *
218
- * @example Atomic Flag Creation with Rules
219
- * ```typescript
220
- * const manager = DatabaseConnectionManager.getInstance();
221
- *
222
- * const result = await manager.transaction(async (tx) => {
223
- * // Create the flag
224
- * const flag = await tx.create('feature_flags', {
225
- * key: 'PREMIUM_CHECKOUT',
226
- * value: true,
227
- * is_enabled: true,
228
- * description: 'Premium checkout flow'
229
- * });
230
- *
231
- * // Create targeting rule
232
- * const rule = await tx.create('feature_flag_rules', {
233
- * flag_key: 'PREMIUM_CHECKOUT',
234
- * name: 'Premium Users Only',
235
- * conditions: [
236
- * { field: 'userRole', operator: 'equals', value: 'premium' },
237
- * { field: 'subscriptionActive', operator: 'equals', value: true }
238
- * ],
239
- * value: true,
240
- * priority: 100
241
- * });
242
- *
243
- * return { flag, rule };
244
- * });
245
- *
246
- * console.log('Created flag and rule:', result);
247
- * ```
248
- *
249
- * @example Bulk Flag Updates
250
- * ```typescript
251
- * const flagsToUpdate = ['FEATURE_A', 'FEATURE_B', 'FEATURE_C'];
252
- *
253
- * await manager.transaction(async (tx) => {
254
- * for (const flagKey of flagsToUpdate) {
255
- * await tx.update('feature_flags', flagKey, {
256
- * is_enabled: false,
257
- * updated_at: new Date().toISOString()
258
- * });
259
- * }
260
- *
261
- * // Log the bulk update
262
- * await tx.create('feature_flag_evaluations', {
263
- * flag_key: 'BULK_UPDATE',
264
- * result: { updatedFlags: flagsToUpdate },
265
- * reason: 'bulk_disable',
266
- * evaluated_at: new Date().toISOString()
267
- * });
268
- * });
269
- * ```
270
- *
271
- * @example Error Handling and Rollback
272
- * ```typescript
273
- * try {
274
- * await manager.transaction(async (tx) => {
275
- * await tx.create('feature_flags', { key: 'TEST_FLAG', value: true });
276
- *
277
- * // This will cause the entire transaction to rollback
278
- * throw new Error('Something went wrong');
279
- *
280
- * // This won't execute, and the flag creation above will be rolled back
281
- * await tx.create('feature_flag_rules', { flag_key: 'TEST_FLAG' });
282
- * });
283
- * } catch (error) {
284
- * console.log('Transaction failed, all changes rolled back');
285
- * }
286
- * ```
287
- */
288
- transaction<T>(callback: (tx: Transaction) => Promise<T>): Promise<T>;
289
- /**
290
- * Closes the database connection and cleans up resources
291
- *
292
- * @description Properly closes the database connection and resets the singleton instance.
293
- * This is typically called during application shutdown or in tests that need to reset
294
- * the connection state.
295
- *
296
- * @example Application Shutdown
297
- * ```typescript
298
- * // In your NestJS module's onModuleDestroy
299
- * export class FeatureFlagModule implements OnModuleDestroy {
300
- * async onModuleDestroy() {
301
- * const manager = DatabaseConnectionManager.getInstance();
302
- * await manager.close();
303
- * console.log('Database connection closed');
304
- * }
305
- * }
306
- * ```
307
- *
308
- * @example Test Cleanup
309
- * ```typescript
310
- * describe('Feature Flag Tests', () => {
311
- * afterEach(async () => {
312
- * // Clean up connection between tests
313
- * const manager = DatabaseConnectionManager.getInstance();
314
- * await manager.close();
315
- * });
316
- * });
317
- * ```
318
- */
319
- close(): Promise<void>;
320
- }
321
- //# sourceMappingURL=connection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/database/connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,wBAAwB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAyC;IAEhE,OAAO;IAEP;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACH,WAAW,IAAI,wBAAwB;IAUvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiFG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAe3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}