@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
package/constants.d.ts
ADDED
package/constants.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default length of password hash salt (used by bcryptjs to hash password)
|
|
6
|
+
*/
|
|
7
|
+
exports.DEFAULT_PASSWORD_SALT_LENGTH = 12;
|
|
8
|
+
//# sourceMappingURL=constants.js.map
|
package/constants.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./omit"), exports);
|
|
18
|
+
__exportStar(require("./password"), exports);
|
|
19
|
+
__exportStar(require("./policy"), exports);
|
|
20
|
+
__exportStar(require("./preset"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enhancements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModelMeta } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Load model meta from standard location.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getDefaultModelMeta(): ModelMeta;
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a model field to its metadata. Returns undefined if not found.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveField(modelMeta: ModelMeta, model: string, field: string): import("..").FieldInfo;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveField = exports.getDefaultModelMeta = void 0;
|
|
4
|
+
const change_case_1 = require("change-case");
|
|
5
|
+
/**
|
|
6
|
+
* Load model meta from standard location.
|
|
7
|
+
*/
|
|
8
|
+
function getDefaultModelMeta() {
|
|
9
|
+
try {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
|
+
return require('.zenstack/model-meta').default;
|
|
12
|
+
}
|
|
13
|
+
catch (_a) {
|
|
14
|
+
throw new Error('Model meta cannot be loaded');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.getDefaultModelMeta = getDefaultModelMeta;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves a model field to its metadata. Returns undefined if not found.
|
|
20
|
+
*/
|
|
21
|
+
function resolveField(modelMeta, model, field) {
|
|
22
|
+
return modelMeta.fields[(0, change_case_1.camelCase)(model)][field];
|
|
23
|
+
}
|
|
24
|
+
exports.resolveField = resolveField;
|
|
25
|
+
//# sourceMappingURL=model-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAGxC;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;AACL,CAAC;AAPD,kDAOC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,uBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { FieldInfo, PrismaWriteActionType } from '../types';
|
|
2
|
+
import { ModelMeta } from './types';
|
|
3
|
+
import { Enumerable } from './utils';
|
|
4
|
+
/**
|
|
5
|
+
* Context for visiting
|
|
6
|
+
*/
|
|
7
|
+
export type VisitorContext = {
|
|
8
|
+
/**
|
|
9
|
+
* Parent data, can be used to replace fields
|
|
10
|
+
*/
|
|
11
|
+
parent: any;
|
|
12
|
+
/**
|
|
13
|
+
* Current field, undefined if toplevel
|
|
14
|
+
*/
|
|
15
|
+
field?: FieldInfo;
|
|
16
|
+
/**
|
|
17
|
+
* A top-down path of all nested update conditions and corresponding field till now
|
|
18
|
+
*/
|
|
19
|
+
nestingPath: {
|
|
20
|
+
field?: FieldInfo;
|
|
21
|
+
where: any;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* NestedWriteVisitor's callback actions
|
|
26
|
+
*/
|
|
27
|
+
export type NestedWriterVisitorCallback = {
|
|
28
|
+
create?: (model: string, args: any[], context: VisitorContext) => Promise<void>;
|
|
29
|
+
connectOrCreate?: (model: string, args: Enumerable<{
|
|
30
|
+
where: object;
|
|
31
|
+
create: any;
|
|
32
|
+
}>, context: VisitorContext) => Promise<void>;
|
|
33
|
+
update?: (model: string, args: Enumerable<{
|
|
34
|
+
where: object;
|
|
35
|
+
data: any;
|
|
36
|
+
}>, context: VisitorContext) => Promise<void>;
|
|
37
|
+
updateMany?: (model: string, args: Enumerable<{
|
|
38
|
+
where?: object;
|
|
39
|
+
data: any;
|
|
40
|
+
}>, context: VisitorContext) => Promise<void>;
|
|
41
|
+
upsert?: (model: string, args: Enumerable<{
|
|
42
|
+
where: object;
|
|
43
|
+
create: any;
|
|
44
|
+
update: any;
|
|
45
|
+
}>, context: VisitorContext) => Promise<void>;
|
|
46
|
+
delete?: (model: string, args: Enumerable<object> | boolean, context: VisitorContext) => Promise<void>;
|
|
47
|
+
deleteMany?: (model: string, args: Enumerable<object>, context: VisitorContext) => Promise<void>;
|
|
48
|
+
field?: (field: FieldInfo, action: PrismaWriteActionType, data: any, context: VisitorContext) => Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Recursive visitor for nested write (create/update) payload
|
|
52
|
+
*/
|
|
53
|
+
export declare class NestedWriteVisitor {
|
|
54
|
+
private readonly modelMeta;
|
|
55
|
+
private readonly callback;
|
|
56
|
+
constructor(modelMeta: ModelMeta, callback: NestedWriterVisitorCallback);
|
|
57
|
+
private isPrismaWriteAction;
|
|
58
|
+
/**
|
|
59
|
+
* Start visiting
|
|
60
|
+
*
|
|
61
|
+
* @see NestedWriterVisitorCallback
|
|
62
|
+
*/
|
|
63
|
+
visit(model: string, action: PrismaWriteActionType, args: any): Promise<void>;
|
|
64
|
+
private doVisit;
|
|
65
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.NestedWriteVisitor = void 0;
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
const model_meta_1 = require("./model-meta");
|
|
17
|
+
const utils_1 = require("./utils");
|
|
18
|
+
/**
|
|
19
|
+
* Recursive visitor for nested write (create/update) payload
|
|
20
|
+
*/
|
|
21
|
+
class NestedWriteVisitor {
|
|
22
|
+
constructor(modelMeta, callback) {
|
|
23
|
+
this.modelMeta = modelMeta;
|
|
24
|
+
this.callback = callback;
|
|
25
|
+
}
|
|
26
|
+
isPrismaWriteAction(value) {
|
|
27
|
+
return types_1.PrismaWriteActions.includes(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Start visiting
|
|
31
|
+
*
|
|
32
|
+
* @see NestedWriterVisitorCallback
|
|
33
|
+
*/
|
|
34
|
+
visit(model, action, args) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
if (!args) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let topData = args;
|
|
40
|
+
switch (action) {
|
|
41
|
+
// create has its data wrapped in 'data' field
|
|
42
|
+
case 'create':
|
|
43
|
+
topData = topData.data;
|
|
44
|
+
break;
|
|
45
|
+
case 'delete':
|
|
46
|
+
case 'deleteMany':
|
|
47
|
+
topData = topData.where;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
yield this.doVisit(model, action, topData, undefined, undefined, []);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
doVisit(model, action, data, parent, field, nestingPath) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
if (!data) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const fieldContainers = [];
|
|
59
|
+
const isToOneUpdate = (field === null || field === void 0 ? void 0 : field.isDataModel) && !field.isArray;
|
|
60
|
+
const context = { parent, field, nestingPath: [...nestingPath] };
|
|
61
|
+
// visit payload
|
|
62
|
+
switch (action) {
|
|
63
|
+
case 'create':
|
|
64
|
+
context.nestingPath.push({ field, where: {} });
|
|
65
|
+
if (this.callback.create) {
|
|
66
|
+
yield this.callback.create(model, data, context);
|
|
67
|
+
}
|
|
68
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data));
|
|
69
|
+
break;
|
|
70
|
+
case 'createMany':
|
|
71
|
+
// skip the 'data' layer so as to keep consistency with 'create'
|
|
72
|
+
if (data.data) {
|
|
73
|
+
context.nestingPath.push({ field, where: {} });
|
|
74
|
+
if (this.callback.create) {
|
|
75
|
+
yield this.callback.create(model, data.data, context);
|
|
76
|
+
}
|
|
77
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data.data));
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
case 'connectOrCreate':
|
|
81
|
+
context.nestingPath.push({ field, where: data.where });
|
|
82
|
+
if (this.callback.connectOrCreate) {
|
|
83
|
+
yield this.callback.connectOrCreate(model, data, context);
|
|
84
|
+
}
|
|
85
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.create));
|
|
86
|
+
break;
|
|
87
|
+
case 'update':
|
|
88
|
+
context.nestingPath.push({ field, where: data.where });
|
|
89
|
+
if (this.callback.update) {
|
|
90
|
+
yield this.callback.update(model, data, context);
|
|
91
|
+
}
|
|
92
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => (isToOneUpdate ? d : d.data)));
|
|
93
|
+
break;
|
|
94
|
+
case 'updateMany':
|
|
95
|
+
context.nestingPath.push({ field, where: data.where });
|
|
96
|
+
if (this.callback.updateMany) {
|
|
97
|
+
yield this.callback.updateMany(model, data, context);
|
|
98
|
+
}
|
|
99
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data));
|
|
100
|
+
break;
|
|
101
|
+
case 'upsert':
|
|
102
|
+
context.nestingPath.push({ field, where: data.where });
|
|
103
|
+
if (this.callback.upsert) {
|
|
104
|
+
yield this.callback.upsert(model, data, context);
|
|
105
|
+
}
|
|
106
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.create));
|
|
107
|
+
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.update));
|
|
108
|
+
break;
|
|
109
|
+
case 'delete':
|
|
110
|
+
context.nestingPath.push({ field, where: data.where });
|
|
111
|
+
if (this.callback.delete) {
|
|
112
|
+
yield this.callback.delete(model, data, context);
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
case 'deleteMany':
|
|
116
|
+
context.nestingPath.push({ field, where: data.where });
|
|
117
|
+
if (this.callback.deleteMany) {
|
|
118
|
+
yield this.callback.deleteMany(model, data, context);
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
default: {
|
|
122
|
+
throw new Error(`unhandled action type ${action}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
for (const fieldContainer of fieldContainers) {
|
|
126
|
+
for (const field of (0, utils_1.getModelFields)(fieldContainer)) {
|
|
127
|
+
const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
|
|
128
|
+
if (!fieldInfo) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (fieldInfo.isDataModel) {
|
|
132
|
+
// recurse into nested payloads
|
|
133
|
+
for (const [subAction, subData] of Object.entries(fieldContainer[field])) {
|
|
134
|
+
if (this.isPrismaWriteAction(subAction) && subData) {
|
|
135
|
+
yield this.doVisit(fieldInfo.type, subAction, subData, fieldContainer[field], fieldInfo, nestingPath);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// visit plain field
|
|
141
|
+
if (this.callback.field) {
|
|
142
|
+
yield this.callback.field(fieldInfo, action, fieldContainer[field], {
|
|
143
|
+
parent: fieldContainer,
|
|
144
|
+
nestingPath: nestingPath,
|
|
145
|
+
field: fieldInfo,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.NestedWriteVisitor = NestedWriteVisitor;
|
|
155
|
+
//# sourceMappingURL=nested-write-vistor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.withOmit = void 0;
|
|
15
|
+
const model_meta_1 = require("./model-meta");
|
|
16
|
+
const proxy_1 = require("./proxy");
|
|
17
|
+
const utils_1 = require("./utils");
|
|
18
|
+
/**
|
|
19
|
+
* Gets an enhanced Prisma client that supports @omit attribute.
|
|
20
|
+
*/
|
|
21
|
+
function withOmit(prisma, modelMeta) {
|
|
22
|
+
const _modelMeta = modelMeta !== null && modelMeta !== void 0 ? modelMeta : (0, model_meta_1.getDefaultModelMeta)();
|
|
23
|
+
return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new OmitHandler(_prisma, model, _modelMeta), 'omit');
|
|
24
|
+
}
|
|
25
|
+
exports.withOmit = withOmit;
|
|
26
|
+
class OmitHandler extends proxy_1.DefaultPrismaProxyHandler {
|
|
27
|
+
constructor(prisma, model, modelMeta) {
|
|
28
|
+
super(prisma, model);
|
|
29
|
+
this.modelMeta = modelMeta;
|
|
30
|
+
}
|
|
31
|
+
// base override
|
|
32
|
+
processResultEntity(data) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if (data) {
|
|
35
|
+
for (const value of (0, utils_1.ensureArray)(data)) {
|
|
36
|
+
yield this.doPostProcess(value, this.model);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return data;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
doPostProcess(entityData, model) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
for (const field of (0, utils_1.getModelFields)(entityData)) {
|
|
45
|
+
const fieldInfo = yield (0, model_meta_1.resolveField)(this.modelMeta, model, field);
|
|
46
|
+
if (!fieldInfo) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (fieldInfo.attributes.find((attr) => attr.name === '@omit')) {
|
|
50
|
+
delete entityData[field];
|
|
51
|
+
}
|
|
52
|
+
else if (fieldInfo.isDataModel) {
|
|
53
|
+
// recurse
|
|
54
|
+
yield this.doPostProcess(entityData[field], fieldInfo.type);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=omit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/enhancements/omit.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,uDAAuD;;;;;;;;;;;;AAGvD,6CAAiE;AACjE,mCAA+D;AAE/D,mCAAsD;AAEtD;;GAEG;AACH,SAAgB,QAAQ,CAA0B,MAAgB,EAAE,SAAqB;IACrF,MAAM,UAAU,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAA,gCAAmB,GAAE,CAAC;IACtD,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACnF,MAAM,CACT,CAAC;AACN,CAAC;AARD,4BAQC;AAED,MAAM,WAAY,SAAQ,iCAAyB;IAC/C,YAAY,MAAwB,EAAE,KAAa,EAAmB,SAAoB;QACtF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAD6C,cAAS,GAAT,SAAS,CAAW;IAE1F,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAI,IAAO;;YAC1C,IAAI,IAAI,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,UAAe,EAAE,KAAa;;YACtD,KAAK,MAAM,KAAK,IAAI,IAAA,sBAAc,EAAC,UAAU,CAAC,EAAE;gBAC5C,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,EAAE;oBACZ,SAAS;iBACZ;gBAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;oBAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC5B;qBAAM,IAAI,SAAS,CAAC,WAAW,EAAE;oBAC9B,UAAU;oBACV,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;iBAC/D;aACJ;QACL,CAAC;KAAA;CACJ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.withPassword = void 0;
|
|
15
|
+
const bcryptjs_1 = require("bcryptjs");
|
|
16
|
+
const constants_1 = require("../constants");
|
|
17
|
+
const model_meta_1 = require("./model-meta");
|
|
18
|
+
const nested_write_vistor_1 = require("./nested-write-vistor");
|
|
19
|
+
const proxy_1 = require("./proxy");
|
|
20
|
+
/**
|
|
21
|
+
* Gets an enhanced Prisma client that supports @password attribute.
|
|
22
|
+
*/
|
|
23
|
+
function withPassword(prisma, modelMeta) {
|
|
24
|
+
const _modelMeta = modelMeta !== null && modelMeta !== void 0 ? modelMeta : (0, model_meta_1.getDefaultModelMeta)();
|
|
25
|
+
return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new PasswordHandler(_prisma, model, _modelMeta), 'password');
|
|
26
|
+
}
|
|
27
|
+
exports.withPassword = withPassword;
|
|
28
|
+
class PasswordHandler extends proxy_1.DefaultPrismaProxyHandler {
|
|
29
|
+
constructor(prisma, model, modelMeta) {
|
|
30
|
+
super(prisma, model);
|
|
31
|
+
this.modelMeta = modelMeta;
|
|
32
|
+
}
|
|
33
|
+
// base override
|
|
34
|
+
preprocessArgs(action, args) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const actionsOfInterest = ['create', 'createMany', 'update', 'updateMany', 'upsert'];
|
|
37
|
+
if (args && args.data && actionsOfInterest.includes(action)) {
|
|
38
|
+
yield this.preprocessWritePayload(this.model, action, args);
|
|
39
|
+
}
|
|
40
|
+
return args;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
preprocessWritePayload(model, action, args) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const visitor = new nested_write_vistor_1.NestedWriteVisitor(this.modelMeta, {
|
|
46
|
+
field: (field, _action, data, context) => __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
const pwdAttr = (_a = field.attributes) === null || _a === void 0 ? void 0 : _a.find((attr) => attr.name === '@password');
|
|
49
|
+
if (pwdAttr && field.type === 'String') {
|
|
50
|
+
// hash password value
|
|
51
|
+
let salt = (_b = pwdAttr.args.find((arg) => arg.name === 'salt')) === null || _b === void 0 ? void 0 : _b.value;
|
|
52
|
+
if (!salt) {
|
|
53
|
+
salt = (_c = pwdAttr.args.find((arg) => arg.name === 'saltLength')) === null || _c === void 0 ? void 0 : _c.value;
|
|
54
|
+
}
|
|
55
|
+
if (!salt) {
|
|
56
|
+
salt = constants_1.DEFAULT_PASSWORD_SALT_LENGTH;
|
|
57
|
+
}
|
|
58
|
+
context.parent[field.name] = yield (0, bcryptjs_1.hash)(data, salt);
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
yield visitor.visit(model, action, args);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/enhancements/password.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,sDAAsD;;;;;;;;;;;;AAEtD,uCAAgC;AAChC,4CAA4D;AAE5D,6CAAmD;AACnD,+DAA2D;AAC3D,mCAAmF;AAGnF;;GAEG;AACH,SAAgB,YAAY,CAAgC,MAAgB,EAAE,SAAqB;IAC/F,MAAM,UAAU,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAA,gCAAmB,GAAE,CAAC;IACtD,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACvF,UAAU,CACb,CAAC;AACN,CAAC;AARD,oCAQC;AAED,MAAM,eAAgB,SAAQ,iCAAyB;IACnD,YAAY,MAAwB,EAAE,KAAa,EAAW,SAAoB;QAC9E,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QADqC,cAAS,GAAT,SAAS,CAAW;IAElF,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,MAA0B,EAAE,IAAS;;YAChE,MAAM,iBAAiB,GAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC3G,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACzD,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAA+B,EAAE,IAAI,CAAC,CAAC;aACxF;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,sBAAsB,CAAC,KAAa,EAAE,MAA6B,EAAE,IAAS;;YACxF,MAAM,OAAO,GAAG,IAAI,wCAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnD,KAAK,EAAE,CAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBAC3C,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;oBAC5E,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACpC,sBAAsB;wBACtB,IAAI,IAAI,GAAgC,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,0CACjF,KAAe,CAAC;wBACtB,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAe,CAAC;yBACjF;wBACD,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,wCAA4B,CAAC;yBACvC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACvD;gBACL,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AuthUser, DbClientContract, PolicyOperationKind } from '../../types';
|
|
2
|
+
import { BatchResult, PrismaProxyHandler } from '../proxy';
|
|
3
|
+
import { ModelMeta, PolicyDef } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Prisma proxy handler for injecting access policy check.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PolicyProxyHandler<DbClient extends DbClientContract> implements PrismaProxyHandler {
|
|
8
|
+
private readonly prisma;
|
|
9
|
+
private readonly policy;
|
|
10
|
+
private readonly modelMeta;
|
|
11
|
+
private readonly model;
|
|
12
|
+
private readonly user?;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private readonly utils;
|
|
15
|
+
constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, model: string, user?: AuthUser | undefined);
|
|
16
|
+
private get modelClient();
|
|
17
|
+
findUnique(args: any): Promise<{} | null>;
|
|
18
|
+
findUniqueOrThrow(args: any): Promise<{}>;
|
|
19
|
+
findFirst(args: any): Promise<{} | null>;
|
|
20
|
+
findFirstOrThrow(args: any): Promise<{}>;
|
|
21
|
+
findMany(args: any): Promise<unknown[]>;
|
|
22
|
+
create(args: any): Promise<unknown>;
|
|
23
|
+
createMany(args: any, skipDuplicates?: boolean): Promise<BatchResult>;
|
|
24
|
+
update(args: any): Promise<unknown>;
|
|
25
|
+
updateMany(args: any): Promise<BatchResult>;
|
|
26
|
+
upsert(args: any): Promise<unknown>;
|
|
27
|
+
delete(args: any): Promise<any>;
|
|
28
|
+
deleteMany(args: any): Promise<{
|
|
29
|
+
count: number;
|
|
30
|
+
}>;
|
|
31
|
+
aggregate(args: any): Promise<unknown>;
|
|
32
|
+
groupBy(args: any): Promise<unknown>;
|
|
33
|
+
count(args: any): Promise<unknown>;
|
|
34
|
+
tryReject(operation: PolicyOperationKind): Promise<void>;
|
|
35
|
+
private checkReadback;
|
|
36
|
+
}
|