@stratal/framework 0.0.27 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +596 -0
  2. package/README.md +166 -24
  3. package/dist/access-control/index.d.mts +43 -16
  4. package/dist/access-control/index.d.mts.map +1 -1
  5. package/dist/access-control/index.mjs +5 -5
  6. package/dist/access-control/index.mjs.map +1 -1
  7. package/dist/{access.service-BmDhE-re.mjs → access.service-BjmnWBEo.mjs} +35 -17
  8. package/dist/access.service-BjmnWBEo.mjs.map +1 -0
  9. package/dist/auth/index.d.mts +105 -103
  10. package/dist/auth/index.d.mts.map +1 -1
  11. package/dist/auth/index.mjs +123 -24
  12. package/dist/auth/index.mjs.map +1 -1
  13. package/dist/{auth-context-CGVbiSX3.d.mts → auth-context-C1om3Zsr.d.mts} +1 -2
  14. package/dist/auth-context-C1om3Zsr.d.mts.map +1 -0
  15. package/dist/{auth-context-C8NBfiMa.mjs → auth-context-cNSS1rmh.mjs} +2 -2
  16. package/dist/{auth-context-C8NBfiMa.mjs.map → auth-context-cNSS1rmh.mjs.map} +1 -1
  17. package/dist/auth.service-Onf3JkyL.d.mts +44 -0
  18. package/dist/auth.service-Onf3JkyL.d.mts.map +1 -0
  19. package/dist/context/index.d.mts +4 -5
  20. package/dist/context/index.d.mts.map +1 -1
  21. package/dist/context/index.mjs +1 -1
  22. package/dist/database/index.d.mts +3 -3
  23. package/dist/database/index.mjs +413 -34
  24. package/dist/database/index.mjs.map +1 -1
  25. package/dist/{decorate-B7nr7eBl.mjs → decorate-RQD1h28J.mjs} +1 -1
  26. package/dist/{decorateParam-DwV9LSPl.mjs → decorateParam-xwTkq9gO.mjs} +2 -2
  27. package/dist/{decorateParam-DwV9LSPl.mjs.map → decorateParam-xwTkq9gO.mjs.map} +1 -1
  28. package/dist/factory/index.d.mts +3 -5
  29. package/dist/factory/index.d.mts.map +1 -1
  30. package/dist/factory/index.mjs.map +1 -1
  31. package/dist/guards/index.d.mts +3 -4
  32. package/dist/guards/index.d.mts.map +1 -1
  33. package/dist/guards/index.mjs +4 -4
  34. package/dist/guards/index.mjs.map +1 -1
  35. package/dist/index-e_u1SRyd.d.mts +921 -0
  36. package/dist/index-e_u1SRyd.d.mts.map +1 -0
  37. package/dist/index.d.mts +1 -1
  38. package/dist/{types-CWZ9q74G.d.mts → types-B35g-lXi.d.mts} +18 -4
  39. package/dist/types-B35g-lXi.d.mts.map +1 -0
  40. package/package.json +31 -27
  41. package/dist/access.service-BmDhE-re.mjs.map +0 -1
  42. package/dist/auth-context-CGVbiSX3.d.mts.map +0 -1
  43. package/dist/index-Dt0YUA7r.d.mts +0 -446
  44. package/dist/index-Dt0YUA7r.d.mts.map +0 -1
  45. package/dist/types-CWZ9q74G.d.mts.map +0 -1
  46. package/dist/types-DabF8LGz.d.mts +0 -11
  47. package/dist/types-DabF8LGz.d.mts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-e_u1SRyd.d.mts","names":[],"sources":["../src/database/database.module.ts","../src/database/pagination/cursor.ts","../src/database/pagination/cursor-reader.ts","../src/database/database.service.ts","../src/database/database.tokens.ts","../src/database/pool.ts","../src/database/decorators/inject-db.decorator.ts","../src/database/errors/cursor-model-unavailable.error.ts","../src/database/errors/cursor-ordering.error.ts","../src/database/errors/malformed-cursor.error.ts","../src/database/errors/record-not-found.error.ts","../src/database/errors/unique-constraint.error.ts","../src/database/errors/from-zenstack-error.ts","../src/database/event-types.ts","../src/database/i18n/en.ts","../src/database/plugins/error-handler.plugin.ts","../src/database/plugins/event-emitter.plugin.ts","../src/database/plugins/schema-switcher.ts","../src/database/commands/zenstack.command.ts","../src/database/commands/db-generate.command.ts","../src/database/commands/db-pull.command.ts","../src/database/commands/db-push.command.ts","../src/database/commands/migrate-deploy.command.ts","../src/database/commands/migrate-dev.command.ts","../src/database/commands/migrate-reset.command.ts","../src/database/commands/migrate-status.command.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { a as InferConnectionSchema, i as InferConnectionExtensions, n as DefaultConnectionName, r as InferAnySchema, s as StratalDatabase, t as ConnectionName } from "./types-CWZ9q74G.mjs";
1
+ import { a as InferAnySchema, l as StratalDatabase, o as InferConnectionExtensions, r as DefaultConnectionName, s as InferConnectionSchema, t as ConnectionName } from "./types-B35g-lXi.mjs";
2
2
  import { CustomEventRegistry, EventName } from "stratal/events";
3
3
  export type { ConnectionName, CustomEventRegistry, DefaultConnectionName, EventName, InferAnySchema, InferConnectionExtensions, InferConnectionSchema, StratalDatabase };
@@ -1,6 +1,5 @@
1
1
  import { RuntimePlugin } from "@zenstackhq/orm";
2
2
  import { SchemaDef } from "@zenstackhq/schema";
3
-
4
3
  //#region src/database/types.d.ts
5
4
  /**
6
5
  * Augment with per-connection schemas, default connection, and plugin types.
@@ -33,7 +32,22 @@ import { SchemaDef } from "@zenstackhq/schema";
33
32
  interface StratalDatabase {}
34
33
  /** Extract `ExtQueryArgs` from a `RuntimePlugin` */
35
34
  type ExtractPluginQueryArgs<P> = P extends RuntimePlugin<infer _S, infer Q, infer _M, infer _R> ? Q : {};
36
- /** Extract `ExtClientMembers` from a `RuntimePlugin` */
35
+ /**
36
+ * Drops index signatures, keeping the members a type actually declares.
37
+ *
38
+ * `ExtClientMembers` is constrained to `Record<string, unknown>`, so every
39
+ * plugin's member type carries an index signature. Letting one reach the client
40
+ * type is not cosmetic: it survives `$transaction`'s `Omit` and collapses every
41
+ * model delegate on a transaction client to `unknown`.
42
+ */
43
+ type DeclaredMembers<T> = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K]; };
44
+ /**
45
+ * Extract `ExtClientMembers` from a `RuntimePlugin`.
46
+ *
47
+ * Exported because the built-in plugins `createDatabaseService` always registers
48
+ * go through this same extraction, so their members reach the client type by the
49
+ * path an app's own plugins take rather than by a second hand-written copy.
50
+ */
37
51
  type ExtractPluginClientMembers<P> = P extends RuntimePlugin<infer _S, infer _Q, infer M, infer _R> ? M : {};
38
52
  /** Extract `ExtResult` from a `RuntimePlugin` */
39
53
  type ExtractPluginResult<P> = P extends RuntimePlugin<infer _S, infer _Q, infer _M, infer R> ? R : {};
@@ -88,5 +102,5 @@ interface InternalDatabaseEventContext {
88
102
  result?: unknown;
89
103
  }
90
104
  //#endregion
91
- export { InferConnectionSchema as a, InferConnectionExtensions as i, DefaultConnectionName as n, InternalDatabaseEventContext as o, InferAnySchema as r, StratalDatabase as s, ConnectionName as t };
92
- //# sourceMappingURL=types-CWZ9q74G.d.mts.map
105
+ export { InferAnySchema as a, InternalDatabaseEventContext as c, ExtractPluginClientMembers as i, StratalDatabase as l, DeclaredMembers as n, InferConnectionExtensions as o, DefaultConnectionName as r, InferConnectionSchema as s, ConnectionName as t };
106
+ //# sourceMappingURL=types-B35g-lXi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-B35g-lXi.d.mts","names":[],"sources":["../src/database/types.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BiB;;KAGZ,uBAAuB,KAC1B,UAAU,oBAAoB,UAAU,SAAS,UAAU,MAAM;;;;;;;;;KAUvD,gBAAgB,QACzB,WAAW,oBAAoB,2BAA2B,YAAY,IAAI,EAAE;;;;;;;;KAUnE,2BAA2B,KACrC,UAAU,oBAAoB,UAAU,UAAU,SAAS,MAAM;;KAG9D,oBAAoB,KACvB,UAAU,oBAAoB,UAAU,UAAU,UAAU,KAAK;;KAG9D,aAAa,6BAChB,uBAAuB,YAAY;EAE7B,cAAc,uBAAuB,KAAK,aAAa;EACvD,kBAAkB,2BAA2B,KAAK,aAAa;EAC/D,WAAW,oBAAoB,KAAK,aAAa;;EAEjD;EAAkB;EAAsB;;;KAGpC,0BAA0B,oBACpC;EAA0B,eAAe;IACrC,gBAAgB,IACd,EAAE,uBACA,aAAa,EAAE;EACb;EAAkB;EAAsB;;EAC1C;EAAkB;EAAsB;;EAC1C;EAAkB;EAAsB;;;KAGpC,sBAAsB,oBAChC;EAA0B,eAAe;IACrC,gBAAgB,IAAI,EAAE,WAAW,YAAY,EAAE,KAAK,YAAY,YAChE;;KAGM,iBACV;EAA0B,eAAe;IACrC,QAAQ,WAAW,YAAY,QAAQ,KAAK,YAC5C;;KAGM,iBACV;EAA0B,eAAe;UAC/B,2BAA2B,cAAc;;KAIzC,wBACV;EAA0B,yBAAyB;IAAqB;;;;;UAMzD;EACf;EACA"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@stratal/framework",
3
- "version": "0.0.27",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
- "author": "Temitayo Fadojutimi",
6
+ "author": {
7
+ "name": "Temitayo Fadojutimi",
8
+ "url": "https://x.com/adesege_"
9
+ },
10
+ "homepage": "https://stratal.dev",
7
11
  "repository": {
8
12
  "type": "git",
9
13
  "url": "git+https://github.com/strataljs/stratal.git",
@@ -55,7 +59,7 @@
55
59
  "scripts": {
56
60
  "build": "tsdown",
57
61
  "generate": "zenstack generate --schema=test/schema.zmodel -o test/zenstack",
58
- "generate:types": "wrangler types -c test/wrangler.jsonc",
62
+ "generate:types": "wrangler types -c test/wrangler.jsonc --strict-vars=false",
59
63
  "pretest": "npx dotenv -- yarn generate && yarn generate:types",
60
64
  "test": "npx dotenv -- vitest run",
61
65
  "test:watch": "npx dotenv -- vitest",
@@ -67,8 +71,7 @@
67
71
  "lint:fix": "npx oxlint --fix ."
68
72
  },
69
73
  "dependencies": {
70
- "@faker-js/faker": "^10.4.0",
71
- "better-call": "1.3.5",
74
+ "@faker-js/faker": "^10.6.0",
72
75
  "postgres-array": "^3.0.4"
73
76
  },
74
77
  "peerDependencies": {
@@ -77,29 +80,30 @@
77
80
  "@zenstackhq/schema": ">=3.6",
78
81
  "better-auth": ">=1.6",
79
82
  "pg": "^8.0.0",
80
- "stratal": "^0.0.27"
83
+ "stratal": ">=0.1.0"
81
84
  },
82
85
  "devDependencies": {
83
- "@better-auth/core": "^1.6.14",
84
- "@cloudflare/vitest-pool-workers": "^0.16.12",
85
- "@cloudflare/workers-types": "4.20260603.1",
86
- "@stratal/testing": "workspace:^",
87
- "@types/node": "^25.9.1",
88
- "@types/pg": "^8.20.0",
89
- "@vitest/coverage-istanbul": "~4.1.8",
90
- "@vitest/runner": "~4.1.8",
91
- "@vitest/snapshot": "~4.1.8",
92
- "@zenstackhq/better-auth": "^3.7.2",
93
- "@zenstackhq/cli": "^3.7.2",
94
- "@zenstackhq/orm": "^3.7.2",
95
- "@zenstackhq/schema": "^3.7.2",
96
- "better-auth": "^1.6.14",
86
+ "@better-auth/core": "^1.7.5",
87
+ "@cloudflare/vitest-plugin": "^1.1.13",
88
+ "@cloudflare/workers-types": "5.20260919.1",
89
+ "@stratal/testing": "^0.1.0",
90
+ "@types/node": "^26.6.2",
91
+ "@types/pg": "^8.23.1",
92
+ "@vitest/coverage-istanbul": "~4.1.11",
93
+ "@vitest/runner": "~4.1.11",
94
+ "@vitest/snapshot": "~4.1.11",
95
+ "@zenstackhq/better-auth": "^3.9.4",
96
+ "@zenstackhq/cli": "^3.9.4",
97
+ "@zenstackhq/orm": "^3.9.4",
98
+ "@zenstackhq/schema": "^3.9.4",
99
+ "better-auth": "^1.7.5",
100
+ "better-call": "1.4.0",
97
101
  "dotenv-cli": "^11.0.0",
98
- "pg": "^8.21.0",
99
- "stratal": "workspace:*",
100
- "tsdown": "^0.22.1",
101
- "typescript": "^6.0.3",
102
- "vitest": "~4.1.8",
103
- "wrangler": "^4.97.0"
102
+ "pg": "^8.23.0",
103
+ "stratal": "0.1.0",
104
+ "tsdown": "^0.23.0",
105
+ "typescript": "^7.0.2",
106
+ "vitest": "~4.1.11",
107
+ "wrangler": "^4.135.0"
104
108
  }
105
- }
109
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"access.service-BmDhE-re.mjs","names":[],"sources":["../src/access-control/plugin.ts","../src/access-control/services/access.service.ts"],"sourcesContent":["import type { BetterAuthPlugin } from 'better-auth'\nimport type { AccessControlOptions } from './types'\n\n/**\n * Creates the Stratal access control Better Auth plugin.\n *\n * Ensures the `user.role` schema field exists.\n * No endpoints are added — all permission logic lives in AccessService.\n *\n * Auto-added to Better Auth options when `accessControl` is provided to\n * `AuthModule.forRootAsync()`. Users never call this directly.\n */\nexport function createStratalAcPlugin(_options: AccessControlOptions): BetterAuthPlugin {\n return {\n id: 'stratal-ac',\n schema: {\n user: {\n fields: {\n role: {\n type: 'string',\n required: false,\n input: false,\n defaultValue: 'user',\n },\n },\n },\n },\n }\n}\n","import type { DatabaseService } from '@stratal/framework/database'\nimport { DI_TOKENS, inject, Request } from 'stratal/di'\nimport type { AuthContext } from '../../context/auth-context'\nimport { AC_TOKENS } from '../tokens'\nimport type { AccessControlOptions } from '../types'\n\nfunction parseRoles(role: string | null | undefined): string[] {\n if (!role) return []\n return role.split(',').map(r => r.trim()).filter(Boolean)\n}\n\n/**\n * AccessService\n *\n * Request-scoped service for role and permission management.\n *\n * Roles for the current user are read from AuthContext (populated by\n * SessionVerificationMiddleware — no DB hit). Other users are resolved\n * from the database.\n *\n * Permission checks use Better Auth's `role.authorize()` locally with\n * OR logic — access is granted if any of the user's roles allows it.\n *\n * @example\n * ```typescript\n * // Check current user\n * await accessService.currentUserHasPermission({ posts: ['update'] })\n *\n * // Check arbitrary user (e.g. from an admin action)\n * await accessService.hasPermission(userId, { admin: ['access'] })\n *\n * // Assign a role\n * await accessService.setUserRole(userId, 'admin')\n *\n * // Assign multiple roles\n * await accessService.setUserRole(userId, ['editor', 'reviewer'])\n * ```\n */\n@Request(AC_TOKENS.AccessService)\nexport class AccessService {\n constructor(\n @inject(DI_TOKENS.AuthContext)\n private readonly authContext: AuthContext,\n @inject(DI_TOKENS.Database)\n private readonly db: DatabaseService,\n @inject(AC_TOKENS.Options)\n private readonly options: AccessControlOptions\n ) { }\n\n /**\n * Get all roles for a user.\n *\n * Uses AuthContext for the current user (no DB hit).\n * Falls back to DB for other users.\n */\n async getUserRoles(userId: string): Promise<string[]> {\n if (userId === this.authContext.getUserId()) {\n const roles = this.authContext.getRoles()\n if (roles.length > 0) return roles\n }\n const user = await (this.db).user.findUnique({\n where: { id: userId },\n select: { role: true },\n })\n return parseRoles(user?.role)\n }\n\n /**\n * Assign one or more roles to a user.\n *\n * Multiple roles are stored as a comma-separated string in `user.role`.\n */\n async setUserRole(userId: string, role: string | string[]): Promise<void> {\n const roleStr = Array.isArray(role) ? role.join(',') : role\n await this.db.user.update({\n where: { id: userId },\n data: { role: roleStr },\n })\n }\n\n /**\n * Check if a user has the required permissions.\n *\n * Returns true if any of the user's roles grants all of the requested permissions.\n */\n async hasPermission(userId: string, permissions: Record<string, string[]>): Promise<boolean> {\n const roles = await this.getUserRoles(userId)\n return this.checkPermissions(roles, permissions)\n }\n\n /**\n * Get the merged permission set for a user across all their roles.\n * Useful for sending to the frontend.\n */\n async getPermissionsForUser(userId: string): Promise<Record<string, string[]>> {\n const roles = await this.getUserRoles(userId)\n return this.mergePermissions(roles)\n }\n\n /**\n * Get all roles for the currently authenticated user.\n * Reads from AuthContext — no DB hit.\n */\n getCurrentUserRoles(): string[] {\n return this.authContext.getRoles()\n }\n\n /**\n * Check if the currently authenticated user has the required permissions.\n * Reads roles from AuthContext — no DB hit.\n */\n currentUserHasPermission(permissions: Record<string, string[]>): boolean {\n const roles = this.authContext.getRoles()\n if (roles.length === 0) return false\n return this.checkPermissions(roles, permissions)\n }\n\n /**\n * Get merged permissions for the currently authenticated user.\n * Reads roles from AuthContext — no DB hit.\n */\n getCurrentUserPermissions(): Record<string, string[]> {\n const roles = this.authContext.getRoles()\n return this.mergePermissions(roles)\n }\n\n private checkPermissions(roles: string[], permissions: Record<string, string[]>): boolean {\n return roles.some(roleName => {\n const roleObj = this.options.roles[roleName]\n if (!roleObj) return false\n\n const specific: Record<string, string[]> = {}\n\n for (const [resource, actions] of Object.entries(permissions)) {\n if (actions.includes('*')) {\n // Wildcard: role must have at least one action defined for this resource\n const roleActions = (roleObj.statements as Record<string, readonly string[]>)[resource]\n if (!roleActions?.length) return false\n } else {\n specific[resource] = actions\n }\n }\n\n return Object.keys(specific).length === 0 || roleObj.authorize(specific).success\n })\n }\n\n private mergePermissions(roles: string[]): Record<string, string[]> {\n const result: Record<string, string[]> = {}\n for (const roleName of roles) {\n const roleObj = this.options.roles[roleName]\n if (!roleObj) continue\n for (const [resource, actions] of Object.entries(roleObj.statements)) {\n result[resource] ??= []\n for (const action of actions as string[]) {\n if (!result[resource].includes(action)) {\n result[resource].push(action)\n }\n }\n }\n }\n return result\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,SAAgB,sBAAsB,UAAkD;CACtF,OAAO;EACL,IAAI;EACJ,QAAQ,EACN,MAAM,EACJ,QAAQ,EACN,MAAM;GACJ,MAAM;GACN,UAAU;GACV,OAAO;GACP,cAAc;EAChB,EACF,EACF,EACF;CACF;AACF;;;ACtBA,SAAS,WAAW,MAA2C;CAC7D,IAAI,CAAC,MAAM,OAAO,CAAC;CACnB,OAAO,KAAK,MAAM,GAAG,EAAE,KAAI,MAAK,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAC1D;AA8BO,IAAA,gBAAA,MAAM,cAAc;CAGN;CAEA;CAEA;CANnB,YACE,aAEA,IAEA,SAEA;EALiB,KAAA,cAAA;EAEA,KAAA,KAAA;EAEA,KAAA,UAAA;CACf;;;;;;;CAQJ,MAAM,aAAa,QAAmC;EACpD,IAAI,WAAW,KAAK,YAAY,UAAU,GAAG;GAC3C,MAAM,QAAQ,KAAK,YAAY,SAAS;GACxC,IAAI,MAAM,SAAS,GAAG,OAAO;EAC/B;EAKA,OAAO,YAAW,MAJE,KAAK,GAAI,KAAK,WAAW;GAC3C,OAAO,EAAE,IAAI,OAAO;GACpB,QAAQ,EAAE,MAAM,KAAK;EACvB,CAAC,IACuB,IAAI;CAC9B;;;;;;CAOA,MAAM,YAAY,QAAgB,MAAwC;EACxE,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI;EACvD,MAAM,KAAK,GAAG,KAAK,OAAO;GACxB,OAAO,EAAE,IAAI,OAAO;GACpB,MAAM,EAAE,MAAM,QAAQ;EACxB,CAAC;CACH;;;;;;CAOA,MAAM,cAAc,QAAgB,aAAyD;EAC3F,MAAM,QAAQ,MAAM,KAAK,aAAa,MAAM;EAC5C,OAAO,KAAK,iBAAiB,OAAO,WAAW;CACjD;;;;;CAMA,MAAM,sBAAsB,QAAmD;EAC7E,MAAM,QAAQ,MAAM,KAAK,aAAa,MAAM;EAC5C,OAAO,KAAK,iBAAiB,KAAK;CACpC;;;;;CAMA,sBAAgC;EAC9B,OAAO,KAAK,YAAY,SAAS;CACnC;;;;;CAMA,yBAAyB,aAAgD;EACvE,MAAM,QAAQ,KAAK,YAAY,SAAS;EACxC,IAAI,MAAM,WAAW,GAAG,OAAO;EAC/B,OAAO,KAAK,iBAAiB,OAAO,WAAW;CACjD;;;;;CAMA,4BAAsD;EACpD,MAAM,QAAQ,KAAK,YAAY,SAAS;EACxC,OAAO,KAAK,iBAAiB,KAAK;CACpC;CAEA,iBAAyB,OAAiB,aAAgD;EACxF,OAAO,MAAM,MAAK,aAAY;GAC5B,MAAM,UAAU,KAAK,QAAQ,MAAM;GACnC,IAAI,CAAC,SAAS,OAAO;GAErB,MAAM,WAAqC,CAAC;GAE5C,KAAK,MAAM,CAAC,UAAU,YAAY,OAAO,QAAQ,WAAW,GAC1D,IAAI,QAAQ,SAAS,GAAG;QAGlB,CADiB,QAAQ,WAAiD,WAC5D,QAAQ,OAAO;GAAA,OAEjC,SAAS,YAAY;GAIzB,OAAO,OAAO,KAAK,QAAQ,EAAE,WAAW,KAAK,QAAQ,UAAU,QAAQ,EAAE;EAC3E,CAAC;CACH;CAEA,iBAAyB,OAA2C;EAClE,MAAM,SAAmC,CAAC;EAC1C,KAAK,MAAM,YAAY,OAAO;GAC5B,MAAM,UAAU,KAAK,QAAQ,MAAM;GACnC,IAAI,CAAC,SAAS;GACd,KAAK,MAAM,CAAC,UAAU,YAAY,OAAO,QAAQ,QAAQ,UAAU,GAAG;IACpE,OAAO,cAAc,CAAC;IACtB,KAAK,MAAM,UAAU,SACnB,IAAI,CAAC,OAAO,UAAU,SAAS,MAAM,GACnC,OAAO,UAAU,KAAK,MAAM;GAGlC;EACF;EACA,OAAO;CACT;AACF;;CA7HC,QAAQ,UAAU,aAAa;oBAG3B,OAAO,UAAU,WAAW,CAAA;oBAE5B,OAAO,UAAU,QAAQ,CAAA;oBAEzB,OAAO,UAAU,OAAO,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-context-CGVbiSX3.d.mts","names":[],"sources":["../src/context/auth-context.ts"],"mappings":";;;;;AA8BA;;;;AAA0C;AAE1C;;;;AACgB;AAGhB;;;;;;;;;;;UANiB,QAAA,SAAiB,QAAQ;AAAA,UAEzB,QAAA;EACf,IAAA,EAAM,QAAQ;AAAA;AAAA,cAIH,WAAA;EAAA,UACD,IAAA,GAAO,QAAA;EAqBF;;;;EAff,cAAA,CAAe,IAAA,EAAM,QAAA;EAsDrB;;;;EA9CA,OAAA,IAAW,QAAA;EAuEK;;;EAhEhB,WAAA,IAAe,QAAA;;;;;EAWf,SAAA;;;;;EAQA,aAAA;;;;EAOA,WAAA,IAAe,QAAA;;;;;;;EAaf,OAAA;;;;;EAQA,QAAA;;;;EASA,eAAA;;;;;EAQA,gBAAA;AAAA"}
@@ -1,446 +0,0 @@
1
- import { a as InferConnectionSchema, i as InferConnectionExtensions, n as DefaultConnectionName, r as InferAnySchema, t as ConnectionName } from "./types-CWZ9q74G.mjs";
2
- import { AsyncModuleOptions, DynamicModule, ModuleContext, OnInitialize, OnShutdown } from "stratal/module";
3
- import { ApplicationError, HttpException } from "stratal/errors";
4
- import { Command } from "stratal/quarry";
5
- import { AggregateArgs, AllCrudOperations, AnyPlugin, ClientContract, ClientOptions, ComputedFieldsOptions, CountArgs, CreateArgs, CreateManyArgs, DeleteArgs, DeleteManyArgs, EntityMutationHooksDef, FindFirstArgs, FindManyArgs, FindUniqueArgs, GroupByArgs, ModelResult, RuntimePlugin, UpdateArgs, UpdateManyArgs, UpsertArgs } from "@zenstackhq/orm";
6
- import { SchemaDef } from "@zenstackhq/schema";
7
- import { SchemaDef as SchemaDef$1 } from "@zenstackhq/orm/schema";
8
- import { IEventRegistry } from "stratal/events";
9
-
10
- //#region src/database/database.module.d.ts
11
- interface DatabaseConnectionConfig<Schema extends SchemaDef = SchemaDef, Name extends ConnectionName = ConnectionName> {
12
- name: Name;
13
- schema: Schema;
14
- dialect: () => ClientOptions<SchemaDef>['dialect'];
15
- plugins?: AnyPlugin[];
16
- /**
17
- * Schema-level @computed field implementations. Required when the schema
18
- * declares any `@computed` fields. Keyed by uncapitalized model name; values
19
- * map field name to a Kysely-expression compute callback.
20
- */
21
- computedFields?: ComputedFieldsOptions<Schema>;
22
- }
23
- interface DatabaseModuleConfig {
24
- default: DefaultConnectionName;
25
- connections: DatabaseConnectionConfig[];
26
- }
27
- declare class DatabaseModule implements OnInitialize, OnShutdown {
28
- private readonly services;
29
- static forRoot(config: DatabaseModuleConfig): DynamicModule;
30
- static forRootAsync(options: AsyncModuleOptions<DatabaseModuleConfig>): DynamicModule;
31
- onInitialize(context: ModuleContext): Promise<void>;
32
- onShutdown(context: ModuleContext): Promise<void>;
33
- }
34
- //#endregion
35
- //#region src/database/database.service.d.ts
36
- /**
37
- * DatabaseService type
38
- *
39
- * Each connection has its own schema and plugin extensions.
40
- * Plugin extension types are automatically inferred from `StratalDatabase.plugins`.
41
- *
42
- * @example
43
- * ```typescript
44
- * // Typed to default connection (includes plugin extensions)
45
- * constructor(@inject(DI_TOKENS.Database) private db: DatabaseService) {}
46
- *
47
- * // Typed to a specific named connection
48
- * constructor(@InjectDB('analytics') private analytics: DatabaseService<'analytics'>) {}
49
- * ```
50
- */
51
- type DatabaseService<K extends ConnectionName = DefaultConnectionName> = ClientContract<InferConnectionSchema<K>, ClientOptions<InferConnectionSchema<K>>, InferConnectionExtensions<K>['extQueryArgs'], InferConnectionExtensions<K>['extClientMembers'], InferConnectionExtensions<K>['extResult']>;
52
- //#endregion
53
- //#region src/database/database.tokens.d.ts
54
- declare const DATABASE_TOKENS: {
55
- readonly Options: symbol;
56
- readonly Services: symbol;
57
- };
58
- declare function connectionSymbol(name: ConnectionName): symbol;
59
- //#endregion
60
- //#region src/database/decorators/inject-db.decorator.d.ts
61
- declare function InjectDB(name: ConnectionName): ParameterDecorator;
62
- //#endregion
63
- //#region src/database/errors/record-not-found.error.d.ts
64
- declare class RecordNotFoundError extends HttpException {
65
- readonly details?: string | undefined;
66
- constructor(details?: string | undefined, cause?: unknown);
67
- }
68
- //#endregion
69
- //#region src/database/errors/unique-constraint.error.d.ts
70
- declare class UniqueConstraintError extends HttpException {
71
- readonly fields?: string[] | undefined;
72
- constructor(fields?: string[] | undefined, cause?: unknown);
73
- }
74
- //#endregion
75
- //#region src/database/errors/from-zenstack-error.d.ts
76
- declare function fromZenStackError(error: unknown): ApplicationError;
77
- //#endregion
78
- //#region src/database/event-types.d.ts
79
- /**
80
- * Event phase: before or after operation
81
- */
82
- type EventPhase = 'before' | 'after';
83
- /**
84
- * All database operations that can trigger events
85
- */
86
- type DatabaseOperation = AllCrudOperations;
87
- /**
88
- * Distributive helper — extracts model names from each schema member individually.
89
- * Using a naked type parameter ensures TypeScript distributes over unions:
90
- * `_ExtractModelNames<A | B>` = `_ExtractModelNames<A> | _ExtractModelNames<B>`
91
- */
92
- type _ExtractModelNames<S> = S extends {
93
- models: infer M;
94
- } ? Extract<keyof M, string> : never;
95
- /**
96
- * Model names derived from the shared database schema.
97
- * Distributes over all schema types so models from every connection are included.
98
- */
99
- type ModelName = _ExtractModelNames<InferAnySchema>;
100
- /**
101
- * Database event names with all supported patterns.
102
- */
103
- type DatabaseEventName = `${EventPhase}.${ModelName}.${DatabaseOperation}` | `${EventPhase}.${ModelName}` | `${EventPhase}.${DatabaseOperation}` | EventPhase;
104
- /**
105
- * Map operation name to ZenStack Args type for a given schema and model
106
- */
107
- 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;
108
- /**
109
- * Distributive helper — resolves data/where args for a model against each schema individually.
110
- */
111
- type _ExtractData<S, M extends string, O extends DatabaseOperation> = S extends SchemaDef ? M extends Extract<keyof S['models'], string> ? OperationArgsMap<S, M, O> extends {
112
- data: infer D;
113
- } ? D : OperationArgsMap<S, M, O> extends {
114
- where: infer W;
115
- } ? W : OperationArgsMap<S, M, O> : never : never;
116
- /**
117
- * Extract the data/where property from operation args.
118
- * Distributes over all schemas to find the matching model.
119
- */
120
- type GetData<M extends ModelName, O extends DatabaseOperation> = _ExtractData<InferAnySchema, M, O> extends never ? unknown : _ExtractData<InferAnySchema, M, O>;
121
- /**
122
- * Distributive helper — resolves result type for a model against each schema individually.
123
- */
124
- type _ExtractResult<S, M extends string, O extends DatabaseOperation> = S extends SchemaDef ? M extends Extract<keyof S['models'], string> ? O extends 'findMany' | 'createMany' | 'updateMany' | 'deleteMany' ? ModelResult<S, M>[] : O extends 'count' ? number : ModelResult<S, M> : never : never;
125
- /**
126
- * Extract result type for a model operation.
127
- * Distributes over all schemas to find the matching model.
128
- */
129
- type GetResult<M extends ModelName, O extends DatabaseOperation> = _ExtractResult<InferAnySchema, M, O> extends never ? unknown : _ExtractResult<InferAnySchema, M, O>;
130
- /**
131
- * Verb suffix for entity-mutation events (`entity.{Model}.{verb}`).
132
- */
133
- type EntityMutationVerb = 'created' | 'updated' | 'deleted';
134
- /**
135
- * Entity-mutation event names with all supported patterns.
136
- *
137
- * Unlike `before.*`/`after.*` (raw query args/result), entity events carry
138
- * full entity snapshots: `created` has `after`, `updated` has `before` and
139
- * `after`, `deleted` has `before`. The pre-mutation snapshot is loaded inside
140
- * the mutation's transaction, and only when a listener matches — a wildcard
141
- * subscription (`entity`) makes every model pay that pre-read, so subscribe
142
- * per model when cost matters.
143
- */
144
- type EntityEventName = `entity.${ModelName}.${EntityMutationVerb}` | `entity.${ModelName}` | `entity.${EntityMutationVerb}` | 'entity';
145
- /**
146
- * Distributive helper — resolves the full entity shape for a model.
147
- */
148
- type _ExtractEntity<S, M extends string> = S extends SchemaDef ? M extends Extract<keyof S['models'], string> ? ModelResult<S, M> : never : never;
149
- /**
150
- * Full entity snapshot type for a model, across all connections' schemas.
151
- */
152
- type GetEntity<M extends ModelName> = _ExtractEntity<InferAnySchema, M> extends never ? unknown : _ExtractEntity<InferAnySchema, M>;
153
- interface EntityCreatedEventContext<M extends ModelName> {
154
- model: M;
155
- action: 'created';
156
- before: undefined;
157
- after: GetEntity<M>;
158
- }
159
- interface EntityUpdatedEventContext<M extends ModelName> {
160
- model: M;
161
- action: 'updated';
162
- before: GetEntity<M>;
163
- after: GetEntity<M>;
164
- }
165
- interface EntityDeletedEventContext<M extends ModelName> {
166
- model: M;
167
- action: 'deleted';
168
- before: GetEntity<M>;
169
- after: undefined;
170
- }
171
- /** Context for model wildcard subscriptions (e.g. "entity.User") */
172
- interface EntityModelWildcardContext<M extends ModelName> {
173
- model: M;
174
- action: EntityMutationVerb;
175
- before: GetEntity<M> | undefined;
176
- after: GetEntity<M> | undefined;
177
- }
178
- /** Context for verb wildcard subscriptions (e.g. "entity.updated") */
179
- interface EntityVerbWildcardContext<V extends EntityMutationVerb> {
180
- model: ModelName;
181
- action: V;
182
- before: V extends 'created' ? undefined : unknown;
183
- after: V extends 'deleted' ? undefined : unknown;
184
- }
185
- /** Context for the global wildcard subscription ("entity") */
186
- interface EntityWildcardContext {
187
- model: ModelName;
188
- action: EntityMutationVerb;
189
- before: unknown;
190
- after: unknown;
191
- }
192
- type EntityEventContext<E extends string> = E extends `entity.${infer M extends ModelName}.created` ? EntityCreatedEventContext<M> : E extends `entity.${infer M extends ModelName}.updated` ? EntityUpdatedEventContext<M> : E extends `entity.${infer M extends ModelName}.deleted` ? EntityDeletedEventContext<M> : E extends `entity.${infer M extends ModelName}` ? EntityModelWildcardContext<M> : E extends `entity.${infer V extends EntityMutationVerb}` ? EntityVerbWildcardContext<V> : EntityWildcardContext;
193
- /**
194
- * Mapped type producing all entity-mutation event name → context pairs.
195
- */
196
- type EntityEvents = { [E in EntityEventName]: EntityEventContext<E> };
197
- /**
198
- * Parse event string into structured type for discriminated unions
199
- */
200
- type ParseEvent<E extends string> = E extends `${infer Phase extends EventPhase}.${infer Model extends ModelName}.${infer Op extends DatabaseOperation}` ? {
201
- phase: Phase;
202
- model: Model;
203
- operation: Op;
204
- type: 'exact';
205
- } : E extends `${infer Phase extends EventPhase}.${infer Second}` ? Second extends ModelName ? {
206
- phase: Phase;
207
- model: Second;
208
- type: 'model-wildcard';
209
- } : Second extends DatabaseOperation ? {
210
- phase: Phase;
211
- operation: Second;
212
- type: 'operation-wildcard';
213
- } : never : E extends EventPhase ? {
214
- phase: E;
215
- type: 'phase-wildcard';
216
- } : never;
217
- /** Base context fields present in all events */
218
- interface BaseEventContext {}
219
- /** Context for exact database events (e.g., "after.User.create") */
220
- interface ExactDatabaseEventContext<M extends ModelName, O extends DatabaseOperation, Phase extends EventPhase> extends BaseEventContext {
221
- data: Phase extends 'before' ? GetData<M, O> : Readonly<GetData<M, O>>;
222
- result: Phase extends 'after' ? GetResult<M, O> : undefined;
223
- }
224
- /** Context for model wildcard events (e.g., "after.User") */
225
- interface ModelWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
226
- operation: DatabaseOperation;
227
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
228
- result: Phase extends 'after' ? unknown : undefined;
229
- }
230
- /** Context for operation wildcard events (e.g., "after.create") */
231
- interface OperationWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
232
- model: ModelName;
233
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
234
- result: Phase extends 'after' ? unknown : undefined;
235
- }
236
- /** Context for phase wildcard events (e.g., "after" or "before") */
237
- interface PhaseWildcardEventContext<Phase extends EventPhase> extends BaseEventContext {
238
- model: ModelName;
239
- operation: DatabaseOperation;
240
- data: Phase extends 'before' ? unknown : Readonly<unknown>;
241
- result: Phase extends 'after' ? unknown : undefined;
242
- }
243
- /**
244
- * Type-safe event context with discriminated unions.
245
- */
246
- type DatabaseEventContext<E extends string> = ParseEvent<E> extends {
247
- phase: infer P extends EventPhase;
248
- model: infer M extends ModelName;
249
- operation: infer O extends DatabaseOperation;
250
- type: 'exact';
251
- } ? ExactDatabaseEventContext<M, O, P> : ParseEvent<E> extends {
252
- phase: infer P extends EventPhase;
253
- model: infer _M extends ModelName;
254
- type: 'model-wildcard';
255
- } ? ModelWildcardEventContext<P> : ParseEvent<E> extends {
256
- phase: infer P extends EventPhase;
257
- operation: infer _O extends DatabaseOperation;
258
- type: 'operation-wildcard';
259
- } ? OperationWildcardEventContext<P> : ParseEvent<E> extends {
260
- phase: infer P extends EventPhase;
261
- type: 'phase-wildcard';
262
- } ? PhaseWildcardEventContext<P> : BaseEventContext;
263
- /**
264
- * Mapped type that produces all database event name to context pairs.
265
- *
266
- * Used to augment core's `CustomEventRegistry`:
267
- *
268
- * @example
269
- * ```typescript
270
- * declare module 'stratal/events' {
271
- * interface CustomEventRegistry extends DatabaseEvents {}
272
- * }
273
- * ```
274
- */
275
- type DatabaseEvents = { [E in DatabaseEventName]: DatabaseEventContext<E> };
276
- declare module 'stratal/events' {
277
- interface CustomEventRegistry extends DatabaseEvents, EntityEvents {}
278
- }
279
- //#endregion
280
- //#region src/database/i18n/en.d.ts
281
- declare const databaseMessages: {
282
- readonly en: {
283
- readonly connectionNameRequired: "Connection name is required";
284
- readonly defaultConnectionRequired: "Default connection name is required";
285
- readonly connectionRequired: "At least one connection is required";
286
- readonly duplicateConnections: "Duplicate connection names found";
287
- readonly defaultConnectionNotFound: "Default connection not found in connections";
288
- };
289
- };
290
- declare module 'stratal/i18n' {
291
- interface AppMessageNamespaces {
292
- database: typeof databaseMessages['en'];
293
- }
294
- } //# sourceMappingURL=en.d.ts.map
295
- //#endregion
296
- //#region src/database/plugins/error-handler.plugin.d.ts
297
- /**
298
- * ZenStack runtime plugin that transforms ORM errors into ApplicationError instances.
299
- *
300
- * @example
301
- * ```typescript
302
- * super(schema, {
303
- * dialect: new PostgresDialect({ pool }),
304
- * plugins: [new ErrorHandlerPlugin()]
305
- * })
306
- * ```
307
- */
308
- declare class ErrorHandlerPlugin implements RuntimePlugin<SchemaDef$1, Record<string, unknown>, Record<string, unknown>, {}> {
309
- readonly id = "error-handler";
310
- onQuery: ({
311
- args,
312
- proceed
313
- }: {
314
- args: Record<string, unknown> | undefined;
315
- proceed: (args: Record<string, unknown> | undefined) => Promise<unknown>;
316
- }) => Promise<unknown>;
317
- }
318
- //#endregion
319
- //#region src/database/plugins/event-emitter.plugin.d.ts
320
- interface EventEmitterPluginOptions {
321
- eventRegistry: IEventRegistry;
322
- }
323
- /**
324
- * ZenStack runtime plugin that emits before/after events for database operations.
325
- *
326
- * Emits events in the format:
327
- * - `before.{Model}.{operation}` - Before the database operation
328
- * - `after.{Model}.{operation}` - After the database operation
329
- *
330
- * Additionally emits entity-mutation events carrying full entity snapshots:
331
- * - `entity.{Model}.created` - `{ after }`
332
- * - `entity.{Model}.updated` - `{ before, after }`
333
- * - `entity.{Model}.deleted` - `{ before }`
334
- *
335
- * Entity events are listener-driven: the pre-mutation snapshot is only
336
- * loaded (inside the mutation's transaction) when `hasListeners()` reports
337
- * a matching subscription, so models nobody observes pay no cost. Note that
338
- * a wildcard subscription (`entity`) therefore makes every model pay the
339
- * pre-read — subscribe per model when cost matters.
340
- *
341
- * @example
342
- * ```typescript
343
- * super(schema, {
344
- * dialect: new PostgresDialect({ pool }),
345
- * plugins: [
346
- * new EventEmitterPlugin({
347
- * eventRegistry,
348
- * })
349
- * ]
350
- * })
351
- * ```
352
- */
353
- declare class EventEmitterPlugin implements RuntimePlugin<SchemaDef$1, Record<string, unknown>, Record<string, unknown>, {}> {
354
- private options;
355
- readonly id = "event-emitter";
356
- constructor(options: EventEmitterPluginOptions);
357
- onEntityMutation: EntityMutationHooksDef<SchemaDef$1>;
358
- onQuery: ({
359
- model,
360
- operation,
361
- args,
362
- proceed
363
- }: {
364
- model: string;
365
- operation: string;
366
- args: Record<string, unknown> | undefined;
367
- proceed: (args: Record<string, unknown> | undefined) => Promise<unknown>;
368
- }) => Promise<unknown>;
369
- }
370
- //#endregion
371
- //#region src/database/plugins/schema-switcher.d.ts
372
- /**
373
- * Switches the active schema on a ZenStack/Kysely database client by mutating
374
- * `$schema.provider.defaultSchema`. This causes ZenStack's QueryNameMapper to
375
- * generate fully-qualified table references (e.g. `"tenant_123"."User"`).
376
- *
377
- * Must be called BEFORE any queries are made on the client.
378
- *
379
- * Note: The ZenStack RuntimePlugin `onQuery` hook fires after table names are
380
- * already resolved, so a plugin-based approach cannot set the schema prefix.
381
- * Direct client mutation is the only supported method.
382
- */
383
- declare class SchemaSwitcher {
384
- static apply<T>(client: T, schemaName: string): T;
385
- }
386
- //#endregion
387
- //#region src/database/commands/zenstack.command.d.ts
388
- /**
389
- * Base command for ZenStack CLI wrappers.
390
- * Uses execFileSync with array arguments to prevent shell injection.
391
- */
392
- declare abstract class ZenStackCommand extends Command {
393
- protected zenstack(args: string[]): Promise<number>;
394
- }
395
- //#endregion
396
- //#region src/database/commands/db-generate.command.d.ts
397
- declare class DbGenerateCommand extends ZenStackCommand {
398
- static command: string;
399
- static description: string;
400
- handle(): Promise<number>;
401
- }
402
- //#endregion
403
- //#region src/database/commands/db-pull.command.d.ts
404
- declare class DbPullCommand extends ZenStackCommand {
405
- static command: string;
406
- static description: string;
407
- handle(): Promise<number>;
408
- }
409
- //#endregion
410
- //#region src/database/commands/db-push.command.d.ts
411
- declare class DbPushCommand extends ZenStackCommand {
412
- static command: string;
413
- static description: string;
414
- handle(): Promise<number>;
415
- }
416
- //#endregion
417
- //#region src/database/commands/migrate-deploy.command.d.ts
418
- declare class MigrateDeployCommand extends ZenStackCommand {
419
- static command: string;
420
- static description: string;
421
- handle(): Promise<number>;
422
- }
423
- //#endregion
424
- //#region src/database/commands/migrate-dev.command.d.ts
425
- declare class MigrateDevCommand extends ZenStackCommand {
426
- static command: string;
427
- static description: string;
428
- handle(): Promise<number>;
429
- }
430
- //#endregion
431
- //#region src/database/commands/migrate-reset.command.d.ts
432
- declare class MigrateResetCommand extends ZenStackCommand {
433
- static command: string;
434
- static description: string;
435
- handle(): Promise<number>;
436
- }
437
- //#endregion
438
- //#region src/database/commands/migrate-status.command.d.ts
439
- declare class MigrateStatusCommand extends ZenStackCommand {
440
- static command: string;
441
- static description: string;
442
- handle(): Promise<number>;
443
- }
444
- //#endregion
445
- export { DATABASE_TOKENS as A, GetResult as C, UniqueConstraintError as D, fromZenStackError as E, DatabaseModuleConfig as F, DatabaseService as M, DatabaseConnectionConfig as N, RecordNotFoundError as O, DatabaseModule as P, GetEntity as S, ParseEvent as T, EntityEventName as _, DbPushCommand as a, EventPhase as b, ZenStackCommand as c, EventEmitterPluginOptions as d, ErrorHandlerPlugin as f, DatabaseOperation as g, DatabaseEvents as h, MigrateDeployCommand as i, connectionSymbol as j, InjectDB as k, SchemaSwitcher as l, DatabaseEventName as m, MigrateResetCommand as n, DbPullCommand as o, databaseMessages as p, MigrateDevCommand as r, DbGenerateCommand as s, MigrateStatusCommand as t, EventEmitterPlugin as u, EntityEvents as v, ModelName as w, GetData as x, EntityMutationVerb as y };
446
- //# sourceMappingURL=index-Dt0YUA7r.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dt0YUA7r.d.mts","names":[],"sources":["../src/database/database.module.ts","../src/database/database.service.ts","../src/database/database.tokens.ts","../src/database/decorators/inject-db.decorator.ts","../src/database/errors/record-not-found.error.ts","../src/database/errors/unique-constraint.error.ts","../src/database/errors/from-zenstack-error.ts","../src/database/event-types.ts","../src/database/i18n/en.ts","../src/database/plugins/error-handler.plugin.ts","../src/database/plugins/event-emitter.plugin.ts","../src/database/plugins/schema-switcher.ts","../src/database/commands/zenstack.command.ts","../src/database/commands/db-generate.command.ts","../src/database/commands/db-pull.command.ts","../src/database/commands/db-push.command.ts","../src/database/commands/migrate-deploy.command.ts","../src/database/commands/migrate-dev.command.ts","../src/database/commands/migrate-reset.command.ts","../src/database/commands/migrate-status.command.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-CWZ9q74G.d.mts","names":[],"sources":["../src/database/types.ts"],"mappings":";;;;;;AA+BA;;;;AAAgC;AAAG;;;;;;;;;;;;;AAIiC;AAAA;;;;;;;UAJnD,eAAA;;KAGZ,sBAAA,MACH,CAAA,SAAU,aAAa,0CAA0C,CAAA;;KAG9D,0BAAA,MACH,CAAA,SAAU,aAAa,0CAA0C,CAAA;AAAC;AAAA,KAG/D,mBAAA,MACH,CAAA,SAAU,aAAa,0CAA0C,CAAA;;KAG9D,YAAA,8BACH,OAAA;EAEM,YAAA,EAAc,sBAAA,CAAuB,CAAA,IAAK,YAAA,CAAa,IAAA;EACvD,gBAAA,EAAkB,0BAAA,CAA2B,CAAA,IAAK,YAAA,CAAa,IAAA;EAC/D,SAAA,EAAW,mBAAA,CAAoB,CAAA,IAAK,YAAA,CAAa,IAAA;AAAA;EAEjD,YAAA;EAAkB,gBAAA;EAAsB,SAAA;AAAA;;KAGpC,yBAAA,qBACV,eAAA;EAA0B,OAAA;AAAA,IACtB,CAAA,eAAgB,CAAA,GACd,CAAA,CAAE,CAAA,sBACA,YAAA,CAAa,CAAA,CAAE,CAAA;EACb,YAAA;EAAkB,gBAAA;EAAsB,SAAA;AAAA;EAC1C,YAAA;EAAkB,gBAAA;EAAsB,SAAA;AAAA;EAC1C,YAAA;EAAkB,gBAAA;EAAsB,SAAA;AAAA;;KAGpC,qBAAA,qBACV,eAAA;EAA0B,OAAA;AAAA,IACtB,CAAA,eAAgB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,SAAA,GAAY,CAAA,CAAE,CAAA,IAAK,SAAA,GAAY,SAAA,GAChE,SAAA;;KAGM,cAAA,GACV,eAAA;EAA0B,OAAA;AAAA,IACtB,CAAA,OAAQ,CAAA,UAAW,SAAA,GAAY,CAAA,OAAQ,CAAA,IAAK,SAAA,GAC5C,SAAA;;KAGM,cAAA,GACV,eAAA;EAA0B,OAAA;AAAA,UAChB,CAAA,0BAA2B,OAAA,OAAc,CAAA;;KAIzC,qBAAA,GACV,eAAe;EAAW,iBAAA;AAAA,IAA8C,CAAA;;;;;UAMzD,4BAAA;EACf,IAAA;EACA,MAAM;AAAA"}