@zenstackhq/runtime 0.6.0-pre.1 → 0.6.0-pre.12
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 +569 -0
- package/enhancements/policy/policy-utils.js.map +1 -0
- package/enhancements/preset.d.ts +7 -0
- package/enhancements/preset.js +15 -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/index.d.ts +4 -0
- package/{lib/index.js → index.js} +2 -4
- package/index.js.map +1 -0
- package/package.json +4 -3
- package/{lib/request.d.ts → request.d.ts} +0 -0
- package/{lib/request.js → request.js} +0 -0
- package/request.js.map +1 -0
- 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 +80 -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} +0 -0
- 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.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/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"}
|
package/server/index.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
FieldInfo,
|
|
3
|
-
PolicyKind,
|
|
4
|
-
PolicyOperationKind,
|
|
5
|
-
RuntimeAttribute,
|
|
6
|
-
QueryContext,
|
|
7
|
-
Service,
|
|
8
|
-
DbClientContract,
|
|
9
|
-
} from '../lib/types';
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
requestHandler,
|
|
13
|
-
type RequestHandlerOptions,
|
|
14
|
-
} from '../lib/request-handler';
|
|
15
|
-
|
|
16
|
-
export { withPolicy } from '../lib/policy';
|
package/server/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
-
|
|
3
|
-
const exportStar = require('tslib').__exportStar;
|
|
4
|
-
exportStar(require('../lib/types'), exports);
|
|
5
|
-
exportStar(require('../lib/request-handler'), exports);
|
|
6
|
-
exportStar(require('../lib/policy'), exports);
|
package/types/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '.zenstack/.prisma';
|
package/types/index.js
DELETED