@zenstackhq/sdk 3.0.0-beta.7 → 3.0.0-beta.9
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/dist/expression-Ce_oulwU.d.cts +44 -0
- package/dist/expression-Ce_oulwU.d.ts +44 -0
- package/dist/index.cjs +378 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +115 -3
- package/dist/index.d.ts +115 -3
- package/dist/index.js +378 -18
- package/dist/index.js.map +1 -1
- package/dist/schema.d.cts +3 -44
- package/dist/schema.d.ts +3 -44
- package/package.json +5 -5
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
type Expression = LiteralExpression | ArrayExpression | FieldExpression | MemberExpression | CallExpression | UnaryExpression | BinaryExpression | ThisExpression | NullExpression;
|
|
2
|
+
type LiteralExpression = {
|
|
3
|
+
kind: 'literal';
|
|
4
|
+
value: string | number | boolean;
|
|
5
|
+
};
|
|
6
|
+
type ArrayExpression = {
|
|
7
|
+
kind: 'array';
|
|
8
|
+
items: Expression[];
|
|
9
|
+
};
|
|
10
|
+
type FieldExpression = {
|
|
11
|
+
kind: 'field';
|
|
12
|
+
field: string;
|
|
13
|
+
};
|
|
14
|
+
type MemberExpression = {
|
|
15
|
+
kind: 'member';
|
|
16
|
+
receiver: Expression;
|
|
17
|
+
members: string[];
|
|
18
|
+
};
|
|
19
|
+
type UnaryExpression = {
|
|
20
|
+
kind: 'unary';
|
|
21
|
+
op: UnaryOperator;
|
|
22
|
+
operand: Expression;
|
|
23
|
+
};
|
|
24
|
+
type BinaryExpression = {
|
|
25
|
+
kind: 'binary';
|
|
26
|
+
op: BinaryOperator;
|
|
27
|
+
left: Expression;
|
|
28
|
+
right: Expression;
|
|
29
|
+
};
|
|
30
|
+
type CallExpression = {
|
|
31
|
+
kind: 'call';
|
|
32
|
+
function: string;
|
|
33
|
+
args?: Expression[];
|
|
34
|
+
};
|
|
35
|
+
type ThisExpression = {
|
|
36
|
+
kind: 'this';
|
|
37
|
+
};
|
|
38
|
+
type NullExpression = {
|
|
39
|
+
kind: 'null';
|
|
40
|
+
};
|
|
41
|
+
type UnaryOperator = '!';
|
|
42
|
+
type BinaryOperator = '&&' | '||' | '==' | '!=' | '<' | '<=' | '>' | '>=' | '?' | '!' | '^' | 'in';
|
|
43
|
+
|
|
44
|
+
export type { ArrayExpression as A, BinaryExpression as B, CallExpression as C, Expression as E, FieldExpression as F, LiteralExpression as L, MemberExpression as M, NullExpression as N, ThisExpression as T, UnaryExpression as U, UnaryOperator as a, BinaryOperator as b };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
type Expression = LiteralExpression | ArrayExpression | FieldExpression | MemberExpression | CallExpression | UnaryExpression | BinaryExpression | ThisExpression | NullExpression;
|
|
2
|
+
type LiteralExpression = {
|
|
3
|
+
kind: 'literal';
|
|
4
|
+
value: string | number | boolean;
|
|
5
|
+
};
|
|
6
|
+
type ArrayExpression = {
|
|
7
|
+
kind: 'array';
|
|
8
|
+
items: Expression[];
|
|
9
|
+
};
|
|
10
|
+
type FieldExpression = {
|
|
11
|
+
kind: 'field';
|
|
12
|
+
field: string;
|
|
13
|
+
};
|
|
14
|
+
type MemberExpression = {
|
|
15
|
+
kind: 'member';
|
|
16
|
+
receiver: Expression;
|
|
17
|
+
members: string[];
|
|
18
|
+
};
|
|
19
|
+
type UnaryExpression = {
|
|
20
|
+
kind: 'unary';
|
|
21
|
+
op: UnaryOperator;
|
|
22
|
+
operand: Expression;
|
|
23
|
+
};
|
|
24
|
+
type BinaryExpression = {
|
|
25
|
+
kind: 'binary';
|
|
26
|
+
op: BinaryOperator;
|
|
27
|
+
left: Expression;
|
|
28
|
+
right: Expression;
|
|
29
|
+
};
|
|
30
|
+
type CallExpression = {
|
|
31
|
+
kind: 'call';
|
|
32
|
+
function: string;
|
|
33
|
+
args?: Expression[];
|
|
34
|
+
};
|
|
35
|
+
type ThisExpression = {
|
|
36
|
+
kind: 'this';
|
|
37
|
+
};
|
|
38
|
+
type NullExpression = {
|
|
39
|
+
kind: 'null';
|
|
40
|
+
};
|
|
41
|
+
type UnaryOperator = '!';
|
|
42
|
+
type BinaryOperator = '&&' | '||' | '==' | '!=' | '<' | '<=' | '>' | '>=' | '?' | '!' | '^' | 'in';
|
|
43
|
+
|
|
44
|
+
export type { ArrayExpression as A, BinaryExpression as B, CallExpression as C, Expression as E, FieldExpression as F, LiteralExpression as L, MemberExpression as M, NullExpression as N, ThisExpression as T, UnaryExpression as U, UnaryOperator as a, BinaryOperator as b };
|
package/dist/index.cjs
CHANGED
|
@@ -31,6 +31,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
// src/index.ts
|
|
32
32
|
var src_exports = {};
|
|
33
33
|
__export(src_exports, {
|
|
34
|
+
DefaultOperationNodeVisitor: () => DefaultOperationNodeVisitor,
|
|
35
|
+
ExpressionVisitor: () => ExpressionVisitor,
|
|
34
36
|
ModelUtils: () => model_utils_exports,
|
|
35
37
|
PrismaSchemaGenerator: () => PrismaSchemaGenerator,
|
|
36
38
|
TsSchemaGenerator: () => TsSchemaGenerator,
|
|
@@ -134,12 +136,365 @@ function getIdFields(dm) {
|
|
|
134
136
|
__name(getIdFields, "getIdFields");
|
|
135
137
|
var DELEGATE_AUX_RELATION_PREFIX = "delegate_aux";
|
|
136
138
|
|
|
139
|
+
// src/expression-utils.ts
|
|
140
|
+
var import_ts_pattern = require("ts-pattern");
|
|
141
|
+
var ExpressionVisitor = class {
|
|
142
|
+
static {
|
|
143
|
+
__name(this, "ExpressionVisitor");
|
|
144
|
+
}
|
|
145
|
+
visit(expr) {
|
|
146
|
+
(0, import_ts_pattern.match)(expr).with({
|
|
147
|
+
kind: "literal"
|
|
148
|
+
}, (e) => this.visitLiteral(e)).with({
|
|
149
|
+
kind: "array"
|
|
150
|
+
}, (e) => this.visitArray(e)).with({
|
|
151
|
+
kind: "field"
|
|
152
|
+
}, (e) => this.visitField(e)).with({
|
|
153
|
+
kind: "member"
|
|
154
|
+
}, (e) => this.visitMember(e)).with({
|
|
155
|
+
kind: "binary"
|
|
156
|
+
}, (e) => this.visitBinary(e)).with({
|
|
157
|
+
kind: "unary"
|
|
158
|
+
}, (e) => this.visitUnary(e)).with({
|
|
159
|
+
kind: "call"
|
|
160
|
+
}, (e) => this.visitCall(e)).with({
|
|
161
|
+
kind: "this"
|
|
162
|
+
}, (e) => this.visitThis(e)).with({
|
|
163
|
+
kind: "null"
|
|
164
|
+
}, (e) => this.visitNull(e)).exhaustive();
|
|
165
|
+
}
|
|
166
|
+
visitLiteral(_e) {
|
|
167
|
+
}
|
|
168
|
+
visitArray(e) {
|
|
169
|
+
e.items.forEach((item) => this.visit(item));
|
|
170
|
+
}
|
|
171
|
+
visitField(_e) {
|
|
172
|
+
}
|
|
173
|
+
visitMember(e) {
|
|
174
|
+
this.visit(e.receiver);
|
|
175
|
+
}
|
|
176
|
+
visitBinary(e) {
|
|
177
|
+
this.visit(e.left);
|
|
178
|
+
this.visit(e.right);
|
|
179
|
+
}
|
|
180
|
+
visitUnary(e) {
|
|
181
|
+
this.visit(e.operand);
|
|
182
|
+
}
|
|
183
|
+
visitCall(e) {
|
|
184
|
+
e.args?.forEach((arg) => this.visit(arg));
|
|
185
|
+
}
|
|
186
|
+
visitThis(_e) {
|
|
187
|
+
}
|
|
188
|
+
visitNull(_e) {
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// src/default-operation-node-visitor.ts
|
|
193
|
+
var import_kysely = require("kysely");
|
|
194
|
+
var DefaultOperationNodeVisitor = class extends import_kysely.OperationNodeVisitor {
|
|
195
|
+
static {
|
|
196
|
+
__name(this, "DefaultOperationNodeVisitor");
|
|
197
|
+
}
|
|
198
|
+
defaultVisit(node) {
|
|
199
|
+
Object.values(node).forEach((value) => {
|
|
200
|
+
if (!value) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (Array.isArray(value)) {
|
|
204
|
+
value.forEach((el) => this.defaultVisit(el));
|
|
205
|
+
}
|
|
206
|
+
if (typeof value === "object" && "kind" in value && typeof value.kind === "string") {
|
|
207
|
+
this.visitNode(value);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
visitSelectQuery(node) {
|
|
212
|
+
this.defaultVisit(node);
|
|
213
|
+
}
|
|
214
|
+
visitSelection(node) {
|
|
215
|
+
this.defaultVisit(node);
|
|
216
|
+
}
|
|
217
|
+
visitColumn(node) {
|
|
218
|
+
this.defaultVisit(node);
|
|
219
|
+
}
|
|
220
|
+
visitAlias(node) {
|
|
221
|
+
this.defaultVisit(node);
|
|
222
|
+
}
|
|
223
|
+
visitTable(node) {
|
|
224
|
+
this.defaultVisit(node);
|
|
225
|
+
}
|
|
226
|
+
visitFrom(node) {
|
|
227
|
+
this.defaultVisit(node);
|
|
228
|
+
}
|
|
229
|
+
visitReference(node) {
|
|
230
|
+
this.defaultVisit(node);
|
|
231
|
+
}
|
|
232
|
+
visitAnd(node) {
|
|
233
|
+
this.defaultVisit(node);
|
|
234
|
+
}
|
|
235
|
+
visitOr(node) {
|
|
236
|
+
this.defaultVisit(node);
|
|
237
|
+
}
|
|
238
|
+
visitValueList(node) {
|
|
239
|
+
this.defaultVisit(node);
|
|
240
|
+
}
|
|
241
|
+
visitParens(node) {
|
|
242
|
+
this.defaultVisit(node);
|
|
243
|
+
}
|
|
244
|
+
visitJoin(node) {
|
|
245
|
+
this.defaultVisit(node);
|
|
246
|
+
}
|
|
247
|
+
visitRaw(node) {
|
|
248
|
+
this.defaultVisit(node);
|
|
249
|
+
}
|
|
250
|
+
visitWhere(node) {
|
|
251
|
+
this.defaultVisit(node);
|
|
252
|
+
}
|
|
253
|
+
visitInsertQuery(node) {
|
|
254
|
+
this.defaultVisit(node);
|
|
255
|
+
}
|
|
256
|
+
visitDeleteQuery(node) {
|
|
257
|
+
this.defaultVisit(node);
|
|
258
|
+
}
|
|
259
|
+
visitReturning(node) {
|
|
260
|
+
this.defaultVisit(node);
|
|
261
|
+
}
|
|
262
|
+
visitCreateTable(node) {
|
|
263
|
+
this.defaultVisit(node);
|
|
264
|
+
}
|
|
265
|
+
visitAddColumn(node) {
|
|
266
|
+
this.defaultVisit(node);
|
|
267
|
+
}
|
|
268
|
+
visitColumnDefinition(node) {
|
|
269
|
+
this.defaultVisit(node);
|
|
270
|
+
}
|
|
271
|
+
visitDropTable(node) {
|
|
272
|
+
this.defaultVisit(node);
|
|
273
|
+
}
|
|
274
|
+
visitOrderBy(node) {
|
|
275
|
+
this.defaultVisit(node);
|
|
276
|
+
}
|
|
277
|
+
visitOrderByItem(node) {
|
|
278
|
+
this.defaultVisit(node);
|
|
279
|
+
}
|
|
280
|
+
visitGroupBy(node) {
|
|
281
|
+
this.defaultVisit(node);
|
|
282
|
+
}
|
|
283
|
+
visitGroupByItem(node) {
|
|
284
|
+
this.defaultVisit(node);
|
|
285
|
+
}
|
|
286
|
+
visitUpdateQuery(node) {
|
|
287
|
+
this.defaultVisit(node);
|
|
288
|
+
}
|
|
289
|
+
visitColumnUpdate(node) {
|
|
290
|
+
this.defaultVisit(node);
|
|
291
|
+
}
|
|
292
|
+
visitLimit(node) {
|
|
293
|
+
this.defaultVisit(node);
|
|
294
|
+
}
|
|
295
|
+
visitOffset(node) {
|
|
296
|
+
this.defaultVisit(node);
|
|
297
|
+
}
|
|
298
|
+
visitOnConflict(node) {
|
|
299
|
+
this.defaultVisit(node);
|
|
300
|
+
}
|
|
301
|
+
visitOnDuplicateKey(node) {
|
|
302
|
+
this.defaultVisit(node);
|
|
303
|
+
}
|
|
304
|
+
visitCheckConstraint(node) {
|
|
305
|
+
this.defaultVisit(node);
|
|
306
|
+
}
|
|
307
|
+
visitDataType(node) {
|
|
308
|
+
this.defaultVisit(node);
|
|
309
|
+
}
|
|
310
|
+
visitSelectAll(node) {
|
|
311
|
+
this.defaultVisit(node);
|
|
312
|
+
}
|
|
313
|
+
visitIdentifier(node) {
|
|
314
|
+
this.defaultVisit(node);
|
|
315
|
+
}
|
|
316
|
+
visitSchemableIdentifier(node) {
|
|
317
|
+
this.defaultVisit(node);
|
|
318
|
+
}
|
|
319
|
+
visitValue(node) {
|
|
320
|
+
this.defaultVisit(node);
|
|
321
|
+
}
|
|
322
|
+
visitPrimitiveValueList(node) {
|
|
323
|
+
this.defaultVisit(node);
|
|
324
|
+
}
|
|
325
|
+
visitOperator(node) {
|
|
326
|
+
this.defaultVisit(node);
|
|
327
|
+
}
|
|
328
|
+
visitCreateIndex(node) {
|
|
329
|
+
this.defaultVisit(node);
|
|
330
|
+
}
|
|
331
|
+
visitDropIndex(node) {
|
|
332
|
+
this.defaultVisit(node);
|
|
333
|
+
}
|
|
334
|
+
visitList(node) {
|
|
335
|
+
this.defaultVisit(node);
|
|
336
|
+
}
|
|
337
|
+
visitPrimaryKeyConstraint(node) {
|
|
338
|
+
this.defaultVisit(node);
|
|
339
|
+
}
|
|
340
|
+
visitUniqueConstraint(node) {
|
|
341
|
+
this.defaultVisit(node);
|
|
342
|
+
}
|
|
343
|
+
visitReferences(node) {
|
|
344
|
+
this.defaultVisit(node);
|
|
345
|
+
}
|
|
346
|
+
visitWith(node) {
|
|
347
|
+
this.defaultVisit(node);
|
|
348
|
+
}
|
|
349
|
+
visitCommonTableExpression(node) {
|
|
350
|
+
this.defaultVisit(node);
|
|
351
|
+
}
|
|
352
|
+
visitCommonTableExpressionName(node) {
|
|
353
|
+
this.defaultVisit(node);
|
|
354
|
+
}
|
|
355
|
+
visitHaving(node) {
|
|
356
|
+
this.defaultVisit(node);
|
|
357
|
+
}
|
|
358
|
+
visitCreateSchema(node) {
|
|
359
|
+
this.defaultVisit(node);
|
|
360
|
+
}
|
|
361
|
+
visitDropSchema(node) {
|
|
362
|
+
this.defaultVisit(node);
|
|
363
|
+
}
|
|
364
|
+
visitAlterTable(node) {
|
|
365
|
+
this.defaultVisit(node);
|
|
366
|
+
}
|
|
367
|
+
visitDropColumn(node) {
|
|
368
|
+
this.defaultVisit(node);
|
|
369
|
+
}
|
|
370
|
+
visitRenameColumn(node) {
|
|
371
|
+
this.defaultVisit(node);
|
|
372
|
+
}
|
|
373
|
+
visitAlterColumn(node) {
|
|
374
|
+
this.defaultVisit(node);
|
|
375
|
+
}
|
|
376
|
+
visitModifyColumn(node) {
|
|
377
|
+
this.defaultVisit(node);
|
|
378
|
+
}
|
|
379
|
+
visitAddConstraint(node) {
|
|
380
|
+
this.defaultVisit(node);
|
|
381
|
+
}
|
|
382
|
+
visitDropConstraint(node) {
|
|
383
|
+
this.defaultVisit(node);
|
|
384
|
+
}
|
|
385
|
+
visitForeignKeyConstraint(node) {
|
|
386
|
+
this.defaultVisit(node);
|
|
387
|
+
}
|
|
388
|
+
visitCreateView(node) {
|
|
389
|
+
this.defaultVisit(node);
|
|
390
|
+
}
|
|
391
|
+
visitDropView(node) {
|
|
392
|
+
this.defaultVisit(node);
|
|
393
|
+
}
|
|
394
|
+
visitGenerated(node) {
|
|
395
|
+
this.defaultVisit(node);
|
|
396
|
+
}
|
|
397
|
+
visitDefaultValue(node) {
|
|
398
|
+
this.defaultVisit(node);
|
|
399
|
+
}
|
|
400
|
+
visitOn(node) {
|
|
401
|
+
this.defaultVisit(node);
|
|
402
|
+
}
|
|
403
|
+
visitValues(node) {
|
|
404
|
+
this.defaultVisit(node);
|
|
405
|
+
}
|
|
406
|
+
visitSelectModifier(node) {
|
|
407
|
+
this.defaultVisit(node);
|
|
408
|
+
}
|
|
409
|
+
visitCreateType(node) {
|
|
410
|
+
this.defaultVisit(node);
|
|
411
|
+
}
|
|
412
|
+
visitDropType(node) {
|
|
413
|
+
this.defaultVisit(node);
|
|
414
|
+
}
|
|
415
|
+
visitExplain(node) {
|
|
416
|
+
this.defaultVisit(node);
|
|
417
|
+
}
|
|
418
|
+
visitDefaultInsertValue(node) {
|
|
419
|
+
this.defaultVisit(node);
|
|
420
|
+
}
|
|
421
|
+
visitAggregateFunction(node) {
|
|
422
|
+
this.defaultVisit(node);
|
|
423
|
+
}
|
|
424
|
+
visitOver(node) {
|
|
425
|
+
this.defaultVisit(node);
|
|
426
|
+
}
|
|
427
|
+
visitPartitionBy(node) {
|
|
428
|
+
this.defaultVisit(node);
|
|
429
|
+
}
|
|
430
|
+
visitPartitionByItem(node) {
|
|
431
|
+
this.defaultVisit(node);
|
|
432
|
+
}
|
|
433
|
+
visitSetOperation(node) {
|
|
434
|
+
this.defaultVisit(node);
|
|
435
|
+
}
|
|
436
|
+
visitBinaryOperation(node) {
|
|
437
|
+
this.defaultVisit(node);
|
|
438
|
+
}
|
|
439
|
+
visitUnaryOperation(node) {
|
|
440
|
+
this.defaultVisit(node);
|
|
441
|
+
}
|
|
442
|
+
visitUsing(node) {
|
|
443
|
+
this.defaultVisit(node);
|
|
444
|
+
}
|
|
445
|
+
visitFunction(node) {
|
|
446
|
+
this.defaultVisit(node);
|
|
447
|
+
}
|
|
448
|
+
visitCase(node) {
|
|
449
|
+
this.defaultVisit(node);
|
|
450
|
+
}
|
|
451
|
+
visitWhen(node) {
|
|
452
|
+
this.defaultVisit(node);
|
|
453
|
+
}
|
|
454
|
+
visitJSONReference(node) {
|
|
455
|
+
this.defaultVisit(node);
|
|
456
|
+
}
|
|
457
|
+
visitJSONPath(node) {
|
|
458
|
+
this.defaultVisit(node);
|
|
459
|
+
}
|
|
460
|
+
visitJSONPathLeg(node) {
|
|
461
|
+
this.defaultVisit(node);
|
|
462
|
+
}
|
|
463
|
+
visitJSONOperatorChain(node) {
|
|
464
|
+
this.defaultVisit(node);
|
|
465
|
+
}
|
|
466
|
+
visitTuple(node) {
|
|
467
|
+
this.defaultVisit(node);
|
|
468
|
+
}
|
|
469
|
+
visitMergeQuery(node) {
|
|
470
|
+
this.defaultVisit(node);
|
|
471
|
+
}
|
|
472
|
+
visitMatched(node) {
|
|
473
|
+
this.defaultVisit(node);
|
|
474
|
+
}
|
|
475
|
+
visitAddIndex(node) {
|
|
476
|
+
this.defaultVisit(node);
|
|
477
|
+
}
|
|
478
|
+
visitCast(node) {
|
|
479
|
+
this.defaultVisit(node);
|
|
480
|
+
}
|
|
481
|
+
visitFetch(node) {
|
|
482
|
+
this.defaultVisit(node);
|
|
483
|
+
}
|
|
484
|
+
visitTop(node) {
|
|
485
|
+
this.defaultVisit(node);
|
|
486
|
+
}
|
|
487
|
+
visitOutput(node) {
|
|
488
|
+
this.defaultVisit(node);
|
|
489
|
+
}
|
|
490
|
+
};
|
|
491
|
+
|
|
137
492
|
// src/prisma/prisma-schema-generator.ts
|
|
138
493
|
var import_common_helpers = require("@zenstackhq/common-helpers");
|
|
139
494
|
var import_ast2 = require("@zenstackhq/language/ast");
|
|
140
495
|
var import_utils2 = require("@zenstackhq/language/utils");
|
|
141
496
|
var import_langium = require("langium");
|
|
142
|
-
var
|
|
497
|
+
var import_ts_pattern2 = require("ts-pattern");
|
|
143
498
|
|
|
144
499
|
// src/prisma/indent-string.ts
|
|
145
500
|
function indentString(string, count = 4) {
|
|
@@ -619,13 +974,20 @@ var PrismaSchemaGenerator = class {
|
|
|
619
974
|
}
|
|
620
975
|
}
|
|
621
976
|
const allAttributes = (0, import_utils2.getAllAttributes)(decl);
|
|
622
|
-
for (const attr of allAttributes.filter((attr2) => this.isPrismaAttribute(attr2))) {
|
|
977
|
+
for (const attr of allAttributes.filter((attr2) => this.isPrismaAttribute(attr2) && !this.isInheritedMapAttribute(attr2, decl))) {
|
|
623
978
|
this.generateContainerAttribute(model, attr);
|
|
624
979
|
}
|
|
625
980
|
decl.comments.forEach((c) => model.addComment(c));
|
|
626
981
|
this.generateDelegateRelationForBase(model, decl);
|
|
627
982
|
this.generateDelegateRelationForConcrete(model, decl);
|
|
628
983
|
}
|
|
984
|
+
isInheritedMapAttribute(attr, contextModel) {
|
|
985
|
+
if (attr.$container === contextModel) {
|
|
986
|
+
return false;
|
|
987
|
+
}
|
|
988
|
+
const attrName = attr.decl.ref?.name ?? attr.decl.$refText;
|
|
989
|
+
return attrName === "@@map";
|
|
990
|
+
}
|
|
629
991
|
isPrismaAttribute(attr) {
|
|
630
992
|
if (!attr.decl.ref) {
|
|
631
993
|
return false;
|
|
@@ -671,7 +1033,7 @@ var PrismaSchemaGenerator = class {
|
|
|
671
1033
|
(0, import_ast2.isTypeDef)(field.type.reference?.ref) ? false : field.type.array
|
|
672
1034
|
);
|
|
673
1035
|
const type = new ModelFieldType(fieldType, isArray, field.type.optional);
|
|
674
|
-
const attributes = field.attributes.filter((attr) => this.isPrismaAttribute(attr)).filter((attr) => !this.
|
|
1036
|
+
const attributes = field.attributes.filter((attr) => this.isPrismaAttribute(attr)).filter((attr) => !this.isDefaultWithAuthInvocation(attr)).filter((attr) => (
|
|
675
1037
|
// when building physical schema, exclude `@default` for id fields inherited from delegate base
|
|
676
1038
|
!(model_utils_exports.isIdField(field, contextModel) && this.isInheritedFromDelegate(field, contextModel) && attr.decl.$refText === "@default")
|
|
677
1039
|
)).map((attr) => this.makeFieldAttribute(attr));
|
|
@@ -681,7 +1043,7 @@ var PrismaSchemaGenerator = class {
|
|
|
681
1043
|
const result = model.addField(field.name, type, attributes, docs, addToFront);
|
|
682
1044
|
return result;
|
|
683
1045
|
}
|
|
684
|
-
|
|
1046
|
+
isDefaultWithAuthInvocation(attr) {
|
|
685
1047
|
if (attr.decl.ref?.name !== "@default") {
|
|
686
1048
|
return false;
|
|
687
1049
|
}
|
|
@@ -689,11 +1051,7 @@ var PrismaSchemaGenerator = class {
|
|
|
689
1051
|
if (!expr) {
|
|
690
1052
|
return false;
|
|
691
1053
|
}
|
|
692
|
-
return import_langium.AstUtils.streamAst(expr).some(
|
|
693
|
-
}
|
|
694
|
-
isFromPlugin(node) {
|
|
695
|
-
const model = import_langium.AstUtils.getContainerOfType(node, import_ast2.isModel);
|
|
696
|
-
return !!model && !!model.$document && model.$document.uri.path.endsWith("plugin.zmodel");
|
|
1054
|
+
return import_langium.AstUtils.streamAst(expr).some(import_utils2.isAuthInvocation);
|
|
697
1055
|
}
|
|
698
1056
|
isInheritedFromDelegate(field, contextModel) {
|
|
699
1057
|
return field.$container !== contextModel && model_utils_exports.isDelegateModel(field.$container);
|
|
@@ -707,7 +1065,7 @@ var PrismaSchemaGenerator = class {
|
|
|
707
1065
|
}
|
|
708
1066
|
makeAttributeArgValue(node) {
|
|
709
1067
|
if ((0, import_ast2.isLiteralExpr)(node)) {
|
|
710
|
-
const argType = (0,
|
|
1068
|
+
const argType = (0, import_ts_pattern2.match)(node.$type).with(import_ast2.StringLiteral, () => "String").with(import_ast2.NumberLiteral, () => "Number").with(import_ast2.BooleanLiteral, () => "Boolean").exhaustive();
|
|
711
1069
|
return new AttributeArgValue(argType, node.value);
|
|
712
1070
|
} else if ((0, import_ast2.isArrayExpr)(node)) {
|
|
713
1071
|
return new AttributeArgValue("Array", new Array(...node.items.map((item) => this.makeAttributeArgValue(item))));
|
|
@@ -726,7 +1084,7 @@ var PrismaSchemaGenerator = class {
|
|
|
726
1084
|
}
|
|
727
1085
|
makeFunctionCall(node) {
|
|
728
1086
|
return new FunctionCall(node.function.ref.name, node.args.map((arg) => {
|
|
729
|
-
const val = (0,
|
|
1087
|
+
const val = (0, import_ts_pattern2.match)(arg.value).when(import_ast2.isStringLiteral, (v) => `"${v.value}"`).when(import_ast2.isLiteralExpr, (v) => v.value.toString()).when(import_ast2.isNullExpr, () => "null").otherwise(() => {
|
|
730
1088
|
throw new Error("Function call argument must be literal or null");
|
|
731
1089
|
});
|
|
732
1090
|
return new FunctionCallArg(val);
|
|
@@ -815,7 +1173,7 @@ var import_ast3 = require("@zenstackhq/language/ast");
|
|
|
815
1173
|
var import_utils3 = require("@zenstackhq/language/utils");
|
|
816
1174
|
var import_node_fs = __toESM(require("fs"), 1);
|
|
817
1175
|
var import_node_path = __toESM(require("path"), 1);
|
|
818
|
-
var
|
|
1176
|
+
var import_ts_pattern3 = require("ts-pattern");
|
|
819
1177
|
var ts = __toESM(require("typescript"), 1);
|
|
820
1178
|
var TsSchemaGenerator = class {
|
|
821
1179
|
static {
|
|
@@ -984,7 +1342,7 @@ var TsSchemaGenerator = class {
|
|
|
984
1342
|
], true))), true);
|
|
985
1343
|
}
|
|
986
1344
|
mapFieldTypeToTSType(type) {
|
|
987
|
-
let result = (0,
|
|
1345
|
+
let result = (0, import_ts_pattern3.match)(type.type).with("String", () => "string").with("Boolean", () => "boolean").with("Int", () => "number").with("Float", () => "number").with("BigInt", () => "bigint").with("Decimal", () => "number").otherwise(() => "unknown");
|
|
988
1346
|
if (type.array) {
|
|
989
1347
|
result = `${result}[]`;
|
|
990
1348
|
}
|
|
@@ -1032,7 +1390,9 @@ var TsSchemaGenerator = class {
|
|
|
1032
1390
|
objectFields.push(ts.factory.createPropertyAssignment("default", this.createExpressionUtilsCall("call", [
|
|
1033
1391
|
ts.factory.createStringLiteral(defaultValue.call),
|
|
1034
1392
|
...defaultValue.args.length > 0 ? [
|
|
1035
|
-
ts.factory.createArrayLiteralExpression(defaultValue.args.map((arg) => this.
|
|
1393
|
+
ts.factory.createArrayLiteralExpression(defaultValue.args.map((arg) => this.createExpressionUtilsCall("literal", [
|
|
1394
|
+
this.createLiteralNode(arg)
|
|
1395
|
+
])))
|
|
1036
1396
|
] : []
|
|
1037
1397
|
])));
|
|
1038
1398
|
} else if ("authMember" in defaultValue) {
|
|
@@ -1346,7 +1706,7 @@ var TsSchemaGenerator = class {
|
|
|
1346
1706
|
]);
|
|
1347
1707
|
}
|
|
1348
1708
|
createExpression(value) {
|
|
1349
|
-
return (0,
|
|
1709
|
+
return (0, import_ts_pattern3.match)(value).when(import_ast3.isLiteralExpr, (expr) => this.createLiteralExpression(expr.$type, expr.value)).when(import_ast3.isInvocationExpr, (expr) => this.createCallExpression(expr)).when(import_ast3.isReferenceExpr, (expr) => this.createRefExpression(expr)).when(import_ast3.isArrayExpr, (expr) => this.createArrayExpression(expr)).when(import_ast3.isUnaryExpr, (expr) => this.createUnaryExpression(expr)).when(import_ast3.isBinaryExpr, (expr) => this.createBinaryExpression(expr)).when(import_ast3.isMemberAccessExpr, (expr) => this.createMemberExpression(expr)).when(import_ast3.isNullExpr, () => this.createNullExpression()).when(import_ast3.isThisExpr, () => this.createThisExpression()).otherwise(() => {
|
|
1350
1710
|
throw new Error(`Unsupported attribute arg value: ${value.$type}`);
|
|
1351
1711
|
});
|
|
1352
1712
|
}
|
|
@@ -1408,7 +1768,7 @@ var TsSchemaGenerator = class {
|
|
|
1408
1768
|
]);
|
|
1409
1769
|
}
|
|
1410
1770
|
createLiteralExpression(type, value) {
|
|
1411
|
-
return (0,
|
|
1771
|
+
return (0, import_ts_pattern3.match)(type).with("BooleanLiteral", () => this.createExpressionUtilsCall("literal", [
|
|
1412
1772
|
this.createLiteralNode(value)
|
|
1413
1773
|
])).with("NumberLiteral", () => this.createExpressionUtilsCall("literal", [
|
|
1414
1774
|
ts.factory.createIdentifier(value)
|
|
@@ -2065,6 +2425,8 @@ _ts_decorate([
|
|
|
2065
2425
|
], ZModelCodeGenerator.prototype, "_generateTypeDef", null);
|
|
2066
2426
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2067
2427
|
0 && (module.exports = {
|
|
2428
|
+
DefaultOperationNodeVisitor,
|
|
2429
|
+
ExpressionVisitor,
|
|
2068
2430
|
ModelUtils,
|
|
2069
2431
|
PrismaSchemaGenerator,
|
|
2070
2432
|
TsSchemaGenerator,
|