@zenstackhq/runtime 1.10.0 → 2.0.0-alpha.2

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 (70) hide show
  1. package/constants.d.ts +5 -1
  2. package/constants.js +6 -2
  3. package/constants.js.map +1 -1
  4. package/cross/index.d.mts +67 -12
  5. package/cross/index.d.ts +67 -12
  6. package/cross/index.js +33 -7
  7. package/cross/index.js.map +1 -1
  8. package/cross/index.mjs +30 -7
  9. package/cross/index.mjs.map +1 -1
  10. package/enhance.d.ts +1 -0
  11. package/enhance.js +10 -0
  12. package/enhancements/create-enhancement.d.ts +78 -0
  13. package/enhancements/create-enhancement.js +86 -0
  14. package/enhancements/create-enhancement.js.map +1 -0
  15. package/enhancements/default-auth.d.ts +7 -0
  16. package/enhancements/default-auth.js +127 -0
  17. package/enhancements/default-auth.js.map +1 -0
  18. package/enhancements/delegate.d.ts +64 -0
  19. package/enhancements/delegate.js +911 -0
  20. package/enhancements/delegate.js.map +1 -0
  21. package/enhancements/index.d.ts +1 -6
  22. package/enhancements/index.js +1 -6
  23. package/enhancements/index.js.map +1 -1
  24. package/enhancements/logger.js.map +1 -0
  25. package/enhancements/omit.d.ts +4 -14
  26. package/enhancements/omit.js +6 -10
  27. package/enhancements/omit.js.map +1 -1
  28. package/enhancements/password.d.ts +4 -14
  29. package/enhancements/password.js +6 -10
  30. package/enhancements/password.js.map +1 -1
  31. package/enhancements/policy/handler.d.ts +18 -21
  32. package/enhancements/policy/handler.js +150 -184
  33. package/enhancements/policy/handler.js.map +1 -1
  34. package/enhancements/policy/index.d.ts +3 -53
  35. package/enhancements/policy/index.js +7 -24
  36. package/enhancements/policy/index.js.map +1 -1
  37. package/enhancements/policy/policy-utils.d.ts +19 -45
  38. package/enhancements/policy/policy-utils.js +16 -147
  39. package/enhancements/policy/policy-utils.js.map +1 -1
  40. package/enhancements/proxy.d.ts +11 -3
  41. package/enhancements/proxy.js +10 -9
  42. package/enhancements/proxy.js.map +1 -1
  43. package/enhancements/query-utils.d.ts +24 -0
  44. package/enhancements/query-utils.js +152 -0
  45. package/enhancements/query-utils.js.map +1 -0
  46. package/enhancements/types.d.ts +3 -3
  47. package/enhancements/utils.d.ts +6 -3
  48. package/enhancements/utils.js +29 -69
  49. package/enhancements/utils.js.map +1 -1
  50. package/index.d.ts +1 -1
  51. package/index.js +1 -1
  52. package/index.js.map +1 -1
  53. package/package.json +5 -2
  54. package/prisma.d.ts +1 -0
  55. package/types.d.ts +9 -2
  56. package/version.d.ts +3 -4
  57. package/version.js +29 -46
  58. package/version.js.map +1 -1
  59. package/enhancements/enhance.d.ts +0 -18
  60. package/enhancements/enhance.js +0 -42
  61. package/enhancements/enhance.js.map +0 -1
  62. package/enhancements/policy/logger.js.map +0 -1
  63. package/enhancements/preset.d.ts +0 -15
  64. package/enhancements/preset.js +0 -21
  65. package/enhancements/preset.js.map +0 -1
  66. package/loader.d.ts +0 -22
  67. package/loader.js +0 -99
  68. package/loader.js.map +0 -1
  69. /package/enhancements/{policy/logger.d.ts → logger.d.ts} +0 -0
  70. /package/enhancements/{policy/logger.js → logger.js} +0 -0
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryUtils = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const cross_1 = require("../cross");
6
+ const version_1 = require("../version");
7
+ const utils_1 = require("./utils");
8
+ class QueryUtils {
9
+ constructor(prisma, options) {
10
+ this.prisma = prisma;
11
+ this.options = options;
12
+ }
13
+ getIdFields(model) {
14
+ return (0, cross_1.getIdFields)(this.options.modelMeta, model, true);
15
+ }
16
+ makeIdSelection(model) {
17
+ const idFields = this.getIdFields(model);
18
+ return Object.assign({}, ...idFields.map((f) => ({ [f.name]: true })));
19
+ }
20
+ getEntityIds(model, entityData) {
21
+ const idFields = this.getIdFields(model);
22
+ const result = {};
23
+ for (const idField of idFields) {
24
+ result[idField.name] = entityData[idField.name];
25
+ }
26
+ return result;
27
+ }
28
+ /**
29
+ * Initiates a transaction.
30
+ */
31
+ transaction(db, action) {
32
+ const fullDb = db;
33
+ if (fullDb['$transaction']) {
34
+ return fullDb.$transaction((tx) => {
35
+ tx[Symbol.for('nodejs.util.inspect.custom')] = 'PrismaClient$tx';
36
+ return action(tx);
37
+ }, {
38
+ maxWait: this.options.transactionMaxWait,
39
+ timeout: this.options.transactionTimeout,
40
+ isolationLevel: this.options.transactionIsolationLevel,
41
+ });
42
+ }
43
+ else {
44
+ // already in transaction, don't nest
45
+ return action(db);
46
+ }
47
+ }
48
+ buildReversedQuery(context, mutating = false, unsafeOperation = false) {
49
+ let result, currQuery;
50
+ let currField;
51
+ for (let i = context.nestingPath.length - 1; i >= 0; i--) {
52
+ const { field, model, where } = context.nestingPath[i];
53
+ // never modify the original where because it's shared in the structure
54
+ const visitWhere = Object.assign({}, where);
55
+ if (model && where) {
56
+ // make sure composite unique condition is flattened
57
+ this.flattenGeneratedUniqueField(model, visitWhere);
58
+ }
59
+ if (!result) {
60
+ // first segment (bottom), just use its where clause
61
+ result = currQuery = Object.assign({}, visitWhere);
62
+ currField = field;
63
+ }
64
+ else {
65
+ if (!currField) {
66
+ throw this.unknownError(`missing field in nested path`);
67
+ }
68
+ if (!currField.backLink) {
69
+ throw this.unknownError(`field ${currField.type}.${currField.name} doesn't have a backLink`);
70
+ }
71
+ const backLinkField = this.getModelField(currField.type, currField.backLink);
72
+ if (!backLinkField) {
73
+ throw this.unknownError(`missing backLink field ${currField.backLink} in ${currField.type}`);
74
+ }
75
+ if (backLinkField.isArray && !mutating) {
76
+ // many-side of relationship, wrap with "some" query
77
+ currQuery[currField.backLink] = { some: Object.assign({}, visitWhere) };
78
+ currQuery = currQuery[currField.backLink].some;
79
+ }
80
+ else {
81
+ const fkMapping = where && backLinkField.isRelationOwner && backLinkField.foreignKeyMapping;
82
+ // calculate if we should preserve the relation condition (e.g., { user: { id: 1 } })
83
+ const shouldPreserveRelationCondition =
84
+ // doing a mutation
85
+ mutating &&
86
+ // and it's a safe mutate
87
+ !unsafeOperation &&
88
+ // and the current segment is the direct parent (the last one is the mutate itself),
89
+ // the relation condition should be preserved and will be converted to a "connect" later
90
+ i === context.nestingPath.length - 2;
91
+ if (fkMapping && !shouldPreserveRelationCondition) {
92
+ // turn relation condition into foreign key condition, e.g.:
93
+ // { user: { id: 1 } } => { userId: 1 }
94
+ for (const [r, fk] of Object.entries(fkMapping)) {
95
+ currQuery[fk] = visitWhere[r];
96
+ }
97
+ if (i > 0) {
98
+ // prepare for the next segment
99
+ currQuery[currField.backLink] = {};
100
+ }
101
+ }
102
+ else {
103
+ // preserve the original structure
104
+ currQuery[currField.backLink] = Object.assign({}, visitWhere);
105
+ }
106
+ currQuery = currQuery[currField.backLink];
107
+ }
108
+ currField = field;
109
+ }
110
+ }
111
+ return result;
112
+ }
113
+ flattenGeneratedUniqueField(model, args) {
114
+ // e.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }
115
+ const uniqueConstraints = (0, cross_1.getUniqueConstraints)(this.options.modelMeta, model);
116
+ if (uniqueConstraints && Object.keys(uniqueConstraints).length > 0) {
117
+ for (const [field, value] of Object.entries(args)) {
118
+ if (uniqueConstraints[field] &&
119
+ uniqueConstraints[field].fields.length > 1 &&
120
+ typeof value === 'object') {
121
+ // multi-field unique constraint, flatten it
122
+ delete args[field];
123
+ if (value) {
124
+ for (const [f, v] of Object.entries(value)) {
125
+ args[f] = v;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ validationError(message) {
133
+ return (0, utils_1.prismaClientValidationError)(this.prisma, this.options.prismaModule, message);
134
+ }
135
+ unknownError(message) {
136
+ return (0, utils_1.prismaClientUnknownRequestError)(this.prisma, this.options.prismaModule, message, {
137
+ clientVersion: (0, version_1.getVersion)(),
138
+ });
139
+ }
140
+ getModelFields(model) {
141
+ var _a;
142
+ return (_a = (0, cross_1.getModelInfo)(this.options.modelMeta, model)) === null || _a === void 0 ? void 0 : _a.fields;
143
+ }
144
+ /**
145
+ * Gets information for a specific model field.
146
+ */
147
+ getModelField(model, field) {
148
+ return (0, cross_1.resolveField)(this.options.modelMeta, model, field);
149
+ }
150
+ }
151
+ exports.QueryUtils = QueryUtils;
152
+ //# sourceMappingURL=query-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-utils.js","sourceRoot":"","sources":["../../src/enhancements/query-utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { FIELD_LEVEL_OVERRIDE_READ_GUARD_PREFIX, FIELD_LEVEL_OVERRIDE_UPDATE_GUARD_PREFIX, FIELD_LEVEL_READ_CHECKER_PREFIX, FIELD_LEVEL_READ_CHECKER_SELECTOR, FIELD_LEVEL_UPDATE_GUARD_PREFIX, HAS_FIELD_LEVEL_POLICY_FLAG, PRE_UPDATE_VALUE_SELECTOR } from '../constants';
3
- import type { DbOperations, PolicyOperationKind, QueryContext } from '../types';
3
+ import type { CrudContract, PolicyOperationKind, QueryContext } from '../types';
4
4
  /**
5
5
  * Common options for PrismaClient enhancements
6
6
  */
@@ -13,7 +13,7 @@ export interface CommonEnhancementOptions {
13
13
  /**
14
14
  * Function for getting policy guard with a given context
15
15
  */
16
- export type PolicyFunc = (context: QueryContext, db: Record<string, DbOperations>) => object;
16
+ export type PolicyFunc = (context: QueryContext, db: CrudContract) => object;
17
17
  /**
18
18
  * Function for getting policy guard with a given context
19
19
  */
@@ -41,5 +41,5 @@ export type PolicyDef = {
41
41
  */
42
42
  export type ZodSchemas = {
43
43
  models: Record<string, z.ZodSchema>;
44
- input: Record<string, Record<string, z.ZodSchema>>;
44
+ input?: Record<string, Record<string, z.ZodSchema>>;
45
45
  };
@@ -1,8 +1,11 @@
1
+ import { FieldInfo, ModelMeta } from '..';
1
2
  import type { DbClientContract } from '../types';
2
3
  /**
3
4
  * Formats an object for pretty printing.
4
5
  */
5
6
  export declare function formatObject(value: unknown): string;
6
- export declare function prismaClientValidationError(prisma: DbClientContract, message: string): void;
7
- export declare function prismaClientKnownRequestError(prisma: DbClientContract, ...args: unknown[]): Error;
8
- export declare function prismaClientUnknownRequestError(prisma: DbClientContract, ...args: unknown[]): void;
7
+ export declare function prismaClientValidationError(prisma: DbClientContract, prismaModule: any, message: string): Error;
8
+ export declare function prismaClientKnownRequestError(prisma: DbClientContract, prismaModule: any, ...args: unknown[]): Error;
9
+ export declare function prismaClientUnknownRequestError(prismaModule: any, ...args: unknown[]): Error;
10
+ export declare function isUnsafeMutate(model: string, args: any, modelMeta: ModelMeta): boolean;
11
+ export declare function isAutoIncrementIdField(field: FieldInfo): boolean | undefined;
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable @typescript-eslint/no-var-requires */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -23,13 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
22
  __setModuleDefault(result, mod);
24
23
  return result;
25
24
  };
26
- var __importDefault = (this && this.__importDefault) || function (mod) {
27
- return (mod && mod.__esModule) ? mod : { "default": mod };
28
- };
29
25
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.prismaClientUnknownRequestError = exports.prismaClientKnownRequestError = exports.prismaClientValidationError = exports.formatObject = void 0;
31
- const path_1 = __importDefault(require("path"));
26
+ exports.isAutoIncrementIdField = exports.isUnsafeMutate = exports.prismaClientUnknownRequestError = exports.prismaClientKnownRequestError = exports.prismaClientValidationError = exports.formatObject = void 0;
32
27
  const util = __importStar(require("util"));
28
+ const __1 = require("..");
33
29
  /**
34
30
  * Formats an object for pretty printing.
35
31
  */
@@ -37,73 +33,37 @@ function formatObject(value) {
37
33
  return util.formatWithOptions({ depth: 20 }, value);
38
34
  }
39
35
  exports.formatObject = formatObject;
40
- let _PrismaClientValidationError;
41
- let _PrismaClientKnownRequestError;
42
- let _PrismaClientUnknownRequestError;
43
- /* eslint-disable @typescript-eslint/no-explicit-any */
44
- function loadPrismaModule(prisma) {
45
- var _a;
46
- // https://github.com/prisma/prisma/discussions/17832
47
- if ((_a = prisma._engineConfig) === null || _a === void 0 ? void 0 : _a.datamodelPath) {
48
- // try engine path first
49
- const loadPath = path_1.default.dirname(prisma._engineConfig.datamodelPath);
50
- try {
51
- const _prisma = require(loadPath).Prisma;
52
- if (typeof _prisma !== 'undefined') {
53
- return _prisma;
54
- }
55
- }
56
- catch (_b) {
57
- // noop
58
- }
59
- }
60
- try {
61
- // Prisma v4
62
- return require('@prisma/client/runtime');
63
- }
64
- catch (_c) {
65
- try {
66
- // Prisma v5
67
- return require('@prisma/client');
68
- }
69
- catch (err) {
70
- if (process.env.ZENSTACK_TEST === '1') {
71
- // running in test, try cwd
72
- try {
73
- return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client/runtime'));
74
- }
75
- catch (_d) {
76
- return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client'));
77
- }
78
- }
79
- else {
80
- throw err;
81
- }
82
- }
83
- }
84
- }
85
- function prismaClientValidationError(prisma, message) {
86
- if (!_PrismaClientValidationError) {
87
- const _prisma = loadPrismaModule(prisma);
88
- _PrismaClientValidationError = _prisma.PrismaClientValidationError;
89
- }
90
- throw new _PrismaClientValidationError(message, { clientVersion: prisma._clientVersion });
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ function prismaClientValidationError(prisma, prismaModule, message) {
38
+ throw new prismaModule.PrismaClientValidationError(message, { clientVersion: prisma._clientVersion });
91
39
  }
92
40
  exports.prismaClientValidationError = prismaClientValidationError;
93
- function prismaClientKnownRequestError(prisma, ...args) {
94
- if (!_PrismaClientKnownRequestError) {
95
- const _prisma = loadPrismaModule(prisma);
96
- _PrismaClientKnownRequestError = _prisma.PrismaClientKnownRequestError;
97
- }
98
- return new _PrismaClientKnownRequestError(...args);
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ function prismaClientKnownRequestError(prisma, prismaModule, ...args) {
43
+ return new prismaModule.PrismaClientKnownRequestError(...args);
99
44
  }
100
45
  exports.prismaClientKnownRequestError = prismaClientKnownRequestError;
101
- function prismaClientUnknownRequestError(prisma, ...args) {
102
- if (!_PrismaClientUnknownRequestError) {
103
- const _prisma = loadPrismaModule(prisma);
104
- _PrismaClientUnknownRequestError = _prisma.PrismaClientUnknownRequestError;
105
- }
106
- throw new _PrismaClientUnknownRequestError(...args);
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ function prismaClientUnknownRequestError(prismaModule, ...args) {
48
+ throw new prismaModule.PrismaClientUnknownRequestError(...args);
107
49
  }
108
50
  exports.prismaClientUnknownRequestError = prismaClientUnknownRequestError;
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ function isUnsafeMutate(model, args, modelMeta) {
53
+ if (!args) {
54
+ return false;
55
+ }
56
+ for (const k of Object.keys(args)) {
57
+ const field = (0, __1.resolveField)(modelMeta, model, k);
58
+ if (field && (isAutoIncrementIdField(field) || field.isForeignKey)) {
59
+ return true;
60
+ }
61
+ }
62
+ return false;
63
+ }
64
+ exports.isUnsafeMutate = isUnsafeMutate;
65
+ function isAutoIncrementIdField(field) {
66
+ return field.isId && field.isAutoIncrement;
67
+ }
68
+ exports.isAutoIncrementIdField = isAutoIncrementIdField;
109
69
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,0BAAwD;AAGxD;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAc;IACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,oCAEC;AAED,8DAA8D;AAC9D,SAAgB,2BAA2B,CAAC,MAAwB,EAAE,YAAiB,EAAE,OAAe;IACpG,MAAM,IAAI,YAAY,CAAC,2BAA2B,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AAC1G,CAAC;AAFD,kEAEC;AAED,8DAA8D;AAC9D,SAAgB,6BAA6B,CAAC,MAAwB,EAAE,YAAiB,EAAE,GAAG,IAAe;IACzG,OAAO,IAAI,YAAY,CAAC,6BAA6B,CAAC,GAAG,IAAI,CAAC,CAAC;AACnE,CAAC;AAFD,sEAEC;AAED,8DAA8D;AAC9D,SAAgB,+BAA+B,CAAC,YAAiB,EAAE,GAAG,IAAe;IACjF,MAAM,IAAI,YAAY,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAFD,0EAEC;AAED,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,KAAa,EAAE,IAAS,EAAE,SAAoB;IACzE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,gBAAY,EAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAXD,wCAWC;AAED,SAAgB,sBAAsB,CAAC,KAAgB;IACnD,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC;AAC/C,CAAC;AAFD,wDAEC"}
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from './constants';
2
2
  export * from './enhancements';
3
3
  export * from './error';
4
- export * from './loader';
5
4
  export * from './types';
6
5
  export * from './validation';
7
6
  export * from './version';
7
+ export * from './enhance';
package/index.js CHANGED
@@ -17,8 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./constants"), exports);
18
18
  __exportStar(require("./enhancements"), exports);
19
19
  __exportStar(require("./error"), exports);
20
- __exportStar(require("./loader"), exports);
21
20
  __exportStar(require("./types"), exports);
22
21
  __exportStar(require("./validation"), exports);
23
22
  __exportStar(require("./version"), exports);
23
+ __exportStar(require("./enhance"), exports);
24
24
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB;AACxB,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zenstackhq/runtime",
3
3
  "displayName": "ZenStack Runtime Library",
4
- "version": "1.10.0",
4
+ "version": "2.0.0-alpha.2",
5
5
  "description": "Runtime of ZenStack for both client-side and server-side environments.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -39,6 +39,9 @@
39
39
  "import": "./cross/index.mjs",
40
40
  "require": "./cross/index.js",
41
41
  "default": "./cross/index.js"
42
+ },
43
+ "./prisma": {
44
+ "types": "./prisma.d.ts"
42
45
  }
43
46
  },
44
47
  "publishConfig": {
@@ -46,13 +49,13 @@
46
49
  "linkDirectory": true
47
50
  },
48
51
  "dependencies": {
49
- "@types/bcryptjs": "^2.4.2",
50
52
  "bcryptjs": "^2.4.3",
51
53
  "buffer": "^6.0.3",
52
54
  "change-case": "^4.1.2",
53
55
  "colors": "1.4.0",
54
56
  "decimal.js": "^10.4.2",
55
57
  "deepcopy": "^2.1.0",
58
+ "deepmerge": "^4.3.1",
56
59
  "lower-case-first": "^2.0.2",
57
60
  "pluralize": "^8.0.0",
58
61
  "semver": "^7.5.2",
package/prisma.d.ts ADDED
@@ -0,0 +1 @@
1
+ export type * from '.zenstack/prisma';
package/types.d.ts CHANGED
@@ -52,6 +52,13 @@ export type QueryContext = {
52
52
  */
53
53
  preValue?: any;
54
54
  };
55
- export type DbClientContract = Record<string, DbOperations> & {
56
- $transaction: <T>(action: (tx: Record<string, DbOperations>) => Promise<T>, options?: unknown) => Promise<T>;
55
+ /**
56
+ * Prisma contract for CRUD operations.
57
+ */
58
+ export type CrudContract = Record<string, DbOperations>;
59
+ /**
60
+ * Prisma contract for database client.
61
+ */
62
+ export type DbClientContract = CrudContract & {
63
+ $transaction: <T>(action: (tx: CrudContract) => Promise<T>, options?: unknown) => Promise<T>;
57
64
  };
package/version.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- export declare function getVersion(): any;
2
1
  /**
3
- * Gets installed Prisma version by first checking "@prisma/client" and if not available,
4
- * "prisma".
2
+ * Gets this package's version.
3
+ * @returns
5
4
  */
6
- export declare function getPrismaVersion(): string | undefined;
5
+ export declare function getVersion(): string;
package/version.js CHANGED
@@ -1,53 +1,36 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPrismaVersion = exports.getVersion = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- /* eslint-disable @typescript-eslint/no-var-requires */
9
- function getVersion() {
10
- try {
11
- return require('./package.json').version;
12
- }
13
- catch (_a) {
14
- try {
15
- // dev environment
16
- return require('../package.json').version;
17
- }
18
- catch (_b) {
19
- return 'unknown';
20
- }
21
- }
22
- }
23
- exports.getVersion = getVersion;
26
+ exports.getVersion = void 0;
27
+ const pkgJson = __importStar(require("./package.json"));
24
28
  /**
25
- * Gets installed Prisma version by first checking "@prisma/client" and if not available,
26
- * "prisma".
29
+ * Gets this package's version.
30
+ * @returns
27
31
  */
28
- function getPrismaVersion() {
29
- if (process.env.ZENSTACK_TEST === '1') {
30
- // test environment
31
- try {
32
- return require(path_1.default.resolve('./node_modules/@prisma/client/package.json')).version;
33
- }
34
- catch (_a) {
35
- return undefined;
36
- }
37
- }
38
- try {
39
- // eslint-disable-next-line @typescript-eslint/no-var-requires
40
- return require('@prisma/client/package.json').version;
41
- }
42
- catch (_b) {
43
- try {
44
- // eslint-disable-next-line @typescript-eslint/no-var-requires
45
- return require('prisma/package.json').version;
46
- }
47
- catch (_c) {
48
- return undefined;
49
- }
50
- }
32
+ function getVersion() {
33
+ return pkgJson.version;
51
34
  }
52
- exports.getPrismaVersion = getPrismaVersion;
35
+ exports.getVersion = getVersion;
53
36
  //# sourceMappingURL=version.js.map
package/version.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,uDAAuD;AACvD,SAAgB,UAAU;IACtB,IAAI,CAAC;QACD,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAAC,WAAM,CAAC;QACL,IAAI,CAAC;YACD,kBAAkB;YAClB,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;QAC9C,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC;AAXD,gCAWC;AAED;;;GAGG;AACH,SAAgB,gBAAgB;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;QACpC,mBAAmB;QACnB,IAAI,CAAC;YACD,OAAO,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,CAAC,OAAO,CAAC;QACvF,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACD,8DAA8D;QAC9D,OAAO,OAAO,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAAC,WAAM,CAAC;QACL,IAAI,CAAC;YACD,8DAA8D;YAC9D,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC;AArBD,4CAqBC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAE1C;;;GAGG;AACH,SAAgB,UAAU;IACtB,OAAO,OAAO,CAAC,OAAO,CAAC;AAC3B,CAAC;AAFD,gCAEC"}
@@ -1,18 +0,0 @@
1
- import { WithOmitOptions } from './omit';
2
- import { WithPasswordOptions } from './password';
3
- import { WithPolicyContext, WithPolicyOptions } from './policy';
4
- /**
5
- * Options @see enhance
6
- */
7
- export type EnhancementOptions = WithPolicyOptions & WithPasswordOptions & WithOmitOptions;
8
- /**
9
- * Gets a Prisma client enhanced with all essential behaviors, including access
10
- * policy, field validation, field omission and password hashing.
11
- *
12
- * It's a shortcut for calling withOmit(withPassword(withPolicy(prisma, options))).
13
- *
14
- * @param prisma The Prisma client to enhance.
15
- * @param context The context to for evaluating access policies.
16
- * @param options Options.
17
- */
18
- export declare function enhance<DbClient extends object>(prisma: DbClient, context?: WithPolicyContext, options?: EnhancementOptions): DbClient;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enhance = void 0;
4
- const loader_1 = require("../loader");
5
- const omit_1 = require("./omit");
6
- const password_1 = require("./password");
7
- const policy_1 = require("./policy");
8
- let hasPassword = undefined;
9
- let hasOmit = undefined;
10
- /**
11
- * Gets a Prisma client enhanced with all essential behaviors, including access
12
- * policy, field validation, field omission and password hashing.
13
- *
14
- * It's a shortcut for calling withOmit(withPassword(withPolicy(prisma, options))).
15
- *
16
- * @param prisma The Prisma client to enhance.
17
- * @param context The context to for evaluating access policies.
18
- * @param options Options.
19
- */
20
- function enhance(prisma, context, options) {
21
- var _a;
22
- let result = prisma;
23
- if (hasPassword === undefined || hasOmit === undefined) {
24
- const modelMeta = (_a = options === null || options === void 0 ? void 0 : options.modelMeta) !== null && _a !== void 0 ? _a : (0, loader_1.getDefaultModelMeta)(options === null || options === void 0 ? void 0 : options.loadPath);
25
- const allFields = Object.values(modelMeta.fields).flatMap((modelInfo) => Object.values(modelInfo));
26
- hasPassword = allFields.some((field) => { var _a; return (_a = field.attributes) === null || _a === void 0 ? void 0 : _a.some((attr) => attr.name === '@password'); });
27
- hasOmit = allFields.some((field) => { var _a; return (_a = field.attributes) === null || _a === void 0 ? void 0 : _a.some((attr) => attr.name === '@omit'); });
28
- }
29
- if (hasPassword) {
30
- // @password proxy
31
- result = (0, password_1.withPassword)(result, options);
32
- }
33
- if (hasOmit) {
34
- // @omit proxy
35
- result = (0, omit_1.withOmit)(result, options);
36
- }
37
- // policy proxy
38
- result = (0, policy_1.withPolicy)(result, context, options);
39
- return result;
40
- }
41
- exports.enhance = enhance;
42
- //# sourceMappingURL=enhance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhance.js","sourceRoot":"","sources":["../../src/enhancements/enhance.ts"],"names":[],"mappings":";;;AAAA,sCAAgD;AAChD,iCAAmD;AACnD,yCAA+D;AAC/D,qCAA4E;AAO5E,IAAI,WAAW,GAAwB,SAAS,CAAC;AACjD,IAAI,OAAO,GAAwB,SAAS,CAAC;AAE7C;;;;;;;;;GASG;AACH,SAAgB,OAAO,CACnB,MAAgB,EAChB,OAA2B,EAC3B,OAA4B;;IAE5B,IAAI,MAAM,GAAG,MAAM,CAAC;IAEpB,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,IAAA,4BAAmB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACnG,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA,EAAA,CAAC,CAAC;QACrG,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA,EAAA,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,kBAAkB;QAClB,MAAM,GAAG,IAAA,uBAAY,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,cAAc;QACd,MAAM,GAAG,IAAA,eAAQ,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;IACf,MAAM,GAAG,IAAA,mBAAU,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC;AAClB,CAAC;AA5BD,0BA4BC"}
@@ -1 +0,0 @@
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,OAAO,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,UAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,CAAC;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,15 +0,0 @@
1
- import { EnhancementOptions } from './enhance';
2
- import { WithPolicyContext } from './policy';
3
- /**
4
- * Gets a Prisma client enhanced with all essential behaviors, including access
5
- * policy, field validation, field omission and password hashing.
6
- *
7
- * It's a shortcut for calling withOmit(withPassword(withPolicy(prisma, options))).
8
- *
9
- * @param prisma The Prisma client to enhance.
10
- * @param context The context to for evaluating access policies.
11
- * @param options Options.
12
- *
13
- * @deprecated Use {@link enhance} instead
14
- */
15
- export declare function withPresets<DbClient extends object>(prisma: DbClient, context?: WithPolicyContext, options?: EnhancementOptions): DbClient;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withPresets = void 0;
4
- const enhance_1 = require("./enhance");
5
- /**
6
- * Gets a Prisma client enhanced with all essential behaviors, including access
7
- * policy, field validation, field omission and password hashing.
8
- *
9
- * It's a shortcut for calling withOmit(withPassword(withPolicy(prisma, options))).
10
- *
11
- * @param prisma The Prisma client to enhance.
12
- * @param context The context to for evaluating access policies.
13
- * @param options Options.
14
- *
15
- * @deprecated Use {@link enhance} instead
16
- */
17
- function withPresets(prisma, context, options) {
18
- return (0, enhance_1.enhance)(prisma, context, options);
19
- }
20
- exports.withPresets = withPresets;
21
- //# sourceMappingURL=preset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/enhancements/preset.ts"],"names":[],"mappings":";;;AAAA,uCAAwD;AAGxD;;;;;;;;;;;GAWG;AACH,SAAgB,WAAW,CACvB,MAAgB,EAChB,OAA2B,EAC3B,OAA4B;IAE5B,OAAO,IAAA,iBAAO,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAND,kCAMC"}