@zenstackhq/runtime 2.15.1 → 3.0.0-alpha.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 (215) hide show
  1. package/LICENSE +1 -1
  2. package/dist/client.cjs +6094 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +19 -0
  5. package/dist/client.d.ts +19 -0
  6. package/dist/client.js +6060 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/contract-DguafRNB.d.cts +1272 -0
  9. package/dist/contract-DguafRNB.d.ts +1272 -0
  10. package/dist/index.cjs +6088 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +14 -0
  13. package/dist/index.d.ts +14 -0
  14. package/dist/index.js +6057 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/plugins/policy.cjs +2343 -0
  17. package/dist/plugins/policy.cjs.map +1 -0
  18. package/dist/plugins/policy.d.cts +24 -0
  19. package/dist/plugins/policy.d.ts +24 -0
  20. package/dist/plugins/policy.js +2307 -0
  21. package/dist/plugins/policy.js.map +1 -0
  22. package/dist/schema.cjs +110 -0
  23. package/dist/schema.cjs.map +1 -0
  24. package/dist/schema.d.cts +29 -0
  25. package/dist/schema.d.ts +29 -0
  26. package/dist/schema.js +85 -0
  27. package/dist/schema.js.map +1 -0
  28. package/dist/utils/pg-utils.cjs +39 -0
  29. package/dist/utils/pg-utils.cjs.map +1 -0
  30. package/dist/utils/pg-utils.d.cts +8 -0
  31. package/dist/utils/pg-utils.d.ts +8 -0
  32. package/dist/utils/pg-utils.js +16 -0
  33. package/dist/utils/pg-utils.js.map +1 -0
  34. package/{browser/index.js → dist/utils/sqlite-utils.cjs} +21 -37
  35. package/dist/utils/sqlite-utils.cjs.map +1 -0
  36. package/dist/utils/sqlite-utils.d.cts +8 -0
  37. package/dist/utils/sqlite-utils.d.ts +8 -0
  38. package/dist/utils/sqlite-utils.js +22 -0
  39. package/dist/utils/sqlite-utils.js.map +1 -0
  40. package/package.json +105 -114
  41. package/README.md +0 -5
  42. package/browser/index.d.mts +0 -13
  43. package/browser/index.d.ts +0 -13
  44. package/browser/index.js.map +0 -1
  45. package/browser/index.mjs +0 -33
  46. package/browser/index.mjs.map +0 -1
  47. package/constants.d.ts +0 -62
  48. package/constants.js +0 -76
  49. package/constants.js.map +0 -1
  50. package/cross/index.d.mts +0 -379
  51. package/cross/index.d.ts +0 -379
  52. package/cross/index.js +0 -903
  53. package/cross/index.js.map +0 -1
  54. package/cross/index.mjs +0 -861
  55. package/cross/index.mjs.map +0 -1
  56. package/edge.d.ts +0 -1
  57. package/edge.js +0 -18
  58. package/edge.js.map +0 -1
  59. package/encryption/index.d.ts +0 -25
  60. package/encryption/index.js +0 -74
  61. package/encryption/index.js.map +0 -1
  62. package/encryption/utils.d.ts +0 -9
  63. package/encryption/utils.js +0 -99
  64. package/encryption/utils.js.map +0 -1
  65. package/enhance-edge.d.ts +0 -1
  66. package/enhance-edge.js +0 -10
  67. package/enhance.d.ts +0 -1
  68. package/enhance.js +0 -10
  69. package/enhancements/edge/create-enhancement.d.ts +0 -42
  70. package/enhancements/edge/create-enhancement.js +0 -102
  71. package/enhancements/edge/create-enhancement.js.map +0 -1
  72. package/enhancements/edge/default-auth.d.ts +0 -8
  73. package/enhancements/edge/default-auth.js +0 -180
  74. package/enhancements/edge/default-auth.js.map +0 -1
  75. package/enhancements/edge/delegate.d.ts +0 -77
  76. package/enhancements/edge/delegate.js +0 -1294
  77. package/enhancements/edge/delegate.js.map +0 -1
  78. package/enhancements/edge/encryption.d.ts +0 -7
  79. package/enhancements/edge/encryption.js +0 -150
  80. package/enhancements/edge/encryption.js.map +0 -1
  81. package/enhancements/edge/index.d.ts +0 -4
  82. package/enhancements/edge/index.js +0 -21
  83. package/enhancements/edge/index.js.map +0 -1
  84. package/enhancements/edge/json-processor.d.ts +0 -7
  85. package/enhancements/edge/json-processor.js +0 -89
  86. package/enhancements/edge/json-processor.js.map +0 -1
  87. package/enhancements/edge/logger.d.ts +0 -29
  88. package/enhancements/edge/logger.js +0 -65
  89. package/enhancements/edge/logger.js.map +0 -1
  90. package/enhancements/edge/omit.d.ts +0 -7
  91. package/enhancements/edge/omit.js +0 -96
  92. package/enhancements/edge/omit.js.map +0 -1
  93. package/enhancements/edge/password.d.ts +0 -7
  94. package/enhancements/edge/password.js +0 -64
  95. package/enhancements/edge/password.js.map +0 -1
  96. package/enhancements/edge/policy/check-utils.d.ts +0 -5
  97. package/enhancements/edge/policy/check-utils.js +0 -20
  98. package/enhancements/edge/policy/check-utils.js.map +0 -1
  99. package/enhancements/edge/policy/handler.d.ts +0 -100
  100. package/enhancements/edge/policy/handler.js +0 -1442
  101. package/enhancements/edge/policy/handler.js.map +0 -1
  102. package/enhancements/edge/policy/index.d.ts +0 -19
  103. package/enhancements/edge/policy/index.js +0 -65
  104. package/enhancements/edge/policy/index.js.map +0 -1
  105. package/enhancements/edge/policy/policy-utils.d.ts +0 -181
  106. package/enhancements/edge/policy/policy-utils.js +0 -1357
  107. package/enhancements/edge/policy/policy-utils.js.map +0 -1
  108. package/enhancements/edge/promise.d.ts +0 -15
  109. package/enhancements/edge/promise.js +0 -99
  110. package/enhancements/edge/promise.js.map +0 -1
  111. package/enhancements/edge/proxy.d.ts +0 -120
  112. package/enhancements/edge/proxy.js +0 -287
  113. package/enhancements/edge/proxy.js.map +0 -1
  114. package/enhancements/edge/query-utils.d.ts +0 -53
  115. package/enhancements/edge/query-utils.js +0 -256
  116. package/enhancements/edge/query-utils.js.map +0 -1
  117. package/enhancements/edge/types.d.ts +0 -238
  118. package/enhancements/edge/types.js +0 -3
  119. package/enhancements/edge/types.js.map +0 -1
  120. package/enhancements/edge/utils.d.ts +0 -11
  121. package/enhancements/edge/utils.js +0 -49
  122. package/enhancements/edge/utils.js.map +0 -1
  123. package/enhancements/edge/where-visitor.d.ts +0 -32
  124. package/enhancements/edge/where-visitor.js +0 -86
  125. package/enhancements/edge/where-visitor.js.map +0 -1
  126. package/enhancements/node/create-enhancement.d.ts +0 -42
  127. package/enhancements/node/create-enhancement.js +0 -102
  128. package/enhancements/node/create-enhancement.js.map +0 -1
  129. package/enhancements/node/default-auth.d.ts +0 -8
  130. package/enhancements/node/default-auth.js +0 -180
  131. package/enhancements/node/default-auth.js.map +0 -1
  132. package/enhancements/node/delegate.d.ts +0 -77
  133. package/enhancements/node/delegate.js +0 -1294
  134. package/enhancements/node/delegate.js.map +0 -1
  135. package/enhancements/node/encryption.d.ts +0 -7
  136. package/enhancements/node/encryption.js +0 -150
  137. package/enhancements/node/encryption.js.map +0 -1
  138. package/enhancements/node/index.d.ts +0 -4
  139. package/enhancements/node/index.js +0 -21
  140. package/enhancements/node/index.js.map +0 -1
  141. package/enhancements/node/json-processor.d.ts +0 -7
  142. package/enhancements/node/json-processor.js +0 -89
  143. package/enhancements/node/json-processor.js.map +0 -1
  144. package/enhancements/node/logger.d.ts +0 -29
  145. package/enhancements/node/logger.js +0 -65
  146. package/enhancements/node/logger.js.map +0 -1
  147. package/enhancements/node/omit.d.ts +0 -7
  148. package/enhancements/node/omit.js +0 -96
  149. package/enhancements/node/omit.js.map +0 -1
  150. package/enhancements/node/password.d.ts +0 -7
  151. package/enhancements/node/password.js +0 -64
  152. package/enhancements/node/password.js.map +0 -1
  153. package/enhancements/node/policy/check-utils.d.ts +0 -5
  154. package/enhancements/node/policy/check-utils.js +0 -87
  155. package/enhancements/node/policy/check-utils.js.map +0 -1
  156. package/enhancements/node/policy/constraint-solver.d.ts +0 -27
  157. package/enhancements/node/policy/constraint-solver.js +0 -164
  158. package/enhancements/node/policy/constraint-solver.js.map +0 -1
  159. package/enhancements/node/policy/handler.d.ts +0 -100
  160. package/enhancements/node/policy/handler.js +0 -1442
  161. package/enhancements/node/policy/handler.js.map +0 -1
  162. package/enhancements/node/policy/index.d.ts +0 -19
  163. package/enhancements/node/policy/index.js +0 -65
  164. package/enhancements/node/policy/index.js.map +0 -1
  165. package/enhancements/node/policy/policy-utils.d.ts +0 -181
  166. package/enhancements/node/policy/policy-utils.js +0 -1357
  167. package/enhancements/node/policy/policy-utils.js.map +0 -1
  168. package/enhancements/node/promise.d.ts +0 -15
  169. package/enhancements/node/promise.js +0 -99
  170. package/enhancements/node/promise.js.map +0 -1
  171. package/enhancements/node/proxy.d.ts +0 -120
  172. package/enhancements/node/proxy.js +0 -287
  173. package/enhancements/node/proxy.js.map +0 -1
  174. package/enhancements/node/query-utils.d.ts +0 -53
  175. package/enhancements/node/query-utils.js +0 -256
  176. package/enhancements/node/query-utils.js.map +0 -1
  177. package/enhancements/node/types.d.ts +0 -238
  178. package/enhancements/node/types.js +0 -3
  179. package/enhancements/node/types.js.map +0 -1
  180. package/enhancements/node/utils.d.ts +0 -11
  181. package/enhancements/node/utils.js +0 -49
  182. package/enhancements/node/utils.js.map +0 -1
  183. package/enhancements/node/where-visitor.d.ts +0 -32
  184. package/enhancements/node/where-visitor.js +0 -86
  185. package/enhancements/node/where-visitor.js.map +0 -1
  186. package/error.d.ts +0 -11
  187. package/error.js +0 -22
  188. package/error.js.map +0 -1
  189. package/index.d.ts +0 -7
  190. package/index.js +0 -24
  191. package/index.js.map +0 -1
  192. package/model-meta.d.ts +0 -1
  193. package/model-meta.js +0 -10
  194. package/models.d.ts +0 -1
  195. package/models.js +0 -1
  196. package/types.d.ts +0 -180
  197. package/types.js +0 -4
  198. package/types.js.map +0 -1
  199. package/validation.d.ts +0 -24
  200. package/validation.js +0 -52
  201. package/validation.js.map +0 -1
  202. package/version.d.ts +0 -5
  203. package/version.js +0 -35
  204. package/version.js.map +0 -1
  205. package/zod/index.d.ts +0 -3
  206. package/zod/index.js +0 -5
  207. package/zod/input.d.ts +0 -1
  208. package/zod/input.js +0 -8
  209. package/zod/models.d.ts +0 -1
  210. package/zod/models.js +0 -8
  211. package/zod/objects.d.ts +0 -1
  212. package/zod/objects.js +0 -8
  213. package/zod-utils.d.ts +0 -12
  214. package/zod-utils.js +0 -97
  215. package/zod-utils.js.map +0 -1
@@ -1,53 +0,0 @@
1
- import { type FieldInfo, type NestedWriteVisitorContext } from '../../cross';
2
- import type { CrudContract, DbClientContract } from '../../types';
3
- import { InternalEnhancementOptions } from './create-enhancement';
4
- import { Logger } from './logger';
5
- export declare class QueryUtils {
6
- private readonly prisma;
7
- protected readonly options: InternalEnhancementOptions;
8
- protected readonly logger: Logger;
9
- constructor(prisma: DbClientContract, options: InternalEnhancementOptions);
10
- getIdFields(model: string): FieldInfo[];
11
- makeIdSelection(model: string): any;
12
- getEntityIds(model: string, entityData: any): Record<string, unknown>;
13
- /**
14
- * Initiates a transaction.
15
- */
16
- transaction<T>(db: CrudContract, action: (tx: CrudContract) => Promise<T>): Promise<T>;
17
- /**
18
- * Builds a reversed query for the given nested path.
19
- */
20
- buildReversedQuery(db: CrudContract, context: NestedWriteVisitorContext, forMutationPayload?: boolean, uncheckedOperation?: boolean): Promise<any>;
21
- /**
22
- * Composes a compound unique field from multiple fields. E.g.: { a: '1', b: '1' } => { a_b: { a: '1', b: '1' } }.
23
- */
24
- composeCompoundUniqueField(model: string, fieldData: any): any;
25
- /**
26
- * Flattens a generated unique field. E.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }.
27
- */
28
- flattenGeneratedUniqueField(model: string, args: any): void;
29
- validationError(message: string): Error;
30
- unknownError(message: string): Error;
31
- getModelFields(model: string): Record<string, FieldInfo> | undefined;
32
- /**
33
- * Gets information for a specific model field.
34
- */
35
- getModelField(model: string, field: string): FieldInfo | undefined;
36
- /**
37
- * Clones an object and makes sure it's not empty.
38
- */
39
- safeClone(value: unknown): any;
40
- getDelegateConcreteModel(model: string, data: any): string;
41
- /**
42
- * Gets relation info for a foreign key field.
43
- */
44
- getRelationForForeignKey(model: string, fkField: string): {
45
- relation: FieldInfo;
46
- idField: string;
47
- fkField: string;
48
- } | undefined;
49
- /**
50
- * Gets fields of object with defined values.
51
- */
52
- getFieldsWithDefinedValues(data: object): string[];
53
- }
@@ -1,256 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QueryUtils = void 0;
13
- /* eslint-disable @typescript-eslint/no-explicit-any */
14
- const cross_1 = require("../../cross");
15
- const version_1 = require("../../version");
16
- const edge_1 = require("../edge");
17
- const logger_1 = require("./logger");
18
- const utils_1 = require("./utils");
19
- class QueryUtils {
20
- constructor(prisma, options) {
21
- this.prisma = prisma;
22
- this.options = options;
23
- this.logger = new logger_1.Logger(prisma);
24
- }
25
- getIdFields(model) {
26
- return (0, cross_1.getIdFields)(this.options.modelMeta, model, true);
27
- }
28
- makeIdSelection(model) {
29
- const idFields = this.getIdFields(model);
30
- return Object.assign({}, ...idFields.map((f) => ({ [f.name]: true })));
31
- }
32
- getEntityIds(model, entityData) {
33
- const idFields = this.getIdFields(model);
34
- const result = {};
35
- for (const idField of idFields) {
36
- result[idField.name] = entityData[idField.name];
37
- }
38
- return result;
39
- }
40
- /**
41
- * Initiates a transaction.
42
- */
43
- transaction(db, action) {
44
- const fullDb = db;
45
- if (fullDb['$transaction']) {
46
- return fullDb.$transaction((tx) => {
47
- tx[Symbol.for('nodejs.util.inspect.custom')] = 'PrismaClient$tx';
48
- return action(tx);
49
- }, {
50
- maxWait: this.options.transactionMaxWait,
51
- timeout: this.options.transactionTimeout,
52
- isolationLevel: this.options.transactionIsolationLevel,
53
- });
54
- }
55
- else {
56
- // already in transaction, don't nest
57
- return action(db);
58
- }
59
- }
60
- /**
61
- * Builds a reversed query for the given nested path.
62
- */
63
- buildReversedQuery(db_1, context_1) {
64
- return __awaiter(this, arguments, void 0, function* (db, context, forMutationPayload = false, uncheckedOperation = false) {
65
- let result, currQuery;
66
- let currField;
67
- for (let i = context.nestingPath.length - 1; i >= 0; i--) {
68
- const { field, model, where } = context.nestingPath[i];
69
- // never modify the original where because it's shared in the structure
70
- const visitWhere = Object.assign({}, where);
71
- if (model && where) {
72
- // make sure composite unique condition is flattened
73
- this.flattenGeneratedUniqueField(model, visitWhere);
74
- }
75
- if (!result) {
76
- // first segment (bottom), just use its where clause
77
- result = currQuery = Object.assign({}, visitWhere);
78
- currField = field;
79
- }
80
- else {
81
- if (!currField) {
82
- throw this.unknownError(`missing field in nested path`);
83
- }
84
- if (!currField.backLink) {
85
- throw this.unknownError(`field ${currField.type}.${currField.name} doesn't have a backLink`);
86
- }
87
- const backLinkField = this.getModelField(currField.type, currField.backLink);
88
- if (!backLinkField) {
89
- throw this.unknownError(`missing backLink field ${currField.backLink} in ${currField.type}`);
90
- }
91
- if (backLinkField.isArray && !forMutationPayload) {
92
- // many-side of relationship, wrap with "some" query
93
- currQuery[currField.backLink] = { some: Object.assign({}, visitWhere) };
94
- currQuery = currQuery[currField.backLink].some;
95
- }
96
- else {
97
- const fkMapping = where && backLinkField.isRelationOwner && backLinkField.foreignKeyMapping;
98
- // calculate if we should preserve the relation condition (e.g., { user: { id: 1 } })
99
- const shouldPreserveRelationCondition =
100
- // doing a mutation
101
- forMutationPayload &&
102
- // and it's not an unchecked mutate
103
- !uncheckedOperation &&
104
- // and the current segment is the direct parent (the last one is the mutate itself),
105
- // the relation condition should be preserved and will be converted to a "connect" later
106
- i === context.nestingPath.length - 2;
107
- if (fkMapping && !shouldPreserveRelationCondition) {
108
- // turn relation condition into foreign key condition, e.g.:
109
- // { user: { id: 1 } } => { userId: 1 }
110
- let parentPk = visitWhere;
111
- if (Object.keys(fkMapping).some((k) => !(k in parentPk) || parentPk[k] === undefined)) {
112
- // it can happen that the parent condition actually doesn't contain all id fields
113
- // (when the parent condition is not a primary key but unique constraints)
114
- // and in such case we need to load it to get the pks
115
- if (this.options.logPrismaQuery && this.logger.enabled('info')) {
116
- this.logger.info(`[reverseLookup] \`findUniqueOrThrow\` ${model}: ${(0, edge_1.formatObject)(where)}`);
117
- }
118
- parentPk = yield db[model].findUniqueOrThrow({
119
- where,
120
- select: this.makeIdSelection(model),
121
- });
122
- }
123
- for (const [r, fk] of Object.entries(fkMapping)) {
124
- currQuery[fk] = parentPk[r];
125
- }
126
- if (i > 0) {
127
- // prepare for the next segment
128
- currQuery[currField.backLink] = {};
129
- }
130
- }
131
- else {
132
- // preserve the original structure
133
- currQuery[currField.backLink] = Object.assign({}, visitWhere);
134
- }
135
- if (forMutationPayload && currQuery[currField.backLink]) {
136
- // reconstruct compound unique field
137
- currQuery[currField.backLink] = this.composeCompoundUniqueField(backLinkField.type, currQuery[currField.backLink]);
138
- }
139
- currQuery = currQuery[currField.backLink];
140
- }
141
- currField = field;
142
- }
143
- }
144
- return result;
145
- });
146
- }
147
- /**
148
- * Composes a compound unique field from multiple fields. E.g.: { a: '1', b: '1' } => { a_b: { a: '1', b: '1' } }.
149
- */
150
- composeCompoundUniqueField(model, fieldData) {
151
- const uniqueConstraints = (0, cross_1.getUniqueConstraints)(this.options.modelMeta, model);
152
- if (!uniqueConstraints) {
153
- return fieldData;
154
- }
155
- const result = this.safeClone(fieldData);
156
- for (const [name, constraint] of Object.entries(uniqueConstraints)) {
157
- if (constraint.fields.length > 1 && constraint.fields.every((f) => fieldData[f] !== undefined)) {
158
- // multi-field unique constraint, compose it
159
- result[name] = constraint.fields.reduce((prev, field) => (Object.assign(Object.assign({}, prev), { [field]: fieldData[field] })), {});
160
- constraint.fields.forEach((f) => delete result[f]);
161
- }
162
- }
163
- return result;
164
- }
165
- /**
166
- * Flattens a generated unique field. E.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }.
167
- */
168
- flattenGeneratedUniqueField(model, args) {
169
- const uniqueConstraints = (0, cross_1.getUniqueConstraints)(this.options.modelMeta, model);
170
- if (uniqueConstraints && Object.keys(uniqueConstraints).length > 0) {
171
- for (const [field, value] of Object.entries(args)) {
172
- if (uniqueConstraints[field] &&
173
- uniqueConstraints[field].fields.length > 1 &&
174
- typeof value === 'object') {
175
- // multi-field unique constraint, flatten it
176
- delete args[field];
177
- if (value) {
178
- for (const [f, v] of Object.entries(value)) {
179
- args[f] = v;
180
- }
181
- }
182
- }
183
- }
184
- }
185
- }
186
- validationError(message) {
187
- return (0, utils_1.prismaClientValidationError)(this.prisma, this.options.prismaModule, message);
188
- }
189
- unknownError(message) {
190
- return (0, utils_1.prismaClientUnknownRequestError)(this.prisma, this.options.prismaModule, message, {
191
- clientVersion: (0, version_1.getVersion)(),
192
- });
193
- }
194
- getModelFields(model) {
195
- var _a;
196
- return (_a = (0, cross_1.getModelInfo)(this.options.modelMeta, model)) === null || _a === void 0 ? void 0 : _a.fields;
197
- }
198
- /**
199
- * Gets information for a specific model field.
200
- */
201
- getModelField(model, field) {
202
- return (0, cross_1.resolveField)(this.options.modelMeta, model, field);
203
- }
204
- /**
205
- * Clones an object and makes sure it's not empty.
206
- */
207
- safeClone(value) {
208
- return value ? (0, cross_1.clone)(value) : value === undefined || value === null ? {} : value;
209
- }
210
- getDelegateConcreteModel(model, data) {
211
- if (!data || typeof data !== 'object') {
212
- return model;
213
- }
214
- const modelInfo = (0, cross_1.getModelInfo)(this.options.modelMeta, model);
215
- if (modelInfo === null || modelInfo === void 0 ? void 0 : modelInfo.discriminator) {
216
- // model has a discriminator so it can be a polymorphic base,
217
- // need to find the concrete model
218
- const concreteModelName = data[modelInfo.discriminator];
219
- if (typeof concreteModelName === 'string' && concreteModelName) {
220
- return concreteModelName;
221
- }
222
- }
223
- return model;
224
- }
225
- /**
226
- * Gets relation info for a foreign key field.
227
- */
228
- getRelationForForeignKey(model, fkField) {
229
- const modelInfo = (0, cross_1.getModelInfo)(this.options.modelMeta, model);
230
- if (!modelInfo) {
231
- return undefined;
232
- }
233
- for (const field of Object.values(modelInfo.fields)) {
234
- if (field.foreignKeyMapping) {
235
- const entry = Object.entries(field.foreignKeyMapping).find(([, v]) => v === fkField);
236
- if (entry) {
237
- return { relation: field, idField: entry[0], fkField: entry[1] };
238
- }
239
- }
240
- }
241
- return undefined;
242
- }
243
- /**
244
- * Gets fields of object with defined values.
245
- */
246
- getFieldsWithDefinedValues(data) {
247
- if (!data) {
248
- return [];
249
- }
250
- return Object.entries(data)
251
- .filter(([, v]) => v !== undefined)
252
- .map(([k]) => k);
253
- }
254
- }
255
- exports.QueryUtils = QueryUtils;
256
- //# sourceMappingURL=query-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-utils.js","sourceRoot":"","sources":["../../../src/enhancements/node/query-utils.ts"],"names":[],"mappings":"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"}
@@ -1,238 +0,0 @@
1
- import type { CrudContract, PermissionCheckerContext, PolicyCrudKind, QueryContext } from '../../types';
2
- /**
3
- * Common options for PrismaClient enhancements
4
- */
5
- export interface CommonEnhancementOptions {
6
- /**
7
- * Path for loading CLI-generated code
8
- */
9
- loadPath?: string;
10
- /**
11
- * The `Prisma` module generated together with `PrismaClient`. You only need to
12
- * pass it when you specified a custom `PrismaClient` output path. The module can
13
- * be loaded like: `import { Prisma } from '<your PrismaClient output path>';`.
14
- */
15
- prismaModule?: any;
16
- }
17
- /**
18
- * CRUD operations
19
- */
20
- export type CRUD = 'create' | 'read' | 'update' | 'delete';
21
- /**
22
- * Function for getting policy guard with a given context
23
- */
24
- export type PolicyFunc = (context: QueryContext, db: CrudContract) => object;
25
- /**
26
- * Function for checking an entity's data for permission
27
- */
28
- export type EntityCheckerFunc = (input: any, context: QueryContext) => boolean;
29
- /**
30
- * Function for checking if an operation is possibly allowed.
31
- */
32
- export type PermissionCheckerFunc = (context: PermissionCheckerContext) => PermissionCheckerConstraint;
33
- /**
34
- * Supported checker constraint checking value types.
35
- */
36
- export type ConstraintValueTypes = 'boolean' | 'number' | 'string';
37
- /**
38
- * Free variable constraint
39
- */
40
- export type VariableConstraint = {
41
- kind: 'variable';
42
- name: string;
43
- type: ConstraintValueTypes;
44
- };
45
- /**
46
- * Constant value constraint
47
- */
48
- export type ValueConstraint = {
49
- kind: 'value';
50
- value: number | boolean | string;
51
- type: ConstraintValueTypes;
52
- };
53
- /**
54
- * Terms for comparison constraints
55
- */
56
- export type ComparisonTerm = VariableConstraint | ValueConstraint;
57
- /**
58
- * Comparison constraint
59
- */
60
- export type ComparisonConstraint = {
61
- kind: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';
62
- left: ComparisonTerm;
63
- right: ComparisonTerm;
64
- };
65
- /**
66
- * Logical constraint
67
- */
68
- export type LogicalConstraint = {
69
- kind: 'and' | 'or' | 'not';
70
- children: PermissionCheckerConstraint[];
71
- };
72
- /**
73
- * Constraint delegated to another model through `check()` function call
74
- * on a relation field.
75
- */
76
- export type DelegateConstraint = {
77
- kind: 'delegate';
78
- model: string;
79
- relation: string;
80
- operation?: CRUD;
81
- };
82
- /**
83
- * Operation allowability checking constraint
84
- */
85
- export type PermissionCheckerConstraint = ValueConstraint | VariableConstraint | ComparisonConstraint | LogicalConstraint | DelegateConstraint;
86
- /**
87
- * Policy definition
88
- */
89
- export type PolicyDef = {
90
- policy: Record<ModelName, ModelPolicyDef>;
91
- validation: Record<string, {
92
- hasValidation: boolean;
93
- }>;
94
- authSelector?: object;
95
- };
96
- type ModelName = string;
97
- type FieldName = string;
98
- /**
99
- * Policy definition for a model
100
- */
101
- export type ModelPolicyDef = {
102
- /**
103
- * Model-level CRUD policies
104
- */
105
- modelLevel: ModelCrudDef;
106
- /**
107
- * Field-level CRUD policies
108
- */
109
- fieldLevel?: FieldCrudDef;
110
- };
111
- /**
112
- * CRUD policy definitions for a model
113
- */
114
- export type ModelCrudDef = {
115
- read: ModelReadDef;
116
- create: ModelCreateDef;
117
- update: ModelUpdateDef;
118
- delete: ModelDeleteDef;
119
- postUpdate: ModelPostUpdateDef;
120
- };
121
- /**
122
- * Information for checking entity data outside of Prisma
123
- */
124
- export type EntityChecker = {
125
- /**
126
- * Checker function
127
- */
128
- func: EntityCheckerFunc;
129
- /**
130
- * Selector for fetching entity data
131
- */
132
- selector?: object;
133
- };
134
- /**
135
- * Common policy definition for a CRUD operation
136
- */
137
- type ModelCrudCommon = {
138
- /**
139
- * Prisma query guard or a constant condition
140
- */
141
- guard: PolicyFunc | boolean;
142
- /**
143
- * Additional checker function for checking policies outside of Prisma
144
- */
145
- /**
146
- * Additional checker function for checking policies outside of Prisma
147
- */
148
- entityChecker?: EntityChecker;
149
- /**
150
- * Permission checker function or a constant condition
151
- */
152
- permissionChecker?: PermissionCheckerFunc | boolean;
153
- };
154
- /**
155
- * Policy definition for reading a model
156
- */
157
- type ModelReadDef = ModelCrudCommon;
158
- /**
159
- * Policy definition for creating a model
160
- */
161
- type ModelCreateDef = ModelCrudCommon & {
162
- /**
163
- * Create input validation function. Only generated when a create
164
- * can be approved or denied based on input values.
165
- */
166
- inputChecker?: EntityCheckerFunc | boolean;
167
- };
168
- /**
169
- * Policy definition for updating a model
170
- */
171
- type ModelUpdateDef = ModelCrudCommon;
172
- /**
173
- * Policy definition for deleting a model
174
- */
175
- type ModelDeleteDef = ModelCrudCommon;
176
- /**
177
- * Policy definition for post-update checking a model
178
- */
179
- type ModelPostUpdateDef = Exclude<ModelCrudCommon, 'permissionChecker'> & {
180
- preUpdateSelector?: object;
181
- };
182
- /**
183
- * CRUD policy definitions for a field
184
- */
185
- type FieldCrudDef = {
186
- /**
187
- * Field-level read policy
188
- */
189
- read: Record<FieldName, FieldReadDef>;
190
- /**
191
- * Field-level update policy
192
- */
193
- update: Record<FieldName, FieldUpdateDef>;
194
- };
195
- type FieldReadDef = {
196
- /**
197
- * Field-level Prisma query guard
198
- */
199
- guard?: PolicyFunc;
200
- /**
201
- * Entity checker
202
- */
203
- entityChecker?: EntityChecker;
204
- /**
205
- * Field-level read override Prisma query guard
206
- */
207
- overrideGuard?: PolicyFunc;
208
- /**
209
- * Entity checker for override policies
210
- */
211
- overrideEntityChecker?: EntityChecker;
212
- };
213
- type FieldUpdateDef = {
214
- /**
215
- * Field-level update Prisma query guard
216
- */
217
- guard?: PolicyFunc;
218
- /**
219
- * Additional entity checker
220
- */
221
- entityChecker?: EntityChecker;
222
- /**
223
- * Field-level update override Prisma query guard
224
- */
225
- overrideGuard?: PolicyFunc;
226
- /**
227
- * Additional entity checker for override policies
228
- */
229
- overrideEntityChecker?: EntityChecker;
230
- };
231
- /**
232
- * Permission check API (`check()`) arguments
233
- */
234
- export type PermissionCheckArgs = {
235
- operation: PolicyCrudKind;
236
- where?: Record<string, number | string | boolean>;
237
- };
238
- export {};
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/enhancements/node/types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import { type FieldInfo, type ModelMeta } from '../../cross';
2
- import type { DbClientContract } from '../../types';
3
- /**
4
- * Formats an object for pretty printing.
5
- */
6
- export declare function formatObject(value: any, multiLine?: boolean): string;
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,49 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.formatObject = formatObject;
7
- exports.prismaClientValidationError = prismaClientValidationError;
8
- exports.prismaClientKnownRequestError = prismaClientKnownRequestError;
9
- exports.prismaClientUnknownRequestError = prismaClientUnknownRequestError;
10
- exports.isUnsafeMutate = isUnsafeMutate;
11
- exports.isAutoIncrementIdField = isAutoIncrementIdField;
12
- const safe_json_stringify_1 = __importDefault(require("safe-json-stringify"));
13
- const cross_1 = require("../../cross");
14
- /**
15
- * Formats an object for pretty printing.
16
- */
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- function formatObject(value, multiLine = true) {
19
- return (0, safe_json_stringify_1.default)(value, (_, v) => (typeof v === 'bigint' ? v.toString() : v), multiLine ? 2 : undefined);
20
- }
21
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
- function prismaClientValidationError(prisma, prismaModule, message) {
23
- throw new prismaModule.PrismaClientValidationError(message, { clientVersion: prisma._clientVersion });
24
- }
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- function prismaClientKnownRequestError(prisma, prismaModule, ...args) {
27
- return new prismaModule.PrismaClientKnownRequestError(...args);
28
- }
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- function prismaClientUnknownRequestError(prismaModule, ...args) {
31
- throw new prismaModule.PrismaClientUnknownRequestError(...args);
32
- }
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
- function isUnsafeMutate(model, args, modelMeta) {
35
- if (!args) {
36
- return false;
37
- }
38
- for (const k of Object.keys(args)) {
39
- const field = (0, cross_1.resolveField)(modelMeta, model, k);
40
- if (field && (isAutoIncrementIdField(field) || field.isForeignKey)) {
41
- return true;
42
- }
43
- }
44
- return false;
45
- }
46
- function isAutoIncrementIdField(field) {
47
- return field.isId && field.isAutoIncrement;
48
- }
49
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/enhancements/node/utils.ts"],"names":[],"mappings":";;;;;AAQA,oCAEC;AAGD,kEAEC;AAGD,sEAEC;AAGD,0EAEC;AAGD,wCAWC;AAED,wDAEC;AA3CD,8EAAoD;AACpD,uCAA2E;AAG3E;;GAEG;AACH,8DAA8D;AAC9D,SAAgB,YAAY,CAAC,KAAU,EAAE,SAAS,GAAG,IAAI;IACrD,OAAO,IAAA,6BAAiB,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACrH,CAAC;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;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;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;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,oBAAY,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;AAED,SAAgB,sBAAsB,CAAC,KAAgB;IACnD,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC;AAC/C,CAAC"}
@@ -1,32 +0,0 @@
1
- import { type FieldInfo, type ModelMeta } from '../../cross';
2
- /**
3
- * Context for visiting
4
- */
5
- export type WhereVisitorContext = {
6
- /**
7
- * Parent data, can be used to replace fields
8
- */
9
- parent: any;
10
- /**
11
- * Current field, undefined if toplevel
12
- */
13
- field?: FieldInfo;
14
- };
15
- /**
16
- * WhereVisitor's callback actions
17
- */
18
- export type WhereVisitorCallback = {
19
- field?: (field: FieldInfo, data: any) => Promise<unknown>;
20
- };
21
- /**
22
- * Recursive visitor for where payload
23
- */
24
- export declare class WhereVisitor {
25
- private readonly modelMeta;
26
- private readonly callback;
27
- constructor(modelMeta: ModelMeta, callback: WhereVisitorCallback);
28
- /**
29
- * Start visiting
30
- */
31
- visit(model: string, where: any): Promise<void>;
32
- }