@stratal/framework 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +88 -0
- package/dist/auth/auth.module.d.ts +37 -0
- package/dist/auth/auth.module.d.ts.map +1 -0
- package/dist/auth/auth.module.js +74 -0
- package/dist/auth/auth.module.js.map +1 -0
- package/dist/auth/auth.tokens.d.ts +5 -0
- package/dist/auth/auth.tokens.d.ts.map +1 -0
- package/dist/auth/auth.tokens.js +5 -0
- package/dist/auth/auth.tokens.js.map +1 -0
- package/dist/auth/errors/auth-errors.d.ts +74 -0
- package/dist/auth/errors/auth-errors.d.ts.map +1 -0
- package/dist/auth/errors/auth-errors.js +122 -0
- package/dist/auth/errors/auth-errors.js.map +1 -0
- package/dist/auth/errors/index.d.ts +5 -0
- package/dist/auth/errors/index.d.ts.map +1 -0
- package/dist/auth/errors/index.js +5 -0
- package/dist/auth/errors/index.js.map +1 -0
- package/dist/auth/errors/invalid-token.error.d.ts +5 -0
- package/dist/auth/errors/invalid-token.error.d.ts.map +1 -0
- package/dist/auth/errors/invalid-token.error.js +7 -0
- package/dist/auth/errors/invalid-token.error.js.map +1 -0
- package/dist/auth/errors/token-required.error.d.ts +5 -0
- package/dist/auth/errors/token-required.error.d.ts.map +1 -0
- package/dist/auth/errors/token-required.error.js +7 -0
- package/dist/auth/errors/token-required.error.js.map +1 -0
- package/dist/auth/errors/verification-failed.error.d.ts +5 -0
- package/dist/auth/errors/verification-failed.error.d.ts.map +1 -0
- package/dist/auth/errors/verification-failed.error.js +7 -0
- package/dist/auth/errors/verification-failed.error.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware/auth-context.middleware.d.ts +12 -0
- package/dist/auth/middleware/auth-context.middleware.d.ts.map +1 -0
- package/dist/auth/middleware/auth-context.middleware.js +28 -0
- package/dist/auth/middleware/auth-context.middleware.js.map +1 -0
- package/dist/auth/middleware/index.d.ts +3 -0
- package/dist/auth/middleware/index.d.ts.map +1 -0
- package/dist/auth/middleware/index.js +3 -0
- package/dist/auth/middleware/index.js.map +1 -0
- package/dist/auth/middleware/session-verification.middleware.d.ts +18 -0
- package/dist/auth/middleware/session-verification.middleware.d.ts.map +1 -0
- package/dist/auth/middleware/session-verification.middleware.js +48 -0
- package/dist/auth/middleware/session-verification.middleware.js.map +1 -0
- package/dist/auth/services/auth.service.d.ts +32 -0
- package/dist/auth/services/auth.service.d.ts.map +1 -0
- package/dist/auth/services/auth.service.js +62 -0
- package/dist/auth/services/auth.service.js.map +1 -0
- package/dist/auth/services/index.d.ts +2 -0
- package/dist/auth/services/index.d.ts.map +1 -0
- package/dist/auth/services/index.js +2 -0
- package/dist/auth/services/index.js.map +1 -0
- package/dist/auth/utils/auth-helpers.d.ts +11 -0
- package/dist/auth/utils/auth-helpers.d.ts.map +1 -0
- package/dist/auth/utils/auth-helpers.js +31 -0
- package/dist/auth/utils/auth-helpers.js.map +1 -0
- package/dist/auth/utils/better-auth-error-handler.d.ts +11 -0
- package/dist/auth/utils/better-auth-error-handler.d.ts.map +1 -0
- package/dist/auth/utils/better-auth-error-handler.js +95 -0
- package/dist/auth/utils/better-auth-error-handler.js.map +1 -0
- package/dist/auth/utils/index.d.ts +3 -0
- package/dist/auth/utils/index.d.ts.map +1 -0
- package/dist/auth/utils/index.js +3 -0
- package/dist/auth/utils/index.js.map +1 -0
- package/dist/context/auth-context.d.ts +35 -0
- package/dist/context/auth-context.d.ts.map +1 -0
- package/dist/context/auth-context.js +65 -0
- package/dist/context/auth-context.js.map +1 -0
- package/dist/context/errors/context-not-initialized.error.d.ts +5 -0
- package/dist/context/errors/context-not-initialized.error.d.ts.map +1 -0
- package/dist/context/errors/context-not-initialized.error.js +7 -0
- package/dist/context/errors/context-not-initialized.error.js.map +1 -0
- package/dist/context/errors/index.d.ts +4 -0
- package/dist/context/errors/index.d.ts.map +1 -0
- package/dist/context/errors/index.js +4 -0
- package/dist/context/errors/index.js.map +1 -0
- package/dist/context/errors/user-not-authenticated.error.d.ts +5 -0
- package/dist/context/errors/user-not-authenticated.error.d.ts.map +1 -0
- package/dist/context/errors/user-not-authenticated.error.js +7 -0
- package/dist/context/errors/user-not-authenticated.error.js.map +1 -0
- package/dist/context/errors/user-not-authorized.error.d.ts +5 -0
- package/dist/context/errors/user-not-authorized.error.d.ts.map +1 -0
- package/dist/context/errors/user-not-authorized.error.js +7 -0
- package/dist/context/errors/user-not-authorized.error.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/database/custom-pg-types.d.ts +21 -0
- package/dist/database/custom-pg-types.d.ts.map +1 -0
- package/dist/database/custom-pg-types.js +41 -0
- package/dist/database/custom-pg-types.js.map +1 -0
- package/dist/database/database.helpers.d.ts +18 -0
- package/dist/database/database.helpers.d.ts.map +1 -0
- package/dist/database/database.helpers.js +27 -0
- package/dist/database/database.helpers.js.map +1 -0
- package/dist/database/database.module.d.ts +21 -0
- package/dist/database/database.module.d.ts.map +1 -0
- package/dist/database/database.module.js +62 -0
- package/dist/database/database.module.js.map +1 -0
- package/dist/database/database.service.d.ts +18 -0
- package/dist/database/database.service.d.ts.map +1 -0
- package/dist/database/database.service.js +2 -0
- package/dist/database/database.service.js.map +1 -0
- package/dist/database/database.tokens.d.ts +6 -0
- package/dist/database/database.tokens.d.ts.map +1 -0
- package/dist/database/database.tokens.js +8 -0
- package/dist/database/database.tokens.js.map +1 -0
- package/dist/database/decorators/inject-db.decorator.d.ts +3 -0
- package/dist/database/decorators/inject-db.decorator.d.ts.map +1 -0
- package/dist/database/decorators/inject-db.decorator.js +6 -0
- package/dist/database/decorators/inject-db.decorator.js.map +1 -0
- package/dist/database/errors/database-config.error.d.ts +5 -0
- package/dist/database/errors/database-config.error.d.ts.map +1 -0
- package/dist/database/errors/database-config.error.js +8 -0
- package/dist/database/errors/database-config.error.js.map +1 -0
- package/dist/database/errors/database-error.d.ts +14 -0
- package/dist/database/errors/database-error.d.ts.map +1 -0
- package/dist/database/errors/database-error.js +20 -0
- package/dist/database/errors/database-error.js.map +1 -0
- package/dist/database/errors/foreign-key-constraint.error.d.ts +14 -0
- package/dist/database/errors/foreign-key-constraint.error.d.ts.map +1 -0
- package/dist/database/errors/foreign-key-constraint.error.js +19 -0
- package/dist/database/errors/foreign-key-constraint.error.js.map +1 -0
- package/dist/database/errors/from-zenstack-error.d.ts +22 -0
- package/dist/database/errors/from-zenstack-error.d.ts.map +1 -0
- package/dist/database/errors/from-zenstack-error.js +114 -0
- package/dist/database/errors/from-zenstack-error.js.map +1 -0
- package/dist/database/errors/index.d.ts +8 -0
- package/dist/database/errors/index.d.ts.map +1 -0
- package/dist/database/errors/index.js +8 -0
- package/dist/database/errors/index.js.map +1 -0
- package/dist/database/errors/invalid-error-code-range.error.d.ts +12 -0
- package/dist/database/errors/invalid-error-code-range.error.d.ts.map +1 -0
- package/dist/database/errors/invalid-error-code-range.error.js +14 -0
- package/dist/database/errors/invalid-error-code-range.error.js.map +1 -0
- package/dist/database/errors/record-not-found.error.d.ts +15 -0
- package/dist/database/errors/record-not-found.error.d.ts.map +1 -0
- package/dist/database/errors/record-not-found.error.js +20 -0
- package/dist/database/errors/record-not-found.error.js.map +1 -0
- package/dist/database/errors/unique-constraint.error.d.ts +15 -0
- package/dist/database/errors/unique-constraint.error.d.ts.map +1 -0
- package/dist/database/errors/unique-constraint.error.js +20 -0
- package/dist/database/errors/unique-constraint.error.js.map +1 -0
- package/dist/database/event-types.d.ts +144 -0
- package/dist/database/event-types.d.ts.map +1 -0
- package/dist/database/event-types.js +13 -0
- package/dist/database/event-types.js.map +1 -0
- package/dist/database/index.d.ts +10 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +10 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/plugins/error-handler.plugin.d.ts +21 -0
- package/dist/database/plugins/error-handler.plugin.d.ts.map +1 -0
- package/dist/database/plugins/error-handler.plugin.js +24 -0
- package/dist/database/plugins/error-handler.plugin.js.map +1 -0
- package/dist/database/plugins/event-emitter.plugin.d.ts +37 -0
- package/dist/database/plugins/event-emitter.plugin.d.ts.map +1 -0
- package/dist/database/plugins/event-emitter.plugin.js +43 -0
- package/dist/database/plugins/event-emitter.plugin.js.map +1 -0
- package/dist/database/plugins/index.d.ts +4 -0
- package/dist/database/plugins/index.d.ts.map +1 -0
- package/dist/database/plugins/index.js +4 -0
- package/dist/database/plugins/index.js.map +1 -0
- package/dist/database/plugins/schema-switcher.plugin.d.ts +32 -0
- package/dist/database/plugins/schema-switcher.plugin.d.ts.map +1 -0
- package/dist/database/plugins/schema-switcher.plugin.js +27 -0
- package/dist/database/plugins/schema-switcher.plugin.js.map +1 -0
- package/dist/database/types.d.ts +51 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/factory/factory.d.ts +56 -0
- package/dist/factory/factory.d.ts.map +1 -0
- package/dist/factory/factory.js +86 -0
- package/dist/factory/factory.js.map +1 -0
- package/dist/factory/index.d.ts +3 -0
- package/dist/factory/index.d.ts.map +1 -0
- package/dist/factory/index.js +3 -0
- package/dist/factory/index.js.map +1 -0
- package/dist/factory/sequence.d.ts +38 -0
- package/dist/factory/sequence.d.ts.map +1 -0
- package/dist/factory/sequence.js +54 -0
- package/dist/factory/sequence.js.map +1 -0
- package/dist/guards/auth.guard.d.ts +33 -0
- package/dist/guards/auth.guard.d.ts.map +1 -0
- package/dist/guards/auth.guard.js +99 -0
- package/dist/guards/auth.guard.js.map +1 -0
- package/dist/guards/index.d.ts +3 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +5 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/rbac/adapters/custom-zenstack-adapter.d.ts +61 -0
- package/dist/rbac/adapters/custom-zenstack-adapter.d.ts.map +1 -0
- package/dist/rbac/adapters/custom-zenstack-adapter.js +159 -0
- package/dist/rbac/adapters/custom-zenstack-adapter.js.map +1 -0
- package/dist/rbac/adapters/index.d.ts +2 -0
- package/dist/rbac/adapters/index.d.ts.map +1 -0
- package/dist/rbac/adapters/index.js +2 -0
- package/dist/rbac/adapters/index.js.map +1 -0
- package/dist/rbac/constants.d.ts +8 -0
- package/dist/rbac/constants.d.ts.map +1 -0
- package/dist/rbac/constants.js +8 -0
- package/dist/rbac/constants.js.map +1 -0
- package/dist/rbac/errors/index.d.ts +2 -0
- package/dist/rbac/errors/index.d.ts.map +1 -0
- package/dist/rbac/errors/index.js +2 -0
- package/dist/rbac/errors/index.js.map +1 -0
- package/dist/rbac/errors/insufficient-permissions.error.d.ts +14 -0
- package/dist/rbac/errors/insufficient-permissions.error.d.ts.map +1 -0
- package/dist/rbac/errors/insufficient-permissions.error.js +19 -0
- package/dist/rbac/errors/insufficient-permissions.error.js.map +1 -0
- package/dist/rbac/index.d.ts +9 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +8 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/rbac.module.d.ts +26 -0
- package/dist/rbac/rbac.module.d.ts.map +1 -0
- package/dist/rbac/rbac.module.js +62 -0
- package/dist/rbac/rbac.module.js.map +1 -0
- package/dist/rbac/services/casbin-enforcer.service.d.ts +37 -0
- package/dist/rbac/services/casbin-enforcer.service.d.ts.map +1 -0
- package/dist/rbac/services/casbin-enforcer.service.js +86 -0
- package/dist/rbac/services/casbin-enforcer.service.js.map +1 -0
- package/dist/rbac/services/casbin.service.d.ts +37 -0
- package/dist/rbac/services/casbin.service.d.ts.map +1 -0
- package/dist/rbac/services/casbin.service.js +174 -0
- package/dist/rbac/services/casbin.service.js.map +1 -0
- package/dist/rbac/services/index.d.ts +3 -0
- package/dist/rbac/services/index.d.ts.map +1 -0
- package/dist/rbac/services/index.js +3 -0
- package/dist/rbac/services/index.js.map +1 -0
- package/dist/rbac/tokens.d.ts +10 -0
- package/dist/rbac/tokens.d.ts.map +1 -0
- package/dist/rbac/tokens.js +10 -0
- package/dist/rbac/tokens.js.map +1 -0
- package/dist/rbac/types.d.ts +12 -0
- package/dist/rbac/types.d.ts.map +1 -0
- package/dist/rbac/types.js +2 -0
- package/dist/rbac/types.js.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1,14 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Event Types
|
|
3
|
+
*
|
|
4
|
+
* All ZenStack-dependent event types, parameterized by connection name.
|
|
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 { ConnectionName, InferConnectionSchema } 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 a connection's schema.
|
|
25
|
+
* Falls back to `never` if no schemas are registered.
|
|
26
|
+
*/
|
|
27
|
+
export type ModelName<K extends ConnectionName = ConnectionName> = InferConnectionSchema<K> extends {
|
|
28
|
+
models: infer M;
|
|
29
|
+
} ? Extract<keyof M, string> : never;
|
|
30
|
+
/**
|
|
31
|
+
* Database event names with all supported patterns, parameterized by connection.
|
|
32
|
+
*/
|
|
33
|
+
export type DatabaseEventName<K extends ConnectionName = ConnectionName> = `${EventPhase}.${ModelName<K>}.${DatabaseOperation}` | `${EventPhase}.${ModelName<K>}` | `${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 for a connection.
|
|
40
|
+
*/
|
|
41
|
+
export type GetData<K extends ConnectionName, M extends ModelName<K>, O extends DatabaseOperation> = M extends Extract<keyof InferConnectionSchema<K>['models'], string> ? OperationArgsMap<InferConnectionSchema<K>, M, O> extends {
|
|
42
|
+
data: infer D;
|
|
43
|
+
} ? D : OperationArgsMap<InferConnectionSchema<K>, M, O> extends {
|
|
44
|
+
where: infer W;
|
|
45
|
+
} ? W : OperationArgsMap<InferConnectionSchema<K>, M, O> : unknown;
|
|
46
|
+
/**
|
|
47
|
+
* Extract result type for a model operation on a connection.
|
|
48
|
+
*/
|
|
49
|
+
export type GetResult<K extends ConnectionName, M extends ModelName<K>, O extends DatabaseOperation> = M extends Extract<keyof InferConnectionSchema<K>['models'], string> ? O extends 'findMany' | 'createMany' | 'updateMany' | 'deleteMany' ? ModelResult<InferConnectionSchema<K>, M>[] : O extends 'count' ? number : ModelResult<InferConnectionSchema<K>, M> : unknown;
|
|
50
|
+
/**
|
|
51
|
+
* Parse event string into structured type for discriminated unions
|
|
52
|
+
*/
|
|
53
|
+
export type ParseEvent<K extends ConnectionName, E extends string> = E extends `${infer Phase extends EventPhase}.${infer Model extends ModelName<K>}.${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<K> ? {
|
|
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<K extends ConnectionName, M extends ModelName<K>, O extends DatabaseOperation, Phase extends EventPhase> extends BaseEventContext {
|
|
75
|
+
data: Phase extends 'before' ? GetData<K, M, O> : Readonly<GetData<K, M, O>>;
|
|
76
|
+
result: Phase extends 'after' ? GetResult<K, 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<K extends ConnectionName, Phase extends EventPhase> extends BaseEventContext {
|
|
86
|
+
model: ModelName<K>;
|
|
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<K extends ConnectionName, Phase extends EventPhase> extends BaseEventContext {
|
|
92
|
+
model: ModelName<K>;
|
|
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, parameterized by connection.
|
|
99
|
+
*/
|
|
100
|
+
type DatabaseEventContext<K extends ConnectionName, E extends string> = ParseEvent<K, E> extends {
|
|
101
|
+
phase: infer P extends EventPhase;
|
|
102
|
+
model: infer M extends ModelName<K>;
|
|
103
|
+
operation: infer O extends DatabaseOperation;
|
|
104
|
+
type: 'exact';
|
|
105
|
+
} ? ExactDatabaseEventContext<K, M, O, P> : ParseEvent<K, E> extends {
|
|
106
|
+
phase: infer P extends EventPhase;
|
|
107
|
+
model: infer _M extends ModelName<K>;
|
|
108
|
+
type: 'model-wildcard';
|
|
109
|
+
} ? ModelWildcardEventContext<P> : ParseEvent<K, E> extends {
|
|
110
|
+
phase: infer P extends EventPhase;
|
|
111
|
+
operation: infer _O extends DatabaseOperation;
|
|
112
|
+
type: 'operation-wildcard';
|
|
113
|
+
} ? OperationWildcardEventContext<K, P> : ParseEvent<K, E> extends {
|
|
114
|
+
phase: infer P extends EventPhase;
|
|
115
|
+
type: 'phase-wildcard';
|
|
116
|
+
} ? PhaseWildcardEventContext<K, P> : BaseEventContext;
|
|
117
|
+
/**
|
|
118
|
+
* Mapped type that produces all database event name → context pairs for a connection.
|
|
119
|
+
*
|
|
120
|
+
* Used to augment core's `CustomEventRegistry`:
|
|
121
|
+
*
|
|
122
|
+
* @example Augment with all connections (default)
|
|
123
|
+
* ```typescript
|
|
124
|
+
* declare module 'stratal/events' {
|
|
125
|
+
* interface CustomEventRegistry extends DatabaseEvents {}
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @example Narrow to a specific connection
|
|
130
|
+
* ```typescript
|
|
131
|
+
* declare module 'stratal/events' {
|
|
132
|
+
* interface CustomEventRegistry extends DatabaseEvents<'main'> {}
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export type DatabaseEvents<K extends ConnectionName = ConnectionName> = {
|
|
137
|
+
[E in DatabaseEventName<K>]: DatabaseEventContext<K, E>;
|
|
138
|
+
};
|
|
139
|
+
declare module 'stratal/events' {
|
|
140
|
+
interface CustomEventRegistry extends DatabaseEvents {
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export {};
|
|
144
|
+
//# sourceMappingURL=event-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../../src/database/event-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Event Types
|
|
3
|
+
*
|
|
4
|
+
* All ZenStack-dependent event types, parameterized by connection name.
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-types.js","sourceRoot":"","sources":["../../src/database/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { SchemaDef } from '@zenstackhq/schema';
|
|
2
|
+
/**
|
|
3
|
+
* Augmentable schema registry for strict DatabaseService typing.
|
|
4
|
+
*
|
|
5
|
+
* Users augment this interface to register their ZenStack schemas per connection:
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* declare module '@stratal/framework/database' {
|
|
10
|
+
* interface DatabaseSchemaRegistry {
|
|
11
|
+
* main: typeof mainSchema
|
|
12
|
+
* analytics: typeof analyticsSchema
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export interface DatabaseSchemaRegistry {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Augmentable interface to declare the default database connection.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* declare module '@stratal/framework/database' {
|
|
25
|
+
* interface DefaultDatabaseConnection {
|
|
26
|
+
* name: 'main'
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface DefaultDatabaseConnection {
|
|
32
|
+
}
|
|
33
|
+
/** Connection name with autocomplete when augmented, string fallback otherwise */
|
|
34
|
+
export type ConnectionName = keyof DatabaseSchemaRegistry extends never ? string : Extract<keyof DatabaseSchemaRegistry, string>;
|
|
35
|
+
/** Default connection name from augmentation */
|
|
36
|
+
export type DefaultConnectionName = DefaultDatabaseConnection extends {
|
|
37
|
+
name: infer N extends string;
|
|
38
|
+
} ? N : string;
|
|
39
|
+
/** Resolve schema type for a named connection */
|
|
40
|
+
export type InferConnectionSchema<K extends string> = K extends keyof DatabaseSchemaRegistry ? DatabaseSchemaRegistry[K] extends SchemaDef ? DatabaseSchemaRegistry[K] : SchemaDef : SchemaDef;
|
|
41
|
+
/** Union of all registered schemas (used by the event system for model name inference) */
|
|
42
|
+
export type InferDatabaseSchema = InferConnectionSchema<ConnectionName>;
|
|
43
|
+
/**
|
|
44
|
+
* Internal context used by database service for dynamic event emission
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export interface InternalDatabaseEventContext {
|
|
48
|
+
data: unknown;
|
|
49
|
+
result?: unknown;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,sBAAsB;CAAI;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,yBAAyB;CAAI;AAE9C,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,MAAM,sBAAsB,SAAS,KAAK,GACnE,MAAM,GACN,OAAO,CAAC,MAAM,sBAAsB,EAAE,MAAM,CAAC,CAAA;AAEjD,gDAAgD;AAChD,MAAM,MAAM,qBAAqB,GAC/B,yBAAyB,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAA;AAEjF,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAChD,CAAC,SAAS,MAAM,sBAAsB,GACpC,sBAAsB,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,SAAS,GACnF,SAAS,CAAA;AAEb,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAA;AAEvE;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":""}
|