@zenstackhq/runtime 1.0.0-alpha.99 → 1.0.0-beta.10

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 (66) hide show
  1. package/browser/index.d.mts +13 -0
  2. package/browser/index.d.ts +13 -0
  3. package/browser/index.js +69 -0
  4. package/browser/index.js.map +1 -0
  5. package/browser/index.mjs +31 -0
  6. package/browser/index.mjs.map +1 -0
  7. package/constants.d.ts +31 -0
  8. package/constants.js +34 -1
  9. package/constants.js.map +1 -1
  10. package/enhancements/index.d.ts +5 -0
  11. package/enhancements/index.js +5 -0
  12. package/enhancements/index.js.map +1 -1
  13. package/enhancements/model-meta.d.ts +4 -0
  14. package/enhancements/model-meta.js +26 -5
  15. package/enhancements/model-meta.js.map +1 -1
  16. package/enhancements/nested-write-vistor.d.ts +17 -16
  17. package/enhancements/nested-write-vistor.js +86 -59
  18. package/enhancements/nested-write-vistor.js.map +1 -1
  19. package/enhancements/omit.d.ts +10 -1
  20. package/enhancements/omit.js +4 -3
  21. package/enhancements/omit.js.map +1 -1
  22. package/enhancements/password.d.ts +10 -1
  23. package/enhancements/password.js +3 -2
  24. package/enhancements/password.js.map +1 -1
  25. package/enhancements/policy/handler.d.ts +6 -3
  26. package/enhancements/policy/handler.js +99 -39
  27. package/enhancements/policy/handler.js.map +1 -1
  28. package/enhancements/policy/index.d.ts +23 -2
  29. package/enhancements/policy/index.js +39 -6
  30. package/enhancements/policy/index.js.map +1 -1
  31. package/enhancements/policy/logger.d.ts +9 -1
  32. package/enhancements/policy/logger.js +14 -3
  33. package/enhancements/policy/logger.js.map +1 -1
  34. package/enhancements/policy/policy-utils.d.ts +13 -9
  35. package/enhancements/policy/policy-utils.js +250 -138
  36. package/enhancements/policy/policy-utils.js.map +1 -1
  37. package/enhancements/preset.d.ts +9 -7
  38. package/enhancements/preset.js +3 -6
  39. package/enhancements/preset.js.map +1 -1
  40. package/enhancements/proxy.js +62 -1
  41. package/enhancements/proxy.js.map +1 -1
  42. package/enhancements/types.d.ts +10 -1
  43. package/enhancements/utils.d.ts +12 -4
  44. package/enhancements/utils.js +97 -11
  45. package/enhancements/utils.js.map +1 -1
  46. package/enhancements/where-visitor.d.ts +33 -0
  47. package/enhancements/where-visitor.js +87 -0
  48. package/enhancements/where-visitor.js.map +1 -0
  49. package/index.d.ts +2 -2
  50. package/index.js +2 -2
  51. package/index.js.map +1 -1
  52. package/package.json +33 -12
  53. package/version.js +1 -0
  54. package/version.js.map +1 -1
  55. package/zod/index.d.ts +2 -0
  56. package/zod/index.js +4 -0
  57. package/zod/input.d.ts +1 -0
  58. package/zod/input.js +8 -0
  59. package/zod/models.d.ts +1 -0
  60. package/zod/models.js +8 -0
  61. package/serialization-utils.d.ts +0 -1
  62. package/serialization-utils.js +0 -22
  63. package/serialization-utils.js.map +0 -1
  64. package/zod.d.ts +0 -10
  65. package/zod.js +0 -17
  66. package/zod.js.map +0 -1
@@ -3,8 +3,16 @@
3
3
  */
4
4
  export declare class Logger {
5
5
  private readonly prisma;
6
+ private emitter;
7
+ private eventNames;
6
8
  constructor(prisma: any);
7
- private get emitter();
9
+ /**
10
+ * Checks if a log level is enabled.
11
+ */
12
+ enabled(level: 'info' | 'warn' | 'error'): boolean;
13
+ /**
14
+ * Generates a message with the given level.
15
+ */
8
16
  log(level: 'info' | 'warn' | 'error', message: string): void;
9
17
  /**
10
18
  * Generates a log message with info level.
@@ -8,11 +8,22 @@ exports.Logger = void 0;
8
8
  class Logger {
9
9
  constructor(prisma) {
10
10
  this.prisma = prisma;
11
- }
12
- get emitter() {
11
+ this.eventNames = [];
13
12
  const engine = this.prisma.getEngine();
14
- return engine ? engine.logEmitter : undefined;
13
+ this.emitter = engine ? engine.logEmitter : undefined;
14
+ if (this.emitter) {
15
+ this.eventNames = this.emitter.eventNames();
16
+ }
17
+ }
18
+ /**
19
+ * Checks if a log level is enabled.
20
+ */
21
+ enabled(level) {
22
+ return !!this.eventNames.includes(level);
15
23
  }
24
+ /**
25
+ * Generates a message with the given level.
26
+ */
16
27
  log(level, message) {
17
28
  var _a;
18
29
  (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.emit(level, {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/enhancements/policy/logger.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAIvD;;GAEG;AACH,MAAa,MAAM;IACf,YAA6B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;IAAG,CAAC;IAE5C,IAAY,OAAO;QACf,MAAM,MAAM,GAAI,IAAI,CAAC,MAAc,CAAC,SAAS,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,UAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAEM,GAAG,CAAC,KAAgC,EAAE,OAAe;;QACxD,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;YACP,MAAM,EAAE,UAAU;SACrB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAe;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ;AApCD,wBAoCC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/enhancements/policy/logger.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAIvD;;GAEG;AACH,MAAa,MAAM;IAIf,YAA6B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAFhC,eAAU,GAA2B,EAAE,CAAC;QAG5C,MAAM,MAAM,GAAI,IAAI,CAAC,MAAc,CAAC,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,UAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;SAC/C;IACL,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,KAAgC;QAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAgC,EAAE,OAAe;;QACxD,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;YACP,MAAM,EAAE,UAAU;SACrB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAe;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ;AAlDD,wBAkDC"}
@@ -1,7 +1,6 @@
1
- import { PrismaClientKnownRequestError, PrismaClientUnknownRequestError } from '@prisma/client/runtime';
2
- import { CrudFailureReason } from '@zenstackhq/sdk';
1
+ import { CrudFailureReason } from '../../constants';
3
2
  import { AuthUser, DbClientContract, DbOperations, FieldInfo, PolicyOperationKind, PrismaWriteActionType } from '../../types';
4
- import { ModelMeta, PolicyDef } from '../types';
3
+ import type { ModelMeta, PolicyDef, ZodSchemas } from '../types';
5
4
  /**
6
5
  * Access policy enforcement utilities
7
6
  */
@@ -9,9 +8,11 @@ export declare class PolicyUtil {
9
8
  private readonly db;
10
9
  private readonly modelMeta;
11
10
  private readonly policy;
11
+ private readonly zodSchemas;
12
12
  private readonly user?;
13
+ private readonly logPrismaQuery?;
13
14
  private readonly logger;
14
- constructor(db: DbClientContract, modelMeta: ModelMeta, policy: PolicyDef, user?: AuthUser | undefined);
15
+ constructor(db: DbClientContract, modelMeta: ModelMeta, policy: PolicyDef, zodSchemas: ZodSchemas | undefined, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
15
16
  /**
16
17
  * Creates a conjunction of a list of query conditions.
17
18
  */
@@ -30,7 +31,8 @@ export declare class PolicyUtil {
30
31
  * @returns true if operation is unconditionally allowed, false if unconditionally denied,
31
32
  * otherwise returns a guard object
32
33
  */
33
- getAuthGuard(model: string, operation: PolicyOperationKind, preValue?: any): Promise<boolean | object>;
34
+ getAuthGuard(model: string, operation: PolicyOperationKind, preValue?: any): boolean | object;
35
+ private hasValidation;
34
36
  private getPreValueSelect;
35
37
  private getModelSchema;
36
38
  /**
@@ -63,15 +65,16 @@ export declare class PolicyUtil {
63
65
  * (which can't be trimmed at query time) and removes fields that should be
64
66
  * omitted.
65
67
  */
66
- postProcessForRead(entityData: any, model: string, args: any, operation: PolicyOperationKind): Promise<void>;
68
+ postProcessForRead(data: any, model: string, args: any, operation: PolicyOperationKind): Promise<void>;
67
69
  /**
68
70
  * Process Prisma write actions.
69
71
  */
70
72
  processWrite(model: string, action: PrismaWriteActionType, args: any, writeAction: (dbOps: DbOperations, writeArgs: any) => Promise<unknown>): Promise<any>;
73
+ private getModelField;
71
74
  private transaction;
72
- deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string, reason?: CrudFailureReason): PrismaClientKnownRequestError;
73
- notFound(model: string): PrismaClientKnownRequestError;
74
- unknownError(message: string): PrismaClientUnknownRequestError;
75
+ deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string, reason?: CrudFailureReason): Error;
76
+ notFound(model: string): Error;
77
+ unknownError(message: string): void;
75
78
  /**
76
79
  * Given a filter, check if applying access policy filtering will result
77
80
  * in data being trimmed, and if so, throw an error.
@@ -91,4 +94,5 @@ export declare class PolicyUtil {
91
94
  * Gets id field value from an entity.
92
95
  */
93
96
  getEntityIds(model: string, entityData: any): Record<string, unknown>;
97
+ private get shouldLogQuery();
94
98
  }