@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.
Files changed (118) 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 +569 -0
  30. package/enhancements/policy/policy-utils.js.map +1 -0
  31. package/enhancements/preset.d.ts +7 -0
  32. package/enhancements/preset.js +15 -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/index.d.ts +4 -0
  44. package/{lib/index.js → index.js} +2 -4
  45. package/index.js.map +1 -0
  46. package/package.json +4 -3
  47. package/{lib/request.d.ts → request.d.ts} +0 -0
  48. package/{lib/request.js → request.js} +0 -0
  49. package/request.js.map +1 -0
  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 +80 -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} +0 -0
  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.js.map +0 -1
  106. package/lib/serialization-utils.js.map +0 -1
  107. package/lib/service.d.ts +0 -32
  108. package/lib/service.js +0 -184
  109. package/lib/service.js.map +0 -1
  110. package/lib/types.d.ts +0 -185
  111. package/lib/types.js +0 -71
  112. package/lib/types.js.map +0 -1
  113. package/lib/validation.js.map +0 -1
  114. package/lib/version.js.map +0 -1
  115. package/server/index.d.ts +0 -16
  116. package/server/index.js +0 -6
  117. package/types/index.d.ts +0 -1
  118. 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
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,uCAAyB;AACzB,mCAAsC;AAWtC,6CAAwC;AAExC,MAAsB,cAAc;IA8BhC;QArBmB,eAAU,GAAG,IAAI,qBAAY,EAAE,CAAC;QAClC,gBAAW,GAAG;YAC3B,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YACvC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;YACnC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;YACnC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;SACvC,CAAC;QAOe,oBAAe,GAAe;YAC3C,OAAO;YACP,MAAM;YACN,MAAM;YACN,OAAO;SACV,CAAC;QAGE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhC,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,mBAAmB;YACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAC7C,8DAA8D;gBAC7D,IAAI,CAAC,WAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aACnE;YAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjC,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAChD,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,GAAG,CAAC,CAAC;oBAC9C,SAAS;iBACZ;gBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;iBACzC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;iBACzC;qBAAM;oBACH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;iBACvC;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;oBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAED,GAAG,CAAC,KAAe,EAAE,QAAmC;QACpD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS,CAAC,KAAe,EAAE,OAAe;QAC9C,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YAChC,QAAQ,KAAK,EAAE;gBACX,KAAK,SAAS;oBACV,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvD,MAAM;gBACV,KAAK,MAAM;oBACP,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvD,MAAM;gBACV,KAAK,MAAM;oBACP,OAAO,CAAC,IAAI,CAAC,gBAAM,CAAC,MAAM,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC1D,MAAM;gBACV,KAAK,OAAO;oBACR,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM;aACb;SACJ;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SACnE;IACL,CAAC;IAEO,UAAU;QACd,MAAM,UAAU,GAAG,wBAAwB,CAAC;QAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAI;gBACA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACrB,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAChD,CAAC;gBACF,OAAO,MAAuB,CAAC;aAClC;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;aAC7D;SACJ;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEK,YAAY,CACd,KAAa,EACb,KAAa;;;YAEb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;aACnD;YACD,OAAO,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,aAAa,0CAAG,KAAK,CAAC,0CAAG,KAAK,CAAC,CAAC;;KAC3D;IAEK,eAAe,CACjB,KAAa,EACb,SAA8B,EAC9B,OAAqB;;YAErB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;aACnD;YACD,8DAA8D;YAC9D,MAAM,QAAQ,GACV,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;KAAA;IAEK,oBAAoB,CACtB,KAAa,EACb,IAAyB,EACzB,OAAgB;;YAEhB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC7B,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;aACvE;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CACxC,GAAG,KAAK,IAAI,IAAI,YAAY,CAClB,CAAC;YACf,IAAI,SAAS,EAAE;gBACX,IAAA,qBAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;aAChC;QACL,CAAC;KAAA;IAED,OAAO,CAAC,OAAe;QACnB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,OAAe;QAChB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,OAAe;QAChB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAe;QACjB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,YAAY;QACR,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CASJ;AAzLD,wCAyLC"}
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"}
@@ -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"}
@@ -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
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- ...require('.zenstack/.prisma'),
3
- };