@zenstackhq/runtime 0.6.0-pre.2 → 1.0.0-alpha.19
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 +5 -4
- 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
package/lib/request.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.getMutate = exports.del = exports.put = exports.post = exports.get = void 0;
|
|
39
|
-
const superjson_1 = __importDefault(require("superjson"));
|
|
40
|
-
const swr_1 = __importStar(require("swr"));
|
|
41
|
-
const serialization_utils_1 = require("./serialization-utils");
|
|
42
|
-
// register superjson custom serializers
|
|
43
|
-
(0, serialization_utils_1.registerSerializers)();
|
|
44
|
-
const fetcher = (url, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
const res = yield fetch(url, options);
|
|
46
|
-
if (!res.ok) {
|
|
47
|
-
const error = new Error('An error occurred while fetching the data.');
|
|
48
|
-
error.info = yield res.json();
|
|
49
|
-
error.status = res.status;
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
const textResult = yield res.text();
|
|
53
|
-
try {
|
|
54
|
-
return unmarshal(textResult);
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
console.error(`Unable to deserialize data:`, textResult);
|
|
58
|
-
throw err;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
function marshal(value) {
|
|
62
|
-
return superjson_1.default.stringify(value);
|
|
63
|
-
}
|
|
64
|
-
function unmarshal(value) {
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
-
return superjson_1.default.parse(value);
|
|
67
|
-
}
|
|
68
|
-
function makeUrl(url, args) {
|
|
69
|
-
return args ? url + `?q=${encodeURIComponent(marshal(args))}` : url;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Makes a GET request with SWR.
|
|
73
|
-
*
|
|
74
|
-
* @param url The request URL.
|
|
75
|
-
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
76
|
-
* @returns SWR response
|
|
77
|
-
*/
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
|
-
function get(url, args, options) {
|
|
80
|
-
const reqUrl = (options === null || options === void 0 ? void 0 : options.disabled) ? null : url ? makeUrl(url, args) : null;
|
|
81
|
-
return (0, swr_1.default)(reqUrl, fetcher, {
|
|
82
|
-
fallbackData: options === null || options === void 0 ? void 0 : options.initialData,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
exports.get = get;
|
|
86
|
-
/**
|
|
87
|
-
* Makes a POST request.
|
|
88
|
-
*
|
|
89
|
-
* @param url The request URL.
|
|
90
|
-
* @param data The request data.
|
|
91
|
-
* @param mutate Mutator for invalidating cache.
|
|
92
|
-
*/
|
|
93
|
-
function post(url, data, mutate) {
|
|
94
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
const r = yield fetcher(url, {
|
|
96
|
-
method: 'POST',
|
|
97
|
-
headers: {
|
|
98
|
-
'content-type': 'application/json',
|
|
99
|
-
},
|
|
100
|
-
body: marshal(data),
|
|
101
|
-
});
|
|
102
|
-
mutate(url, true);
|
|
103
|
-
return r;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
exports.post = post;
|
|
107
|
-
/**
|
|
108
|
-
* Makes a PUT request.
|
|
109
|
-
*
|
|
110
|
-
* @param url The request URL.
|
|
111
|
-
* @param data The request data.
|
|
112
|
-
* @param mutate Mutator for invalidating cache.
|
|
113
|
-
*/
|
|
114
|
-
function put(url, data, mutate) {
|
|
115
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
-
const r = yield fetcher(url, {
|
|
117
|
-
method: 'PUT',
|
|
118
|
-
headers: {
|
|
119
|
-
'content-type': 'application/json',
|
|
120
|
-
},
|
|
121
|
-
body: marshal(data),
|
|
122
|
-
});
|
|
123
|
-
mutate(url, true);
|
|
124
|
-
return r;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
exports.put = put;
|
|
128
|
-
/**
|
|
129
|
-
* Makes a DELETE request.
|
|
130
|
-
*
|
|
131
|
-
* @param url The request URL.
|
|
132
|
-
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
133
|
-
* @param mutate Mutator for invalidating cache.
|
|
134
|
-
*/
|
|
135
|
-
function del(url, args, mutate) {
|
|
136
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
-
const reqUrl = makeUrl(url, args);
|
|
138
|
-
const r = yield fetcher(reqUrl, {
|
|
139
|
-
method: 'DELETE',
|
|
140
|
-
});
|
|
141
|
-
const path = url.split('/');
|
|
142
|
-
path.pop();
|
|
143
|
-
mutate(path.join('/'), true);
|
|
144
|
-
return r;
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
exports.del = del;
|
|
148
|
-
function getMutate() {
|
|
149
|
-
// https://swr.vercel.app/docs/advanced/cache#mutate-multiple-keys-from-regex
|
|
150
|
-
const { cache, mutate } = (0, swr_1.useSWRConfig)();
|
|
151
|
-
return (key, prefix, data, opts) => {
|
|
152
|
-
if (!prefix) {
|
|
153
|
-
return mutate(key, data, opts);
|
|
154
|
-
}
|
|
155
|
-
if (!(cache instanceof Map)) {
|
|
156
|
-
throw new Error('mutate requires the cache provider to be a Map instance');
|
|
157
|
-
}
|
|
158
|
-
const keys = Array.from(cache.keys()).filter((k) => typeof k === 'string' && k.startsWith(key));
|
|
159
|
-
const mutations = keys.map((key) => mutate(key, data, opts));
|
|
160
|
-
return Promise.all(mutations);
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
exports.getMutate = getMutate;
|
|
164
|
-
//# sourceMappingURL=request.js.map
|
package/lib/request.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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/lib/service.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'stream';
|
|
3
|
-
import { ServiceConfig } from './config';
|
|
4
|
-
import { FieldInfo, LogEvent, LogLevel, PolicyOperationKind, QueryContext, Service } from './types';
|
|
5
|
-
export declare abstract class DefaultService<DbClient extends {
|
|
6
|
-
$on: (eventType: any, handler: (event: any) => void) => void;
|
|
7
|
-
}> implements Service<DbClient> {
|
|
8
|
-
protected config: ServiceConfig;
|
|
9
|
-
private prisma;
|
|
10
|
-
protected readonly logEmitter: EventEmitter;
|
|
11
|
-
private readonly logSettings;
|
|
12
|
-
private guardModule;
|
|
13
|
-
private fieldConstraintModule;
|
|
14
|
-
private readonly prismaLogLevels;
|
|
15
|
-
constructor();
|
|
16
|
-
private initialize;
|
|
17
|
-
$on(level: LogLevel, callback: (event: LogEvent) => void): void;
|
|
18
|
-
private handleLog;
|
|
19
|
-
private loadConfig;
|
|
20
|
-
get db(): DbClient;
|
|
21
|
-
resolveField(model: string, field: string): Promise<FieldInfo | undefined>;
|
|
22
|
-
buildQueryGuard(model: string, operation: PolicyOperationKind, context: QueryContext): Promise<unknown>;
|
|
23
|
-
validateModelPayload(model: string, mode: 'create' | 'update', payload: unknown): Promise<void>;
|
|
24
|
-
verbose(message: string): void;
|
|
25
|
-
info(message: string): void;
|
|
26
|
-
warn(message: string): void;
|
|
27
|
-
error(message: string): void;
|
|
28
|
-
reinitialize(): void;
|
|
29
|
-
protected abstract initializePrisma(): DbClient;
|
|
30
|
-
protected abstract loadGuardModule(): Promise<any>;
|
|
31
|
-
protected abstract loadFieldConstraintModule(): Promise<any>;
|
|
32
|
-
}
|
package/lib/service.js
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.DefaultService = void 0;
|
|
39
|
-
const colors_1 = __importDefault(require("colors"));
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const stream_1 = require("stream");
|
|
42
|
-
const validation_1 = require("./validation");
|
|
43
|
-
class DefaultService {
|
|
44
|
-
constructor() {
|
|
45
|
-
this.logEmitter = new stream_1.EventEmitter();
|
|
46
|
-
this.logSettings = {
|
|
47
|
-
query: { stdout: false, emit: false },
|
|
48
|
-
verbose: { stdout: false, emit: false },
|
|
49
|
-
info: { stdout: true, emit: false },
|
|
50
|
-
warn: { stdout: true, emit: false },
|
|
51
|
-
error: { stdout: true, emit: false },
|
|
52
|
-
};
|
|
53
|
-
this.prismaLogLevels = [
|
|
54
|
-
'query',
|
|
55
|
-
'info',
|
|
56
|
-
'warn',
|
|
57
|
-
'error',
|
|
58
|
-
];
|
|
59
|
-
this.initialize();
|
|
60
|
-
}
|
|
61
|
-
initialize() {
|
|
62
|
-
this.config = this.loadConfig();
|
|
63
|
-
// initialize log sink mapping
|
|
64
|
-
if (this.config.log) {
|
|
65
|
-
// reset all levels
|
|
66
|
-
for (const key of Object.keys(this.logSettings)) {
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
-
this.logSettings[key] = { stdout: false, emit: false };
|
|
69
|
-
}
|
|
70
|
-
for (const entry of this.config.log) {
|
|
71
|
-
const level = typeof entry === 'string' ? entry : entry.level;
|
|
72
|
-
if (!Object.keys(this.logSettings).includes(level)) {
|
|
73
|
-
console.error(`Unknown log level "${level}"`);
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (typeof entry === 'string') {
|
|
77
|
-
this.logSettings[level].stdout = true;
|
|
78
|
-
}
|
|
79
|
-
else if (entry.emit === 'stdout') {
|
|
80
|
-
this.logSettings[level].stdout = true;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
this.logSettings[level].emit = true;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
this.prisma = this.initializePrisma();
|
|
88
|
-
for (const level of this.prismaLogLevels) {
|
|
89
|
-
if (this.logSettings[level].emit) {
|
|
90
|
-
this.verbose(`Hooking prisma log level ${level}`);
|
|
91
|
-
this.prisma.$on(level, (e) => {
|
|
92
|
-
this.logEmitter.emit(level, e);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
$on(level, callback) {
|
|
98
|
-
this.logEmitter.on(level, callback);
|
|
99
|
-
}
|
|
100
|
-
handleLog(level, message) {
|
|
101
|
-
if (this.logSettings[level].stdout) {
|
|
102
|
-
switch (level) {
|
|
103
|
-
case 'verbose':
|
|
104
|
-
console.log(colors_1.default.blue(`zenstack:${level}`), message);
|
|
105
|
-
break;
|
|
106
|
-
case 'info':
|
|
107
|
-
console.log(colors_1.default.cyan(`zenstack:${level}`), message);
|
|
108
|
-
break;
|
|
109
|
-
case 'warn':
|
|
110
|
-
console.warn(colors_1.default.yellow(`zenstack:${level}`), message);
|
|
111
|
-
break;
|
|
112
|
-
case 'error':
|
|
113
|
-
console.error(colors_1.default.red(`zenstack:${level}`), message);
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (this.logSettings[level].emit) {
|
|
118
|
-
this.logEmitter.emit(level, { timestamp: new Date(), message });
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
loadConfig() {
|
|
122
|
-
const configFile = './zenstack.config.json';
|
|
123
|
-
if (fs.existsSync(configFile)) {
|
|
124
|
-
try {
|
|
125
|
-
const config = JSON.parse(fs.readFileSync(configFile).toString('utf-8'));
|
|
126
|
-
return config;
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
console.error('Failed to load zenstack.config.json', err);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return {};
|
|
133
|
-
}
|
|
134
|
-
get db() {
|
|
135
|
-
return this.prisma;
|
|
136
|
-
}
|
|
137
|
-
resolveField(model, field) {
|
|
138
|
-
var _a, _b;
|
|
139
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
if (!this.guardModule) {
|
|
141
|
-
this.guardModule = yield this.loadGuardModule();
|
|
142
|
-
}
|
|
143
|
-
return (_b = (_a = this.guardModule._fieldMapping) === null || _a === void 0 ? void 0 : _a[model]) === null || _b === void 0 ? void 0 : _b[field];
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
buildQueryGuard(model, operation, context) {
|
|
147
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
if (!this.guardModule) {
|
|
149
|
-
this.guardModule = yield this.loadGuardModule();
|
|
150
|
-
}
|
|
151
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
152
|
-
const provider = this.guardModule[model + '_' + operation];
|
|
153
|
-
return provider(context);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
validateModelPayload(model, mode, payload) {
|
|
157
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
-
if (!this.fieldConstraintModule) {
|
|
159
|
-
this.fieldConstraintModule = yield this.loadFieldConstraintModule();
|
|
160
|
-
}
|
|
161
|
-
const validator = this.fieldConstraintModule[`${model}_${mode}_validator`];
|
|
162
|
-
if (validator) {
|
|
163
|
-
(0, validation_1.validate)(validator, payload);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
verbose(message) {
|
|
168
|
-
this.handleLog('verbose', message);
|
|
169
|
-
}
|
|
170
|
-
info(message) {
|
|
171
|
-
this.handleLog('info', message);
|
|
172
|
-
}
|
|
173
|
-
warn(message) {
|
|
174
|
-
this.handleLog('warn', message);
|
|
175
|
-
}
|
|
176
|
-
error(message) {
|
|
177
|
-
this.handleLog('error', message);
|
|
178
|
-
}
|
|
179
|
-
reinitialize() {
|
|
180
|
-
this.initialize();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
exports.DefaultService = DefaultService;
|
|
184
|
-
//# sourceMappingURL=service.js.map
|
package/lib/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
DELETED
|
@@ -1,185 +0,0 @@
|
|
|
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
|
-
findUnique(args: unknown): Promise<unknown>;
|
|
8
|
-
create(args: unknown): Promise<unknown>;
|
|
9
|
-
createMany(args: unknown, skipDuplicates?: boolean): Promise<unknown>;
|
|
10
|
-
update(args: unknown): Promise<unknown>;
|
|
11
|
-
updateMany(args: unknown): Promise<unknown>;
|
|
12
|
-
upsert(args: unknown): Promise<unknown>;
|
|
13
|
-
delete(args: unknown): Promise<unknown>;
|
|
14
|
-
deleteMany(args: unknown): Promise<unknown>;
|
|
15
|
-
aggregate(args: unknown): Promise<unknown>;
|
|
16
|
-
groupBy(args: unknown): Promise<unknown>;
|
|
17
|
-
count(args: unknown): Promise<number>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Kinds of access policy
|
|
21
|
-
*/
|
|
22
|
-
export type PolicyKind = 'allow' | 'deny';
|
|
23
|
-
/**
|
|
24
|
-
* Kinds of operations controlled by access policies
|
|
25
|
-
*/
|
|
26
|
-
export type PolicyOperationKind = 'create' | 'update' | 'read' | 'delete';
|
|
27
|
-
/**
|
|
28
|
-
* Current login user info
|
|
29
|
-
*
|
|
30
|
-
* @todo Support for non-string "id" field
|
|
31
|
-
*/
|
|
32
|
-
export type AuthUser = {
|
|
33
|
-
id: string;
|
|
34
|
-
} & Record<string, unknown>;
|
|
35
|
-
/**
|
|
36
|
-
* Context for database query
|
|
37
|
-
*/
|
|
38
|
-
export type QueryContext = {
|
|
39
|
-
/**
|
|
40
|
-
* Current login user (provided by @see RequestHandlerOptions)
|
|
41
|
-
*/
|
|
42
|
-
user?: AuthUser;
|
|
43
|
-
};
|
|
44
|
-
export type RuntimeAttribute = {
|
|
45
|
-
name: string;
|
|
46
|
-
args: Array<{
|
|
47
|
-
name?: string;
|
|
48
|
-
value: unknown;
|
|
49
|
-
}>;
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Runtime information of a data model field
|
|
53
|
-
*/
|
|
54
|
-
export type FieldInfo = {
|
|
55
|
-
name: string;
|
|
56
|
-
type: string;
|
|
57
|
-
isDataModel: boolean;
|
|
58
|
-
isArray: boolean;
|
|
59
|
-
isOptional: boolean;
|
|
60
|
-
attributes: RuntimeAttribute[];
|
|
61
|
-
};
|
|
62
|
-
export type DbClientContract = Record<string, DbOperations> & {
|
|
63
|
-
$transaction: <T>(action: (tx: Record<string, DbOperations>) => Promise<T>) => Promise<T>;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Logging levels
|
|
67
|
-
*/
|
|
68
|
-
export type LogLevel = 'verbose' | 'info' | 'query' | 'warn' | 'error';
|
|
69
|
-
/**
|
|
70
|
-
* The main service of ZenStack. Implementation of this interface is automatically generated.
|
|
71
|
-
*/
|
|
72
|
-
export interface Service<DbClient = any> {
|
|
73
|
-
/**
|
|
74
|
-
* Returns the wrapped Prisma db client
|
|
75
|
-
*/
|
|
76
|
-
get db(): DbClient;
|
|
77
|
-
/**
|
|
78
|
-
* Resolves information of a data model field.
|
|
79
|
-
*
|
|
80
|
-
* @param model Model name
|
|
81
|
-
* @param field Field name
|
|
82
|
-
*/
|
|
83
|
-
resolveField(model: string, field: string): Promise<FieldInfo | undefined>;
|
|
84
|
-
/**
|
|
85
|
-
* Builds policy check guard object for an operation over a model, which will be injected to
|
|
86
|
-
* the query body sent to Prisma client.
|
|
87
|
-
*
|
|
88
|
-
* @param model Model name
|
|
89
|
-
* @param operation Operation kind
|
|
90
|
-
* @param context Query context
|
|
91
|
-
*/
|
|
92
|
-
buildQueryGuard(model: string, operation: PolicyOperationKind, context: QueryContext): Promise<unknown>;
|
|
93
|
-
/**
|
|
94
|
-
* Validates the given write payload for the given model according to field constraints in model.
|
|
95
|
-
*
|
|
96
|
-
* @param model Model name
|
|
97
|
-
* @param mode Write mode
|
|
98
|
-
* @param payload Write payload
|
|
99
|
-
*
|
|
100
|
-
* @throws @see ValidationError
|
|
101
|
-
*/
|
|
102
|
-
validateModelPayload(model: string, mode: 'create' | 'update', payload: unknown): Promise<void>;
|
|
103
|
-
/**
|
|
104
|
-
* Generates a log message with verbose level.
|
|
105
|
-
*/
|
|
106
|
-
verbose(message: string): void;
|
|
107
|
-
/**
|
|
108
|
-
* Generates a log message with info level.
|
|
109
|
-
*/
|
|
110
|
-
info(message: string): void;
|
|
111
|
-
/**
|
|
112
|
-
* Generates a log message with warn level.
|
|
113
|
-
*/
|
|
114
|
-
warn(message: string): void;
|
|
115
|
-
/**
|
|
116
|
-
* Generates a log message with error level.
|
|
117
|
-
*/
|
|
118
|
-
error(message: string): void;
|
|
119
|
-
/**
|
|
120
|
-
* Registers a listener to log events.
|
|
121
|
-
*/
|
|
122
|
-
$on(level: LogLevel, callback: (event: LogEvent) => void): void;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Error codes for errors on server side
|
|
126
|
-
*/
|
|
127
|
-
export declare enum ServerErrorCode {
|
|
128
|
-
/**
|
|
129
|
-
* The specified entity cannot be found
|
|
130
|
-
*/
|
|
131
|
-
ENTITY_NOT_FOUND = "ENTITY_NOT_FOUND",
|
|
132
|
-
/**
|
|
133
|
-
* The request parameter is invalid, either containing invalid fields or missing required fields
|
|
134
|
-
*/
|
|
135
|
-
INVALID_REQUEST_PARAMS = "INVALID_REQUEST_PARAMS",
|
|
136
|
-
/**
|
|
137
|
-
* The request is rejected by policy checks
|
|
138
|
-
*/
|
|
139
|
-
DENIED_BY_POLICY = "DENIED_BY_POLICY",
|
|
140
|
-
/**
|
|
141
|
-
* Violation of database unique constraints
|
|
142
|
-
*/
|
|
143
|
-
UNIQUE_CONSTRAINT_VIOLATION = "UNIQUE_CONSTRAINT_VIOLATION",
|
|
144
|
-
/**
|
|
145
|
-
* Violation of database reference constraint (aka. foreign key constraints)
|
|
146
|
-
*/
|
|
147
|
-
REFERENCE_CONSTRAINT_VIOLATION = "REFERENCE_CONSTRAINT_VIOLATION",
|
|
148
|
-
/**
|
|
149
|
-
* A write operation succeeded but the result cannot be read back due to policy control
|
|
150
|
-
*/
|
|
151
|
-
READ_BACK_AFTER_WRITE_DENIED = "READ_BACK_AFTER_WRITE_DENIED",
|
|
152
|
-
/**
|
|
153
|
-
* Unknown error
|
|
154
|
-
*/
|
|
155
|
-
UNKNOWN = "UNKNOWN"
|
|
156
|
-
}
|
|
157
|
-
export declare function getServerErrorMessage(code: ServerErrorCode): string;
|
|
158
|
-
export type LogEventHandler = (LogEvent: any, handler: (event: LogEvent) => void) => void;
|
|
159
|
-
export type LogEvent = {
|
|
160
|
-
timestamp: Date;
|
|
161
|
-
query?: string;
|
|
162
|
-
params?: string;
|
|
163
|
-
duration?: number;
|
|
164
|
-
target?: string;
|
|
165
|
-
message?: string;
|
|
166
|
-
};
|
|
167
|
-
/**
|
|
168
|
-
* Client request options
|
|
169
|
-
*/
|
|
170
|
-
export type RequestOptions<T> = {
|
|
171
|
-
disabled?: boolean;
|
|
172
|
-
initialData?: T;
|
|
173
|
-
};
|
|
174
|
-
/**
|
|
175
|
-
* Hooks invocation error
|
|
176
|
-
*/
|
|
177
|
-
export type HooksError = {
|
|
178
|
-
status: number;
|
|
179
|
-
info: {
|
|
180
|
-
code: ServerErrorCode;
|
|
181
|
-
message: string;
|
|
182
|
-
};
|
|
183
|
-
};
|
|
184
|
-
export declare const PrismaWriteActions: readonly ["create", "createMany", "connectOrCreate", "update", "updateMany", "upsert", "delete", "deleteMany", "connect", "none"];
|
|
185
|
-
export type PrismaWriteActionType = typeof PrismaWriteActions[number];
|
package/lib/types.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PrismaWriteActions = exports.getServerErrorMessage = exports.ServerErrorCode = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Error codes for errors on server side
|
|
6
|
-
*/
|
|
7
|
-
var ServerErrorCode;
|
|
8
|
-
(function (ServerErrorCode) {
|
|
9
|
-
/**
|
|
10
|
-
* The specified entity cannot be found
|
|
11
|
-
*/
|
|
12
|
-
ServerErrorCode["ENTITY_NOT_FOUND"] = "ENTITY_NOT_FOUND";
|
|
13
|
-
/**
|
|
14
|
-
* The request parameter is invalid, either containing invalid fields or missing required fields
|
|
15
|
-
*/
|
|
16
|
-
ServerErrorCode["INVALID_REQUEST_PARAMS"] = "INVALID_REQUEST_PARAMS";
|
|
17
|
-
/**
|
|
18
|
-
* The request is rejected by policy checks
|
|
19
|
-
*/
|
|
20
|
-
ServerErrorCode["DENIED_BY_POLICY"] = "DENIED_BY_POLICY";
|
|
21
|
-
/**
|
|
22
|
-
* Violation of database unique constraints
|
|
23
|
-
*/
|
|
24
|
-
ServerErrorCode["UNIQUE_CONSTRAINT_VIOLATION"] = "UNIQUE_CONSTRAINT_VIOLATION";
|
|
25
|
-
/**
|
|
26
|
-
* Violation of database reference constraint (aka. foreign key constraints)
|
|
27
|
-
*/
|
|
28
|
-
ServerErrorCode["REFERENCE_CONSTRAINT_VIOLATION"] = "REFERENCE_CONSTRAINT_VIOLATION";
|
|
29
|
-
/**
|
|
30
|
-
* A write operation succeeded but the result cannot be read back due to policy control
|
|
31
|
-
*/
|
|
32
|
-
ServerErrorCode["READ_BACK_AFTER_WRITE_DENIED"] = "READ_BACK_AFTER_WRITE_DENIED";
|
|
33
|
-
/**
|
|
34
|
-
* Unknown error
|
|
35
|
-
*/
|
|
36
|
-
ServerErrorCode["UNKNOWN"] = "UNKNOWN";
|
|
37
|
-
})(ServerErrorCode = exports.ServerErrorCode || (exports.ServerErrorCode = {}));
|
|
38
|
-
function getServerErrorMessage(code) {
|
|
39
|
-
switch (code) {
|
|
40
|
-
case ServerErrorCode.ENTITY_NOT_FOUND:
|
|
41
|
-
return 'the requested entity is not found';
|
|
42
|
-
case ServerErrorCode.INVALID_REQUEST_PARAMS:
|
|
43
|
-
return 'request parameters are invalid';
|
|
44
|
-
case ServerErrorCode.DENIED_BY_POLICY:
|
|
45
|
-
return 'the request was denied due to access policy violation';
|
|
46
|
-
case ServerErrorCode.UNIQUE_CONSTRAINT_VIOLATION:
|
|
47
|
-
return 'the request failed because of database unique constraint violation';
|
|
48
|
-
case ServerErrorCode.REFERENCE_CONSTRAINT_VIOLATION:
|
|
49
|
-
return 'the request failed because of database foreign key constraint violation';
|
|
50
|
-
case ServerErrorCode.READ_BACK_AFTER_WRITE_DENIED:
|
|
51
|
-
return 'the write operation succeeded, but the data cannot be read back due to access policy violation';
|
|
52
|
-
case ServerErrorCode.UNKNOWN:
|
|
53
|
-
return 'an unknown error occurred';
|
|
54
|
-
default:
|
|
55
|
-
return `generic error: ${code}`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.getServerErrorMessage = getServerErrorMessage;
|
|
59
|
-
exports.PrismaWriteActions = [
|
|
60
|
-
'create',
|
|
61
|
-
'createMany',
|
|
62
|
-
'connectOrCreate',
|
|
63
|
-
'update',
|
|
64
|
-
'updateMany',
|
|
65
|
-
'upsert',
|
|
66
|
-
'delete',
|
|
67
|
-
'deleteMany',
|
|
68
|
-
'connect',
|
|
69
|
-
'none',
|
|
70
|
-
];
|
|
71
|
-
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAmJA;;GAEG;AACH,IAAY,eAmCX;AAnCD,WAAY,eAAe;IACvB;;OAEG;IACH,wDAAqC,CAAA;IAErC;;OAEG;IACH,oEAAiD,CAAA;IAEjD;;OAEG;IACH,wDAAqC,CAAA;IAErC;;OAEG;IACH,8EAA2D,CAAA;IAE3D;;OAEG;IACH,oFAAiE,CAAA;IAEjE;;OAEG;IACH,gFAA6D,CAAA;IAE7D;;OAEG;IACH,sCAAmB,CAAA;AACvB,CAAC,EAnCW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAmC1B;AAED,SAAgB,qBAAqB,CAAC,IAAqB;IACvD,QAAQ,IAAI,EAAE;QACV,KAAK,eAAe,CAAC,gBAAgB;YACjC,OAAO,mCAAmC,CAAC;QAE/C,KAAK,eAAe,CAAC,sBAAsB;YACvC,OAAO,gCAAgC,CAAC;QAE5C,KAAK,eAAe,CAAC,gBAAgB;YACjC,OAAO,uDAAuD,CAAC;QAEnE,KAAK,eAAe,CAAC,2BAA2B;YAC5C,OAAO,oEAAoE,CAAC;QAEhF,KAAK,eAAe,CAAC,8BAA8B;YAC/C,OAAO,yEAAyE,CAAC;QAErF,KAAK,eAAe,CAAC,4BAA4B;YAC7C,OAAO,gGAAgG,CAAC;QAE5G,KAAK,eAAe,CAAC,OAAO;YACxB,OAAO,2BAA2B,CAAC;QAEvC;YACI,OAAO,kBAAkB,IAAI,EAAE,CAAC;KACvC;AACL,CAAC;AA1BD,sDA0BC;AAqCY,QAAA,kBAAkB,GAAG;IAC9B,QAAQ;IACR,YAAY;IACZ,iBAAiB;IACjB,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,MAAM;CACA,CAAC"}
|
package/lib/validation.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/lib/version.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,UAAU;IACtB,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAFD,gCAEC"}
|