@zenstackhq/runtime 1.0.0-beta.8 → 1.0.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.
- package/browser/index.d.mts +13 -0
- package/browser/index.d.ts +13 -0
- package/browser/index.js +70 -0
- package/browser/index.js.map +1 -0
- package/browser/index.mjs +32 -0
- package/browser/index.mjs.map +1 -0
- package/constants.d.ts +66 -13
- package/constants.js +69 -15
- package/constants.js.map +1 -1
- package/enhancements/enhance.d.ts +18 -0
- package/enhancements/enhance.js +42 -0
- package/enhancements/enhance.js.map +1 -0
- package/enhancements/index.d.ts +5 -0
- package/enhancements/index.js +5 -0
- package/enhancements/index.js.map +1 -1
- package/enhancements/model-data-visitor.d.ts +16 -0
- package/enhancements/model-data-visitor.js +41 -0
- package/enhancements/model-data-visitor.js.map +1 -0
- package/enhancements/model-meta.d.ts +3 -6
- package/enhancements/model-meta.js +3 -28
- package/enhancements/model-meta.js.map +1 -1
- package/enhancements/nested-write-visitor.d.ts +75 -0
- package/enhancements/{nested-write-vistor.js → nested-write-visitor.js} +68 -29
- package/enhancements/nested-write-visitor.js.map +1 -0
- package/enhancements/omit.d.ts +4 -4
- package/enhancements/omit.js +2 -1
- package/enhancements/omit.js.map +1 -1
- package/enhancements/password.d.ts +4 -4
- package/enhancements/password.js +4 -4
- package/enhancements/password.js.map +1 -1
- package/enhancements/policy/handler.d.ts +34 -18
- package/enhancements/policy/handler.js +844 -157
- package/enhancements/policy/handler.js.map +1 -1
- package/enhancements/policy/index.d.ts +4 -4
- package/enhancements/policy/index.js +20 -38
- package/enhancements/policy/index.js.map +1 -1
- package/enhancements/policy/logger.js +1 -1
- package/enhancements/policy/logger.js.map +1 -1
- package/enhancements/policy/policy-utils.d.ts +106 -48
- package/enhancements/policy/policy-utils.js +778 -650
- package/enhancements/policy/policy-utils.js.map +1 -1
- package/enhancements/policy/promise.d.ts +5 -0
- package/enhancements/policy/promise.js +42 -0
- package/enhancements/policy/promise.js.map +1 -0
- package/enhancements/preset.d.ts +3 -8
- package/enhancements/preset.js +2 -4
- package/enhancements/preset.js.map +1 -1
- package/enhancements/proxy.d.ts +3 -1
- package/enhancements/proxy.js +45 -28
- package/enhancements/proxy.js.map +1 -1
- package/enhancements/types.d.ts +24 -7
- package/enhancements/types.js +1 -0
- package/enhancements/types.js.map +1 -1
- package/enhancements/utils.d.ts +5 -1
- package/enhancements/utils.js +62 -12
- package/enhancements/utils.js.map +1 -1
- package/enhancements/where-visitor.d.ts +33 -0
- package/enhancements/where-visitor.js +87 -0
- package/enhancements/where-visitor.js.map +1 -0
- package/error.js +9 -3
- package/error.js.map +1 -1
- package/index.d.ts +4 -2
- package/index.js +4 -2
- package/index.js.map +1 -1
- package/loader.d.ts +22 -0
- package/loader.js +99 -0
- package/loader.js.map +1 -0
- package/package.json +33 -7
- package/types.d.ts +28 -14
- package/types.js +2 -0
- package/types.js.map +1 -1
- package/validation.d.ts +5 -0
- package/validation.js +13 -1
- package/validation.js.map +1 -1
- package/version.d.ts +5 -0
- package/version.js +34 -1
- package/version.js.map +1 -1
- package/zod/index.d.ts +1 -0
- package/zod/index.js +1 -0
- package/zod/objects.d.ts +1 -0
- package/zod/objects.js +8 -0
- package/enhancements/nested-write-vistor.d.ts +0 -71
- package/enhancements/nested-write-vistor.js.map +0 -1
- package/utils/serialization-utils.d.ts +0 -1
- package/utils/serialization-utils.js +0 -22
- package/utils/serialization-utils.js.map +0 -1
package/enhancements/utils.js
CHANGED
|
@@ -27,25 +27,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.prismaClientUnknownRequestError = exports.prismaClientKnownRequestError = exports.prismaClientValidationError = exports.formatObject = exports.enumerate = exports.getIdFields = exports.getModelFields = void 0;
|
|
30
|
+
exports.prismaClientUnknownRequestError = exports.prismaClientKnownRequestError = exports.prismaClientValidationError = exports.formatObject = exports.zip = exports.enumerate = exports.getIdFields = exports.getModelFields = void 0;
|
|
31
31
|
const lower_case_first_1 = require("lower-case-first");
|
|
32
32
|
const path_1 = __importDefault(require("path"));
|
|
33
33
|
const util = __importStar(require("util"));
|
|
34
|
-
const constants_1 = require("../constants");
|
|
35
34
|
/**
|
|
36
35
|
* Gets field names in a data model entity, filtering out internal fields.
|
|
37
36
|
*/
|
|
38
37
|
function getModelFields(data) {
|
|
39
|
-
return data ? Object.keys(data)
|
|
38
|
+
return data ? Object.keys(data) : [];
|
|
40
39
|
}
|
|
41
40
|
exports.getModelFields = getModelFields;
|
|
42
41
|
/**
|
|
43
42
|
* Gets id fields for the given model.
|
|
44
43
|
*/
|
|
45
44
|
function getIdFields(modelMeta, model, throwIfNotFound = false) {
|
|
46
|
-
|
|
45
|
+
let fields = modelMeta.fields[(0, lower_case_first_1.lowerCaseFirst)(model)];
|
|
47
46
|
if (!fields) {
|
|
48
|
-
|
|
47
|
+
if (throwIfNotFound) {
|
|
48
|
+
throw new Error(`Unable to load fields for ${model}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
fields = {};
|
|
52
|
+
}
|
|
49
53
|
}
|
|
50
54
|
const result = Object.values(fields).filter((f) => f.isId);
|
|
51
55
|
if (result.length === 0 && throwIfNotFound) {
|
|
@@ -58,7 +62,10 @@ exports.getIdFields = getIdFields;
|
|
|
58
62
|
* Uniformly enumerates an array or scalar.
|
|
59
63
|
*/
|
|
60
64
|
function enumerate(x) {
|
|
61
|
-
if (
|
|
65
|
+
if (x === null || x === undefined) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
else if (Array.isArray(x)) {
|
|
62
69
|
return x;
|
|
63
70
|
}
|
|
64
71
|
else {
|
|
@@ -66,6 +73,27 @@ function enumerate(x) {
|
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
exports.enumerate = enumerate;
|
|
76
|
+
/**
|
|
77
|
+
* Zip two arrays or scalars.
|
|
78
|
+
*/
|
|
79
|
+
function zip(x, y) {
|
|
80
|
+
if (Array.isArray(x)) {
|
|
81
|
+
if (!Array.isArray(y)) {
|
|
82
|
+
throw new Error('x and y should be both array or both scalar');
|
|
83
|
+
}
|
|
84
|
+
if (x.length !== y.length) {
|
|
85
|
+
throw new Error('x and y should have the same length');
|
|
86
|
+
}
|
|
87
|
+
return x.map((_, i) => [x[i], y[i]]);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
if (Array.isArray(y)) {
|
|
91
|
+
throw new Error('x and y should be both array or both scalar');
|
|
92
|
+
}
|
|
93
|
+
return [[x, y]];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.zip = zip;
|
|
69
97
|
/**
|
|
70
98
|
* Formats an object for pretty printing.
|
|
71
99
|
*/
|
|
@@ -81,27 +109,49 @@ function loadPrismaModule(prisma) {
|
|
|
81
109
|
var _a;
|
|
82
110
|
// https://github.com/prisma/prisma/discussions/17832
|
|
83
111
|
if ((_a = prisma._engineConfig) === null || _a === void 0 ? void 0 : _a.datamodelPath) {
|
|
112
|
+
// try engine path first
|
|
84
113
|
const loadPath = path_1.default.dirname(prisma._engineConfig.datamodelPath);
|
|
85
114
|
try {
|
|
86
115
|
const _prisma = require(loadPath).Prisma;
|
|
87
|
-
if (typeof _prisma !== 'undefined')
|
|
116
|
+
if (typeof _prisma !== 'undefined') {
|
|
88
117
|
return _prisma;
|
|
89
|
-
|
|
118
|
+
}
|
|
90
119
|
}
|
|
91
120
|
catch (_b) {
|
|
92
|
-
|
|
121
|
+
// noop
|
|
93
122
|
}
|
|
94
123
|
}
|
|
95
|
-
|
|
124
|
+
try {
|
|
125
|
+
// Prisma v4
|
|
96
126
|
return require('@prisma/client/runtime');
|
|
97
127
|
}
|
|
128
|
+
catch (_c) {
|
|
129
|
+
try {
|
|
130
|
+
// Prisma v5
|
|
131
|
+
return require('@prisma/client');
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
if (process.env.ZENSTACK_TEST === '1') {
|
|
135
|
+
// running in test, try cwd
|
|
136
|
+
try {
|
|
137
|
+
return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client/runtime'));
|
|
138
|
+
}
|
|
139
|
+
catch (_d) {
|
|
140
|
+
return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client'));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
throw err;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
98
148
|
}
|
|
99
|
-
function prismaClientValidationError(prisma,
|
|
149
|
+
function prismaClientValidationError(prisma, message) {
|
|
100
150
|
if (!_PrismaClientValidationError) {
|
|
101
151
|
const _prisma = loadPrismaModule(prisma);
|
|
102
152
|
_PrismaClientValidationError = _prisma.PrismaClientValidationError;
|
|
103
153
|
}
|
|
104
|
-
throw new _PrismaClientValidationError(
|
|
154
|
+
throw new _PrismaClientValidationError(message, { clientVersion: prisma._clientVersion });
|
|
105
155
|
}
|
|
106
156
|
exports.prismaClientValidationError = prismaClientValidationError;
|
|
107
157
|
function prismaClientKnownRequestError(prisma, ...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,uDAAkD;AAClD,gDAAwB;AACxB,2CAA6B;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FieldInfo } from '../types';
|
|
2
|
+
import { ModelMeta } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Context for visiting
|
|
5
|
+
*/
|
|
6
|
+
export type WhereVisitorContext = {
|
|
7
|
+
/**
|
|
8
|
+
* Parent data, can be used to replace fields
|
|
9
|
+
*/
|
|
10
|
+
parent: any;
|
|
11
|
+
/**
|
|
12
|
+
* Current field, undefined if toplevel
|
|
13
|
+
*/
|
|
14
|
+
field?: FieldInfo;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* WhereVisitor's callback actions
|
|
18
|
+
*/
|
|
19
|
+
export type WhereVisitorCallback = {
|
|
20
|
+
field?: (field: FieldInfo, data: any) => Promise<unknown>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Recursive visitor for where payload
|
|
24
|
+
*/
|
|
25
|
+
export declare class WhereVisitor {
|
|
26
|
+
private readonly modelMeta;
|
|
27
|
+
private readonly callback;
|
|
28
|
+
constructor(modelMeta: ModelMeta, callback: WhereVisitorCallback);
|
|
29
|
+
/**
|
|
30
|
+
* Start visiting
|
|
31
|
+
*/
|
|
32
|
+
visit(model: string, where: any): Promise<void>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.WhereVisitor = void 0;
|
|
15
|
+
const model_meta_1 = require("./model-meta");
|
|
16
|
+
const utils_1 = require("./utils");
|
|
17
|
+
const FILTER_OPERATORS = [
|
|
18
|
+
'equals',
|
|
19
|
+
'not',
|
|
20
|
+
'in',
|
|
21
|
+
'notIn',
|
|
22
|
+
'lt',
|
|
23
|
+
'lte',
|
|
24
|
+
'gt',
|
|
25
|
+
'gte',
|
|
26
|
+
'contains',
|
|
27
|
+
'search',
|
|
28
|
+
'startsWith',
|
|
29
|
+
'endsWith',
|
|
30
|
+
];
|
|
31
|
+
const RELATION_FILTER_OPERATORS = ['is', 'isNot', 'some', 'every', 'none'];
|
|
32
|
+
/**
|
|
33
|
+
* Recursive visitor for where payload
|
|
34
|
+
*/
|
|
35
|
+
class WhereVisitor {
|
|
36
|
+
constructor(modelMeta, callback) {
|
|
37
|
+
this.modelMeta = modelMeta;
|
|
38
|
+
this.callback = callback;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Start visiting
|
|
42
|
+
*/
|
|
43
|
+
visit(model, where) {
|
|
44
|
+
var _a, _b, _c, _d;
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
if (!where) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
for (const [k, v] of Object.entries(where)) {
|
|
50
|
+
if (['AND', 'OR', 'NOT'].includes(k)) {
|
|
51
|
+
for (const item of (0, utils_1.enumerate)(v)) {
|
|
52
|
+
yield this.visit(model, item);
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (RELATION_FILTER_OPERATORS.includes(k)) {
|
|
57
|
+
// visit into filter body
|
|
58
|
+
yield this.visit(model, v);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const field = (0, model_meta_1.resolveField)(this.modelMeta, model, k);
|
|
62
|
+
if (!field) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (typeof v === 'object') {
|
|
66
|
+
const filterOp = Object.keys(v).find((f) => FILTER_OPERATORS.includes(f));
|
|
67
|
+
if (filterOp) {
|
|
68
|
+
// reach into filter value
|
|
69
|
+
const newValue = yield ((_b = (_a = this.callback).field) === null || _b === void 0 ? void 0 : _b.call(_a, field, v[filterOp]));
|
|
70
|
+
v[filterOp] = newValue;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (Object.keys(v).some((f) => RELATION_FILTER_OPERATORS.includes(f))) {
|
|
74
|
+
// filter payload
|
|
75
|
+
yield this.visit(field.type, v);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// scalar field
|
|
80
|
+
const newValue = yield ((_d = (_c = this.callback).field) === null || _d === void 0 ? void 0 : _d.call(_c, field, v));
|
|
81
|
+
where[k] = newValue;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.WhereVisitor = WhereVisitor;
|
|
87
|
+
//# sourceMappingURL=where-visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where-visitor.js","sourceRoot":"","sources":["../../src/enhancements/where-visitor.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,uDAAuD;;;;;;;;;;;;AAGvD,6CAA4C;AAE5C,mCAAoC;AAwBpC,MAAM,gBAAgB,GAAG;IACrB,QAAQ;IACR,KAAK;IACL,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,UAAU;CACb,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAa,YAAY;IACrB,YAA6B,SAAoB,EAAmB,QAA8B;QAArE,cAAS,GAAT,SAAS,CAAW;QAAmB,aAAQ,GAAR,QAAQ,CAAsB;IAAG,CAAC;IAEtG;;OAEG;IACG,KAAK,CAAC,KAAa,EAAE,KAAU;;;YACjC,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO;aACV;YAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAClC,KAAK,MAAM,IAAI,IAAI,IAAA,iBAAS,EAAC,CAAC,CAAC,EAAE;wBAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBACjC;oBACD,SAAS;iBACZ;gBAED,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACvC,yBAAyB;oBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC3B,SAAS;iBACZ;gBAED,MAAM,KAAK,GAAG,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,EAAE;oBACR,SAAS;iBACZ;gBAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;oBACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,IAAI,QAAQ,EAAE;wBACV,0BAA0B;wBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,mDAAG,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA,CAAC;wBACjE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;wBACvB,SAAS;qBACZ;oBAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;wBACnE,iBAAiB;wBACjB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAChC,SAAS;qBACZ;iBACJ;gBAED,eAAe;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,mDAAG,KAAK,EAAE,CAAC,CAAC,CAAA,CAAC;gBACvD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACvB;;KACJ;CACJ;AAnDD,oCAmDC"}
|
package/error.js
CHANGED
|
@@ -3,15 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.isPrismaClientValidationError = exports.isPrismaClientUnknownRequestError = exports.isPrismaClientKnownRequestError = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
function isPrismaClientKnownRequestError(err) {
|
|
6
|
-
return err.__proto__
|
|
6
|
+
return findConstructorName(err.__proto__, 'PrismaClientKnownRequestError');
|
|
7
7
|
}
|
|
8
8
|
exports.isPrismaClientKnownRequestError = isPrismaClientKnownRequestError;
|
|
9
9
|
function isPrismaClientUnknownRequestError(err) {
|
|
10
|
-
return err.__proto__
|
|
10
|
+
return findConstructorName(err.__proto__, 'PrismaClientUnknownRequestError');
|
|
11
11
|
}
|
|
12
12
|
exports.isPrismaClientUnknownRequestError = isPrismaClientUnknownRequestError;
|
|
13
13
|
function isPrismaClientValidationError(err) {
|
|
14
|
-
return err.__proto__
|
|
14
|
+
return findConstructorName(err.__proto__, 'PrismaClientValidationError');
|
|
15
15
|
}
|
|
16
16
|
exports.isPrismaClientValidationError = isPrismaClientValidationError;
|
|
17
|
+
function findConstructorName(proto, name) {
|
|
18
|
+
if (!proto) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return proto.constructor.name === name || findConstructorName(proto.__proto__, name);
|
|
22
|
+
}
|
|
17
23
|
//# sourceMappingURL=error.js.map
|
package/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,+BAA+B,CAC3C,GAAQ;IAER,OAAO,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,+BAA+B,CAC3C,GAAQ;IAER,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;AAC/E,CAAC;AAJD,0EAIC;AAED,SAAgB,iCAAiC,CAAC,GAAQ;IACtD,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;AACjF,CAAC;AAFD,8EAEC;AAED,SAAgB,6BAA6B,CAAC,GAAQ;IAClD,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;AAC7E,CAAC;AAFD,sEAEC;AAED,SAAS,mBAAmB,CAAC,KAAU,EAAE,IAAY;IACjD,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACzF,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export * from './constants';
|
|
1
2
|
export * from './enhancements';
|
|
2
|
-
export * from './
|
|
3
|
+
export * from './error';
|
|
4
|
+
export * from './loader';
|
|
3
5
|
export * from './types';
|
|
4
6
|
export * from './validation';
|
|
5
|
-
export * from './
|
|
7
|
+
export * from './version';
|
package/index.js
CHANGED
|
@@ -14,9 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants"), exports);
|
|
17
18
|
__exportStar(require("./enhancements"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
19
|
+
__exportStar(require("./error"), exports);
|
|
20
|
+
__exportStar(require("./loader"), exports);
|
|
19
21
|
__exportStar(require("./types"), exports);
|
|
20
22
|
__exportStar(require("./validation"), exports);
|
|
21
|
-
__exportStar(require("./
|
|
23
|
+
__exportStar(require("./version"), exports);
|
|
22
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,iDAA+B;AAC/B,
|
|
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"}
|
package/loader.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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;
|
package/loader.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
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.getDefaultZodSchemas = exports.getDefaultPolicy = exports.getDefaultModelMeta = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
/**
|
|
10
|
+
* Load model metadata.
|
|
11
|
+
*
|
|
12
|
+
* @param loadPath The path to load model metadata from. If not provided,
|
|
13
|
+
* will use default load path.
|
|
14
|
+
*/
|
|
15
|
+
function getDefaultModelMeta(loadPath) {
|
|
16
|
+
try {
|
|
17
|
+
if (loadPath) {
|
|
18
|
+
const toLoad = path_1.default.resolve(loadPath, 'model-meta');
|
|
19
|
+
return require(toLoad).default;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return require('.zenstack/model-meta').default;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
if (process.env.ZENSTACK_TEST === '1' && !loadPath) {
|
|
27
|
+
try {
|
|
28
|
+
// special handling for running as tests, try resolving relative to CWD
|
|
29
|
+
return require(path_1.default.join(process.cwd(), 'node_modules', '.zenstack', 'model-meta')).default;
|
|
30
|
+
}
|
|
31
|
+
catch (_b) {
|
|
32
|
+
throw new Error('Model meta cannot be loaded. Please make sure "zenstack generate" has been run.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new Error('Model meta cannot be loaded. Please make sure "zenstack generate" has been run.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.getDefaultModelMeta = getDefaultModelMeta;
|
|
39
|
+
/**
|
|
40
|
+
* Load access policies.
|
|
41
|
+
*
|
|
42
|
+
* @param loadPath The path to load access policies from. If not provided,
|
|
43
|
+
* will use default load path.
|
|
44
|
+
*/
|
|
45
|
+
function getDefaultPolicy(loadPath) {
|
|
46
|
+
try {
|
|
47
|
+
if (loadPath) {
|
|
48
|
+
const toLoad = path_1.default.resolve(loadPath, 'policy');
|
|
49
|
+
return require(toLoad).default;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return require('.zenstack/policy').default;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (_a) {
|
|
56
|
+
if (process.env.ZENSTACK_TEST === '1' && !loadPath) {
|
|
57
|
+
try {
|
|
58
|
+
// special handling for running as tests, try resolving relative to CWD
|
|
59
|
+
return require(path_1.default.join(process.cwd(), 'node_modules', '.zenstack', 'policy')).default;
|
|
60
|
+
}
|
|
61
|
+
catch (_b) {
|
|
62
|
+
throw new Error('Policy definition cannot be loaded from default location. Please make sure "zenstack generate" has been run.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
throw new Error('Policy definition cannot be loaded from default location. Please make sure "zenstack generate" has been run.');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.getDefaultPolicy = getDefaultPolicy;
|
|
69
|
+
/**
|
|
70
|
+
* Load zod schemas.
|
|
71
|
+
*
|
|
72
|
+
* @param loadPath The path to load zod schemas from. If not provided,
|
|
73
|
+
* will use default load path.
|
|
74
|
+
*/
|
|
75
|
+
function getDefaultZodSchemas(loadPath) {
|
|
76
|
+
try {
|
|
77
|
+
if (loadPath) {
|
|
78
|
+
const toLoad = path_1.default.resolve(loadPath, 'zod');
|
|
79
|
+
return require(toLoad);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return require('.zenstack/zod');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (_a) {
|
|
86
|
+
if (process.env.ZENSTACK_TEST === '1' && !loadPath) {
|
|
87
|
+
try {
|
|
88
|
+
// special handling for running as tests, try resolving relative to CWD
|
|
89
|
+
return require(path_1.default.join(process.cwd(), 'node_modules', '.zenstack', 'zod'));
|
|
90
|
+
}
|
|
91
|
+
catch (_b) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.getDefaultZodSchemas = getDefaultZodSchemas;
|
|
99
|
+
//# sourceMappingURL=loader.js.map
|
package/loader.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,gDAAwB;AAGxB;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,QAA4B;IAC5D,IAAI;QACA,IAAI,QAAQ,EAAE;YACV,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SAClC;aAAM;YACH,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;SAClD;KACJ;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;aAC/F;YAAC,WAAM;gBACJ,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACtG;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;KACtG;AACL,CAAC;AAnBD,kDAmBC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,QAA4B;IACzD,IAAI;QACA,IAAI,QAAQ,EAAE;YACV,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SAClC;aAAM;YACH,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;SAC9C;KACJ;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;aAC3F;YAAC,WAAM;gBACJ,MAAM,IAAI,KAAK,CACX,8GAA8G,CACjH,CAAC;aACL;SACJ;QACD,MAAM,IAAI,KAAK,CACX,8GAA8G,CACjH,CAAC;KACL;AACL,CAAC;AAvBD,4CAuBC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,QAA4B;IAC7D,IAAI;QACA,IAAI,QAAQ,EAAE;YACV,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;SAC1B;aAAM;YACH,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;SACnC;KACJ;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;aAChF;YAAC,WAAM;gBACJ,OAAO,SAAS,CAAC;aACpB;SACJ;QACD,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAnBD,oDAmBC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/runtime",
|
|
3
3
|
"displayName": "ZenStack Runtime Library",
|
|
4
|
-
"version": "1.0.0
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"description": "Runtime of ZenStack for both client-side and server-side environments.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -9,20 +9,47 @@
|
|
|
9
9
|
},
|
|
10
10
|
"main": "index.js",
|
|
11
11
|
"types": "index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"default": "./index.js"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": {
|
|
17
|
+
"default": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
"./zod": {
|
|
20
|
+
"default": "./zod/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./zod/input": {
|
|
23
|
+
"default": "./zod/input.js"
|
|
24
|
+
},
|
|
25
|
+
"./zod/models": {
|
|
26
|
+
"default": "./zod/models.js"
|
|
27
|
+
},
|
|
28
|
+
"./zod/objects": {
|
|
29
|
+
"default": "./zod/objects.js"
|
|
30
|
+
},
|
|
31
|
+
"./browser": {
|
|
32
|
+
"import": "./browser/index.mjs",
|
|
33
|
+
"require": "./browser/index.js",
|
|
34
|
+
"default": "./browser/index.js",
|
|
35
|
+
"types": "./browser/index.d.ts"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
12
38
|
"publishConfig": {
|
|
13
39
|
"directory": "dist",
|
|
14
40
|
"linkDirectory": true
|
|
15
41
|
},
|
|
16
42
|
"dependencies": {
|
|
17
|
-
"@paralleldrive/cuid2": "^2.2.0",
|
|
18
43
|
"@types/bcryptjs": "^2.4.2",
|
|
19
44
|
"bcryptjs": "^2.4.3",
|
|
45
|
+
"buffer": "^6.0.3",
|
|
20
46
|
"change-case": "^4.1.2",
|
|
21
47
|
"colors": "1.4.0",
|
|
22
48
|
"decimal.js": "^10.4.2",
|
|
23
49
|
"deepcopy": "^2.1.0",
|
|
24
50
|
"lower-case-first": "^2.0.2",
|
|
25
51
|
"pluralize": "^8.0.0",
|
|
52
|
+
"semver": "^7.3.8",
|
|
26
53
|
"superjson": "^1.11.0",
|
|
27
54
|
"tslib": "^2.4.1",
|
|
28
55
|
"upper-case-first": "^2.0.2",
|
|
@@ -35,20 +62,19 @@
|
|
|
35
62
|
"homepage": "https://zenstack.dev",
|
|
36
63
|
"license": "MIT",
|
|
37
64
|
"devDependencies": {
|
|
38
|
-
"@prisma/client": "^4.0.0",
|
|
39
65
|
"@types/bcryptjs": "^2.4.2",
|
|
40
66
|
"@types/jest": "^29.5.0",
|
|
41
|
-
"@types/
|
|
42
|
-
"@types/node": "^14.18.29",
|
|
67
|
+
"@types/node": "^18.0.0",
|
|
43
68
|
"@types/pluralize": "^0.0.29",
|
|
69
|
+
"@types/semver": "^7.3.13",
|
|
44
70
|
"copyfiles": "^2.4.1",
|
|
45
71
|
"rimraf": "^3.0.2",
|
|
46
72
|
"typescript": "^4.9.3"
|
|
47
73
|
},
|
|
48
74
|
"scripts": {
|
|
49
75
|
"clean": "rimraf dist",
|
|
50
|
-
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ../../LICENSE dist && copyfiles -u1 'res/**/*' dist && pnpm pack dist --pack-destination '../../../.build'",
|
|
51
|
-
"watch": "tsc --watch",
|
|
76
|
+
"build": "pnpm lint && pnpm clean && tsc && tsup-node && copyfiles ./package.json ./README.md ../../LICENSE dist && copyfiles -u1 'res/**/*' dist && pnpm pack dist --pack-destination '../../../.build'",
|
|
77
|
+
"watch": "concurrently \"tsc --watch\" \"tsup-node --watch\"",
|
|
52
78
|
"lint": "eslint src --ext ts",
|
|
53
79
|
"publish-dev": "pnpm publish --tag dev"
|
|
54
80
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
+
export type PrismaPromise<T> = Promise<T> & Record<string, (args?: any) => PrismaPromise<any>>;
|
|
1
2
|
/**
|
|
2
3
|
* Weakly-typed database access methods
|
|
3
4
|
*/
|
|
4
5
|
export interface DbOperations {
|
|
5
|
-
findMany(args?: unknown): Promise<
|
|
6
|
-
findFirst(args
|
|
7
|
-
findFirstOrThrow(args
|
|
8
|
-
findUnique(args: unknown):
|
|
9
|
-
findUniqueOrThrow(args: unknown):
|
|
10
|
-
create(args: unknown): Promise<
|
|
6
|
+
findMany(args?: unknown): Promise<any[]>;
|
|
7
|
+
findFirst(args?: unknown): PrismaPromise<any>;
|
|
8
|
+
findFirstOrThrow(args?: unknown): PrismaPromise<any>;
|
|
9
|
+
findUnique(args: unknown): PrismaPromise<any>;
|
|
10
|
+
findUniqueOrThrow(args: unknown): PrismaPromise<any>;
|
|
11
|
+
create(args: unknown): Promise<any>;
|
|
11
12
|
createMany(args: unknown, skipDuplicates?: boolean): Promise<{
|
|
12
13
|
count: number;
|
|
13
14
|
}>;
|
|
14
|
-
update(args: unknown): Promise<
|
|
15
|
+
update(args: unknown): Promise<any>;
|
|
15
16
|
updateMany(args: unknown): Promise<{
|
|
16
17
|
count: number;
|
|
17
18
|
}>;
|
|
18
|
-
upsert(args: unknown): Promise<
|
|
19
|
-
delete(args: unknown): Promise<
|
|
19
|
+
upsert(args: unknown): Promise<any>;
|
|
20
|
+
delete(args: unknown): Promise<any>;
|
|
20
21
|
deleteMany(args?: unknown): Promise<{
|
|
21
22
|
count: number;
|
|
22
23
|
}>;
|
|
23
|
-
aggregate(args: unknown): Promise<
|
|
24
|
-
groupBy(args: unknown): Promise<
|
|
25
|
-
count(args?: unknown): Promise<
|
|
24
|
+
aggregate(args: unknown): Promise<any>;
|
|
25
|
+
groupBy(args: unknown): Promise<any>;
|
|
26
|
+
count(args?: unknown): Promise<any>;
|
|
27
|
+
subscribe(args?: unknown): Promise<any>;
|
|
28
|
+
fields: Record<string, any>;
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
28
31
|
* Kinds of access policy
|
|
@@ -44,6 +47,9 @@ export type QueryContext = {
|
|
|
44
47
|
* Current login user (provided by @see RequestHandlerOptions)
|
|
45
48
|
*/
|
|
46
49
|
user?: AuthUser;
|
|
50
|
+
/**
|
|
51
|
+
* Pre-update value of the entity
|
|
52
|
+
*/
|
|
47
53
|
preValue?: any;
|
|
48
54
|
};
|
|
49
55
|
export type RuntimeAttribute = {
|
|
@@ -93,9 +99,17 @@ export type FieldInfo = {
|
|
|
93
99
|
* If the field is the owner side of a relation
|
|
94
100
|
*/
|
|
95
101
|
isRelationOwner: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* If the field is a foreign key field
|
|
104
|
+
*/
|
|
105
|
+
isForeignKey: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Mapping from foreign key field names to relation field names
|
|
108
|
+
*/
|
|
109
|
+
foreignKeyMapping?: Record<string, string>;
|
|
96
110
|
};
|
|
97
111
|
export type DbClientContract = Record<string, DbOperations> & {
|
|
98
|
-
$transaction: <T>(action: (tx: Record<string, DbOperations>) => Promise<T
|
|
112
|
+
$transaction: <T>(action: (tx: Record<string, DbOperations>) => Promise<T>, options?: unknown) => Promise<T>;
|
|
99
113
|
};
|
|
100
|
-
export declare const PrismaWriteActions: readonly ["create", "createMany", "connectOrCreate", "update", "updateMany", "upsert", "connect", "disconnect", "delete", "deleteMany"];
|
|
114
|
+
export declare const PrismaWriteActions: readonly ["create", "createMany", "connectOrCreate", "update", "updateMany", "upsert", "connect", "disconnect", "set", "delete", "deleteMany"];
|
|
101
115
|
export type PrismaWriteActionType = (typeof PrismaWriteActions)[number];
|
package/types.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.PrismaWriteActions = void 0;
|
|
4
5
|
exports.PrismaWriteActions = [
|
|
@@ -10,6 +11,7 @@ exports.PrismaWriteActions = [
|
|
|
10
11
|
'upsert',
|
|
11
12
|
'connect',
|
|
12
13
|
'disconnect',
|
|
14
|
+
'set',
|
|
13
15
|
'delete',
|
|
14
16
|
'deleteMany',
|
|
15
17
|
];
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AA+H1C,QAAA,kBAAkB,GAAG;IAC9B,QAAQ;IACR,YAAY;IACZ,iBAAiB;IACjB,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,YAAY;CACN,CAAC"}
|
package/validation.d.ts
CHANGED
|
@@ -17,3 +17,8 @@ export declare function validate(validator: z.ZodType, data: unknown): void;
|
|
|
17
17
|
* @returns
|
|
18
18
|
*/
|
|
19
19
|
export declare function hasAllFields(obj: any, fields: string[]): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Check if the given objects have equal values for the given fields. Returns
|
|
22
|
+
* false if either object is nullish or is not an object.
|
|
23
|
+
*/
|
|
24
|
+
export declare function allFieldsEqual(obj1: any, obj2: any, fields: string[]): boolean;
|