@zenstackhq/runtime 1.8.1 → 2.0.0-alpha.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/constants.d.ts +5 -1
- package/constants.js +6 -2
- package/constants.js.map +1 -1
- package/cross/index.d.mts +60 -11
- package/cross/index.d.ts +60 -11
- package/cross/index.js +33 -7
- package/cross/index.js.map +1 -1
- package/cross/index.mjs +30 -7
- package/cross/index.mjs.map +1 -1
- package/enhance.d.ts +1 -0
- package/enhance.js +10 -0
- package/enhancements/create-enhancement.d.ts +78 -0
- package/enhancements/create-enhancement.js +86 -0
- package/enhancements/create-enhancement.js.map +1 -0
- package/enhancements/default-auth.d.ts +7 -0
- package/enhancements/default-auth.js +92 -0
- package/enhancements/default-auth.js.map +1 -0
- package/enhancements/delegate.d.ts +64 -0
- package/enhancements/delegate.js +903 -0
- package/enhancements/delegate.js.map +1 -0
- package/enhancements/index.d.ts +1 -6
- package/enhancements/index.js +1 -6
- package/enhancements/index.js.map +1 -1
- package/enhancements/logger.js.map +1 -0
- package/enhancements/omit.d.ts +4 -14
- package/enhancements/omit.js +14 -14
- package/enhancements/omit.js.map +1 -1
- package/enhancements/password.d.ts +4 -14
- package/enhancements/password.js +6 -10
- package/enhancements/password.js.map +1 -1
- package/enhancements/policy/handler.d.ts +19 -17
- package/enhancements/policy/handler.js +169 -157
- package/enhancements/policy/handler.js.map +1 -1
- package/enhancements/policy/index.d.ts +3 -37
- package/enhancements/policy/index.js +7 -24
- package/enhancements/policy/index.js.map +1 -1
- package/enhancements/policy/policy-utils.d.ts +23 -45
- package/enhancements/policy/policy-utils.js +34 -147
- package/enhancements/policy/policy-utils.js.map +1 -1
- package/enhancements/proxy.d.ts +11 -3
- package/enhancements/proxy.js +10 -9
- package/enhancements/proxy.js.map +1 -1
- package/enhancements/query-utils.d.ts +24 -0
- package/enhancements/query-utils.js +152 -0
- package/enhancements/query-utils.js.map +1 -0
- package/enhancements/types.d.ts +3 -3
- package/enhancements/utils.d.ts +3 -3
- package/enhancements/utils.js +9 -68
- package/enhancements/utils.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/types.d.ts +9 -2
- package/version.d.ts +3 -4
- package/version.js +29 -46
- package/version.js.map +1 -1
- package/enhancements/enhance.d.ts +0 -18
- package/enhancements/enhance.js +0 -42
- package/enhancements/enhance.js.map +0 -1
- package/enhancements/policy/logger.js.map +0 -1
- package/enhancements/preset.d.ts +0 -15
- package/enhancements/preset.js +0 -21
- package/enhancements/preset.js.map +0 -1
- package/loader.d.ts +0 -22
- package/loader.js +0 -99
- package/loader.js.map +0 -1
- /package/enhancements/{policy/logger.d.ts → logger.d.ts} +0 -0
- /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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"}
|
package/enhancements/types.d.ts
CHANGED
|
@@ -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 {
|
|
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:
|
|
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
|
|
44
|
+
input?: Record<string, Record<string, z.ZodSchema>>;
|
|
45
45
|
};
|
package/enhancements/utils.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import type { DbClientContract } from '../types';
|
|
|
3
3
|
* Formats an object for pretty printing.
|
|
4
4
|
*/
|
|
5
5
|
export declare function formatObject(value: unknown): string;
|
|
6
|
-
export declare function prismaClientValidationError(prisma: DbClientContract, message: string):
|
|
7
|
-
export declare function prismaClientKnownRequestError(prisma: DbClientContract, ...args: unknown[]): Error;
|
|
8
|
-
export declare function prismaClientUnknownRequestError(
|
|
6
|
+
export declare function prismaClientValidationError(prisma: DbClientContract, prismaModule: any, message: string): Error;
|
|
7
|
+
export declare function prismaClientKnownRequestError(prisma: DbClientContract, prismaModule: any, ...args: unknown[]): Error;
|
|
8
|
+
export declare function prismaClientUnknownRequestError(prismaModule: any, ...args: unknown[]): Error;
|
package/enhancements/utils.js
CHANGED
|
@@ -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,12 +22,8 @@ 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
26
|
exports.prismaClientUnknownRequestError = exports.prismaClientKnownRequestError = exports.prismaClientValidationError = exports.formatObject = void 0;
|
|
31
|
-
const path_1 = __importDefault(require("path"));
|
|
32
27
|
const util = __importStar(require("util"));
|
|
33
28
|
/**
|
|
34
29
|
* Formats an object for pretty printing.
|
|
@@ -37,73 +32,19 @@ function formatObject(value) {
|
|
|
37
32
|
return util.formatWithOptions({ depth: 20 }, value);
|
|
38
33
|
}
|
|
39
34
|
exports.formatObject = formatObject;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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 });
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
function prismaClientValidationError(prisma, prismaModule, message) {
|
|
37
|
+
throw new prismaModule.PrismaClientValidationError(message, { clientVersion: prisma._clientVersion });
|
|
91
38
|
}
|
|
92
39
|
exports.prismaClientValidationError = prismaClientValidationError;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
_PrismaClientKnownRequestError = _prisma.PrismaClientKnownRequestError;
|
|
97
|
-
}
|
|
98
|
-
return new _PrismaClientKnownRequestError(...args);
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
function prismaClientKnownRequestError(prisma, prismaModule, ...args) {
|
|
42
|
+
return new prismaModule.PrismaClientKnownRequestError(...args);
|
|
99
43
|
}
|
|
100
44
|
exports.prismaClientKnownRequestError = prismaClientKnownRequestError;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
_PrismaClientUnknownRequestError = _prisma.PrismaClientUnknownRequestError;
|
|
105
|
-
}
|
|
106
|
-
throw new _PrismaClientUnknownRequestError(...args);
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
function prismaClientUnknownRequestError(prismaModule, ...args) {
|
|
47
|
+
throw new prismaModule.PrismaClientUnknownRequestError(...args);
|
|
107
48
|
}
|
|
108
49
|
exports.prismaClientUnknownRequestError = prismaClientUnknownRequestError;
|
|
109
50
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAG7B;;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"}
|
package/index.d.ts
CHANGED
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,
|
|
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": "
|
|
4
|
+
"version": "2.0.0-alpha.1",
|
|
5
5
|
"description": "Runtime of ZenStack for both client-side and server-side environments.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"linkDirectory": true
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@types/bcryptjs": "^2.4.2",
|
|
50
49
|
"bcryptjs": "^2.4.3",
|
|
51
50
|
"buffer": "^6.0.3",
|
|
52
51
|
"change-case": "^4.1.2",
|
|
53
52
|
"colors": "1.4.0",
|
|
54
53
|
"decimal.js": "^10.4.2",
|
|
55
54
|
"deepcopy": "^2.1.0",
|
|
55
|
+
"deepmerge": "^4.3.1",
|
|
56
56
|
"lower-case-first": "^2.0.2",
|
|
57
57
|
"pluralize": "^8.0.0",
|
|
58
58
|
"semver": "^7.5.2",
|
package/types.d.ts
CHANGED
|
@@ -52,6 +52,13 @@ export type QueryContext = {
|
|
|
52
52
|
*/
|
|
53
53
|
preValue?: any;
|
|
54
54
|
};
|
|
55
|
-
|
|
56
|
-
|
|
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
|
|
4
|
-
*
|
|
2
|
+
* Gets this package's version.
|
|
3
|
+
* @returns
|
|
5
4
|
*/
|
|
6
|
-
export declare function
|
|
5
|
+
export declare function getVersion(): string;
|
package/version.js
CHANGED
|
@@ -1,53 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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.
|
|
7
|
-
const
|
|
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
|
|
26
|
-
*
|
|
29
|
+
* Gets this package's version.
|
|
30
|
+
* @returns
|
|
27
31
|
*/
|
|
28
|
-
function
|
|
29
|
-
|
|
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.
|
|
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":"
|
|
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;
|
package/enhancements/enhance.js
DELETED
|
@@ -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"}
|
package/enhancements/preset.d.ts
DELETED
|
@@ -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;
|
package/enhancements/preset.js
DELETED
|
@@ -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"}
|
package/loader.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ModelMeta, PolicyDef, ZodSchemas } from './enhancements';
|
|
2
|
-
/**
|
|
3
|
-
* Load model metadata.
|
|
4
|
-
*
|
|
5
|
-
* @param loadPath The path to load model metadata from. If not provided,
|
|
6
|
-
* will use default load path.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getDefaultModelMeta(loadPath: string | undefined): ModelMeta;
|
|
9
|
-
/**
|
|
10
|
-
* Load access policies.
|
|
11
|
-
*
|
|
12
|
-
* @param loadPath The path to load access policies from. If not provided,
|
|
13
|
-
* will use default load path.
|
|
14
|
-
*/
|
|
15
|
-
export declare function getDefaultPolicy(loadPath: string | undefined): PolicyDef;
|
|
16
|
-
/**
|
|
17
|
-
* Load zod schemas.
|
|
18
|
-
*
|
|
19
|
-
* @param loadPath The path to load zod schemas from. If not provided,
|
|
20
|
-
* will use default load path.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getDefaultZodSchemas(loadPath: string | undefined): ZodSchemas | undefined;
|