@stratal/framework 0.0.13 → 0.0.15

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,20 +0,0 @@
1
- import { ERROR_CODES } from 'stratal/errors';
2
- import { DatabaseError } from './database-error';
3
- /**
4
- * UniqueConstraintError
5
- *
6
- * Thrown when a database unique constraint is violated.
7
- * This typically occurs when trying to insert or update a record
8
- * with a value that already exists in a unique column.
9
- *
10
- * Services should catch this and optionally refine it to a more specific
11
- * domain error (e.g., UserEmailAlreadyExistsError).
12
- */
13
- export class UniqueConstraintError extends DatabaseError {
14
- constructor(fields) {
15
- super('errors.databaseUniqueConstraint', ERROR_CODES.DATABASE.UNIQUE_CONSTRAINT, {
16
- fields,
17
- });
18
- }
19
- }
20
- //# sourceMappingURL=unique-constraint.error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unique-constraint.error.js","sourceRoot":"","sources":["../../../src/database/errors/unique-constraint.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,qBAAsB,SAAQ,aAAa;IACtD,YAAY,MAAiB;QAC3B,KAAK,CAAC,iCAAiC,EAAE,WAAW,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAC/E,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,137 +0,0 @@
1
- /**
2
- * Database Event Types
3
- *
4
- * All ZenStack-dependent event types derived from the shared database schema.
5
- * These types power the auto-complete and type-safe event contexts for
6
- * database events like `after.User.create`.
7
- *
8
- * This module auto-augments core's `CustomEventRegistry` with `DatabaseEvents`,
9
- * so that `EventContext<'after.User.create'>` resolves to a richly typed context
10
- * with `data` and `result` derived from the ZenStack schema.
11
- */
12
- import type { AggregateArgs, AllCrudOperations, CountArgs, CreateArgs, CreateManyArgs, DeleteArgs, DeleteManyArgs, FindFirstArgs, FindManyArgs, FindUniqueArgs, GroupByArgs, ModelResult, UpdateArgs, UpdateManyArgs, UpsertArgs } from '@zenstackhq/orm';
13
- import type { SchemaDef } from '@zenstackhq/schema';
14
- import type { InferAnySchema } from './types';
15
- /**
16
- * Event phase: before or after operation
17
- */
18
- export type EventPhase = 'before' | 'after';
19
- /**
20
- * All database operations that can trigger events
21
- */
22
- export type DatabaseOperation = AllCrudOperations;
23
- /**
24
- * Model names derived from the shared database schema.
25
- * Falls back to `never` if no schema is registered.
26
- */
27
- export type ModelName = InferAnySchema extends {
28
- models: infer M;
29
- } ? Extract<keyof M, string> : never;
30
- /**
31
- * Database event names with all supported patterns.
32
- */
33
- export type DatabaseEventName = `${EventPhase}.${ModelName}.${DatabaseOperation}` | `${EventPhase}.${ModelName}` | `${EventPhase}.${DatabaseOperation}` | EventPhase;
34
- /**
35
- * Map operation name to ZenStack Args type for a given schema and model
36
- */
37
- type OperationArgsMap<S extends SchemaDef, M extends Extract<keyof S['models'], string>, O extends DatabaseOperation> = O extends 'create' ? CreateArgs<S, M> : O extends 'createMany' ? CreateManyArgs<S, M> : O extends 'update' ? UpdateArgs<S, M> : O extends 'updateMany' ? UpdateManyArgs<S, M> : O extends 'delete' ? DeleteArgs<S, M> : O extends 'deleteMany' ? DeleteManyArgs<S, M> : O extends 'findUnique' ? FindUniqueArgs<S, M> : O extends 'findFirst' ? FindFirstArgs<S, M> : O extends 'findMany' ? FindManyArgs<S, M> : O extends 'upsert' ? UpsertArgs<S, M> : O extends 'count' ? CountArgs<S, M> : O extends 'aggregate' ? AggregateArgs<S, M> : O extends 'groupBy' ? GroupByArgs<S, M> : never;
38
- /**
39
- * Extract the data/where property from operation args.
40
- */
41
- export type GetData<M extends ModelName, O extends DatabaseOperation> = M extends Extract<keyof InferAnySchema['models'], string> ? OperationArgsMap<InferAnySchema, M, O> extends {
42
- data: infer D;
43
- } ? D : OperationArgsMap<InferAnySchema, M, O> extends {
44
- where: infer W;
45
- } ? W : OperationArgsMap<InferAnySchema, M, O> : unknown;
46
- /**
47
- * Extract result type for a model operation.
48
- */
49
- export type GetResult<M extends ModelName, O extends DatabaseOperation> = M extends Extract<keyof InferAnySchema['models'], string> ? O extends 'findMany' | 'createMany' | 'updateMany' | 'deleteMany' ? ModelResult<InferAnySchema, M>[] : O extends 'count' ? number : ModelResult<InferAnySchema, M> : unknown;
50
- /**
51
- * Parse event string into structured type for discriminated unions
52
- */
53
- export type ParseEvent<E extends string> = E extends `${infer Phase extends EventPhase}.${infer Model extends ModelName}.${infer Op extends DatabaseOperation}` ? {
54
- phase: Phase;
55
- model: Model;
56
- operation: Op;
57
- type: 'exact';
58
- } : E extends `${infer Phase extends EventPhase}.${infer Second}` ? Second extends ModelName ? {
59
- phase: Phase;
60
- model: Second;
61
- type: 'model-wildcard';
62
- } : Second extends DatabaseOperation ? {
63
- phase: Phase;
64
- operation: Second;
65
- type: 'operation-wildcard';
66
- } : never : E extends EventPhase ? {
67
- phase: E;
68
- type: 'phase-wildcard';
69
- } : never;
70
- /** Base context fields present in all events */
71
- interface BaseEventContext {
72
- }
73
- /** Context for exact database events (e.g., "after.User.create") */
74
- interface ExactDatabaseEventContext<M extends ModelName, O extends DatabaseOperation, Phase extends EventPhase> extends BaseEventContext {
75
- data: Phase extends 'before' ? GetData<M, O> : Readonly<GetData<M, O>>;
76
- result: Phase extends 'after' ? GetResult<M, O> : undefined;
77
- }
78
- /** Context for model wildcard events (e.g., "after.User") */
79
- interface ModelWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
80
- operation: DatabaseOperation;
81
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
82
- result: Phase extends 'after' ? unknown : undefined;
83
- }
84
- /** Context for operation wildcard events (e.g., "after.create") */
85
- interface OperationWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
86
- model: ModelName;
87
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
88
- result: Phase extends 'after' ? unknown : undefined;
89
- }
90
- /** Context for phase wildcard events (e.g., "after" or "before") */
91
- interface PhaseWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
92
- model: ModelName;
93
- operation: DatabaseOperation;
94
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
95
- result: Phase extends 'after' ? unknown : undefined;
96
- }
97
- /**
98
- * Type-safe event context with discriminated unions.
99
- */
100
- type DatabaseEventContext<E extends string> = ParseEvent<E> extends {
101
- phase: infer P extends EventPhase;
102
- model: infer M extends ModelName;
103
- operation: infer O extends DatabaseOperation;
104
- type: 'exact';
105
- } ? ExactDatabaseEventContext<M, O, P> : ParseEvent<E> extends {
106
- phase: infer P extends EventPhase;
107
- model: infer _M extends ModelName;
108
- type: 'model-wildcard';
109
- } ? ModelWildcardEventContext<P> : ParseEvent<E> extends {
110
- phase: infer P extends EventPhase;
111
- operation: infer _O extends DatabaseOperation;
112
- type: 'operation-wildcard';
113
- } ? OperationWildcardEventContext<P> : ParseEvent<E> extends {
114
- phase: infer P extends EventPhase;
115
- type: 'phase-wildcard';
116
- } ? PhaseWildcardEventContext<P> : BaseEventContext;
117
- /**
118
- * Mapped type that produces all database event name to context pairs.
119
- *
120
- * Used to augment core's `CustomEventRegistry`:
121
- *
122
- * @example
123
- * ```typescript
124
- * declare module 'stratal/events' {
125
- * interface CustomEventRegistry extends DatabaseEvents {}
126
- * }
127
- * ```
128
- */
129
- export type DatabaseEvents = {
130
- [E in DatabaseEventName]: DatabaseEventContext<E>;
131
- };
132
- declare module 'stratal/events' {
133
- interface CustomEventRegistry extends DatabaseEvents {
134
- }
135
- }
136
- export {};
137
- //# sourceMappingURL=event-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../../src/database/event-types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Database Event Types
3
- *
4
- * All ZenStack-dependent event types derived from the shared database schema.
5
- * These types power the auto-complete and type-safe event contexts for
6
- * database events like `after.User.create`.
7
- *
8
- * This module auto-augments core's `CustomEventRegistry` with `DatabaseEvents`,
9
- * so that `EventContext<'after.User.create'>` resolves to a richly typed context
10
- * with `data` and `result` derived from the ZenStack schema.
11
- */
12
- export {};
13
- //# sourceMappingURL=event-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-types.js","sourceRoot":"","sources":["../../src/database/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -1,15 +0,0 @@
1
- export declare const databaseI18n: {
2
- readonly database: {
3
- readonly connectionNameRequired: "Connection name is required";
4
- readonly defaultConnectionRequired: "Default connection name is required";
5
- readonly connectionRequired: "At least one connection is required";
6
- readonly duplicateConnections: "Duplicate connection names found";
7
- readonly defaultConnectionNotFound: "Default connection not found in connections";
8
- };
9
- };
10
- declare module 'stratal/i18n' {
11
- interface AppMessages {
12
- database: typeof databaseI18n['database'];
13
- }
14
- }
15
- //# sourceMappingURL=en.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/database/i18n/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAA;AAEV,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,WAAW;QACnB,QAAQ,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC,CAAA;KAC1C;CACF"}
@@ -1,10 +0,0 @@
1
- export const databaseI18n = {
2
- database: {
3
- connectionNameRequired: 'Connection name is required',
4
- defaultConnectionRequired: 'Default connection name is required',
5
- connectionRequired: 'At least one connection is required',
6
- duplicateConnections: 'Duplicate connection names found',
7
- defaultConnectionNotFound: 'Default connection not found in connections',
8
- },
9
- };
10
- //# sourceMappingURL=en.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../src/database/i18n/en.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE;QACR,sBAAsB,EAAE,6BAA6B;QACrD,yBAAyB,EAAE,qCAAqC;QAChE,kBAAkB,EAAE,qCAAqC;QACzD,oBAAoB,EAAE,kCAAkC;QACxD,yBAAyB,EAAE,6CAA6C;KACzE;CACO,CAAA"}
@@ -1,2 +0,0 @@
1
- export { databaseI18n } from './en';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA"}
@@ -1,2 +0,0 @@
1
- export { databaseI18n } from './en';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA"}
@@ -1,11 +0,0 @@
1
- export * from './database.service';
2
- export * from './database.module';
3
- export * from './database.tokens';
4
- export * from './custom-pg-types';
5
- export * from './decorators/inject-db.decorator';
6
- export * from './event-types';
7
- export * from './types';
8
- export * from './errors';
9
- export * from './plugins';
10
- export * from './i18n';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kCAAkC,CAAA;AAChD,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
@@ -1,11 +0,0 @@
1
- export * from './database.service';
2
- export * from './database.module';
3
- export * from './database.tokens';
4
- export * from './custom-pg-types';
5
- export * from './decorators/inject-db.decorator';
6
- export * from './event-types';
7
- export * from './types';
8
- export * from './errors';
9
- export * from './plugins';
10
- export * from './i18n';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kCAAkC,CAAA;AAChD,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
@@ -1,21 +0,0 @@
1
- import { type RuntimePlugin } from '@zenstackhq/orm';
2
- import { type SchemaDef } from '@zenstackhq/orm/schema';
3
- /**
4
- * ZenStack runtime plugin that transforms ORM errors into ApplicationError instances.
5
- *
6
- * @example
7
- * ```typescript
8
- * super(schema, {
9
- * dialect: new PostgresDialect({ pool }),
10
- * plugins: [new ErrorHandlerPlugin()]
11
- * })
12
- * ```
13
- */
14
- export declare class ErrorHandlerPlugin implements RuntimePlugin<SchemaDef, Record<string, unknown>, Record<string, unknown>> {
15
- readonly id = "error-handler";
16
- onQuery: ({ args, proceed }: {
17
- args: Record<string, unknown> | undefined;
18
- proceed: (args: Record<string, unknown> | undefined) => Promise<unknown>;
19
- }) => Promise<unknown>;
20
- }
21
- //# sourceMappingURL=error-handler.plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handler.plugin.d.ts","sourceRoot":"","sources":["../../../src/database/plugins/error-handler.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,YAAW,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnH,QAAQ,CAAC,EAAE,mBAAkB;IAE7B,OAAO,GAAU,mBAAmB;QAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACzE,KAAG,OAAO,CAAC,OAAO,CAAC,CAMnB;CACF"}
@@ -1,24 +0,0 @@
1
- import { fromZenStackError } from '../errors';
2
- /**
3
- * ZenStack runtime plugin that transforms ORM errors into ApplicationError instances.
4
- *
5
- * @example
6
- * ```typescript
7
- * super(schema, {
8
- * dialect: new PostgresDialect({ pool }),
9
- * plugins: [new ErrorHandlerPlugin()]
10
- * })
11
- * ```
12
- */
13
- export class ErrorHandlerPlugin {
14
- id = 'error-handler';
15
- onQuery = async ({ args, proceed }) => {
16
- try {
17
- return await proceed(args);
18
- }
19
- catch (error) {
20
- throw fromZenStackError(error);
21
- }
22
- };
23
- }
24
- //# sourceMappingURL=error-handler.plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handler.plugin.js","sourceRoot":"","sources":["../../../src/database/plugins/error-handler.plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,kBAAkB;IACpB,EAAE,GAAG,eAAe,CAAA;IAE7B,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAG/B,EAAoB,EAAE;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,CAAA;CACF"}
@@ -1,37 +0,0 @@
1
- import { type RuntimePlugin } from '@zenstackhq/orm';
2
- import { type SchemaDef } from '@zenstackhq/orm/schema';
3
- import type { IEventRegistry } from 'stratal/events';
4
- export interface EventEmitterPluginOptions {
5
- eventRegistry: IEventRegistry;
6
- }
7
- /**
8
- * ZenStack runtime plugin that emits before/after events for database operations.
9
- *
10
- * Emits events in the format:
11
- * - `before.{Model}.{operation}` - Before the database operation
12
- * - `after.{Model}.{operation}` - After the database operation
13
- *
14
- * @example
15
- * ```typescript
16
- * super(schema, {
17
- * dialect: new PostgresDialect({ pool }),
18
- * plugins: [
19
- * new EventEmitterPlugin({
20
- * eventRegistry,
21
- * })
22
- * ]
23
- * })
24
- * ```
25
- */
26
- export declare class EventEmitterPlugin implements RuntimePlugin<SchemaDef, Record<string, unknown>, Record<string, unknown>> {
27
- private options;
28
- readonly id = "event-emitter";
29
- constructor(options: EventEmitterPluginOptions);
30
- onQuery: ({ model, operation, args, proceed }: {
31
- model: string;
32
- operation: string;
33
- args: Record<string, unknown> | undefined;
34
- proceed: (args: Record<string, unknown> | undefined) => Promise<unknown>;
35
- }) => Promise<unknown>;
36
- }
37
- //# sourceMappingURL=event-emitter.plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-emitter.plugin.d.ts","sourceRoot":"","sources":["../../../src/database/plugins/event-emitter.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/D,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,cAAc,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,kBAAmB,YAAW,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGvG,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,EAAE,mBAAkB;gBAET,OAAO,EAAE,yBAAyB;IAEtD,OAAO,GAAU,qCAAqC;QACpD,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACzE,KAAG,OAAO,CAAC,OAAO,CAAC,CAmBnB;CACF"}
@@ -1,43 +0,0 @@
1
- /**
2
- * ZenStack runtime plugin that emits before/after events for database operations.
3
- *
4
- * Emits events in the format:
5
- * - `before.{Model}.{operation}` - Before the database operation
6
- * - `after.{Model}.{operation}` - After the database operation
7
- *
8
- * @example
9
- * ```typescript
10
- * super(schema, {
11
- * dialect: new PostgresDialect({ pool }),
12
- * plugins: [
13
- * new EventEmitterPlugin({
14
- * eventRegistry,
15
- * })
16
- * ]
17
- * })
18
- * ```
19
- */
20
- export class EventEmitterPlugin {
21
- options;
22
- id = 'event-emitter';
23
- constructor(options) {
24
- this.options = options;
25
- }
26
- onQuery = async ({ model, operation, args, proceed }) => {
27
- const { eventRegistry } = this.options;
28
- const eventBase = `${model}.${operation}`;
29
- // Emit BEFORE event
30
- await eventRegistry.emit(`before.${eventBase}`, {
31
- data: args,
32
- });
33
- // Execute the actual database operation
34
- const result = await proceed(args);
35
- // Emit AFTER event
36
- await eventRegistry.emit(`after.${eventBase}`, {
37
- data: args,
38
- result,
39
- });
40
- return result;
41
- };
42
- }
43
- //# sourceMappingURL=event-emitter.plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-emitter.plugin.js","sourceRoot":"","sources":["../../../src/database/plugins/event-emitter.plugin.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,kBAAkB;IAGT;IAFX,EAAE,GAAG,eAAe,CAAA;IAE7B,YAAoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAAI,CAAC;IAE3D,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAKjD,EAAoB,EAAE;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACtC,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAA;QAEzC,oBAAoB;QACpB,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,SAAS,EAAe,EAAE;YAC3D,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;QAEF,wCAAwC;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAElC,mBAAmB;QACnB,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,SAAS,EAAe,EAAE;YAC1D,IAAI,EAAE,IAAI;YACV,MAAM;SACP,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;CACF"}
@@ -1,4 +0,0 @@
1
- export * from './error-handler.plugin';
2
- export * from './event-emitter.plugin';
3
- export * from './schema-switcher.plugin';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA"}
@@ -1,4 +0,0 @@
1
- export * from './error-handler.plugin';
2
- export * from './event-emitter.plugin';
3
- export * from './schema-switcher.plugin';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA"}
@@ -1,32 +0,0 @@
1
- import { type RuntimePlugin } from "@zenstackhq/orm";
2
- import { type SchemaDef } from "@zenstackhq/orm/schema";
3
- export interface SchemaSwitcherPluginOptions {
4
- schemaName: string;
5
- }
6
- /**
7
- * ZenStack runtime plugin that sets PostgreSQL search_path before each query.
8
- * Used for tenant isolation in multi-tenant applications.
9
- *
10
- * @example
11
- * ```typescript
12
- * super(schema, {
13
- * dialect: new PostgresDialect({ pool }),
14
- * plugins: [
15
- * new SchemaSwitcherPlugin({ schemaName: `tenant_${tenantId}` })
16
- * ]
17
- * })
18
- * ```
19
- */
20
- export declare class SchemaSwitcherPlugin implements RuntimePlugin<SchemaDef, Record<string, unknown>, Record<string, unknown>> {
21
- private options;
22
- readonly id = "schema-switcher";
23
- constructor(options: SchemaSwitcherPluginOptions);
24
- onQuery: ({ args, proceed, client }: {
25
- args: Record<string, unknown> | undefined;
26
- proceed: (args: Record<string, unknown> | undefined) => Promise<unknown>;
27
- client: {
28
- $executeRawUnsafe: (sql: string) => Promise<unknown>;
29
- };
30
- }) => Promise<unknown>;
31
- }
32
- //# sourceMappingURL=schema-switcher.plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-switcher.plugin.d.ts","sourceRoot":"","sources":["../../../src/database/plugins/schema-switcher.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGzG,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,EAAE,qBAAoB;gBAEX,OAAO,EAAE,2BAA2B;IAExD,OAAO,GAAU,2BAA2B;QAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACxE,MAAM,EAAE;YAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,CAAA;KACjE,KAAG,OAAO,CAAC,OAAO,CAAC,CAInB;CACF"}
@@ -1,27 +0,0 @@
1
- /**
2
- * ZenStack runtime plugin that sets PostgreSQL search_path before each query.
3
- * Used for tenant isolation in multi-tenant applications.
4
- *
5
- * @example
6
- * ```typescript
7
- * super(schema, {
8
- * dialect: new PostgresDialect({ pool }),
9
- * plugins: [
10
- * new SchemaSwitcherPlugin({ schemaName: `tenant_${tenantId}` })
11
- * ]
12
- * })
13
- * ```
14
- */
15
- export class SchemaSwitcherPlugin {
16
- options;
17
- id = 'schema-switcher';
18
- constructor(options) {
19
- this.options = options;
20
- }
21
- onQuery = async ({ args, proceed, client }) => {
22
- // Set search_path before each query
23
- await client.$executeRawUnsafe(`SET search_path TO "${this.options.schemaName}"`);
24
- return proceed(args);
25
- };
26
- }
27
- //# sourceMappingURL=schema-switcher.plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-switcher.plugin.js","sourceRoot":"","sources":["../../../src/database/plugins/schema-switcher.plugin.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAoB;IAGX;IAFX,EAAE,GAAG,iBAAiB,CAAA;IAE/B,YAAoB,OAAoC;QAApC,YAAO,GAAP,OAAO,CAA6B;IAAI,CAAC;IAE7D,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAIvC,EAAoB,EAAE;QACrB,oCAAoC;QACpC,MAAM,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAA;QACjF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;CAAG;AAEnC,kDAAkD;AAClD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAChD,eAAe,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GACxC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,GACzE,SAAS,CAAA;AAEf,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GACxB,eAAe,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GACxC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GACrD,SAAS,CAAA;AAEf,kDAAkD;AAClD,MAAM,MAAM,cAAc,GACxB,eAAe,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GACxC,MAAM,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACzD,MAAM,CAAA;AAEZ,8BAA8B;AAC9B,MAAM,MAAM,qBAAqB,GAC/B,eAAe,SAAS;IAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAA;AAEpF;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":""}
@@ -1,56 +0,0 @@
1
- import { type Faker } from '@faker-js/faker';
2
- import type { DatabaseService } from '../database';
3
- /**
4
- * Factory
5
- *
6
- * Abstract base class for creating test data.
7
- * Integrates with Faker.js for data generation.
8
- *
9
- * @example Define a factory
10
- * ```typescript
11
- * import { Factory } from '@stratal/framework/factory'
12
- * import type { User, UserCreateInput } from '@your-app/db'
13
- *
14
- * export class UserFactory extends Factory<User, UserCreateInput> {
15
- * protected model = 'user'
16
- *
17
- * protected definition(): UserCreateInput {
18
- * return {
19
- * email: this.faker.internet.email(),
20
- * firstName: this.faker.person.firstName(),
21
- * lastName: this.faker.person.lastName(),
22
- * emailVerified: true,
23
- * }
24
- * }
25
- *
26
- * admin() {
27
- * return this.state(attrs => ({ ...attrs, role: 'admin' }))
28
- * }
29
- * }
30
- * ```
31
- *
32
- * @example Usage
33
- * ```typescript
34
- * const user = await new UserFactory().create(ctx.db)
35
- * const admin = await new UserFactory().admin().create(ctx.db)
36
- * const users = await new UserFactory().count(10).createManyAndReturn(ctx.db)
37
- * ```
38
- */
39
- export declare abstract class Factory<TModel, TCreateInput> {
40
- protected readonly faker: Faker;
41
- protected abstract model: string;
42
- protected abstract definition(): TCreateInput;
43
- private states;
44
- private _count;
45
- state(modifier: (attrs: TCreateInput) => Partial<TCreateInput>): this;
46
- count(n: number): this;
47
- make(): TCreateInput;
48
- makeMany(count?: number): TCreateInput[];
49
- create(db: DatabaseService): Promise<TModel>;
50
- createMany(db: DatabaseService, count?: number): Promise<{
51
- count: number;
52
- }>;
53
- createManyAndReturn(db: DatabaseService, count?: number): Promise<TModel[]>;
54
- protected clone(): this;
55
- }
56
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/factory/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8BAAsB,OAAO,CAAC,MAAM,EAAE,YAAY;IAChD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAQ;IACvC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,YAAY;IAE7C,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,MAAM,CAAI;IAElB,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAMrE,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMtB,IAAI,IAAI,YAAY;IAQpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAKlC,MAAM,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,UAAU,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAM3E,mBAAmB,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMjF,SAAS,CAAC,KAAK,IAAI,IAAI;CAOxB"}