@stratal/framework 0.0.12 → 0.0.14

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 (290) hide show
  1. package/dist/auth/index.d.mts +202 -0
  2. package/dist/auth/index.d.mts.map +1 -0
  3. package/dist/auth/index.mjs +323 -0
  4. package/dist/auth/index.mjs.map +1 -0
  5. package/dist/auth-context-BD2ApWg1.d.mts +38 -0
  6. package/dist/auth-context-BD2ApWg1.d.mts.map +1 -0
  7. package/dist/auth-context-CV3Ko1ew.mjs +55 -0
  8. package/dist/auth-context-CV3Ko1ew.mjs.map +1 -0
  9. package/dist/context/index.d.mts +20 -0
  10. package/dist/context/index.d.mts.map +1 -0
  11. package/dist/context/index.mjs +3 -0
  12. package/dist/database/index.d.mts +3 -0
  13. package/dist/database/index.mjs +374 -0
  14. package/dist/database/index.mjs.map +1 -0
  15. package/dist/decorate-RSane8dy.mjs +9 -0
  16. package/dist/decorateMetadata-CETItPez.mjs +6 -0
  17. package/dist/decorateParam-CcTvpNsw.mjs +8 -0
  18. package/dist/errors-C_KIIU1v.mjs +25 -0
  19. package/dist/errors-C_KIIU1v.mjs.map +1 -0
  20. package/dist/factory/index.d.mts +99 -0
  21. package/dist/factory/index.d.mts.map +1 -0
  22. package/dist/factory/index.mjs +138 -0
  23. package/dist/factory/index.mjs.map +1 -0
  24. package/dist/guards/{auth.guard.d.ts → index.d.mts} +7 -3
  25. package/dist/guards/index.d.mts.map +1 -0
  26. package/dist/guards/index.mjs +93 -0
  27. package/dist/guards/index.mjs.map +1 -0
  28. package/dist/index-Dlg8mNjq.d.mts +386 -0
  29. package/dist/index-Dlg8mNjq.d.mts.map +1 -0
  30. package/dist/index.d.mts +3 -0
  31. package/dist/index.mjs +1 -0
  32. package/dist/rbac/index.d.mts +206 -0
  33. package/dist/rbac/index.d.mts.map +1 -0
  34. package/dist/rbac/index.mjs +346 -0
  35. package/dist/rbac/index.mjs.map +1 -0
  36. package/dist/tokens-Di1ofovy.mjs +32 -0
  37. package/dist/tokens-Di1ofovy.mjs.map +1 -0
  38. package/dist/{database/types.d.ts → types-Gjk0d2qB.d.mts} +18 -15
  39. package/dist/types-Gjk0d2qB.d.mts.map +1 -0
  40. package/package.json +25 -24
  41. package/dist/auth/auth.module.d.ts +0 -37
  42. package/dist/auth/auth.module.d.ts.map +0 -1
  43. package/dist/auth/auth.module.js +0 -74
  44. package/dist/auth/auth.module.js.map +0 -1
  45. package/dist/auth/auth.tokens.d.ts +0 -5
  46. package/dist/auth/auth.tokens.d.ts.map +0 -1
  47. package/dist/auth/auth.tokens.js +0 -5
  48. package/dist/auth/auth.tokens.js.map +0 -1
  49. package/dist/auth/errors/auth-errors.d.ts +0 -74
  50. package/dist/auth/errors/auth-errors.d.ts.map +0 -1
  51. package/dist/auth/errors/auth-errors.js +0 -122
  52. package/dist/auth/errors/auth-errors.js.map +0 -1
  53. package/dist/auth/errors/index.d.ts +0 -5
  54. package/dist/auth/errors/index.d.ts.map +0 -1
  55. package/dist/auth/errors/index.js +0 -5
  56. package/dist/auth/errors/index.js.map +0 -1
  57. package/dist/auth/errors/invalid-token.error.d.ts +0 -5
  58. package/dist/auth/errors/invalid-token.error.d.ts.map +0 -1
  59. package/dist/auth/errors/invalid-token.error.js +0 -7
  60. package/dist/auth/errors/invalid-token.error.js.map +0 -1
  61. package/dist/auth/errors/token-required.error.d.ts +0 -5
  62. package/dist/auth/errors/token-required.error.d.ts.map +0 -1
  63. package/dist/auth/errors/token-required.error.js +0 -7
  64. package/dist/auth/errors/token-required.error.js.map +0 -1
  65. package/dist/auth/errors/verification-failed.error.d.ts +0 -5
  66. package/dist/auth/errors/verification-failed.error.d.ts.map +0 -1
  67. package/dist/auth/errors/verification-failed.error.js +0 -7
  68. package/dist/auth/errors/verification-failed.error.js.map +0 -1
  69. package/dist/auth/index.d.ts +0 -7
  70. package/dist/auth/index.d.ts.map +0 -1
  71. package/dist/auth/index.js +0 -7
  72. package/dist/auth/index.js.map +0 -1
  73. package/dist/auth/middleware/auth-context.middleware.d.ts +0 -12
  74. package/dist/auth/middleware/auth-context.middleware.d.ts.map +0 -1
  75. package/dist/auth/middleware/auth-context.middleware.js +0 -28
  76. package/dist/auth/middleware/auth-context.middleware.js.map +0 -1
  77. package/dist/auth/middleware/index.d.ts +0 -3
  78. package/dist/auth/middleware/index.d.ts.map +0 -1
  79. package/dist/auth/middleware/index.js +0 -3
  80. package/dist/auth/middleware/index.js.map +0 -1
  81. package/dist/auth/middleware/session-verification.middleware.d.ts +0 -18
  82. package/dist/auth/middleware/session-verification.middleware.d.ts.map +0 -1
  83. package/dist/auth/middleware/session-verification.middleware.js +0 -48
  84. package/dist/auth/middleware/session-verification.middleware.js.map +0 -1
  85. package/dist/auth/services/auth.service.d.ts +0 -32
  86. package/dist/auth/services/auth.service.d.ts.map +0 -1
  87. package/dist/auth/services/auth.service.js +0 -62
  88. package/dist/auth/services/auth.service.js.map +0 -1
  89. package/dist/auth/services/index.d.ts +0 -2
  90. package/dist/auth/services/index.d.ts.map +0 -1
  91. package/dist/auth/services/index.js +0 -2
  92. package/dist/auth/services/index.js.map +0 -1
  93. package/dist/auth/utils/auth-helpers.d.ts +0 -11
  94. package/dist/auth/utils/auth-helpers.d.ts.map +0 -1
  95. package/dist/auth/utils/auth-helpers.js +0 -31
  96. package/dist/auth/utils/auth-helpers.js.map +0 -1
  97. package/dist/auth/utils/better-auth-error-handler.d.ts +0 -11
  98. package/dist/auth/utils/better-auth-error-handler.d.ts.map +0 -1
  99. package/dist/auth/utils/better-auth-error-handler.js +0 -95
  100. package/dist/auth/utils/better-auth-error-handler.js.map +0 -1
  101. package/dist/auth/utils/index.d.ts +0 -3
  102. package/dist/auth/utils/index.d.ts.map +0 -1
  103. package/dist/auth/utils/index.js +0 -3
  104. package/dist/auth/utils/index.js.map +0 -1
  105. package/dist/context/auth-context.d.ts +0 -35
  106. package/dist/context/auth-context.d.ts.map +0 -1
  107. package/dist/context/auth-context.js +0 -65
  108. package/dist/context/auth-context.js.map +0 -1
  109. package/dist/context/errors/context-not-initialized.error.d.ts +0 -5
  110. package/dist/context/errors/context-not-initialized.error.d.ts.map +0 -1
  111. package/dist/context/errors/context-not-initialized.error.js +0 -7
  112. package/dist/context/errors/context-not-initialized.error.js.map +0 -1
  113. package/dist/context/errors/index.d.ts +0 -4
  114. package/dist/context/errors/index.d.ts.map +0 -1
  115. package/dist/context/errors/index.js +0 -4
  116. package/dist/context/errors/index.js.map +0 -1
  117. package/dist/context/errors/user-not-authenticated.error.d.ts +0 -5
  118. package/dist/context/errors/user-not-authenticated.error.d.ts.map +0 -1
  119. package/dist/context/errors/user-not-authenticated.error.js +0 -7
  120. package/dist/context/errors/user-not-authenticated.error.js.map +0 -1
  121. package/dist/context/errors/user-not-authorized.error.d.ts +0 -5
  122. package/dist/context/errors/user-not-authorized.error.d.ts.map +0 -1
  123. package/dist/context/errors/user-not-authorized.error.js +0 -7
  124. package/dist/context/errors/user-not-authorized.error.js.map +0 -1
  125. package/dist/context/index.d.ts +0 -3
  126. package/dist/context/index.d.ts.map +0 -1
  127. package/dist/context/index.js +0 -3
  128. package/dist/context/index.js.map +0 -1
  129. package/dist/database/custom-pg-types.d.ts +0 -21
  130. package/dist/database/custom-pg-types.d.ts.map +0 -1
  131. package/dist/database/custom-pg-types.js +0 -41
  132. package/dist/database/custom-pg-types.js.map +0 -1
  133. package/dist/database/database.helpers.d.ts +0 -15
  134. package/dist/database/database.helpers.d.ts.map +0 -1
  135. package/dist/database/database.helpers.js +0 -47
  136. package/dist/database/database.helpers.js.map +0 -1
  137. package/dist/database/database.module.d.ts +0 -22
  138. package/dist/database/database.module.d.ts.map +0 -1
  139. package/dist/database/database.module.js +0 -54
  140. package/dist/database/database.module.js.map +0 -1
  141. package/dist/database/database.service.d.ts +0 -18
  142. package/dist/database/database.service.d.ts.map +0 -1
  143. package/dist/database/database.service.js +0 -2
  144. package/dist/database/database.service.js.map +0 -1
  145. package/dist/database/database.tokens.d.ts +0 -7
  146. package/dist/database/database.tokens.d.ts.map +0 -1
  147. package/dist/database/database.tokens.js +0 -8
  148. package/dist/database/database.tokens.js.map +0 -1
  149. package/dist/database/decorators/inject-db.decorator.d.ts +0 -3
  150. package/dist/database/decorators/inject-db.decorator.d.ts.map +0 -1
  151. package/dist/database/decorators/inject-db.decorator.js +0 -6
  152. package/dist/database/decorators/inject-db.decorator.js.map +0 -1
  153. package/dist/database/errors/database-config.error.d.ts +0 -5
  154. package/dist/database/errors/database-config.error.d.ts.map +0 -1
  155. package/dist/database/errors/database-config.error.js +0 -8
  156. package/dist/database/errors/database-config.error.js.map +0 -1
  157. package/dist/database/errors/database-error.d.ts +0 -14
  158. package/dist/database/errors/database-error.d.ts.map +0 -1
  159. package/dist/database/errors/database-error.js +0 -20
  160. package/dist/database/errors/database-error.js.map +0 -1
  161. package/dist/database/errors/foreign-key-constraint.error.d.ts +0 -14
  162. package/dist/database/errors/foreign-key-constraint.error.d.ts.map +0 -1
  163. package/dist/database/errors/foreign-key-constraint.error.js +0 -19
  164. package/dist/database/errors/foreign-key-constraint.error.js.map +0 -1
  165. package/dist/database/errors/from-zenstack-error.d.ts +0 -22
  166. package/dist/database/errors/from-zenstack-error.d.ts.map +0 -1
  167. package/dist/database/errors/from-zenstack-error.js +0 -114
  168. package/dist/database/errors/from-zenstack-error.js.map +0 -1
  169. package/dist/database/errors/index.d.ts +0 -8
  170. package/dist/database/errors/index.d.ts.map +0 -1
  171. package/dist/database/errors/index.js +0 -8
  172. package/dist/database/errors/index.js.map +0 -1
  173. package/dist/database/errors/invalid-error-code-range.error.d.ts +0 -12
  174. package/dist/database/errors/invalid-error-code-range.error.d.ts.map +0 -1
  175. package/dist/database/errors/invalid-error-code-range.error.js +0 -14
  176. package/dist/database/errors/invalid-error-code-range.error.js.map +0 -1
  177. package/dist/database/errors/record-not-found.error.d.ts +0 -15
  178. package/dist/database/errors/record-not-found.error.d.ts.map +0 -1
  179. package/dist/database/errors/record-not-found.error.js +0 -20
  180. package/dist/database/errors/record-not-found.error.js.map +0 -1
  181. package/dist/database/errors/unique-constraint.error.d.ts +0 -15
  182. package/dist/database/errors/unique-constraint.error.d.ts.map +0 -1
  183. package/dist/database/errors/unique-constraint.error.js +0 -20
  184. package/dist/database/errors/unique-constraint.error.js.map +0 -1
  185. package/dist/database/event-types.d.ts +0 -137
  186. package/dist/database/event-types.d.ts.map +0 -1
  187. package/dist/database/event-types.js +0 -13
  188. package/dist/database/event-types.js.map +0 -1
  189. package/dist/database/i18n/en.d.ts +0 -15
  190. package/dist/database/i18n/en.d.ts.map +0 -1
  191. package/dist/database/i18n/en.js +0 -10
  192. package/dist/database/i18n/en.js.map +0 -1
  193. package/dist/database/i18n/index.d.ts +0 -2
  194. package/dist/database/i18n/index.d.ts.map +0 -1
  195. package/dist/database/i18n/index.js +0 -2
  196. package/dist/database/i18n/index.js.map +0 -1
  197. package/dist/database/index.d.ts +0 -11
  198. package/dist/database/index.d.ts.map +0 -1
  199. package/dist/database/index.js +0 -11
  200. package/dist/database/index.js.map +0 -1
  201. package/dist/database/plugins/error-handler.plugin.d.ts +0 -21
  202. package/dist/database/plugins/error-handler.plugin.d.ts.map +0 -1
  203. package/dist/database/plugins/error-handler.plugin.js +0 -24
  204. package/dist/database/plugins/error-handler.plugin.js.map +0 -1
  205. package/dist/database/plugins/event-emitter.plugin.d.ts +0 -37
  206. package/dist/database/plugins/event-emitter.plugin.d.ts.map +0 -1
  207. package/dist/database/plugins/event-emitter.plugin.js +0 -43
  208. package/dist/database/plugins/event-emitter.plugin.js.map +0 -1
  209. package/dist/database/plugins/index.d.ts +0 -4
  210. package/dist/database/plugins/index.d.ts.map +0 -1
  211. package/dist/database/plugins/index.js +0 -4
  212. package/dist/database/plugins/index.js.map +0 -1
  213. package/dist/database/plugins/schema-switcher.plugin.d.ts +0 -32
  214. package/dist/database/plugins/schema-switcher.plugin.d.ts.map +0 -1
  215. package/dist/database/plugins/schema-switcher.plugin.js +0 -27
  216. package/dist/database/plugins/schema-switcher.plugin.js.map +0 -1
  217. package/dist/database/types.d.ts.map +0 -1
  218. package/dist/database/types.js +0 -2
  219. package/dist/database/types.js.map +0 -1
  220. package/dist/factory/factory.d.ts +0 -56
  221. package/dist/factory/factory.d.ts.map +0 -1
  222. package/dist/factory/factory.js +0 -86
  223. package/dist/factory/factory.js.map +0 -1
  224. package/dist/factory/index.d.ts +0 -3
  225. package/dist/factory/index.d.ts.map +0 -1
  226. package/dist/factory/index.js +0 -3
  227. package/dist/factory/index.js.map +0 -1
  228. package/dist/factory/sequence.d.ts +0 -38
  229. package/dist/factory/sequence.d.ts.map +0 -1
  230. package/dist/factory/sequence.js +0 -54
  231. package/dist/factory/sequence.js.map +0 -1
  232. package/dist/guards/auth.guard.d.ts.map +0 -1
  233. package/dist/guards/auth.guard.js +0 -99
  234. package/dist/guards/auth.guard.js.map +0 -1
  235. package/dist/guards/index.d.ts +0 -3
  236. package/dist/guards/index.d.ts.map +0 -1
  237. package/dist/guards/index.js +0 -5
  238. package/dist/guards/index.js.map +0 -1
  239. package/dist/index.d.ts +0 -3
  240. package/dist/index.d.ts.map +0 -1
  241. package/dist/index.js +0 -2
  242. package/dist/index.js.map +0 -1
  243. package/dist/rbac/adapters/custom-zenstack-adapter.d.ts +0 -61
  244. package/dist/rbac/adapters/custom-zenstack-adapter.d.ts.map +0 -1
  245. package/dist/rbac/adapters/custom-zenstack-adapter.js +0 -159
  246. package/dist/rbac/adapters/custom-zenstack-adapter.js.map +0 -1
  247. package/dist/rbac/adapters/index.d.ts +0 -2
  248. package/dist/rbac/adapters/index.d.ts.map +0 -1
  249. package/dist/rbac/adapters/index.js +0 -2
  250. package/dist/rbac/adapters/index.js.map +0 -1
  251. package/dist/rbac/constants.d.ts +0 -8
  252. package/dist/rbac/constants.d.ts.map +0 -1
  253. package/dist/rbac/constants.js +0 -8
  254. package/dist/rbac/constants.js.map +0 -1
  255. package/dist/rbac/errors/index.d.ts +0 -2
  256. package/dist/rbac/errors/index.d.ts.map +0 -1
  257. package/dist/rbac/errors/index.js +0 -2
  258. package/dist/rbac/errors/index.js.map +0 -1
  259. package/dist/rbac/errors/insufficient-permissions.error.d.ts +0 -14
  260. package/dist/rbac/errors/insufficient-permissions.error.d.ts.map +0 -1
  261. package/dist/rbac/errors/insufficient-permissions.error.js +0 -19
  262. package/dist/rbac/errors/insufficient-permissions.error.js.map +0 -1
  263. package/dist/rbac/index.d.ts +0 -9
  264. package/dist/rbac/index.d.ts.map +0 -1
  265. package/dist/rbac/index.js +0 -8
  266. package/dist/rbac/index.js.map +0 -1
  267. package/dist/rbac/rbac.module.d.ts +0 -26
  268. package/dist/rbac/rbac.module.d.ts.map +0 -1
  269. package/dist/rbac/rbac.module.js +0 -62
  270. package/dist/rbac/rbac.module.js.map +0 -1
  271. package/dist/rbac/services/casbin-enforcer.service.d.ts +0 -37
  272. package/dist/rbac/services/casbin-enforcer.service.d.ts.map +0 -1
  273. package/dist/rbac/services/casbin-enforcer.service.js +0 -86
  274. package/dist/rbac/services/casbin-enforcer.service.js.map +0 -1
  275. package/dist/rbac/services/casbin.service.d.ts +0 -37
  276. package/dist/rbac/services/casbin.service.d.ts.map +0 -1
  277. package/dist/rbac/services/casbin.service.js +0 -174
  278. package/dist/rbac/services/casbin.service.js.map +0 -1
  279. package/dist/rbac/services/index.d.ts +0 -3
  280. package/dist/rbac/services/index.d.ts.map +0 -1
  281. package/dist/rbac/services/index.js +0 -3
  282. package/dist/rbac/services/index.js.map +0 -1
  283. package/dist/rbac/tokens.d.ts +0 -10
  284. package/dist/rbac/tokens.d.ts.map +0 -1
  285. package/dist/rbac/tokens.js +0 -10
  286. package/dist/rbac/tokens.js.map +0 -1
  287. package/dist/rbac/types.d.ts +0 -12
  288. package/dist/rbac/types.d.ts.map +0 -1
  289. package/dist/rbac/types.js +0 -2
  290. package/dist/rbac/types.js.map +0 -1
@@ -1,47 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { ZenStackClient } from '@zenstackhq/orm';
11
- import { Transient } from 'stratal/di';
12
- import { withI18n, z } from 'stratal/validation';
13
- import { ErrorHandlerPlugin, EventEmitterPlugin } from './plugins';
14
- const databaseConnectionSchema = z.object({
15
- name: z.string().min(1, withI18n('database.connectionNameRequired')),
16
- schema: z.object({}).loose(),
17
- dialect: z.function(),
18
- plugins: z.array(z.object({}).loose()).optional(),
19
- });
20
- export const databaseModuleConfigSchema = z.object({
21
- default: z.string().min(1, withI18n('database.defaultConnectionRequired')),
22
- connections: z.array(databaseConnectionSchema).min(1, withI18n('database.connectionRequired')),
23
- }).refine((config) => {
24
- const names = config.connections.map(c => c.name);
25
- return new Set(names).size === names.length;
26
- }, withI18n('database.duplicateConnections')).refine((config) => config.connections.some(c => c.name === config.default), withI18n('database.defaultConnectionNotFound'));
27
- export function createDatabaseService(conn, eventRegistry) {
28
- const plugins = [
29
- new ErrorHandlerPlugin(),
30
- new EventEmitterPlugin({
31
- eventRegistry,
32
- }),
33
- ...(conn.plugins ?? []),
34
- ];
35
- let DatabaseClient = class DatabaseClient extends ZenStackClient {
36
- constructor() {
37
- const dialect = conn.dialect();
38
- super(conn.schema, { dialect, plugins });
39
- }
40
- };
41
- DatabaseClient = __decorate([
42
- Transient(),
43
- __metadata("design:paramtypes", [])
44
- ], DatabaseClient);
45
- return DatabaseClient;
46
- }
47
- //# sourceMappingURL=database.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.helpers.js","sourceRoot":"","sources":["../../src/database/database.helpers.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAElE,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,oCAAoC,CAAC,CAAC;IAC1E,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,6BAA6B,CAAC,CAAC;CAC/F,CAAC,CAAC,MAAM,CACP,CAAC,MAAM,EAAE,EAAE;IACT,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACjD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAA;AAC7C,CAAC,EACD,QAAQ,CAAC,+BAA+B,CAAC,CAC1C,CAAC,MAAM,CACN,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,EACnE,QAAQ,CAAC,oCAAoC,CAAC,CAC/C,CAAA;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA8B,EAC9B,aAA6B;IAE7B,MAAM,OAAO,GAAgB;QAC3B,IAAI,kBAAkB,EAAE;QACxB,IAAI,kBAAkB,CAAC;YACrB,aAAa;SACd,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;KACxB,CAAA;IAED,IACM,cAAc,GADpB,MACM,cAAe,SAAQ,cAAkC;QAC7D;YACE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAC1C,CAAC;KACF,CAAA;IALK,cAAc;QADnB,SAAS,EAAE;;OACN,cAAc,CAKnB;IAED,OAAO,cAAc,CAAA;AACvB,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { AnyPlugin } from '@zenstackhq/orm';
2
- import type { SchemaDef } from '@zenstackhq/schema';
3
- import type { Dialect } from 'kysely';
4
- import { type AsyncModuleOptions, type DynamicModule, type ModuleContext, type OnInitialize, type OnShutdown } from 'stratal/module';
5
- import type { ConnectionName, DefaultConnectionName } from './types';
6
- export interface DatabaseConnectionConfig<Schema extends SchemaDef = SchemaDef, Name extends ConnectionName = ConnectionName> {
7
- name: Name;
8
- schema: Schema;
9
- dialect: () => Dialect;
10
- plugins?: AnyPlugin[];
11
- }
12
- export interface DatabaseModuleConfig {
13
- default: DefaultConnectionName;
14
- connections: DatabaseConnectionConfig[];
15
- }
16
- export declare class DatabaseModule implements OnInitialize, OnShutdown {
17
- static forRoot(config: DatabaseModuleConfig): DynamicModule;
18
- static forRootAsync(options: AsyncModuleOptions<DatabaseModuleConfig>): DynamicModule;
19
- onInitialize(context: ModuleContext): void;
20
- onShutdown(context: ModuleContext): void;
21
- }
22
- //# sourceMappingURL=database.module.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAGrC,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpE,MAAM,WAAW,wBAAwB,CACvC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,WAAW,EAAE,wBAAwB,EAAE,CAAA;CACxC;AAED,qBACa,cAAe,YAAW,YAAY,EAAE,UAAU;IAC7D,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa;IAS3D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,aAAa;IAarF,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmB1C,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAGzC"}
@@ -1,54 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var DatabaseModule_1;
8
- import { DI_TOKENS, Scope, delay } from 'stratal/di';
9
- import { Module, } from 'stratal/module';
10
- import { createDatabaseService } from './database.helpers';
11
- import { DATABASE_TOKENS, connectionSymbol } from './database.tokens';
12
- let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
13
- static forRoot(config) {
14
- return {
15
- module: DatabaseModule_1,
16
- providers: [
17
- { provide: DATABASE_TOKENS.Options, useValue: config },
18
- ],
19
- };
20
- }
21
- static forRootAsync(options) {
22
- return {
23
- module: DatabaseModule_1,
24
- providers: [
25
- {
26
- provide: DATABASE_TOKENS.Options,
27
- useFactory: options.useFactory,
28
- inject: options.inject,
29
- },
30
- ],
31
- };
32
- }
33
- onInitialize(context) {
34
- const config = context.container.resolve(DATABASE_TOKENS.Options);
35
- const eventRegistry = context.container.resolve(DI_TOKENS.EventRegistry);
36
- const container = context.container.getTsyringeContainer();
37
- for (const conn of config.connections) {
38
- const Service = createDatabaseService(conn, eventRegistry);
39
- container.register(connectionSymbol(conn.name),
40
- // @ts-expect-error Overload error
41
- delay(() => Service), { lifecycle: Scope.Request });
42
- }
43
- context.container.registerExisting(DI_TOKENS.Database, connectionSymbol(config.default));
44
- context.logger.info('DatabaseModule initialized');
45
- }
46
- onShutdown(context) {
47
- context.logger.info('DatabaseModule shutdown');
48
- }
49
- };
50
- DatabaseModule = DatabaseModule_1 = __decorate([
51
- Module({})
52
- ], DatabaseModule);
53
- export { DatabaseModule };
54
- //# sourceMappingURL=database.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":";;;;;;;AAGA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,EAEL,MAAM,GAMP,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAmB9D,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,MAAM,CAAC,OAAO,CAAC,MAA4B;QACzC,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,MAA2B,EAAE;aAC5E;SACF,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAiD;QACnE,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;aACF;SACF,CAAA;IACH,CAAC;IAED,YAAY,CAAC,OAAsB;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAuB,eAAe,CAAC,OAAO,CAAC,CAAA;QACvF,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAiB,SAAS,CAAC,aAAa,CAAC,CAAA;QACxF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;YAE1D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAA2B;YACtE,kCAAkC;YAClC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EACpB,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAExF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACnD,CAAC;IAED,UAAU,CAAC,OAAsB;QAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IAChD,CAAC;CACF,CAAA;AA7CY,cAAc;IAD1B,MAAM,CAAC,EAAE,CAAC;GACE,cAAc,CA6C1B"}
@@ -1,18 +0,0 @@
1
- import type { ClientContract, ClientOptions } from '@zenstackhq/orm';
2
- import type { ConnectionName, DefaultConnectionName, InferConnectionSchema } from './types';
3
- /**
4
- * DatabaseService type
5
- *
6
- * Each connection has its own schema. The service is typed to the connection's schema.
7
- *
8
- * @example
9
- * ```typescript
10
- * // Typed to default connection
11
- * constructor(@inject(DI_TOKENS.Database) private db: DatabaseService) {}
12
- *
13
- * // Typed to a specific named connection
14
- * constructor(@InjectDB('analytics') private analytics: DatabaseService<'analytics'>) {}
15
- * ```
16
- */
17
- export type DatabaseService<K extends ConnectionName = DefaultConnectionName> = ClientContract<InferConnectionSchema<K>, ClientOptions<InferConnectionSchema<K>>>;
18
- //# sourceMappingURL=database.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.service.d.ts","sourceRoot":"","sources":["../../src/database/database.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE3F;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,cAAc,GAAG,qBAAqB,IAC9C,cAAc,CAChB,qBAAqB,CAAC,CAAC,CAAC,EACxB,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACxC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=database.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/database/database.service.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- export declare const DATABASE_TOKENS: {
2
- readonly Options: symbol;
3
- readonly Services: symbol;
4
- };
5
- import type { ConnectionName } from './types';
6
- export declare function connectionSymbol(name: ConnectionName): symbol;
7
- //# sourceMappingURL=database.tokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.tokens.d.ts","sourceRoot":"","sources":["../../src/database/database.tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;CAGlB,CAAA;AAEV,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE7D"}
@@ -1,8 +0,0 @@
1
- export const DATABASE_TOKENS = {
2
- Options: Symbol.for('stratal:database:options'),
3
- Services: Symbol.for('stratal:database:services'),
4
- };
5
- export function connectionSymbol(name) {
6
- return Symbol.for(`stratal:database:connection:${name}`);
7
- }
8
- //# sourceMappingURL=database.tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.tokens.js","sourceRoot":"","sources":["../../src/database/database.tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC;CACzC,CAAA;AAIV,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,OAAO,MAAM,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ConnectionName } from '../types';
2
- export declare function InjectDB(name: ConnectionName): ParameterDecorator;
3
- //# sourceMappingURL=inject-db.decorator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject-db.decorator.d.ts","sourceRoot":"","sources":["../../../src/database/decorators/inject-db.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAEjE"}
@@ -1,6 +0,0 @@
1
- import { inject } from 'tsyringe';
2
- import { connectionSymbol } from '../database.tokens';
3
- export function InjectDB(name) {
4
- return inject(connectionSymbol(name));
5
- }
6
- //# sourceMappingURL=inject-db.decorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject-db.decorator.js","sourceRoot":"","sources":["../../../src/database/decorators/inject-db.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,UAAU,QAAQ,CAAC,IAAoB;IAC3C,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;AACvC,CAAC"}
@@ -1,5 +0,0 @@
1
- import { DatabaseError } from './database-error';
2
- export declare class DatabaseConfigError extends DatabaseError {
3
- constructor(details: string);
4
- }
5
- //# sourceMappingURL=database-config.error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-config.error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/database-config.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,EAAE,MAAM;CAG5B"}
@@ -1,8 +0,0 @@
1
- import { ERROR_CODES } from 'stratal/errors';
2
- import { DatabaseError } from './database-error';
3
- export class DatabaseConfigError extends DatabaseError {
4
- constructor(details) {
5
- super('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, { details });
6
- }
7
- }
8
- //# sourceMappingURL=database-config.error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-config.error.js","sourceRoot":"","sources":["../../../src/database/errors/database-config.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,wBAAwB,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5E,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- import type { MessageKeys } from 'stratal/i18n';
2
- import { ApplicationError, type ErrorCode } from 'stratal/errors';
3
- /**
4
- * DatabaseError
5
- *
6
- * Generic database error thrown when a database operation fails
7
- * and doesn't fit into a more specific error category.
8
- *
9
- * This is the base class for all database-related errors.
10
- */
11
- export declare class DatabaseError extends ApplicationError {
12
- constructor(messageKey?: MessageKeys, code?: ErrorCode, metadata?: Record<string, unknown>);
13
- }
14
- //# sourceMappingURL=database-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/database-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAe,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG9E;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBAE/C,UAAU,GAAE,WAAsC,EAClD,IAAI,GAAE,SAAwC,EAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASrC"}
@@ -1,20 +0,0 @@
1
- import { ApplicationError, ERROR_CODES } from 'stratal/errors';
2
- import { InvalidErrorCodeRangeError } from './invalid-error-code-range.error';
3
- /**
4
- * DatabaseError
5
- *
6
- * Generic database error thrown when a database operation fails
7
- * and doesn't fit into a more specific error category.
8
- *
9
- * This is the base class for all database-related errors.
10
- */
11
- export class DatabaseError extends ApplicationError {
12
- constructor(messageKey = 'errors.databaseGeneric', code = ERROR_CODES.DATABASE.GENERIC, metadata) {
13
- // Validate that code is in the database error range
14
- if (code < 2000 || code >= 3000) {
15
- throw new InvalidErrorCodeRangeError(code, '2000-2999');
16
- }
17
- super(messageKey, code, metadata);
18
- }
19
- }
20
- //# sourceMappingURL=database-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-error.js","sourceRoot":"","sources":["../../../src/database/errors/database-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAE7E;;;;;;;GAOG;AACH,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IACjD,YACE,aAA0B,wBAAwB,EAClD,OAAkB,WAAW,CAAC,QAAQ,CAAC,OAAO,EAC9C,QAAkC;QAElC,oDAAoD;QACpD,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,0BAA0B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACzD,CAAC;QAED,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- import { DatabaseError } from './database-error';
2
- /**
3
- * ForeignKeyConstraintError
4
- *
5
- * Thrown when a database foreign key constraint is violated.
6
- * This typically occurs when:
7
- * - Trying to insert a record with a foreign key that doesn't exist
8
- * - Trying to delete a record that is referenced by other records
9
- * - Trying to update a foreign key to a non-existent value
10
- */
11
- export declare class ForeignKeyConstraintError extends DatabaseError {
12
- constructor(field?: string);
13
- }
14
- //# sourceMappingURL=foreign-key-constraint.error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreign-key-constraint.error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/foreign-key-constraint.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,KAAK,CAAC,EAAE,MAAM;CAK3B"}
@@ -1,19 +0,0 @@
1
- import { ERROR_CODES } from 'stratal/errors';
2
- import { DatabaseError } from './database-error';
3
- /**
4
- * ForeignKeyConstraintError
5
- *
6
- * Thrown when a database foreign key constraint is violated.
7
- * This typically occurs when:
8
- * - Trying to insert a record with a foreign key that doesn't exist
9
- * - Trying to delete a record that is referenced by other records
10
- * - Trying to update a foreign key to a non-existent value
11
- */
12
- export class ForeignKeyConstraintError extends DatabaseError {
13
- constructor(field) {
14
- super('errors.databaseForeignKeyConstraint', ERROR_CODES.DATABASE.FOREIGN_KEY_CONSTRAINT, {
15
- field,
16
- });
17
- }
18
- }
19
- //# sourceMappingURL=foreign-key-constraint.error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreign-key-constraint.error.js","sourceRoot":"","sources":["../../../src/database/errors/foreign-key-constraint.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAA0B,SAAQ,aAAa;IAC1D,YAAY,KAAc;QACxB,KAAK,CAAC,qCAAqC,EAAE,WAAW,CAAC,QAAQ,CAAC,sBAAsB,EAAE;YACxF,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import { DatabaseError } from './database-error';
2
- /**
3
- * Transform ZenStack ORM errors into ApplicationError instances
4
- *
5
- * This function maps ORMError codes to generic database error classes.
6
- * Services can catch these generic errors and optionally refine them to
7
- * more specific domain errors if needed.
8
- *
9
- * @param error - The error thrown by ZenStack ORM
10
- * @returns An ApplicationError instance
11
- *
12
- * @example
13
- * ```typescript
14
- * try {
15
- * await db.user.create({ data: { email: 'existing@example.com' } })
16
- * } catch (error) {
17
- * throw fromZenStackError(error) // Becomes UniqueConstraintError or other
18
- * }
19
- * ```
20
- */
21
- export declare function fromZenStackError(error: unknown): DatabaseError;
22
- //# sourceMappingURL=from-zenstack-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"from-zenstack-error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/from-zenstack-error.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAKhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAwD/D"}
@@ -1,114 +0,0 @@
1
- import { ORMError, ORMErrorReason } from '@zenstackhq/orm';
2
- import { ERROR_CODES } from 'stratal/errors';
3
- import { DatabaseError } from './database-error';
4
- import { ForeignKeyConstraintError } from './foreign-key-constraint.error';
5
- import { RecordNotFoundError } from './record-not-found.error';
6
- import { UniqueConstraintError } from './unique-constraint.error';
7
- /**
8
- * Transform ZenStack ORM errors into ApplicationError instances
9
- *
10
- * This function maps ORMError codes to generic database error classes.
11
- * Services can catch these generic errors and optionally refine them to
12
- * more specific domain errors if needed.
13
- *
14
- * @param error - The error thrown by ZenStack ORM
15
- * @returns An ApplicationError instance
16
- *
17
- * @example
18
- * ```typescript
19
- * try {
20
- * await db.user.create({ data: { email: 'existing@example.com' } })
21
- * } catch (error) {
22
- * throw fromZenStackError(error) // Becomes UniqueConstraintError or other
23
- * }
24
- * ```
25
- */
26
- export function fromZenStackError(error) {
27
- // Handle ZenStack ORM Errors
28
- if (error instanceof ORMError) {
29
- const ormError = error;
30
- switch (ormError.reason) {
31
- case ORMErrorReason.NOT_FOUND:
32
- return new RecordNotFoundError(ormError.model);
33
- case ORMErrorReason.DB_QUERY_ERROR:
34
- // Parse database-specific error codes
35
- return parseDatabaseError(ormError);
36
- case ORMErrorReason.INVALID_INPUT:
37
- return new DatabaseError('errors.databaseInvalidQuery', ERROR_CODES.DATABASE.GENERIC, { message: ormError.message });
38
- case ORMErrorReason.CONFIG_ERROR:
39
- return new DatabaseError('errors.databaseConnectionFailed', ERROR_CODES.DATABASE.CONNECTION_FAILED, { message: ormError.message });
40
- case ORMErrorReason.NOT_SUPPORTED:
41
- return new DatabaseError('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, { message: ormError.message, reason: 'Operation not supported' });
42
- case ORMErrorReason.INTERNAL_ERROR:
43
- return new DatabaseError('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, { message: ormError.message });
44
- default:
45
- return new DatabaseError('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, { message: ormError.message, reason: ormError.reason });
46
- }
47
- }
48
- // Handle unknown errors
49
- return new DatabaseError('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, { originalError: String(error) });
50
- }
51
- /**
52
- * Parse database-specific errors from the dbErrorCode field
53
- */
54
- function parseDatabaseError(error) {
55
- // Cast dbErrorCode to string since ZenStack types it loosely
56
- const dbErrorCode = error.dbErrorCode;
57
- // PostgreSQL error codes
58
- // https://www.postgresql.org/docs/current/errcodes-appendix.html
59
- if (dbErrorCode) {
60
- // Class 23 - Integrity Constraint Violation
61
- if (dbErrorCode === '23505') {
62
- // Unique violation
63
- return new UniqueConstraintError([error.model ?? 'unknown']);
64
- }
65
- if (dbErrorCode === '23503') {
66
- // Foreign key violation
67
- return new ForeignKeyConstraintError(error.model ?? 'unknown');
68
- }
69
- if (dbErrorCode === '23502') {
70
- // Not null violation
71
- return new DatabaseError('errors.databaseNullConstraint', ERROR_CODES.DATABASE.NULL_CONSTRAINT, { dbErrorCode, message: error.dbErrorMessage });
72
- }
73
- if (dbErrorCode === '23514') {
74
- // Check constraint violation
75
- return new DatabaseError('errors.databaseConstraintFailed', ERROR_CODES.DATABASE.GENERIC, { dbErrorCode, message: error.dbErrorMessage });
76
- }
77
- // Class 42 - Syntax Error or Access Rule Violation
78
- if (dbErrorCode.startsWith('42')) {
79
- if (dbErrorCode === '42P01') {
80
- // Undefined table
81
- return new DatabaseError('errors.databaseTableNotFound', ERROR_CODES.DATABASE.GENERIC, { dbErrorCode, message: error.dbErrorMessage });
82
- }
83
- if (dbErrorCode === '42703') {
84
- // Undefined column
85
- return new DatabaseError('errors.databaseColumnNotFound', ERROR_CODES.DATABASE.GENERIC, { dbErrorCode, message: error.dbErrorMessage });
86
- }
87
- }
88
- // Class 08 - Connection Exception
89
- if (dbErrorCode.startsWith('08')) {
90
- return new DatabaseError('errors.databaseConnectionFailed', ERROR_CODES.DATABASE.CONNECTION_FAILED, { dbErrorCode, message: error.dbErrorMessage });
91
- }
92
- // Class 57 - Operator Intervention
93
- if (dbErrorCode === '57014') {
94
- // Query cancelled
95
- return new DatabaseError('errors.databaseTimeout', ERROR_CODES.DATABASE.TIMEOUT, { dbErrorCode, message: error.dbErrorMessage });
96
- }
97
- // Class 40 - Transaction Rollback
98
- if (dbErrorCode.startsWith('40')) {
99
- return new DatabaseError('errors.databaseTransactionConflict', ERROR_CODES.DATABASE.TRANSACTION_CONFLICT, { dbErrorCode, message: error.dbErrorMessage });
100
- }
101
- // Class 53 - Insufficient Resources
102
- if (dbErrorCode === '53300') {
103
- // Too many connections
104
- return new DatabaseError('errors.databaseTooManyConnections', ERROR_CODES.DATABASE.TOO_MANY_CONNECTIONS, { dbErrorCode, message: error.dbErrorMessage });
105
- }
106
- }
107
- // Default database error
108
- return new DatabaseError('errors.databaseGeneric', ERROR_CODES.DATABASE.GENERIC, {
109
- dbErrorCode,
110
- dbErrorMessage: error.dbErrorMessage,
111
- sql: error.sql,
112
- });
113
- }
114
- //# sourceMappingURL=from-zenstack-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"from-zenstack-error.js","sourceRoot":"","sources":["../../../src/database/errors/from-zenstack-error.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export * from './database-config.error';
2
- export * from './database-error';
3
- export * from './foreign-key-constraint.error';
4
- export * from './invalid-error-code-range.error';
5
- export * from './record-not-found.error';
6
- export * from './unique-constraint.error';
7
- export * from './from-zenstack-error';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA"}
@@ -1,8 +0,0 @@
1
- export * from './database-config.error';
2
- export * from './database-error';
3
- export * from './foreign-key-constraint.error';
4
- export * from './invalid-error-code-range.error';
5
- export * from './record-not-found.error';
6
- export * from './unique-constraint.error';
7
- export * from './from-zenstack-error';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA"}
@@ -1,12 +0,0 @@
1
- import { ApplicationError } from 'stratal/errors';
2
- /**
3
- * InvalidErrorCodeRangeError
4
- *
5
- * Thrown when a DatabaseError subclass is constructed with an error code
6
- * outside the valid database error range (2000-2999).
7
- * This is a developer-facing error to enforce error code conventions.
8
- */
9
- export declare class InvalidErrorCodeRangeError extends ApplicationError {
10
- constructor(code: number, expectedRange: string);
11
- }
12
- //# sourceMappingURL=invalid-error-code-range.error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"invalid-error-code-range.error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/invalid-error-code-range.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,gBAAgB,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;gBAClD,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAOhD"}
@@ -1,14 +0,0 @@
1
- import { ApplicationError, ERROR_CODES } from 'stratal/errors';
2
- /**
3
- * InvalidErrorCodeRangeError
4
- *
5
- * Thrown when a DatabaseError subclass is constructed with an error code
6
- * outside the valid database error range (2000-2999).
7
- * This is a developer-facing error to enforce error code conventions.
8
- */
9
- export class InvalidErrorCodeRangeError extends ApplicationError {
10
- constructor(code, expectedRange) {
11
- super('errors.invalidErrorCodeRange', ERROR_CODES.SYSTEM.INVALID_ERROR_CODE_RANGE, { code, expectedRange });
12
- }
13
- }
14
- //# sourceMappingURL=invalid-error-code-range.error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"invalid-error-code-range.error.js","sourceRoot":"","sources":["../../../src/database/errors/invalid-error-code-range.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IAC9D,YAAY,IAAY,EAAE,aAAqB;QAC7C,KAAK,CACH,8BAA8B,EAC9B,WAAW,CAAC,MAAM,CAAC,wBAAwB,EAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,CACxB,CAAA;IACH,CAAC;CACF"}
@@ -1,15 +0,0 @@
1
- import { DatabaseError } from './database-error';
2
- /**
3
- * RecordNotFoundError
4
- *
5
- * Generic error thrown when a database record is not found.
6
- * This is typically thrown when a findUnique or findFirst operation
7
- * returns null, or when a required record doesn't exist.
8
- *
9
- * Services should catch this and optionally refine it to a more specific
10
- * domain error (e.g., NoteNotFoundError, UserNotFoundError).
11
- */
12
- export declare class RecordNotFoundError extends DatabaseError {
13
- constructor(details?: string);
14
- }
15
- //# sourceMappingURL=record-not-found.error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-not-found.error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/record-not-found.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,CAAC,EAAE,MAAM;CAK7B"}
@@ -1,20 +0,0 @@
1
- import { ERROR_CODES } from 'stratal/errors';
2
- import { DatabaseError } from './database-error';
3
- /**
4
- * RecordNotFoundError
5
- *
6
- * Generic error thrown when a database record is not found.
7
- * This is typically thrown when a findUnique or findFirst operation
8
- * returns null, or when a required record doesn't exist.
9
- *
10
- * Services should catch this and optionally refine it to a more specific
11
- * domain error (e.g., NoteNotFoundError, UserNotFoundError).
12
- */
13
- export class RecordNotFoundError extends DatabaseError {
14
- constructor(details) {
15
- super('errors.databaseRecordNotFound', ERROR_CODES.DATABASE.RECORD_NOT_FOUND, {
16
- details,
17
- });
18
- }
19
- }
20
- //# sourceMappingURL=record-not-found.error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-not-found.error.js","sourceRoot":"","sources":["../../../src/database/errors/record-not-found.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACpD,YAAY,OAAgB;QAC1B,KAAK,CAAC,+BAA+B,EAAE,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC5E,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,15 +0,0 @@
1
- import { DatabaseError } from './database-error';
2
- /**
3
- * UniqueConstraintError
4
- *
5
- * Thrown when a database unique constraint is violated.
6
- * This typically occurs when trying to insert or update a record
7
- * with a value that already exists in a unique column.
8
- *
9
- * Services should catch this and optionally refine it to a more specific
10
- * domain error (e.g., UserEmailAlreadyExistsError).
11
- */
12
- export declare class UniqueConstraintError extends DatabaseError {
13
- constructor(fields?: string[]);
14
- }
15
- //# sourceMappingURL=unique-constraint.error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unique-constraint.error.d.ts","sourceRoot":"","sources":["../../../src/database/errors/unique-constraint.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,MAAM,CAAC,EAAE,MAAM,EAAE;CAK9B"}