@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.
Files changed (120) hide show
  1. package/constants.d.ts +4 -0
  2. package/constants.js +8 -0
  3. package/constants.js.map +1 -0
  4. package/enhancements/index.d.ts +4 -0
  5. package/enhancements/index.js +21 -0
  6. package/enhancements/index.js.map +1 -0
  7. package/enhancements/model-meta.d.ts +9 -0
  8. package/enhancements/model-meta.js +25 -0
  9. package/enhancements/model-meta.js.map +1 -0
  10. package/enhancements/nested-write-vistor.d.ts +65 -0
  11. package/enhancements/nested-write-vistor.js +155 -0
  12. package/enhancements/nested-write-vistor.js.map +1 -0
  13. package/enhancements/omit.d.ts +5 -0
  14. package/enhancements/omit.js +60 -0
  15. package/enhancements/omit.js.map +1 -0
  16. package/enhancements/password.d.ts +5 -0
  17. package/enhancements/password.js +66 -0
  18. package/enhancements/password.js.map +1 -0
  19. package/enhancements/policy/handler.d.ts +36 -0
  20. package/enhancements/policy/handler.js +278 -0
  21. package/enhancements/policy/handler.js.map +1 -0
  22. package/enhancements/policy/index.d.ts +17 -0
  23. package/enhancements/policy/index.js +31 -0
  24. package/enhancements/policy/index.js.map +1 -0
  25. package/{lib/proxy → enhancements/policy}/logger.d.ts +3 -0
  26. package/{lib/proxy → enhancements/policy}/logger.js +4 -0
  27. package/enhancements/policy/logger.js.map +1 -0
  28. package/enhancements/policy/policy-utils.d.ts +78 -0
  29. package/enhancements/policy/policy-utils.js +575 -0
  30. package/enhancements/policy/policy-utils.js.map +1 -0
  31. package/enhancements/preset.d.ts +16 -0
  32. package/enhancements/preset.js +24 -0
  33. package/enhancements/preset.js.map +1 -0
  34. package/enhancements/proxy.d.ts +75 -0
  35. package/enhancements/proxy.js +196 -0
  36. package/enhancements/proxy.js.map +1 -0
  37. package/enhancements/types.d.ts +24 -0
  38. package/{lib/config.js → enhancements/types.js} +1 -1
  39. package/enhancements/types.js.map +1 -0
  40. package/enhancements/utils.d.ts +16 -0
  41. package/enhancements/utils.js +31 -0
  42. package/enhancements/utils.js.map +1 -0
  43. package/error.d.ts +10 -0
  44. package/error.js +17 -0
  45. package/error.js.map +1 -0
  46. package/index.d.ts +5 -0
  47. package/{lib/index.js → index.js} +3 -4
  48. package/index.js.map +1 -0
  49. package/package.json +5 -4
  50. package/{lib/serialization-utils.d.ts → serialization-utils.d.ts} +0 -0
  51. package/{lib/serialization-utils.js → serialization-utils.js} +0 -0
  52. package/serialization-utils.js.map +1 -0
  53. package/types.d.ts +73 -0
  54. package/types.js +14 -0
  55. package/types.js.map +1 -0
  56. package/{lib/validation.d.ts → validation.d.ts} +0 -0
  57. package/{lib/validation.js → validation.js} +0 -0
  58. package/validation.js.map +1 -0
  59. package/{lib/version.d.ts → version.d.ts} +0 -0
  60. package/{lib/version.js → version.js} +6 -1
  61. package/version.js.map +1 -0
  62. package/client/index.d.ts +0 -3
  63. package/client/index.js +0 -11
  64. package/lib/config.d.ts +0 -14
  65. package/lib/config.js.map +0 -1
  66. package/lib/constants.d.ts +0 -12
  67. package/lib/constants.js +0 -16
  68. package/lib/constants.js.map +0 -1
  69. package/lib/handler/data/crud.d.ts +0 -17
  70. package/lib/handler/data/crud.js +0 -255
  71. package/lib/handler/data/crud.js.map +0 -1
  72. package/lib/handler/data/handler.d.ts +0 -20
  73. package/lib/handler/data/handler.js +0 -150
  74. package/lib/handler/data/handler.js.map +0 -1
  75. package/lib/handler/data/nested-write-vistor.d.ts +0 -31
  76. package/lib/handler/data/nested-write-vistor.js +0 -67
  77. package/lib/handler/data/nested-write-vistor.js.map +0 -1
  78. package/lib/handler/data/policy-utils.d.ts +0 -73
  79. package/lib/handler/data/policy-utils.js +0 -447
  80. package/lib/handler/data/policy-utils.js.map +0 -1
  81. package/lib/handler/index.d.ts +0 -1
  82. package/lib/handler/index.js +0 -9
  83. package/lib/handler/index.js.map +0 -1
  84. package/lib/handler/types.d.ts +0 -28
  85. package/lib/handler/types.js +0 -36
  86. package/lib/handler/types.js.map +0 -1
  87. package/lib/index.d.ts +0 -6
  88. package/lib/index.js.map +0 -1
  89. package/lib/policy.d.ts +0 -11
  90. package/lib/policy.js +0 -10
  91. package/lib/policy.js.map +0 -1
  92. package/lib/proxy/handler.d.ts +0 -37
  93. package/lib/proxy/handler.js +0 -333
  94. package/lib/proxy/handler.js.map +0 -1
  95. package/lib/proxy/logger.js.map +0 -1
  96. package/lib/proxy/nested-write-vistor.d.ts +0 -30
  97. package/lib/proxy/nested-write-vistor.js +0 -69
  98. package/lib/proxy/nested-write-vistor.js.map +0 -1
  99. package/lib/proxy/policy-utils.d.ts +0 -78
  100. package/lib/proxy/policy-utils.js +0 -508
  101. package/lib/proxy/policy-utils.js.map +0 -1
  102. package/lib/request-handler.d.ts +0 -21
  103. package/lib/request-handler.js +0 -37
  104. package/lib/request-handler.js.map +0 -1
  105. package/lib/request.d.ts +0 -37
  106. package/lib/request.js +0 -164
  107. package/lib/request.js.map +0 -1
  108. package/lib/serialization-utils.js.map +0 -1
  109. package/lib/service.d.ts +0 -32
  110. package/lib/service.js +0 -184
  111. package/lib/service.js.map +0 -1
  112. package/lib/types.d.ts +0 -185
  113. package/lib/types.js +0 -71
  114. package/lib/types.js.map +0 -1
  115. package/lib/validation.js.map +0 -1
  116. package/lib/version.js.map +0 -1
  117. package/server/index.d.ts +0 -16
  118. package/server/index.js +0 -6
  119. package/types/index.d.ts +0 -1
  120. package/types/index.js +0 -3
package/constants.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Default length of password hash salt (used by bcryptjs to hash password)
3
+ */
4
+ export declare const DEFAULT_PASSWORD_SALT_LENGTH = 12;
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
@@ -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,4 @@
1
+ export * from './omit';
2
+ export * from './password';
3
+ export * from './policy';
4
+ export * from './preset';
@@ -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,5 @@
1
+ import { ModelMeta } from './types';
2
+ /**
3
+ * Gets an enhanced Prisma client that supports @omit attribute.
4
+ */
5
+ export declare function withOmit<DbClient extends object>(prisma: DbClient, modelMeta?: ModelMeta): DbClient;
@@ -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,5 @@
1
+ import { ModelMeta } from './types';
2
+ /**
3
+ * Gets an enhanced Prisma client that supports @password attribute.
4
+ */
5
+ export declare function withPassword<DbClient extends object = any>(prisma: DbClient, modelMeta?: ModelMeta): DbClient;
@@ -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
+ }