@zenstackhq/runtime 0.6.0-pre.2 → 1.0.0-alpha.20
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 +4 -0
- package/constants.js +8 -0
- package/constants.js.map +1 -0
- package/enhancements/index.d.ts +4 -0
- package/enhancements/index.js +21 -0
- package/enhancements/index.js.map +1 -0
- package/enhancements/model-meta.d.ts +9 -0
- package/enhancements/model-meta.js +25 -0
- package/enhancements/model-meta.js.map +1 -0
- package/enhancements/nested-write-vistor.d.ts +65 -0
- package/enhancements/nested-write-vistor.js +155 -0
- package/enhancements/nested-write-vistor.js.map +1 -0
- package/enhancements/omit.d.ts +5 -0
- package/enhancements/omit.js +60 -0
- package/enhancements/omit.js.map +1 -0
- package/enhancements/password.d.ts +5 -0
- package/enhancements/password.js +66 -0
- package/enhancements/password.js.map +1 -0
- package/enhancements/policy/handler.d.ts +36 -0
- package/enhancements/policy/handler.js +278 -0
- package/enhancements/policy/handler.js.map +1 -0
- package/enhancements/policy/index.d.ts +17 -0
- package/enhancements/policy/index.js +31 -0
- package/enhancements/policy/index.js.map +1 -0
- package/{lib/proxy → enhancements/policy}/logger.d.ts +3 -0
- package/{lib/proxy → enhancements/policy}/logger.js +4 -0
- package/enhancements/policy/logger.js.map +1 -0
- package/enhancements/policy/policy-utils.d.ts +78 -0
- package/enhancements/policy/policy-utils.js +575 -0
- package/enhancements/policy/policy-utils.js.map +1 -0
- package/enhancements/preset.d.ts +16 -0
- package/enhancements/preset.js +24 -0
- package/enhancements/preset.js.map +1 -0
- package/enhancements/proxy.d.ts +75 -0
- package/enhancements/proxy.js +196 -0
- package/enhancements/proxy.js.map +1 -0
- package/enhancements/types.d.ts +24 -0
- package/{lib/config.js → enhancements/types.js} +1 -1
- package/enhancements/types.js.map +1 -0
- package/enhancements/utils.d.ts +16 -0
- package/enhancements/utils.js +31 -0
- package/enhancements/utils.js.map +1 -0
- package/error.d.ts +10 -0
- package/error.js +17 -0
- package/error.js.map +1 -0
- package/index.d.ts +5 -0
- package/{lib/index.js → index.js} +3 -4
- package/index.js.map +1 -0
- package/package.json +7 -5
- package/{lib/serialization-utils.d.ts → serialization-utils.d.ts} +0 -0
- package/{lib/serialization-utils.js → serialization-utils.js} +0 -0
- package/serialization-utils.js.map +1 -0
- package/types.d.ts +73 -0
- package/types.js +14 -0
- package/types.js.map +1 -0
- package/{lib/validation.d.ts → validation.d.ts} +0 -0
- package/{lib/validation.js → validation.js} +0 -0
- package/validation.js.map +1 -0
- package/{lib/version.d.ts → version.d.ts} +0 -0
- package/{lib/version.js → version.js} +6 -1
- package/version.js.map +1 -0
- package/client/index.d.ts +0 -3
- package/client/index.js +0 -11
- package/lib/config.d.ts +0 -14
- package/lib/config.js.map +0 -1
- package/lib/constants.d.ts +0 -12
- package/lib/constants.js +0 -16
- package/lib/constants.js.map +0 -1
- package/lib/handler/data/crud.d.ts +0 -17
- package/lib/handler/data/crud.js +0 -255
- package/lib/handler/data/crud.js.map +0 -1
- package/lib/handler/data/handler.d.ts +0 -20
- package/lib/handler/data/handler.js +0 -150
- package/lib/handler/data/handler.js.map +0 -1
- package/lib/handler/data/nested-write-vistor.d.ts +0 -31
- package/lib/handler/data/nested-write-vistor.js +0 -67
- package/lib/handler/data/nested-write-vistor.js.map +0 -1
- package/lib/handler/data/policy-utils.d.ts +0 -73
- package/lib/handler/data/policy-utils.js +0 -447
- package/lib/handler/data/policy-utils.js.map +0 -1
- package/lib/handler/index.d.ts +0 -1
- package/lib/handler/index.js +0 -9
- package/lib/handler/index.js.map +0 -1
- package/lib/handler/types.d.ts +0 -28
- package/lib/handler/types.js +0 -36
- package/lib/handler/types.js.map +0 -1
- package/lib/index.d.ts +0 -6
- package/lib/index.js.map +0 -1
- package/lib/policy.d.ts +0 -11
- package/lib/policy.js +0 -10
- package/lib/policy.js.map +0 -1
- package/lib/proxy/handler.d.ts +0 -37
- package/lib/proxy/handler.js +0 -333
- package/lib/proxy/handler.js.map +0 -1
- package/lib/proxy/logger.js.map +0 -1
- package/lib/proxy/nested-write-vistor.d.ts +0 -30
- package/lib/proxy/nested-write-vistor.js +0 -69
- package/lib/proxy/nested-write-vistor.js.map +0 -1
- package/lib/proxy/policy-utils.d.ts +0 -78
- package/lib/proxy/policy-utils.js +0 -508
- package/lib/proxy/policy-utils.js.map +0 -1
- package/lib/request-handler.d.ts +0 -21
- package/lib/request-handler.js +0 -37
- package/lib/request-handler.js.map +0 -1
- package/lib/request.d.ts +0 -37
- package/lib/request.js +0 -164
- package/lib/request.js.map +0 -1
- package/lib/serialization-utils.js.map +0 -1
- package/lib/service.d.ts +0 -32
- package/lib/service.js +0 -184
- package/lib/service.js.map +0 -1
- package/lib/types.d.ts +0 -185
- package/lib/types.js +0 -71
- package/lib/types.js.map +0 -1
- package/lib/validation.js.map +0 -1
- package/lib/version.js.map +0 -1
- package/server/index.d.ts +0 -16
- package/server/index.js +0 -6
- package/types/index.d.ts +0 -1
- package/types/index.js +0 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { DbClientContract } from '../types';
|
|
2
|
+
import { ModelMeta } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Prisma batch write operation result
|
|
5
|
+
*/
|
|
6
|
+
export type BatchResult = {
|
|
7
|
+
count: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Interface for proxy that intercepts Prisma operations.
|
|
11
|
+
*/
|
|
12
|
+
export interface PrismaProxyHandler {
|
|
13
|
+
findUnique(args: any): Promise<unknown | null>;
|
|
14
|
+
findUniqueOrThrow(args: any): Promise<unknown>;
|
|
15
|
+
findFirst(args: any): Promise<unknown | null>;
|
|
16
|
+
findFirstOrThrow(args: any): Promise<unknown>;
|
|
17
|
+
findMany(args: any): Promise<unknown[]>;
|
|
18
|
+
create(args: any): Promise<unknown>;
|
|
19
|
+
createMany(args: any, skipDuplicates?: boolean): Promise<BatchResult>;
|
|
20
|
+
update(args: any): Promise<unknown>;
|
|
21
|
+
updateMany(args: any): Promise<BatchResult>;
|
|
22
|
+
upsert(args: any): Promise<unknown>;
|
|
23
|
+
delete(args: any): Promise<unknown>;
|
|
24
|
+
deleteMany(args: any): Promise<BatchResult>;
|
|
25
|
+
aggregate(args: any): Promise<unknown>;
|
|
26
|
+
groupBy(args: any): Promise<unknown>;
|
|
27
|
+
count(args: any): Promise<unknown | number>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* All Prisma operation names
|
|
31
|
+
*/
|
|
32
|
+
export type PrismaProxyActions = keyof PrismaProxyHandler;
|
|
33
|
+
/**
|
|
34
|
+
* A default implementation of @see PrismaProxyHandler which directly
|
|
35
|
+
* delegates to the wrapped Prisma client. It offers a few overridable
|
|
36
|
+
* methods to allow more easily inject custom logic.
|
|
37
|
+
*/
|
|
38
|
+
export declare class DefaultPrismaProxyHandler implements PrismaProxyHandler {
|
|
39
|
+
protected readonly prisma: DbClientContract;
|
|
40
|
+
protected readonly model: string;
|
|
41
|
+
constructor(prisma: DbClientContract, model: string);
|
|
42
|
+
findUnique(args: any): Promise<unknown>;
|
|
43
|
+
findUniqueOrThrow(args: any): Promise<unknown>;
|
|
44
|
+
findFirst(args: any): Promise<unknown>;
|
|
45
|
+
findFirstOrThrow(args: any): Promise<unknown>;
|
|
46
|
+
findMany(args: any): Promise<unknown[]>;
|
|
47
|
+
create(args: any): Promise<unknown>;
|
|
48
|
+
createMany(args: any, skipDuplicates?: boolean | undefined): Promise<{
|
|
49
|
+
count: number;
|
|
50
|
+
}>;
|
|
51
|
+
update(args: any): Promise<unknown>;
|
|
52
|
+
updateMany(args: any): Promise<{
|
|
53
|
+
count: number;
|
|
54
|
+
}>;
|
|
55
|
+
upsert(args: any): Promise<unknown>;
|
|
56
|
+
delete(args: any): Promise<unknown>;
|
|
57
|
+
deleteMany(args: any): Promise<{
|
|
58
|
+
count: number;
|
|
59
|
+
}>;
|
|
60
|
+
aggregate(args: any): Promise<unknown>;
|
|
61
|
+
groupBy(args: any): Promise<unknown>;
|
|
62
|
+
count(args: any): Promise<unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Processes result entities before they're returned
|
|
65
|
+
*/
|
|
66
|
+
protected processResultEntity<T>(data: T): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Processes query args before they're passed to Prisma.
|
|
69
|
+
*/
|
|
70
|
+
protected preprocessArgs(method: PrismaProxyActions, args: any): Promise<any>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Makes a Prisma client proxy.
|
|
74
|
+
*/
|
|
75
|
+
export declare function makeProxy<T extends PrismaProxyHandler>(prisma: any, modelMeta: ModelMeta, makeHandler: (prisma: object, model: string) => T, name?: string, inTransaction?: boolean): any;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.makeProxy = exports.DefaultPrismaProxyHandler = void 0;
|
|
14
|
+
/**
|
|
15
|
+
* A default implementation of @see PrismaProxyHandler which directly
|
|
16
|
+
* delegates to the wrapped Prisma client. It offers a few overridable
|
|
17
|
+
* methods to allow more easily inject custom logic.
|
|
18
|
+
*/
|
|
19
|
+
class DefaultPrismaProxyHandler {
|
|
20
|
+
constructor(prisma, model) {
|
|
21
|
+
this.prisma = prisma;
|
|
22
|
+
this.model = model;
|
|
23
|
+
}
|
|
24
|
+
findUnique(args) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
args = yield this.preprocessArgs('findUnique', args);
|
|
27
|
+
const r = yield this.prisma[this.model].findUnique(args);
|
|
28
|
+
return this.processResultEntity(r);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
findUniqueOrThrow(args) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
args = yield this.preprocessArgs('findUniqueOrThrow', args);
|
|
34
|
+
const r = yield this.prisma[this.model].findUniqueOrThrow(args);
|
|
35
|
+
return this.processResultEntity(r);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
findFirst(args) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
args = yield this.preprocessArgs('findFirst', args);
|
|
41
|
+
const r = this.prisma[this.model].findFirst(args);
|
|
42
|
+
return this.processResultEntity(r);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
findFirstOrThrow(args) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
args = yield this.preprocessArgs('findFirstOrThrow', args);
|
|
48
|
+
const r = yield this.prisma[this.model].findFirstOrThrow(args);
|
|
49
|
+
return this.processResultEntity(r);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
findMany(args) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
args = yield this.preprocessArgs('findMany', args);
|
|
55
|
+
const r = yield this.prisma[this.model].findMany(args);
|
|
56
|
+
return this.processResultEntity(r);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
create(args) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
args = yield this.preprocessArgs('create', args);
|
|
62
|
+
const r = yield this.prisma[this.model].create(args);
|
|
63
|
+
return this.processResultEntity(r);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
createMany(args, skipDuplicates) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
args = yield this.preprocessArgs('createMany', args);
|
|
69
|
+
return this.prisma[this.model].createMany(args, skipDuplicates);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
update(args) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
args = yield this.preprocessArgs('update', args);
|
|
75
|
+
const r = this.prisma[this.model].update(args);
|
|
76
|
+
return this.processResultEntity(r);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
updateMany(args) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
args = yield this.preprocessArgs('updateMany', args);
|
|
82
|
+
return this.prisma[this.model].updateMany(args);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
upsert(args) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
args = yield this.preprocessArgs('upsert', args);
|
|
88
|
+
const r = this.prisma[this.model].upsert(args);
|
|
89
|
+
return this.processResultEntity(r);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
delete(args) {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
args = yield this.preprocessArgs('delete', args);
|
|
95
|
+
const r = this.prisma[this.model].delete(args);
|
|
96
|
+
return this.processResultEntity(r);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
deleteMany(args) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
args = yield this.preprocessArgs('deleteMany', args);
|
|
102
|
+
return this.prisma[this.model].deleteMany(args);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
aggregate(args) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
args = yield this.preprocessArgs('aggregate', args);
|
|
108
|
+
return this.prisma[this.model].aggregate(args);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
groupBy(args) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
args = yield this.preprocessArgs('groupBy', args);
|
|
114
|
+
return this.prisma[this.model].groupBy(args);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
count(args) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
args = yield this.preprocessArgs('count', args);
|
|
120
|
+
return this.prisma[this.model].count(args);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Processes result entities before they're returned
|
|
125
|
+
*/
|
|
126
|
+
processResultEntity(data) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
return data;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Processes query args before they're passed to Prisma.
|
|
133
|
+
*/
|
|
134
|
+
preprocessArgs(method, args) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
return args;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.DefaultPrismaProxyHandler = DefaultPrismaProxyHandler;
|
|
141
|
+
/**
|
|
142
|
+
* Makes a Prisma client proxy.
|
|
143
|
+
*/
|
|
144
|
+
function makeProxy(prisma, modelMeta, makeHandler, name = 'unnamed_enhancer', inTransaction = false) {
|
|
145
|
+
const models = Object.keys(modelMeta.fields);
|
|
146
|
+
const proxy = new Proxy(prisma, {
|
|
147
|
+
get: (target, prop, receiver) => {
|
|
148
|
+
// enhancer metadata
|
|
149
|
+
if (prop === '__zenstack_enhancer') {
|
|
150
|
+
return name;
|
|
151
|
+
}
|
|
152
|
+
// transaction metadata
|
|
153
|
+
if (prop === '__zenstack_tx') {
|
|
154
|
+
return inTransaction;
|
|
155
|
+
}
|
|
156
|
+
if (prop === '$transaction') {
|
|
157
|
+
// for interactive transactions, we need to proxy the transaction function so that
|
|
158
|
+
// when it runs the callback, it provides a proxy to the Prisma client wrapped with
|
|
159
|
+
// the same handler
|
|
160
|
+
//
|
|
161
|
+
// TODO: batch transaction is not supported yet, how?
|
|
162
|
+
const $transaction = Reflect.get(target, prop, receiver);
|
|
163
|
+
if ($transaction) {
|
|
164
|
+
return (input, ...rest) => {
|
|
165
|
+
if (Array.isArray(input)) {
|
|
166
|
+
throw new Error('Sequential operations transaction is not supported by ZenStack enhanced Prisma client. Please use interactive transaction instead.');
|
|
167
|
+
}
|
|
168
|
+
else if (typeof input !== 'function') {
|
|
169
|
+
throw new Error('A function value input is expected');
|
|
170
|
+
}
|
|
171
|
+
const txFunc = input;
|
|
172
|
+
return $transaction.bind(target)((tx) => {
|
|
173
|
+
const txProxy = makeProxy(tx, modelMeta, makeHandler, name + '$tx', true);
|
|
174
|
+
return txFunc(txProxy);
|
|
175
|
+
}, ...rest);
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
return $transaction;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (typeof prop !== 'string' || prop.startsWith('$') || !models.includes(prop)) {
|
|
183
|
+
// skip non-model fields
|
|
184
|
+
return Reflect.get(target, prop, receiver);
|
|
185
|
+
}
|
|
186
|
+
const propVal = Reflect.get(target, prop, receiver);
|
|
187
|
+
if (!propVal) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
return makeHandler(target, prop);
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
return proxy;
|
|
194
|
+
}
|
|
195
|
+
exports.makeProxy = makeProxy;
|
|
196
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/enhancements/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FieldInfo, PolicyOperationKind, QueryContext } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* ZModel data model metadata
|
|
5
|
+
*/
|
|
6
|
+
export type ModelMeta = {
|
|
7
|
+
fields: Record<string, Record<string, FieldInfo>>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Function for getting policy guard with a given context
|
|
11
|
+
*/
|
|
12
|
+
export type PolicyFunc = (context: QueryContext) => object;
|
|
13
|
+
/**
|
|
14
|
+
* Policy definition
|
|
15
|
+
*/
|
|
16
|
+
export type PolicyDef = {
|
|
17
|
+
guard: Record<string, {
|
|
18
|
+
allowAll?: boolean;
|
|
19
|
+
denyAll?: boolean;
|
|
20
|
+
} & Partial<Record<PolicyOperationKind, PolicyFunc>> & {
|
|
21
|
+
preValueSelect?: object;
|
|
22
|
+
}>;
|
|
23
|
+
schema: Record<string, z.ZodSchema>;
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/enhancements/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps a value into array if it's not already one
|
|
3
|
+
*/
|
|
4
|
+
export declare function ensureArray<T>(value: T): T[];
|
|
5
|
+
/**
|
|
6
|
+
* Gets field names in a data model entity, filtering out internal fields.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getModelFields(data: object): string[];
|
|
9
|
+
/**
|
|
10
|
+
* Array or scalar
|
|
11
|
+
*/
|
|
12
|
+
export type Enumerable<T> = T | Array<T>;
|
|
13
|
+
/**
|
|
14
|
+
* Uniformly enumerates an array or scalar.
|
|
15
|
+
*/
|
|
16
|
+
export declare function enumerate<T>(x: Enumerable<T>): T[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enumerate = exports.getModelFields = exports.ensureArray = void 0;
|
|
4
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a value into array if it's not already one
|
|
7
|
+
*/
|
|
8
|
+
function ensureArray(value) {
|
|
9
|
+
return Array.isArray(value) ? value : [value];
|
|
10
|
+
}
|
|
11
|
+
exports.ensureArray = ensureArray;
|
|
12
|
+
/**
|
|
13
|
+
* Gets field names in a data model entity, filtering out internal fields.
|
|
14
|
+
*/
|
|
15
|
+
function getModelFields(data) {
|
|
16
|
+
return Object.keys(data).filter((f) => !sdk_1.AUXILIARY_FIELDS.includes(f));
|
|
17
|
+
}
|
|
18
|
+
exports.getModelFields = getModelFields;
|
|
19
|
+
/**
|
|
20
|
+
* Uniformly enumerates an array or scalar.
|
|
21
|
+
*/
|
|
22
|
+
function enumerate(x) {
|
|
23
|
+
if (Array.isArray(x)) {
|
|
24
|
+
return x;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return [x];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.enumerate = enumerate;
|
|
31
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD;;GAEG;AACH,SAAgB,WAAW,CAAI,KAAQ;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAFD,kCAEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC;AAOD;;GAEG;AACH,SAAgB,SAAS,CAAI,CAAgB;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAClB,OAAO,CAAC,CAAC;KACZ;SAAM;QACH,OAAO,CAAC,CAAC,CAAC,CAAC;KACd;AACL,CAAC;AAND,8BAMC"}
|
package/error.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function isPrismaClientKnownRequestError(err: any): err is {
|
|
2
|
+
code: string;
|
|
3
|
+
message: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function isPrismaClientUnknownRequestError(err: any): err is {
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function isPrismaClientValidationError(err: any): err is {
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
package/error.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPrismaClientValidationError = exports.isPrismaClientUnknownRequestError = exports.isPrismaClientKnownRequestError = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
function isPrismaClientKnownRequestError(err) {
|
|
6
|
+
return err.__proto__.constructor.name === 'PrismaClientKnownRequestError';
|
|
7
|
+
}
|
|
8
|
+
exports.isPrismaClientKnownRequestError = isPrismaClientKnownRequestError;
|
|
9
|
+
function isPrismaClientUnknownRequestError(err) {
|
|
10
|
+
return err.__proto__.constructor.name === 'PrismaClientUnknownRequestError';
|
|
11
|
+
}
|
|
12
|
+
exports.isPrismaClientUnknownRequestError = isPrismaClientUnknownRequestError;
|
|
13
|
+
function isPrismaClientValidationError(err) {
|
|
14
|
+
return err.__proto__.constructor.name === 'PrismaClientValidationError';
|
|
15
|
+
}
|
|
16
|
+
exports.isPrismaClientValidationError = isPrismaClientValidationError;
|
|
17
|
+
//# sourceMappingURL=error.js.map
|
package/error.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,+BAA+B,CAAC,GAAQ;IACpD,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,KAAK,+BAA+B,CAAC;AAC9E,CAAC;AAFD,0EAEC;AAED,SAAgB,iCAAiC,CAAC,GAAQ;IACtD,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,KAAK,iCAAiC,CAAC;AAChF,CAAC;AAFD,8EAEC;AAED,SAAgB,6BAA6B,CAAC,GAAQ;IAClD,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,KAAK,6BAA6B,CAAC;AAC5E,CAAC;AAFD,sEAEC"}
|
package/index.d.ts
ADDED
|
@@ -14,10 +14,9 @@ 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("./enhancements"), exports);
|
|
18
|
+
__exportStar(require("./enhancements/policy"), exports);
|
|
17
19
|
__exportStar(require("./types"), exports);
|
|
18
|
-
__exportStar(require("./config"), exports);
|
|
19
|
-
__exportStar(require("./service"), exports);
|
|
20
|
-
__exportStar(require("./request-handler"), exports);
|
|
21
20
|
__exportStar(require("./validation"), exports);
|
|
22
|
-
__exportStar(require("./
|
|
21
|
+
__exportStar(require("./error"), exports);
|
|
23
22
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wDAAsC;AACtC,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/runtime",
|
|
3
3
|
"displayName": "ZenStack Runtime Library",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "1.0.0-alpha.20",
|
|
5
5
|
"description": "Runtime of ZenStack for both client-side and server-side environments.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -23,13 +23,14 @@
|
|
|
23
23
|
"swr": "^1.3.0",
|
|
24
24
|
"tslib": "^2.4.1",
|
|
25
25
|
"zod": "^3.19.1",
|
|
26
|
-
"zod-validation-error": "^0.2.1"
|
|
26
|
+
"zod-validation-error": "^0.2.1",
|
|
27
|
+
"@zenstackhq/sdk": "1.0.0-alpha.20"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
30
|
+
"@prisma/client": "^4.0.0",
|
|
29
31
|
"next": "^12.3.1 || ^13",
|
|
30
32
|
"react": "^17.0.2 || ^18",
|
|
31
|
-
"react-dom": "^17.0.2 || ^18"
|
|
32
|
-
"@prisma/client": "^4.7.1"
|
|
33
|
+
"react-dom": "^17.0.2 || ^18"
|
|
33
34
|
},
|
|
34
35
|
"author": {
|
|
35
36
|
"name": "ZenStack Team"
|
|
@@ -40,12 +41,13 @@
|
|
|
40
41
|
"@types/bcryptjs": "^2.4.2",
|
|
41
42
|
"@types/jest": "^29.0.3",
|
|
42
43
|
"@types/node": "^14.18.29",
|
|
44
|
+
"copyfiles": "^2.4.1",
|
|
43
45
|
"rimraf": "^3.0.2",
|
|
44
46
|
"typescript": "^4.9.3"
|
|
45
47
|
},
|
|
46
48
|
"scripts": {
|
|
47
49
|
"clean": "rimraf dist",
|
|
48
|
-
"build": "pnpm lint && pnpm clean && tsc &&
|
|
50
|
+
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ../../LICENSE dist",
|
|
49
51
|
"watch": "tsc --watch",
|
|
50
52
|
"lint": "eslint src --ext ts",
|
|
51
53
|
"publish-dev": "pnpm publish --tag dev"
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization-utils.js","sourceRoot":"","sources":["../src/serialization-utils.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAiC;AACjC,0DAAkC;AAElC,SAAgB,mBAAmB;IAC/B,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACjD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjD,EACD,QAAQ,CACX,CAAC;IACF,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAgB,EAAE,CAAC,oBAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC;KACrC,EACD,YAAY,CACf,CAAC;AACN,CAAC;AAjBD,kDAiBC"}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weakly-typed database access methods
|
|
3
|
+
*/
|
|
4
|
+
export interface DbOperations {
|
|
5
|
+
findMany(args?: unknown): Promise<unknown[]>;
|
|
6
|
+
findFirst(args: unknown): Promise<unknown>;
|
|
7
|
+
findFirstOrThrow(args: unknown): Promise<unknown>;
|
|
8
|
+
findUnique(args: unknown): Promise<unknown>;
|
|
9
|
+
findUniqueOrThrow(args: unknown): Promise<unknown>;
|
|
10
|
+
create(args: unknown): Promise<unknown>;
|
|
11
|
+
createMany(args: unknown, skipDuplicates?: boolean): Promise<{
|
|
12
|
+
count: number;
|
|
13
|
+
}>;
|
|
14
|
+
update(args: unknown): Promise<unknown>;
|
|
15
|
+
updateMany(args: unknown): Promise<{
|
|
16
|
+
count: number;
|
|
17
|
+
}>;
|
|
18
|
+
upsert(args: unknown): Promise<unknown>;
|
|
19
|
+
delete(args: unknown): Promise<unknown>;
|
|
20
|
+
deleteMany(args?: unknown): Promise<{
|
|
21
|
+
count: number;
|
|
22
|
+
}>;
|
|
23
|
+
aggregate(args: unknown): Promise<unknown>;
|
|
24
|
+
groupBy(args: unknown): Promise<unknown>;
|
|
25
|
+
count(args?: unknown): Promise<unknown>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Kinds of access policy
|
|
29
|
+
*/
|
|
30
|
+
export type PolicyKind = 'allow' | 'deny';
|
|
31
|
+
/**
|
|
32
|
+
* Kinds of operations controlled by access policies
|
|
33
|
+
*/
|
|
34
|
+
export type PolicyOperationKind = 'create' | 'update' | 'postUpdate' | 'read' | 'delete';
|
|
35
|
+
/**
|
|
36
|
+
* Current login user info
|
|
37
|
+
*/
|
|
38
|
+
export type AuthUser = Record<string, unknown>;
|
|
39
|
+
/**
|
|
40
|
+
* Context for database query
|
|
41
|
+
*/
|
|
42
|
+
export type QueryContext = {
|
|
43
|
+
/**
|
|
44
|
+
* Current login user (provided by @see RequestHandlerOptions)
|
|
45
|
+
*/
|
|
46
|
+
user?: AuthUser;
|
|
47
|
+
preValue?: any;
|
|
48
|
+
};
|
|
49
|
+
export type RuntimeAttribute = {
|
|
50
|
+
name: string;
|
|
51
|
+
args: Array<{
|
|
52
|
+
name?: string;
|
|
53
|
+
value: unknown;
|
|
54
|
+
}>;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Runtime information of a data model field
|
|
58
|
+
*/
|
|
59
|
+
export type FieldInfo = {
|
|
60
|
+
name: string;
|
|
61
|
+
type: string;
|
|
62
|
+
isId: boolean;
|
|
63
|
+
isDataModel: boolean;
|
|
64
|
+
isArray: boolean;
|
|
65
|
+
isOptional: boolean;
|
|
66
|
+
attributes: RuntimeAttribute[];
|
|
67
|
+
backLink?: string;
|
|
68
|
+
};
|
|
69
|
+
export type DbClientContract = Record<string, DbOperations> & {
|
|
70
|
+
$transaction: <T>(action: (tx: Record<string, DbOperations>) => Promise<T>) => Promise<T>;
|
|
71
|
+
};
|
|
72
|
+
export declare const PrismaWriteActions: readonly ["create", "createMany", "connectOrCreate", "update", "updateMany", "upsert", "delete", "deleteMany"];
|
|
73
|
+
export type PrismaWriteActionType = typeof PrismaWriteActions[number];
|
package/types.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrismaWriteActions = void 0;
|
|
4
|
+
exports.PrismaWriteActions = [
|
|
5
|
+
'create',
|
|
6
|
+
'createMany',
|
|
7
|
+
'connectOrCreate',
|
|
8
|
+
'update',
|
|
9
|
+
'updateMany',
|
|
10
|
+
'upsert',
|
|
11
|
+
'delete',
|
|
12
|
+
'deleteMany',
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwEa,QAAA,kBAAkB,GAAG;IAC9B,QAAQ;IACR,YAAY;IACZ,iBAAiB;IACjB,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,YAAY;CACN,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;;AACA,+DAAoD;AAEpD;;GAEG;AACH,MAAa,eAAe;IACxB,YAA4B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;CAClD;AAFD,0CAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,SAAoB,EAAE,IAAa;IACxD,IAAI;QACA,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;IAAC,OAAO,GAAG,EAAE;QACV,MAAM,IAAI,eAAe,CAAC,IAAA,mCAAY,EAAC,GAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;KACtE;AACL,CAAC;AAND,4BAMC"}
|
|
File without changes
|
|
@@ -3,7 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getVersion = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
5
5
|
function getVersion() {
|
|
6
|
-
|
|
6
|
+
try {
|
|
7
|
+
return require('./package.json').version;
|
|
8
|
+
}
|
|
9
|
+
catch (_a) {
|
|
10
|
+
return require('../package.json').version;
|
|
11
|
+
}
|
|
7
12
|
}
|
|
8
13
|
exports.getVersion = getVersion;
|
|
9
14
|
//# sourceMappingURL=version.js.map
|
package/version.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,UAAU;IACtB,IAAI;QACA,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;KAC5C;IAAC,WAAM;QACJ,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;KAC7C;AACL,CAAC;AAND,gCAMC"}
|
package/client/index.d.ts
DELETED
package/client/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// needed for importing from client-side code
|
|
2
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
-
|
|
4
|
-
const request = require('../lib/request');
|
|
5
|
-
const types = require('../lib/types');
|
|
6
|
-
|
|
7
|
-
module.exports = {
|
|
8
|
-
...require('../lib/validation'),
|
|
9
|
-
ServerErrorCode: types.ServerErrorCode,
|
|
10
|
-
request,
|
|
11
|
-
};
|
package/lib/config.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { LogLevel } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Logging config definition
|
|
4
|
-
*/
|
|
5
|
-
export type LogDefinition = {
|
|
6
|
-
level: LogLevel;
|
|
7
|
-
emit: 'stdout' | 'event';
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Service configuration
|
|
11
|
-
*/
|
|
12
|
-
export interface ServiceConfig {
|
|
13
|
-
log?: Array<LogLevel | LogDefinition>;
|
|
14
|
-
}
|
package/lib/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":""}
|
package/lib/constants.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auxiliary database field for supporting policy check for nested writes
|
|
3
|
-
*/
|
|
4
|
-
export declare const TRANSACTION_FIELD_NAME = "zenstack_transaction";
|
|
5
|
-
/**
|
|
6
|
-
* Auxiliary database field for building up policy check queries
|
|
7
|
-
*/
|
|
8
|
-
export declare const GUARD_FIELD_NAME = "zenstack_guard";
|
|
9
|
-
/**
|
|
10
|
-
* Default length of password hash salt (used by bcryptjs to hash password)
|
|
11
|
-
*/
|
|
12
|
-
export declare const DEFAULT_PASSWORD_SALT_LENGTH = 12;
|