@zenstackhq/sdk 2.16.0 → 3.0.0-alpha.1
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/LICENSE +1 -1
- package/dist/index.cjs +1906 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +196 -0
- package/dist/index.d.ts +196 -0
- package/dist/index.js +1872 -0
- package/dist/index.js.map +1 -0
- package/dist/schema.cjs +19 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.cts +138 -0
- package/dist/schema.d.ts +138 -0
- package/dist/schema.js +1 -0
- package/dist/schema.js.map +1 -0
- package/package.json +43 -39
- package/README.md +0 -5
- package/ast.d.ts +0 -1
- package/ast.js +0 -18
- package/ast.js.map +0 -1
- package/code-gen.d.ts +0 -37
- package/code-gen.js +0 -114
- package/code-gen.js.map +0 -1
- package/constants.d.ts +0 -15
- package/constants.js +0 -21
- package/constants.js.map +0 -1
- package/dmmf-helpers/aggregate-helpers.d.ts +0 -5
- package/dmmf-helpers/aggregate-helpers.js +0 -65
- package/dmmf-helpers/aggregate-helpers.js.map +0 -1
- package/dmmf-helpers/include-helpers.d.ts +0 -2
- package/dmmf-helpers/include-helpers.js +0 -88
- package/dmmf-helpers/include-helpers.js.map +0 -1
- package/dmmf-helpers/index.d.ts +0 -7
- package/dmmf-helpers/index.js +0 -24
- package/dmmf-helpers/index.js.map +0 -1
- package/dmmf-helpers/missing-types-helper.d.ts +0 -2
- package/dmmf-helpers/missing-types-helper.js +0 -14
- package/dmmf-helpers/missing-types-helper.js.map +0 -1
- package/dmmf-helpers/model-helpers.d.ts +0 -16
- package/dmmf-helpers/model-helpers.js +0 -38
- package/dmmf-helpers/model-helpers.js.map +0 -1
- package/dmmf-helpers/modelArgs-helpers.d.ts +0 -2
- package/dmmf-helpers/modelArgs-helpers.js +0 -67
- package/dmmf-helpers/modelArgs-helpers.js.map +0 -1
- package/dmmf-helpers/select-helpers.d.ts +0 -2
- package/dmmf-helpers/select-helpers.js +0 -152
- package/dmmf-helpers/select-helpers.js.map +0 -1
- package/dmmf-helpers/types.d.ts +0 -20
- package/dmmf-helpers/types.js +0 -3
- package/dmmf-helpers/types.js.map +0 -1
- package/index.d.ts +0 -11
- package/index.js +0 -30
- package/index.js.map +0 -1
- package/model-meta-generator.d.ts +0 -24
- package/model-meta-generator.js +0 -458
- package/model-meta-generator.js.map +0 -1
- package/names.d.ts +0 -9
- package/names.js +0 -17
- package/names.js.map +0 -1
- package/path.d.ts +0 -4
- package/path.js +0 -15
- package/path.js.map +0 -1
- package/policy.d.ts +0 -13
- package/policy.js +0 -57
- package/policy.js.map +0 -1
- package/prisma.d.ts +0 -21
- package/prisma.js +0 -84
- package/prisma.js.map +0 -1
- package/types.d.ts +0 -97
- package/types.js +0 -14
- package/types.js.map +0 -1
- package/typescript-expression-transformer.d.ts +0 -64
- package/typescript-expression-transformer.js +0 -491
- package/typescript-expression-transformer.js.map +0 -1
- package/utils.d.ts +0 -103
- package/utils.js +0 -633
- package/utils.js.map +0 -1
- package/validation.d.ts +0 -7
- package/validation.js +0 -37
- package/validation.js.map +0 -1
- package/zmodel-code-generator.d.ts +0 -66
- package/zmodel-code-generator.js +0 -353
- package/zmodel-code-generator.js.map +0 -1
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.TypeScriptExpressionTransformer = exports.TypeScriptExpressionTransformerError = void 0;
|
|
10
|
-
const ast_1 = require("@zenstackhq/language/ast");
|
|
11
|
-
const langium_1 = require("langium");
|
|
12
|
-
const ts_pattern_1 = require("ts-pattern");
|
|
13
|
-
const constants_1 = require("./constants");
|
|
14
|
-
const names_1 = require("./names");
|
|
15
|
-
const utils_1 = require("./utils");
|
|
16
|
-
class TypeScriptExpressionTransformerError extends Error {
|
|
17
|
-
constructor(message) {
|
|
18
|
-
super(message);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.TypeScriptExpressionTransformerError = TypeScriptExpressionTransformerError;
|
|
22
|
-
// a registry of function handlers marked with @func
|
|
23
|
-
const functionHandlers = new Map();
|
|
24
|
-
// function handler decorator
|
|
25
|
-
function func(name) {
|
|
26
|
-
return function (target, propertyKey, descriptor) {
|
|
27
|
-
if (!functionHandlers.get(name)) {
|
|
28
|
-
functionHandlers.set(name, descriptor);
|
|
29
|
-
}
|
|
30
|
-
return descriptor;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Transforms ZModel expression to plain TypeScript expression.
|
|
35
|
-
*/
|
|
36
|
-
class TypeScriptExpressionTransformer {
|
|
37
|
-
/**
|
|
38
|
-
* Constructs a new TypeScriptExpressionTransformer.
|
|
39
|
-
*
|
|
40
|
-
* @param isPostGuard indicates if we're writing for post-update conditions
|
|
41
|
-
*/
|
|
42
|
-
constructor(options) {
|
|
43
|
-
this.options = options;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Transforms the given expression to a TypeScript expression.
|
|
47
|
-
* @param normalizeUndefined if undefined values should be normalized to null
|
|
48
|
-
* @returns
|
|
49
|
-
*/
|
|
50
|
-
transform(expr, normalizeUndefined = true) {
|
|
51
|
-
switch (expr.$type) {
|
|
52
|
-
case ast_1.StringLiteral:
|
|
53
|
-
case ast_1.NumberLiteral:
|
|
54
|
-
case ast_1.BooleanLiteral:
|
|
55
|
-
return this.literal(expr);
|
|
56
|
-
case ast_1.ArrayExpr:
|
|
57
|
-
return this.array(expr, normalizeUndefined);
|
|
58
|
-
case ast_1.NullExpr:
|
|
59
|
-
return this.null();
|
|
60
|
-
case ast_1.ThisExpr:
|
|
61
|
-
return this.this(expr);
|
|
62
|
-
case ast_1.ReferenceExpr:
|
|
63
|
-
return this.reference(expr);
|
|
64
|
-
case ast_1.InvocationExpr:
|
|
65
|
-
return this.invocation(expr, normalizeUndefined);
|
|
66
|
-
case ast_1.MemberAccessExpr:
|
|
67
|
-
return this.memberAccess(expr, normalizeUndefined);
|
|
68
|
-
case ast_1.UnaryExpr:
|
|
69
|
-
return this.unary(expr, normalizeUndefined);
|
|
70
|
-
case ast_1.BinaryExpr:
|
|
71
|
-
return this.binary(expr, normalizeUndefined);
|
|
72
|
-
default:
|
|
73
|
-
throw new TypeScriptExpressionTransformerError(`Unsupported expression type: ${expr.$type}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
this(_expr) {
|
|
77
|
-
var _a;
|
|
78
|
-
// "this" is mapped to the input argument
|
|
79
|
-
return (_a = this.options.thisExprContext) !== null && _a !== void 0 ? _a : 'input';
|
|
80
|
-
}
|
|
81
|
-
memberAccess(expr, normalizeUndefined) {
|
|
82
|
-
var _a;
|
|
83
|
-
if (!expr.member.ref) {
|
|
84
|
-
throw new TypeScriptExpressionTransformerError(`Unresolved MemberAccessExpr`);
|
|
85
|
-
}
|
|
86
|
-
if ((0, utils_1.isFutureExpr)(expr.operand)) {
|
|
87
|
-
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.isPostGuard) !== true) {
|
|
88
|
-
throw new TypeScriptExpressionTransformerError(`future() is only supported in postUpdate rules`);
|
|
89
|
-
}
|
|
90
|
-
return this.options.futureRefContext
|
|
91
|
-
? `${this.options.futureRefContext}.${expr.member.ref.name}`
|
|
92
|
-
: expr.member.ref.name;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
if (normalizeUndefined) {
|
|
96
|
-
// normalize field access to null instead of undefined to avoid accidentally use undefined in filter
|
|
97
|
-
return `(${this.transform(expr.operand, normalizeUndefined)}?.${expr.member.ref.name} ?? null)`;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return `${this.transform(expr.operand, normalizeUndefined)}?.${expr.member.ref.name}`;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
invocation(expr, normalizeUndefined) {
|
|
105
|
-
if (!expr.function.ref) {
|
|
106
|
-
throw new TypeScriptExpressionTransformerError(`Unresolved InvocationExpr`);
|
|
107
|
-
}
|
|
108
|
-
const funcName = expr.function.ref.name;
|
|
109
|
-
const isStdFunc = (0, utils_1.isFromStdlib)(expr.function.ref);
|
|
110
|
-
if (!isStdFunc) {
|
|
111
|
-
throw new TypeScriptExpressionTransformerError('User-defined functions are not supported yet');
|
|
112
|
-
}
|
|
113
|
-
const handler = functionHandlers.get(funcName);
|
|
114
|
-
if (!handler) {
|
|
115
|
-
throw new TypeScriptExpressionTransformerError(`Unsupported function: ${funcName}`);
|
|
116
|
-
}
|
|
117
|
-
const args = expr.args.map((arg) => arg.value);
|
|
118
|
-
return handler.value.call(this, expr, args, normalizeUndefined);
|
|
119
|
-
}
|
|
120
|
-
// #region function invocation handlers
|
|
121
|
-
// arguments have been type-checked
|
|
122
|
-
_auth() {
|
|
123
|
-
return 'user';
|
|
124
|
-
}
|
|
125
|
-
_now() {
|
|
126
|
-
return `(new Date())`;
|
|
127
|
-
}
|
|
128
|
-
_length(_invocation, args) {
|
|
129
|
-
const field = this.transform(args[0], false);
|
|
130
|
-
const min = (0, utils_1.getLiteral)(args[1]);
|
|
131
|
-
const max = (0, utils_1.getLiteral)(args[2]);
|
|
132
|
-
let result;
|
|
133
|
-
if (min === undefined) {
|
|
134
|
-
result = this.ensureBooleanTernary(args[0], field, `${field}?.length > 0`);
|
|
135
|
-
}
|
|
136
|
-
else if (max === undefined) {
|
|
137
|
-
result = this.ensureBooleanTernary(args[0], field, `${field}?.length >= ${min}`);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
result = this.ensureBooleanTernary(args[0], field, `${field}?.length >= ${min} && ${field}?.length <= ${max}`);
|
|
141
|
-
}
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
144
|
-
_contains(_invocation, args, normalizeUndefined) {
|
|
145
|
-
const field = this.transform(args[0], false);
|
|
146
|
-
const caseInsensitive = (0, utils_1.getLiteral)(args[2]) === true;
|
|
147
|
-
let result;
|
|
148
|
-
if (caseInsensitive) {
|
|
149
|
-
result = `${field}?.toLowerCase().includes(${this.transform(args[1], normalizeUndefined)}?.toLowerCase())`;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
result = `${field}?.includes(${this.transform(args[1], normalizeUndefined)})`;
|
|
153
|
-
}
|
|
154
|
-
return this.ensureBoolean(result);
|
|
155
|
-
}
|
|
156
|
-
_startsWith(_invocation, args, normalizeUndefined) {
|
|
157
|
-
const field = this.transform(args[0], false);
|
|
158
|
-
const result = `${field}?.startsWith(${this.transform(args[1], normalizeUndefined)})`;
|
|
159
|
-
return this.ensureBoolean(result);
|
|
160
|
-
}
|
|
161
|
-
_endsWith(_invocation, args, normalizeUndefined) {
|
|
162
|
-
const field = this.transform(args[0], false);
|
|
163
|
-
const result = `${field}?.endsWith(${this.transform(args[1], normalizeUndefined)})`;
|
|
164
|
-
return this.ensureBoolean(result);
|
|
165
|
-
}
|
|
166
|
-
_regex(_invocation, args) {
|
|
167
|
-
const field = this.transform(args[0], false);
|
|
168
|
-
const pattern = (0, utils_1.getLiteral)(args[1]);
|
|
169
|
-
return this.ensureBooleanTernary(args[0], field, `new RegExp(${JSON.stringify(pattern)}).test(${field})`);
|
|
170
|
-
}
|
|
171
|
-
_email(_invocation, args) {
|
|
172
|
-
const field = this.transform(args[0], false);
|
|
173
|
-
return this.ensureBooleanTernary(args[0], field, `z.string().email().safeParse(${field}).success`);
|
|
174
|
-
}
|
|
175
|
-
_datetime(_invocation, args) {
|
|
176
|
-
const field = this.transform(args[0], false);
|
|
177
|
-
return this.ensureBooleanTernary(args[0], field, `z.string().datetime({ offset: true }).safeParse(${field}).success`);
|
|
178
|
-
}
|
|
179
|
-
_url(_invocation, args) {
|
|
180
|
-
const field = this.transform(args[0], false);
|
|
181
|
-
return this.ensureBooleanTernary(args[0], field, `z.string().url().safeParse(${field}).success`);
|
|
182
|
-
}
|
|
183
|
-
_has(_invocation, args, normalizeUndefined) {
|
|
184
|
-
const field = this.transform(args[0], false);
|
|
185
|
-
const result = `${field}?.includes(${this.transform(args[1], normalizeUndefined)})`;
|
|
186
|
-
return this.ensureBoolean(result);
|
|
187
|
-
}
|
|
188
|
-
_hasEvery(_invocation, args, normalizeUndefined) {
|
|
189
|
-
const field = this.transform(args[0], false);
|
|
190
|
-
return this.ensureBooleanTernary(args[0], field, `${this.transform(args[1], normalizeUndefined)}?.every((item) => ${field}?.includes(item))`);
|
|
191
|
-
}
|
|
192
|
-
_hasSome(_invocation, args, normalizeUndefined) {
|
|
193
|
-
const field = this.transform(args[0], false);
|
|
194
|
-
return this.ensureBooleanTernary(args[0], field, `${this.transform(args[1], normalizeUndefined)}?.some((item) => ${field}?.includes(item))`);
|
|
195
|
-
}
|
|
196
|
-
_isEmpty(_invocation, args) {
|
|
197
|
-
const field = this.transform(args[0], false);
|
|
198
|
-
return `(!${field} || ${field}?.length === 0)`;
|
|
199
|
-
}
|
|
200
|
-
_check(_invocation, args) {
|
|
201
|
-
var _a, _b;
|
|
202
|
-
if (!(0, utils_1.isDataModelFieldReference)(args[0])) {
|
|
203
|
-
throw new TypeScriptExpressionTransformerError(`First argument of check() must be a field`);
|
|
204
|
-
}
|
|
205
|
-
if (!(0, ast_1.isDataModel)((_a = args[0].$resolvedType) === null || _a === void 0 ? void 0 : _a.decl)) {
|
|
206
|
-
throw new TypeScriptExpressionTransformerError(`First argument of check() must be a relation field`);
|
|
207
|
-
}
|
|
208
|
-
const fieldRef = args[0];
|
|
209
|
-
const targetModel = (_b = fieldRef.$resolvedType) === null || _b === void 0 ? void 0 : _b.decl;
|
|
210
|
-
let operation;
|
|
211
|
-
if (args[1]) {
|
|
212
|
-
const literal = (0, utils_1.getLiteral)(args[1]);
|
|
213
|
-
if (!literal) {
|
|
214
|
-
throw new TypeScriptExpressionTransformerError(`Second argument of check() must be a string literal`);
|
|
215
|
-
}
|
|
216
|
-
if (!['read', 'create', 'update', 'delete'].includes(literal)) {
|
|
217
|
-
throw new TypeScriptExpressionTransformerError(`Invalid check() operation "${literal}"`);
|
|
218
|
-
}
|
|
219
|
-
operation = literal;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
if (!this.options.operationContext) {
|
|
223
|
-
throw new TypeScriptExpressionTransformerError('Unable to determine CRUD operation from context');
|
|
224
|
-
}
|
|
225
|
-
operation = this.options.operationContext;
|
|
226
|
-
}
|
|
227
|
-
const entityCheckerFunc = (0, names_1.getEntityCheckerFunctionName)(targetModel, undefined, false, operation);
|
|
228
|
-
return `${entityCheckerFunc}(input.${fieldRef.target.$refText}, context)`;
|
|
229
|
-
}
|
|
230
|
-
toStringWithCaseChange(value, casing) {
|
|
231
|
-
if (!value) {
|
|
232
|
-
return "''";
|
|
233
|
-
}
|
|
234
|
-
return (0, ts_pattern_1.match)(casing)
|
|
235
|
-
.with('original', () => `'${value}'`)
|
|
236
|
-
.with('upper', () => `'${value.toUpperCase()}'`)
|
|
237
|
-
.with('lower', () => `'${value.toLowerCase()}'`)
|
|
238
|
-
.with('capitalize', () => `'${value.charAt(0).toUpperCase() + value.slice(1)}'`)
|
|
239
|
-
.with('uncapitalize', () => `'${value.charAt(0).toLowerCase() + value.slice(1)}'`)
|
|
240
|
-
.exhaustive();
|
|
241
|
-
}
|
|
242
|
-
_currentModel(invocation, args) {
|
|
243
|
-
let casing = 'original';
|
|
244
|
-
if (args[0]) {
|
|
245
|
-
casing = (0, utils_1.getLiteral)(args[0]);
|
|
246
|
-
}
|
|
247
|
-
const containingModel = (0, langium_1.getContainerOfType)(invocation, ast_1.isDataModel);
|
|
248
|
-
if (!containingModel) {
|
|
249
|
-
throw new TypeScriptExpressionTransformerError('currentModel() must be called inside a model');
|
|
250
|
-
}
|
|
251
|
-
return this.toStringWithCaseChange(containingModel.name, casing);
|
|
252
|
-
}
|
|
253
|
-
_currentOperation(_invocation, args) {
|
|
254
|
-
let casing = 'original';
|
|
255
|
-
if (args[0]) {
|
|
256
|
-
casing = (0, utils_1.getLiteral)(args[0]);
|
|
257
|
-
}
|
|
258
|
-
if (!this.options.operationContext) {
|
|
259
|
-
throw new TypeScriptExpressionTransformerError('currentOperation() must be called inside an access policy rule');
|
|
260
|
-
}
|
|
261
|
-
let contextOperation = this.options.operationContext;
|
|
262
|
-
if (contextOperation === 'postUpdate') {
|
|
263
|
-
contextOperation = 'update';
|
|
264
|
-
}
|
|
265
|
-
return this.toStringWithCaseChange(contextOperation, casing);
|
|
266
|
-
}
|
|
267
|
-
ensureBoolean(expr) {
|
|
268
|
-
if (this.options.context === constants_1.ExpressionContext.ValidationRule) {
|
|
269
|
-
// all fields are optional in a validation context, so we treat undefined
|
|
270
|
-
// as boolean true
|
|
271
|
-
return `(${expr} ?? true)`;
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
return `((${expr}) ?? false)`;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
ensureBooleanTernary(predicate, transformedPredicate, value) {
|
|
278
|
-
if ((0, ast_1.isLiteralExpr)(predicate) || (0, ast_1.isArrayExpr)(predicate)) {
|
|
279
|
-
// these are never undefined
|
|
280
|
-
return value;
|
|
281
|
-
}
|
|
282
|
-
if (this.options.context === constants_1.ExpressionContext.ValidationRule) {
|
|
283
|
-
// all fields are optional in a validation context, so we treat undefined
|
|
284
|
-
// as boolean true
|
|
285
|
-
return `((${transformedPredicate}) !== undefined ? (${value}): true)`;
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
return `((${transformedPredicate}) !== undefined ? (${value}): false)`;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
// #endregion
|
|
292
|
-
reference(expr) {
|
|
293
|
-
var _a, _b;
|
|
294
|
-
if (!expr.target.ref) {
|
|
295
|
-
throw new TypeScriptExpressionTransformerError(`Unresolved ReferenceExpr`);
|
|
296
|
-
}
|
|
297
|
-
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
298
|
-
return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.isPostGuard) {
|
|
302
|
-
// if we're processing post-update, any direct field access should be
|
|
303
|
-
// treated as access to context.preValue, which is entity's value before
|
|
304
|
-
// the update
|
|
305
|
-
return `context.preValue?.${expr.target.ref.name}`;
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
return ((_b = this.options) === null || _b === void 0 ? void 0 : _b.fieldReferenceContext)
|
|
309
|
-
? `${this.options.fieldReferenceContext}?.${expr.target.ref.name}`
|
|
310
|
-
: expr.target.ref.name;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
null() {
|
|
315
|
-
return 'null';
|
|
316
|
-
}
|
|
317
|
-
array(expr, normalizeUndefined) {
|
|
318
|
-
return `[${expr.items.map((item) => this.transform(item, normalizeUndefined)).join(', ')}]`;
|
|
319
|
-
}
|
|
320
|
-
literal(expr) {
|
|
321
|
-
if (expr.$type === ast_1.StringLiteral) {
|
|
322
|
-
return `'${expr.value}'`;
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
return expr.value.toString();
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
unary(expr, normalizeUndefined) {
|
|
329
|
-
const operand = this.transform(expr.operand, normalizeUndefined);
|
|
330
|
-
let result = `(${expr.operator} ${operand})`;
|
|
331
|
-
if (expr.operator === '!' &&
|
|
332
|
-
this.options.context === constants_1.ExpressionContext.ValidationRule &&
|
|
333
|
-
(0, utils_1.isDataModelFieldReference)(expr.operand)) {
|
|
334
|
-
// in a validation context, we treat unary involving undefined as boolean true
|
|
335
|
-
result = this.ensureBooleanTernary(expr.operand, operand, result);
|
|
336
|
-
}
|
|
337
|
-
return result;
|
|
338
|
-
}
|
|
339
|
-
isModelType(expr) {
|
|
340
|
-
var _a;
|
|
341
|
-
return (0, ast_1.isDataModel)((_a = expr.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl);
|
|
342
|
-
}
|
|
343
|
-
binary(expr, normalizeUndefined) {
|
|
344
|
-
let left = this.transform(expr.left, normalizeUndefined);
|
|
345
|
-
let right = this.transform(expr.right, normalizeUndefined);
|
|
346
|
-
if (this.isModelType(expr.left) && this.isModelType(expr.right)) {
|
|
347
|
-
// comparison between model type values, map to id comparison
|
|
348
|
-
left = `(${left}?.id ?? null)`;
|
|
349
|
-
right = `(${right}?.id ?? null)`;
|
|
350
|
-
}
|
|
351
|
-
let _default = `(${left} ${expr.operator} ${right})`;
|
|
352
|
-
if (this.options.context === constants_1.ExpressionContext.ValidationRule) {
|
|
353
|
-
const nullComparison = this.extractNullComparison(expr);
|
|
354
|
-
if (nullComparison) {
|
|
355
|
-
// null comparison covers both null and undefined
|
|
356
|
-
const { fieldRef } = nullComparison;
|
|
357
|
-
const field = this.transform(fieldRef, normalizeUndefined);
|
|
358
|
-
if (expr.operator === '==') {
|
|
359
|
-
_default = `(${field} === null || ${field} === undefined)`;
|
|
360
|
-
}
|
|
361
|
-
else if (expr.operator === '!=') {
|
|
362
|
-
_default = `(${field} !== null && ${field} !== undefined)`;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
// for other comparisons, in a validation context,
|
|
367
|
-
// we treat binary involving undefined as boolean true
|
|
368
|
-
if ((0, utils_1.isDataModelFieldReference)(expr.left)) {
|
|
369
|
-
_default = this.ensureBooleanTernary(expr.left, left, _default);
|
|
370
|
-
}
|
|
371
|
-
if ((0, utils_1.isDataModelFieldReference)(expr.right)) {
|
|
372
|
-
_default = this.ensureBooleanTernary(expr.right, right, _default);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return (0, ts_pattern_1.match)(expr.operator)
|
|
377
|
-
.with('in', () => {
|
|
378
|
-
const left = `${this.transform(expr.left, normalizeUndefined)}`;
|
|
379
|
-
const right = `${this.transform(expr.right, false)}`;
|
|
380
|
-
let result = `${right}?.includes(${left})`;
|
|
381
|
-
if (this.options.context === constants_1.ExpressionContext.ValidationRule) {
|
|
382
|
-
// in a validation context, we treat binary involving undefined as boolean true
|
|
383
|
-
result = this.ensureBooleanTernary(expr.left, left, this.ensureBooleanTernary(expr.right, right, result));
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
result = this.ensureBoolean(result);
|
|
387
|
-
}
|
|
388
|
-
return result;
|
|
389
|
-
})
|
|
390
|
-
.with(ts_pattern_1.P.union('==', '!='), () => {
|
|
391
|
-
var _a;
|
|
392
|
-
if ((0, ast_1.isThisExpr)(expr.left) || (0, ast_1.isThisExpr)(expr.right)) {
|
|
393
|
-
// map equality comparison with `this` to id comparison
|
|
394
|
-
const _this = (0, ast_1.isThisExpr)(expr.left) ? expr.left : expr.right;
|
|
395
|
-
const model = (_a = _this.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl;
|
|
396
|
-
const idFields = (0, utils_1.getIdFields)(model);
|
|
397
|
-
if (!idFields || idFields.length === 0) {
|
|
398
|
-
throw new TypeScriptExpressionTransformerError(`model "${model.name}" does not have an id field`);
|
|
399
|
-
}
|
|
400
|
-
let result = `allFieldsEqual(${this.transform(expr.left, false)},
|
|
401
|
-
${this.transform(expr.right, false)}, [${idFields.map((f) => "'" + f.name + "'").join(', ')}])`;
|
|
402
|
-
if (expr.operator === '!=') {
|
|
403
|
-
result = `!${result}`;
|
|
404
|
-
}
|
|
405
|
-
return result;
|
|
406
|
-
}
|
|
407
|
-
else {
|
|
408
|
-
return _default;
|
|
409
|
-
}
|
|
410
|
-
})
|
|
411
|
-
.with(ts_pattern_1.P.union('?', '!', '^'), (op) => this.collectionPredicate(expr, op, normalizeUndefined))
|
|
412
|
-
.otherwise(() => _default);
|
|
413
|
-
}
|
|
414
|
-
extractNullComparison(expr) {
|
|
415
|
-
if (expr.operator !== '==' && expr.operator !== '!=') {
|
|
416
|
-
return undefined;
|
|
417
|
-
}
|
|
418
|
-
if ((0, utils_1.isDataModelFieldReference)(expr.left) && (0, ast_1.isNullExpr)(expr.right)) {
|
|
419
|
-
return { fieldRef: expr.left, nullExpr: expr.right };
|
|
420
|
-
}
|
|
421
|
-
else if ((0, utils_1.isDataModelFieldReference)(expr.right) && (0, ast_1.isNullExpr)(expr.left)) {
|
|
422
|
-
return { fieldRef: expr.right, nullExpr: expr.left };
|
|
423
|
-
}
|
|
424
|
-
else {
|
|
425
|
-
return undefined;
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
collectionPredicate(expr, operator, normalizeUndefined) {
|
|
429
|
-
const operand = this.transform(expr.left, normalizeUndefined);
|
|
430
|
-
const innerTransformer = new TypeScriptExpressionTransformer(Object.assign(Object.assign({}, this.options), { isPostGuard: false, fieldReferenceContext: '_item', operationContext: this.options.operationContext }));
|
|
431
|
-
const predicate = innerTransformer.transform(expr.right, normalizeUndefined);
|
|
432
|
-
return (0, ts_pattern_1.match)(operator)
|
|
433
|
-
.with('?', () => this.ensureBoolean(`(${operand})?.some((_item: any) => ${predicate})`))
|
|
434
|
-
.with('!', () => this.ensureBoolean(`(${operand})?.every((_item: any) => ${predicate})`))
|
|
435
|
-
.with('^', () => `!((${operand})?.some((_item: any) => ${predicate}))`)
|
|
436
|
-
.exhaustive();
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
exports.TypeScriptExpressionTransformer = TypeScriptExpressionTransformer;
|
|
440
|
-
__decorate([
|
|
441
|
-
func('auth')
|
|
442
|
-
], TypeScriptExpressionTransformer.prototype, "_auth", null);
|
|
443
|
-
__decorate([
|
|
444
|
-
func('now')
|
|
445
|
-
], TypeScriptExpressionTransformer.prototype, "_now", null);
|
|
446
|
-
__decorate([
|
|
447
|
-
func('length')
|
|
448
|
-
], TypeScriptExpressionTransformer.prototype, "_length", null);
|
|
449
|
-
__decorate([
|
|
450
|
-
func('contains')
|
|
451
|
-
], TypeScriptExpressionTransformer.prototype, "_contains", null);
|
|
452
|
-
__decorate([
|
|
453
|
-
func('startsWith')
|
|
454
|
-
], TypeScriptExpressionTransformer.prototype, "_startsWith", null);
|
|
455
|
-
__decorate([
|
|
456
|
-
func('endsWith')
|
|
457
|
-
], TypeScriptExpressionTransformer.prototype, "_endsWith", null);
|
|
458
|
-
__decorate([
|
|
459
|
-
func('regex')
|
|
460
|
-
], TypeScriptExpressionTransformer.prototype, "_regex", null);
|
|
461
|
-
__decorate([
|
|
462
|
-
func('email')
|
|
463
|
-
], TypeScriptExpressionTransformer.prototype, "_email", null);
|
|
464
|
-
__decorate([
|
|
465
|
-
func('datetime')
|
|
466
|
-
], TypeScriptExpressionTransformer.prototype, "_datetime", null);
|
|
467
|
-
__decorate([
|
|
468
|
-
func('url')
|
|
469
|
-
], TypeScriptExpressionTransformer.prototype, "_url", null);
|
|
470
|
-
__decorate([
|
|
471
|
-
func('has')
|
|
472
|
-
], TypeScriptExpressionTransformer.prototype, "_has", null);
|
|
473
|
-
__decorate([
|
|
474
|
-
func('hasEvery')
|
|
475
|
-
], TypeScriptExpressionTransformer.prototype, "_hasEvery", null);
|
|
476
|
-
__decorate([
|
|
477
|
-
func('hasSome')
|
|
478
|
-
], TypeScriptExpressionTransformer.prototype, "_hasSome", null);
|
|
479
|
-
__decorate([
|
|
480
|
-
func('isEmpty')
|
|
481
|
-
], TypeScriptExpressionTransformer.prototype, "_isEmpty", null);
|
|
482
|
-
__decorate([
|
|
483
|
-
func('check')
|
|
484
|
-
], TypeScriptExpressionTransformer.prototype, "_check", null);
|
|
485
|
-
__decorate([
|
|
486
|
-
func('currentModel')
|
|
487
|
-
], TypeScriptExpressionTransformer.prototype, "_currentModel", null);
|
|
488
|
-
__decorate([
|
|
489
|
-
func('currentOperation')
|
|
490
|
-
], TypeScriptExpressionTransformer.prototype, "_currentOperation", null);
|
|
491
|
-
//# sourceMappingURL=typescript-expression-transformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-expression-transformer.js","sourceRoot":"","sources":["../src/typescript-expression-transformer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAqBkC;AAClC,qCAA6C;AAC7C,2CAAsC;AACtC,2CAAgD;AAChD,mCAAuD;AACvD,mCAAyG;AAEzG,MAAa,oCAAqC,SAAQ,KAAK;IAC3D,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,oFAIC;AAaD,oDAAoD;AACpD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE/D,6BAA6B;AAC7B,SAAS,IAAI,CAAC,IAAY;IACtB,OAAO,UAAU,MAAe,EAAE,WAAmB,EAAE,UAA8B;QACjF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAa,+BAA+B;IACxC;;;;OAIG;IACH,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD;;;;OAIG;IACH,SAAS,CAAC,IAAgB,EAAE,kBAAkB,GAAG,IAAI;QACjD,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,mBAAa,CAAC;YACnB,KAAK,mBAAa,CAAC;YACnB,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAC;YAE7C,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,EAAE,kBAAkB,CAAC,CAAC;YAE7D,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YAEvB,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;YAEvC,KAAK,mBAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAqB,CAAC,CAAC;YAEjD,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAsB,EAAE,kBAAkB,CAAC,CAAC;YAEvE,KAAK,sBAAgB;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAwB,EAAE,kBAAkB,CAAC,CAAC;YAE3E,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,EAAE,kBAAkB,CAAC,CAAC;YAE7D,KAAK,gBAAU;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAkB,EAAE,kBAAkB,CAAC,CAAC;YAE/D;gBACI,MAAM,IAAI,oCAAoC,CAAC,gCAAgC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,KAAe;;QACxB,yCAAyC;QACzC,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,mCAAI,OAAO,CAAC;IACnD,CAAC;IAEO,YAAY,CAAC,IAAsB,EAAE,kBAA2B;;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,oCAAoC,CAAC,6BAA6B,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,MAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,oCAAoC,CAAC,gDAAgD,CAAC,CAAC;YACrG,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAChC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;gBAC5D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,kBAAkB,EAAE,CAAC;gBACrB,oGAAoG;gBACpG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;YACpG,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1F,CAAC;QACL,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,IAAoB,EAAE,kBAA2B;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,oCAAoC,CAAC,2BAA2B,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,oCAAoC,CAAC,8CAA8C,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,oCAAoC,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,uCAAuC;IAEvC,mCAAmC;IAG3B,KAAK;QACT,OAAO,MAAM,CAAC;IAClB,CAAC;IAGO,IAAI;QACR,OAAO,cAAc,CAAC;IAC1B,CAAC;IAGO,OAAO,CAAC,WAA2B,EAAE,IAAkB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,MAAc,CAAC;QACnB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,cAAc,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAC9B,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EACL,GAAG,KAAK,eAAe,GAAG,OAAO,KAAK,eAAe,GAAG,EAAE,CAC7D,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGO,SAAS,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAA,kBAAU,EAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC9D,IAAI,MAAc,CAAC;QACnB,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC;QAC/G,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,WAAW,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,SAAS,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,MAAM,CAAC,WAA2B,EAAE,IAAkB;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;IAC9G,CAAC;IAGO,MAAM,CAAC,WAA2B,EAAE,IAAkB;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gCAAgC,KAAK,WAAW,CAAC,CAAC;IACvG,CAAC;IAGO,SAAS,CAAC,WAA2B,EAAE,IAAkB;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,oBAAoB,CAC5B,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EACL,mDAAmD,KAAK,WAAW,CACtE,CAAC;IACN,CAAC;IAGO,IAAI,CAAC,WAA2B,EAAE,IAAkB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,8BAA8B,KAAK,WAAW,CAAC,CAAC;IACrG,CAAC;IAGO,IAAI,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,SAAS,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,oBAAoB,CAC5B,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EACL,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,KAAK,mBAAmB,CAC9F,CAAC;IACN,CAAC;IAGO,QAAQ,CAAC,WAA2B,EAAE,IAAkB,EAAE,kBAA2B;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,oBAAoB,CAC5B,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EACL,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,KAAK,mBAAmB,CAC7F,CAAC;IACN,CAAC;IAGO,QAAQ,CAAC,WAA2B,EAAE,IAAkB;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,KAAK,OAAO,KAAK,iBAAiB,CAAC;IACnD,CAAC;IAGO,MAAM,CAAC,WAA2B,EAAE,IAAkB;;QAC1D,IAAI,CAAC,IAAA,iCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,oCAAoC,CAAC,2CAA2C,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,IAAA,iBAAW,EAAC,MAAA,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,0CAAE,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,oCAAoC,CAAC,oDAAoD,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAkB,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAA,QAAQ,CAAC,aAAa,0CAAE,IAAiB,CAAC;QAE9D,IAAI,SAAiB,CAAC;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,oCAAoC,CAAC,qDAAqD,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,oCAAoC,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;YAC7F,CAAC;YACD,SAAS,GAAG,OAAO,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACjC,MAAM,IAAI,oCAAoC,CAAC,iDAAiD,CAAC,CAAC;YACtG,CAAC;YACD,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC9C,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,oCAA4B,EAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACjG,OAAO,GAAG,iBAAiB,UAAU,QAAQ,CAAC,MAAM,CAAC,QAAQ,YAAY,CAAC;IAC9E,CAAC;IAEO,sBAAsB,CAAC,KAAa,EAAE,MAAc;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAA,kBAAK,EAAC,MAAM,CAAC;aACf,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC;aACpC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;aAC/C,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;aAC/C,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;aAC/E,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;aACjF,UAAU,EAAE,CAAC;IACtB,CAAC;IAGO,aAAa,CAAC,UAA0B,EAAE,IAAkB;QAChE,IAAI,MAAM,GAAW,UAAU,CAAC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACV,MAAM,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAW,CAAC;QACnD,CAAC;QAED,MAAM,eAAe,GAAG,IAAA,4BAAkB,EAAC,UAAU,EAAE,iBAAW,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,oCAAoC,CAAC,8CAA8C,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAGO,iBAAiB,CAAC,WAA2B,EAAE,IAAkB;QACrE,IAAI,MAAM,GAAW,UAAU,CAAC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACV,MAAM,GAAG,IAAA,kBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAW,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,oCAAoC,CAC1C,gEAAgE,CACnE,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACrD,IAAI,gBAAgB,KAAK,YAAY,EAAE,CAAC;YACpC,gBAAgB,GAAG,QAAQ,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEO,aAAa,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,6BAAiB,CAAC,cAAc,EAAE,CAAC;YAC5D,yEAAyE;YACzE,kBAAkB;YAClB,OAAO,IAAI,IAAI,WAAW,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,IAAI,aAAa,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,SAAqB,EAAE,oBAA4B,EAAE,KAAa;QAC3F,IAAI,IAAA,mBAAa,EAAC,SAAS,CAAC,IAAI,IAAA,iBAAW,EAAC,SAAS,CAAC,EAAE,CAAC;YACrD,4BAA4B;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,6BAAiB,CAAC,cAAc,EAAE,CAAC;YAC5D,yEAAyE;YACzE,kBAAkB;YAClB,OAAO,KAAK,oBAAoB,sBAAsB,KAAK,UAAU,CAAC;QAC1E,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,oBAAoB,sBAAsB,KAAK,WAAW,CAAC;QAC3E,CAAC;IACL,CAAC;IAED,aAAa;IAEL,SAAS,CAAC,IAAmB;;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,oCAAoC,CAAC,0BAA0B,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,EAAE,CAAC;gBAC5B,qEAAqE;gBACrE,wEAAwE;gBACxE,aAAa;gBACb,OAAO,qBAAqB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,qBAAqB;oBACtC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;oBAClE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,CAAC;QACL,CAAC;IACL,CAAC;IAEO,IAAI;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,IAAe,EAAE,kBAA2B;QACtD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAChG,CAAC;IAEO,OAAO,CAAC,IAAiB;QAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAa,EAAE,CAAC;YAC/B,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAe,EAAE,kBAA2B;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACjE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC;QAC7C,IACI,IAAI,CAAC,QAAQ,KAAK,GAAG;YACrB,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,6BAAiB,CAAC,cAAc;YACzD,IAAA,iCAAyB,EAAC,IAAI,CAAC,OAAO,CAAC,EACzC,CAAC;YACC,8EAA8E;YAC9E,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,IAAgB;;QAChC,OAAO,IAAA,iBAAW,EAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,IAAgB,EAAE,kBAA2B;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,6DAA6D;YAC7D,IAAI,GAAG,IAAI,IAAI,eAAe,CAAC;YAC/B,KAAK,GAAG,IAAI,KAAK,eAAe,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,CAAC;QAErD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,6BAAiB,CAAC,cAAc,EAAE,CAAC;YAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,cAAc,EAAE,CAAC;gBACjB,iDAAiD;gBACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;gBAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACzB,QAAQ,GAAG,IAAI,KAAK,gBAAgB,KAAK,iBAAiB,CAAC;gBAC/D,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAChC,QAAQ,GAAG,IAAI,KAAK,gBAAgB,KAAK,iBAAiB,CAAC;gBAC/D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,kDAAkD;gBAClD,sDAAsD;gBACtD,IAAI,IAAA,iCAAyB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,IAAA,iCAAyB,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAA,kBAAK,EAAC,IAAI,CAAC,QAAQ,CAAC;aACtB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YACb,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,GAAG,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,6BAAiB,CAAC,cAAc,EAAE,CAAC;gBAC5D,+EAA+E;gBAC/E,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,EACJ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CACvD,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;aACD,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;;YAC5B,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,uDAAuD;gBACvD,MAAM,KAAK,GAAG,IAAA,gBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7D,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAiB,CAAC;gBACrD,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,oCAAoC,CAC1C,UAAU,KAAK,CAAC,IAAI,6BAA6B,CACpD,CAAC;gBACN,CAAC;gBACD,IAAI,MAAM,GAAG,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;kBACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5F,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACzB,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC1B,CAAC;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;aAC5F,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEO,qBAAqB,CAAC,IAAgB;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,IAAA,iCAAyB,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,CAAC;aAAM,IAAI,IAAA,iCAAyB,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAgB,EAAE,QAAyB,EAAE,kBAA2B;QAChG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,+BAA+B,iCACrD,IAAI,CAAC,OAAO,KACf,WAAW,EAAE,KAAK,EAClB,qBAAqB,EAAE,OAAO,EAC9B,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,IACjD,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAE7E,OAAO,IAAA,kBAAK,EAAC,QAAQ,CAAC;aACjB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO,2BAA2B,SAAS,GAAG,CAAC,CAAC;aACvF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO,4BAA4B,SAAS,GAAG,CAAC,CAAC;aACxF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,OAAO,2BAA2B,SAAS,IAAI,CAAC;aACtE,UAAU,EAAE,CAAC;IACtB,CAAC;CACJ;AAveD,0EAueC;AAjYW;IADP,IAAI,CAAC,MAAM,CAAC;4DAGZ;AAGO;IADP,IAAI,CAAC,KAAK,CAAC;2DAGX;AAGO;IADP,IAAI,CAAC,QAAQ,CAAC;8DAkBd;AAGO;IADP,IAAI,CAAC,UAAU,CAAC;gEAWhB;AAGO;IADP,IAAI,CAAC,YAAY,CAAC;kEAKlB;AAGO;IADP,IAAI,CAAC,UAAU,CAAC;gEAKhB;AAGO;IADP,IAAI,CAAC,OAAO,CAAC;6DAKb;AAGO;IADP,IAAI,CAAC,OAAO,CAAC;6DAIb;AAGO;IADP,IAAI,CAAC,UAAU,CAAC;gEAQhB;AAGO;IADP,IAAI,CAAC,KAAK,CAAC;2DAIX;AAGO;IADP,IAAI,CAAC,KAAK,CAAC;2DAKX;AAGO;IADP,IAAI,CAAC,UAAU,CAAC;gEAQhB;AAGO;IADP,IAAI,CAAC,SAAS,CAAC;+DAQf;AAGO;IADP,IAAI,CAAC,SAAS,CAAC;+DAIf;AAGO;IADP,IAAI,CAAC,OAAO,CAAC;6DA+Bb;AAgBO;IADP,IAAI,CAAC,cAAc,CAAC;oEAYpB;AAGO;IADP,IAAI,CAAC,kBAAkB,CAAC;wEAiBxB"}
|
package/utils.d.ts
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { AstNode, Attribute, AttributeParam, ConfigExpr, DataModel, DataModelAttribute, DataModelField, DataModelFieldAttribute, Enum, EnumField, Expression, FunctionDecl, InternalAttribute, Model, Reference, ReferenceExpr, TypeDef, TypeDefField } from '@zenstackhq/language/ast';
|
|
2
|
-
import { ExpressionContext } from './constants';
|
|
3
|
-
import { type PluginDeclaredOptions, type PluginOptions } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Gets data models in the ZModel schema.
|
|
6
|
-
*/
|
|
7
|
-
export declare function getDataModels(model: Model, includeIgnored?: boolean): DataModel[];
|
|
8
|
-
/**
|
|
9
|
-
* Gets data models and type defs in the ZModel schema.
|
|
10
|
-
*/
|
|
11
|
-
export declare function getDataModelAndTypeDefs(model: Model, includeIgnored?: boolean): (DataModel | TypeDef)[];
|
|
12
|
-
export declare function resolved<T extends AstNode>(ref: Reference<T>): T;
|
|
13
|
-
export declare function getLiteral<T extends string | number | boolean | any = any>(expr: Expression | ConfigExpr | undefined): T | undefined;
|
|
14
|
-
export declare function getArray(expr: Expression | ConfigExpr | undefined): Expression[] | (import("@zenstackhq/language/ast").LiteralExpr | import("@zenstackhq/language/ast").ConfigInvocationExpr)[] | undefined;
|
|
15
|
-
export declare function getLiteralArray<T extends string | number | boolean | any = any>(expr: Expression | ConfigExpr | undefined): T[] | undefined;
|
|
16
|
-
export declare function getObjectLiteral<T>(expr: Expression | ConfigExpr | undefined): T | undefined;
|
|
17
|
-
export declare function indentString(string: string, count?: number): string;
|
|
18
|
-
export declare function hasAttribute(decl: DataModel | TypeDef | DataModelField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): boolean;
|
|
19
|
-
export declare function getAttribute(decl: DataModel | TypeDef | DataModelField | TypeDefField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): DataModelAttribute | DataModelFieldAttribute | undefined;
|
|
20
|
-
export declare function getAttributeArgs(attr: DataModelAttribute | DataModelFieldAttribute | InternalAttribute): Record<string, Expression>;
|
|
21
|
-
export declare function getAttributeArg(attr: DataModelAttribute | DataModelFieldAttribute | InternalAttribute, name: string): Expression | undefined;
|
|
22
|
-
export declare function getAttributeArgLiteral<T extends string | number | boolean>(attr: DataModelAttribute | DataModelFieldAttribute, name: string): T | undefined;
|
|
23
|
-
export declare function isEnumFieldReference(node: AstNode): node is ReferenceExpr;
|
|
24
|
-
export declare function isDataModelFieldReference(node: AstNode): node is ReferenceExpr;
|
|
25
|
-
/**
|
|
26
|
-
* Gets `@@id` fields declared at the data model level (including search in base models)
|
|
27
|
-
*/
|
|
28
|
-
export declare function getModelIdFields(model: DataModel): DataModelField[];
|
|
29
|
-
/**
|
|
30
|
-
* Gets `@@unique` fields declared at the data model level (including search in base models)
|
|
31
|
-
*/
|
|
32
|
-
export declare function getModelUniqueFields(model: DataModel): DataModelField[];
|
|
33
|
-
/**
|
|
34
|
-
* Returns if the given field is declared as an id field.
|
|
35
|
-
*/
|
|
36
|
-
export declare function isIdField(field: DataModelField): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Returns if the given field is a relation field.
|
|
39
|
-
*/
|
|
40
|
-
export declare function isRelationshipField(field: DataModelField): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Returns if the given field is a relation foreign key field.
|
|
43
|
-
*/
|
|
44
|
-
export declare function isForeignKeyField(field: DataModelField): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Gets the foreign key-id field pairs from the given relation field.
|
|
47
|
-
*/
|
|
48
|
-
export declare function getRelationKeyPairs(relationField: DataModelField): {
|
|
49
|
-
id: DataModelField;
|
|
50
|
-
foreignKey: DataModelField;
|
|
51
|
-
}[];
|
|
52
|
-
/**
|
|
53
|
-
* Gets the relation field of the given foreign key field.
|
|
54
|
-
*/
|
|
55
|
-
export declare function getRelationField(fkField: DataModelField): DataModelField | undefined;
|
|
56
|
-
/**
|
|
57
|
-
* Gets the foreign key fields of the given relation field.
|
|
58
|
-
*/
|
|
59
|
-
export declare function getForeignKeyFields(relationField: DataModelField): DataModelField[];
|
|
60
|
-
export declare function resolvePath(_path: string, options: Pick<PluginOptions, 'schemaPath'>): string;
|
|
61
|
-
export declare function requireOption<T>(options: PluginDeclaredOptions, name: string, pluginName: string): T;
|
|
62
|
-
export declare function parseOptionAsStrings(options: PluginDeclaredOptions, optionName: string, pluginName: string): string[] | undefined;
|
|
63
|
-
export declare function getFunctionExpressionContext(funcDecl: FunctionDecl): ExpressionContext[];
|
|
64
|
-
export declare function isFutureExpr(node: AstNode): boolean;
|
|
65
|
-
export declare function isAuthInvocation(node: AstNode): boolean;
|
|
66
|
-
export declare function isFromStdlib(node: AstNode): boolean;
|
|
67
|
-
export declare function getContainingModel(node: AstNode | undefined): Model | null;
|
|
68
|
-
export declare function getPreviewFeatures(model: Model): string[] | undefined;
|
|
69
|
-
export declare function getAuthDecl(decls: (DataModel | TypeDef)[]): DataModel | TypeDef | undefined;
|
|
70
|
-
export declare function isDelegateModel(node: AstNode): boolean;
|
|
71
|
-
export declare function isDiscriminatorField(field: DataModelField): boolean;
|
|
72
|
-
export declare function getIdFields(decl: DataModel | TypeDef): (DataModelField | TypeDefField)[];
|
|
73
|
-
export declare function getFieldReference(expr: Expression): DataModelField | TypeDefField | undefined;
|
|
74
|
-
export declare function getModelFieldsWithBases(model: DataModel, includeDelegate?: boolean): DataModelField[];
|
|
75
|
-
export declare function getRecursiveBases(dataModel: DataModel, includeDelegate?: boolean, seen?: Set<DataModel>): DataModel[];
|
|
76
|
-
export declare function ensureEmptyDir(dir: string): void;
|
|
77
|
-
/**
|
|
78
|
-
* Gets the data source provider from the given model.
|
|
79
|
-
*/
|
|
80
|
-
export declare function getDataSourceProvider(model: Model): string | undefined;
|
|
81
|
-
/**
|
|
82
|
-
* Finds the original delegate base model that defines the given field.
|
|
83
|
-
*/
|
|
84
|
-
export declare function getInheritedFromDelegate(field: DataModelField): DataModel | undefined;
|
|
85
|
-
/**
|
|
86
|
-
* Gets the inheritance chain from "from" to "to", excluding them.
|
|
87
|
-
*/
|
|
88
|
-
export declare function getInheritanceChain(from: DataModel, to: DataModel): DataModel[] | undefined;
|
|
89
|
-
/**
|
|
90
|
-
* Get the opposite side of a relation field.
|
|
91
|
-
*/
|
|
92
|
-
export declare function getRelationBackLink(field: DataModelField): DataModelField | undefined;
|
|
93
|
-
/**
|
|
94
|
-
* Get the relation name of a relation field.
|
|
95
|
-
*/
|
|
96
|
-
export declare function getRelationName(field: DataModelField): string | number | boolean | undefined;
|
|
97
|
-
export declare function getPrismaClientGenerator(model: Model): {
|
|
98
|
-
name: string;
|
|
99
|
-
output: string | undefined;
|
|
100
|
-
previewFeatures: string[] | undefined;
|
|
101
|
-
provider: string | undefined;
|
|
102
|
-
isNewGenerator: boolean;
|
|
103
|
-
} | undefined;
|