@zenstackhq/openapi 1.0.0-alpha.60

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 ZenStack
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # ZenStack OpenAPI plugin
2
+
3
+ This package contains ZenStack plugin for generating OpenAPI specification.
4
+
5
+ Visit [Homepage](https://zenstack.dev) for more details.
package/generator.d.ts ADDED
@@ -0,0 +1,34 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ import { PluginOptions } from '@zenstackhq/sdk';
3
+ import { type Model } from '@zenstackhq/sdk/ast';
4
+ export declare class OpenAPIGenerator {
5
+ private model;
6
+ private options;
7
+ private dmmf;
8
+ private inputObjectTypes;
9
+ private outputObjectTypes;
10
+ private usedComponents;
11
+ private aggregateOperationSupport;
12
+ constructor(model: Model, options: PluginOptions, dmmf: DMMF.Document);
13
+ generate(): void;
14
+ private pruneComponents;
15
+ private collectUsedComponents;
16
+ private generatePaths;
17
+ private generatePathsForModel;
18
+ private aggregateFields;
19
+ private component;
20
+ private getOption;
21
+ private generateComponents;
22
+ private generateEnumComponent;
23
+ private generateEntityComponent;
24
+ private generateField;
25
+ private generateInputComponent;
26
+ private generateOutputComponent;
27
+ private setInputRequired;
28
+ private setOutputRequired;
29
+ private prismaTypeToOpenAPIType;
30
+ private wrapArray;
31
+ private ref;
32
+ private array;
33
+ private oneOf;
34
+ }
package/generator.js ADDED
@@ -0,0 +1,555 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.OpenAPIGenerator = void 0;
30
+ const sdk_1 = require("@zenstackhq/sdk");
31
+ const ast_1 = require("@zenstackhq/sdk/ast");
32
+ const change_case_1 = require("change-case");
33
+ const fs = __importStar(require("fs"));
34
+ const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
35
+ // TODO: move these to SDK
36
+ const dmmf_helpers_1 = require("@zenstackhq/sdk/dmmf-helpers");
37
+ class OpenAPIGenerator {
38
+ constructor(model, options, dmmf) {
39
+ this.model = model;
40
+ this.options = options;
41
+ this.dmmf = dmmf;
42
+ this.inputObjectTypes = [];
43
+ this.outputObjectTypes = [];
44
+ this.usedComponents = new Set();
45
+ }
46
+ generate() {
47
+ const output = this.getOption('output', '');
48
+ if (!output) {
49
+ throw new sdk_1.PluginError('"output" option is required');
50
+ }
51
+ // input types
52
+ this.inputObjectTypes.push(...this.dmmf.schema.inputObjectTypes.prisma);
53
+ this.outputObjectTypes.push(...this.dmmf.schema.outputObjectTypes.prisma);
54
+ (0, dmmf_helpers_1.addMissingInputObjectTypesForModelArgs)(this.inputObjectTypes, this.dmmf.datamodel.models);
55
+ (0, dmmf_helpers_1.addMissingInputObjectTypesForInclude)(this.inputObjectTypes, this.dmmf.datamodel.models);
56
+ (0, dmmf_helpers_1.addMissingInputObjectTypesForSelect)(this.inputObjectTypes, this.outputObjectTypes, this.dmmf.datamodel.models);
57
+ (0, dmmf_helpers_1.addMissingInputObjectTypesForAggregate)(this.inputObjectTypes, this.outputObjectTypes);
58
+ this.aggregateOperationSupport = (0, dmmf_helpers_1.resolveAggregateOperationSupport)(this.inputObjectTypes);
59
+ const components = this.generateComponents();
60
+ const paths = this.generatePaths(components);
61
+ // prune unused component schemas
62
+ this.pruneComponents(components);
63
+ const openapi = {
64
+ openapi: '3.0.0',
65
+ info: {
66
+ title: this.getOption('title', 'ZenStack Generated API'),
67
+ version: this.getOption('version', '1.0.0'),
68
+ },
69
+ components,
70
+ paths,
71
+ };
72
+ fs.writeFileSync(output, JSON.stringify(openapi, undefined, 2));
73
+ }
74
+ pruneComponents(components) {
75
+ const schemas = components.schemas;
76
+ if (schemas) {
77
+ // build a transitive closure for all reachable schemas from roots
78
+ const allUsed = new Set(this.usedComponents);
79
+ let todo = [...allUsed];
80
+ while (todo.length > 0) {
81
+ const curr = new Set(allUsed);
82
+ Object.entries(schemas)
83
+ .filter(([key]) => todo.includes(key))
84
+ .forEach(([, value]) => {
85
+ this.collectUsedComponents(value, allUsed);
86
+ });
87
+ todo = [...allUsed].filter((e) => !curr.has(e));
88
+ }
89
+ // prune unused schemas
90
+ Object.keys(schemas).forEach((key) => {
91
+ if (!allUsed.has(key)) {
92
+ delete schemas[key];
93
+ }
94
+ });
95
+ }
96
+ }
97
+ collectUsedComponents(value, allUsed) {
98
+ if (!value) {
99
+ return;
100
+ }
101
+ if (Array.isArray(value)) {
102
+ value.forEach((item) => {
103
+ this.collectUsedComponents(item, allUsed);
104
+ });
105
+ }
106
+ else if (typeof value === 'object') {
107
+ Object.entries(value).forEach(([subKey, subValue]) => {
108
+ if (subKey === '$ref') {
109
+ const ref = subValue;
110
+ const name = ref.split('/').pop();
111
+ if (name && !allUsed.has(name)) {
112
+ allUsed.add(name);
113
+ }
114
+ }
115
+ else {
116
+ this.collectUsedComponents(subValue, allUsed);
117
+ }
118
+ });
119
+ }
120
+ }
121
+ generatePaths(components) {
122
+ let result = {};
123
+ const includeModels = this.model.declarations
124
+ .filter((d) => (0, ast_1.isDataModel)(d) && !(0, sdk_1.hasAttribute)(d, '@@openapi.ignore'))
125
+ .map((d) => d.name);
126
+ for (const model of this.dmmf.datamodel.models) {
127
+ if (includeModels.includes(model.name)) {
128
+ result = Object.assign(Object.assign({}, result), this.generatePathsForModel(model, components));
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+ generatePathsForModel(model, components) {
134
+ const result = {};
135
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ const ops = this.dmmf.mappings.modelOperations.find((ops) => ops.model === model.name);
137
+ if (!ops) {
138
+ throw new sdk_1.PluginError(`No operations found for model ${model.name}`);
139
+ }
140
+ const definitions = [
141
+ {
142
+ key: 'createOne',
143
+ method: 'post',
144
+ operation: 'create',
145
+ inputType: this.component(`${model.name}CreateArgs`, {
146
+ type: 'object',
147
+ properties: {
148
+ select: this.ref(`${model.name}Select`),
149
+ include: this.ref(`${model.name}Include`),
150
+ data: this.ref(`${model.name}CreateInput`),
151
+ },
152
+ }, components),
153
+ outputType: this.ref(model.name),
154
+ description: `Create a new ${model.name}`,
155
+ successCode: 201,
156
+ },
157
+ {
158
+ key: 'createMany',
159
+ method: 'post',
160
+ inputType: this.component(`${model.name}CreateManyArgs`, {
161
+ type: 'object',
162
+ properties: {
163
+ data: this.ref(`${model.name}CreateManyInput`),
164
+ },
165
+ }, components),
166
+ outputType: this.ref('BatchPayload'),
167
+ description: `Create several ${model.name}`,
168
+ successCode: 201,
169
+ },
170
+ {
171
+ key: 'findUnique',
172
+ method: 'get',
173
+ inputType: this.component(`${model.name}FindUniqueArgs`, {
174
+ type: 'object',
175
+ properties: {
176
+ select: this.ref(`${model.name}Select`),
177
+ include: this.ref(`${model.name}Include`),
178
+ where: this.ref(`${model.name}WhereUniqueInput`),
179
+ },
180
+ }, components),
181
+ outputType: this.ref(model.name),
182
+ description: `Find one unique ${model.name}`,
183
+ },
184
+ {
185
+ key: 'findFirst',
186
+ method: 'get',
187
+ inputType: this.component(`${model.name}FindFirstArgs`, {
188
+ type: 'object',
189
+ properties: {
190
+ select: this.ref(`${model.name}Select`),
191
+ include: this.ref(`${model.name}Include`),
192
+ where: this.ref(`${model.name}WhereInput`),
193
+ },
194
+ }, components),
195
+ outputType: this.ref(model.name),
196
+ description: `Find the first ${model.name} matching the given condition`,
197
+ },
198
+ {
199
+ key: 'findMany',
200
+ method: 'get',
201
+ inputType: this.component(`${model.name}FindManyArgs`, {
202
+ type: 'object',
203
+ properties: {
204
+ select: this.ref(`${model.name}Select`),
205
+ include: this.ref(`${model.name}Include`),
206
+ where: this.ref(`${model.name}WhereInput`),
207
+ },
208
+ }, components),
209
+ outputType: this.array(this.ref(model.name)),
210
+ description: `Find a list of ${model.name}`,
211
+ },
212
+ {
213
+ key: 'updateOne',
214
+ method: 'patch',
215
+ operation: 'update',
216
+ inputType: this.component(`${model.name}UpdateArgs`, {
217
+ type: 'object',
218
+ properties: {
219
+ select: this.ref(`${model.name}Select`),
220
+ include: this.ref(`${model.name}Include`),
221
+ where: this.ref(`${model.name}WhereUniqueInput`),
222
+ data: this.ref(`${model.name}UpdateInput`),
223
+ },
224
+ }, components),
225
+ outputType: this.ref(model.name),
226
+ description: `Update a ${model.name}`,
227
+ },
228
+ {
229
+ key: 'updateMany',
230
+ method: 'patch',
231
+ inputType: this.component(`${model.name}UpdateManyArgs`, {
232
+ type: 'object',
233
+ properties: {
234
+ where: this.ref(`${model.name}WhereInput`),
235
+ data: this.ref(`${model.name}UpdateManyMutationInput`),
236
+ },
237
+ }, components),
238
+ outputType: this.ref('BatchPayload'),
239
+ description: `Update ${model.name}s matching the given condition`,
240
+ },
241
+ {
242
+ key: 'upsertOne',
243
+ method: 'post',
244
+ operation: 'upsert',
245
+ inputType: this.component(`${model.name}UpsertArgs`, {
246
+ type: 'object',
247
+ properties: {
248
+ select: this.ref(`${model.name}Select`),
249
+ include: this.ref(`${model.name}Include`),
250
+ where: this.ref(`${model.name}WhereUniqueInput`),
251
+ create: this.ref(`${model.name}CreateInput`),
252
+ update: this.ref(`${model.name}UpdateInput`),
253
+ },
254
+ }, components),
255
+ outputType: this.ref(model.name),
256
+ description: `Upsert a ${model.name}`,
257
+ },
258
+ {
259
+ key: 'deleteOne',
260
+ method: 'delete',
261
+ inputType: this.component(`${model.name}DeleteUniqueArgs`, {
262
+ type: 'object',
263
+ properties: {
264
+ select: this.ref(`${model.name}Select`),
265
+ include: this.ref(`${model.name}Include`),
266
+ where: this.ref(`${model.name}WhereUniqueInput`),
267
+ },
268
+ }, components),
269
+ outputType: this.ref(model.name),
270
+ description: `Delete one unique ${model.name}`,
271
+ },
272
+ {
273
+ key: 'deleteMany',
274
+ method: 'delete',
275
+ inputType: this.component(`${model.name}DeleteManyArgs`, {
276
+ type: 'object',
277
+ properties: {
278
+ where: this.ref(`${model.name}WhereInput`),
279
+ },
280
+ }, components),
281
+ outputType: this.ref('BatchPayload'),
282
+ description: `Delete ${model.name}s matching the given condition`,
283
+ },
284
+ {
285
+ key: 'count',
286
+ method: 'get',
287
+ inputType: this.component(`${model.name}CountArgs`, {
288
+ type: 'object',
289
+ properties: {
290
+ select: this.ref(`${model.name}Select`),
291
+ where: this.ref(`${model.name}WhereInput`),
292
+ },
293
+ }, components),
294
+ outputType: this.oneOf({ type: 'integer' }, this.ref(`${model.name}CountAggregateOutputType`)),
295
+ description: `Find a list of ${model.name}`,
296
+ },
297
+ {
298
+ key: 'aggregate',
299
+ method: 'get',
300
+ inputType: this.component(`${model.name}AggregateArgs`, {
301
+ type: 'object',
302
+ properties: Object.assign({ where: this.ref(`${model.name}WhereInput`), orderBy: this.ref(`${model.name}OrderByWithRelationInput`), cursor: this.ref(`${model.name}WhereUniqueInput`), take: { type: 'integer' }, skip: { type: 'integer' } }, this.aggregateFields(model)),
303
+ }, components),
304
+ outputType: this.ref(`Aggregate${model.name}`),
305
+ description: `Aggregate ${model.name}s`,
306
+ },
307
+ {
308
+ key: 'groupBy',
309
+ method: 'get',
310
+ inputType: this.component(`${model.name}GroupByArgs`, {
311
+ type: 'object',
312
+ properties: Object.assign({ where: this.ref(`${model.name}WhereInput`), orderBy: this.ref(`${model.name}OrderByWithRelationInput`), by: this.ref(`${model.name}ScalarFieldEnum`), having: this.ref(`${model.name}ScalarWhereWithAggregatesInput`), take: { type: 'integer' }, skip: { type: 'integer' } }, this.aggregateFields(model)),
313
+ }, components),
314
+ outputType: this.array(this.ref(`${model.name}GroupByOutputType`)),
315
+ description: `Group ${model.name}s by fields`,
316
+ },
317
+ ];
318
+ for (const { key, method, operation, description, inputType, outputType, successCode } of definitions) {
319
+ if (ops[key] || key === 'count' /* prisma operation list doesn't contain 'count' */) {
320
+ const op = operation !== null && operation !== void 0 ? operation : key;
321
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
322
+ const def = {
323
+ operationId: `${op}${model.name}`,
324
+ responses: {
325
+ [successCode !== undefined ? successCode : '200']: {
326
+ description: 'Successful operation',
327
+ content: {
328
+ 'application/json': {
329
+ schema: outputType,
330
+ },
331
+ },
332
+ },
333
+ '400': {
334
+ description: 'Invalid request',
335
+ },
336
+ '403': {
337
+ description: 'Forbidden',
338
+ },
339
+ },
340
+ };
341
+ if (inputType) {
342
+ if (['post', 'put', 'patch'].includes(method)) {
343
+ def.requestBody = {
344
+ description,
345
+ content: {
346
+ 'application/json': {
347
+ schema: inputType,
348
+ },
349
+ },
350
+ };
351
+ }
352
+ else {
353
+ def.parameters = [
354
+ {
355
+ name: 'q',
356
+ in: 'query',
357
+ required: true,
358
+ schema: inputType,
359
+ },
360
+ ];
361
+ }
362
+ }
363
+ result[`/${(0, change_case_1.camelCase)(model.name)}/${op}`] = {
364
+ [method]: def,
365
+ };
366
+ }
367
+ }
368
+ return result;
369
+ }
370
+ aggregateFields(model) {
371
+ const result = {};
372
+ const supportedOps = this.aggregateOperationSupport[model.name];
373
+ if (supportedOps) {
374
+ if (supportedOps.count) {
375
+ result._count = this.oneOf({ type: 'boolean' }, this.ref(`${model.name}CountAggregateInput`));
376
+ }
377
+ if (supportedOps.min) {
378
+ result._min = this.ref(`${model.name}MinAggregateInput`);
379
+ }
380
+ if (supportedOps.max) {
381
+ result._max = this.ref(`${model.name}MaxAggregateInput`);
382
+ }
383
+ if (supportedOps.sum) {
384
+ result._sum = this.ref(`${model.name}SumAggregateInput`);
385
+ }
386
+ if (supportedOps.avg) {
387
+ result._avg = this.ref(`${model.name}AvgAggregateInput`);
388
+ }
389
+ }
390
+ return result;
391
+ }
392
+ component(name, def, components) {
393
+ (0, tiny_invariant_1.default)(components.schemas);
394
+ components.schemas[name] = def;
395
+ return this.ref(name);
396
+ }
397
+ getOption(name, defaultValue) {
398
+ return this.options[name] ? this.options[name] : defaultValue;
399
+ }
400
+ generateComponents() {
401
+ var _a;
402
+ const schemas = {};
403
+ const components = {
404
+ schemas,
405
+ };
406
+ // user-defined and built-in enums
407
+ for (const _enum of [...((_a = this.dmmf.schema.enumTypes.model) !== null && _a !== void 0 ? _a : []), ...this.dmmf.schema.enumTypes.prisma]) {
408
+ schemas[_enum.name] = this.generateEnumComponent(_enum);
409
+ }
410
+ // data models
411
+ for (const model of this.dmmf.datamodel.models) {
412
+ schemas[model.name] = this.generateEntityComponent(model);
413
+ }
414
+ for (const input of this.inputObjectTypes) {
415
+ schemas[input.name] = this.generateInputComponent(input);
416
+ }
417
+ for (const output of this.outputObjectTypes.filter((t) => !['Query', 'Mutation'].includes(t.name))) {
418
+ schemas[output.name] = this.generateOutputComponent(output);
419
+ }
420
+ // misc types
421
+ schemas['BatchPayload'] = {
422
+ type: 'object',
423
+ properties: {
424
+ count: { type: 'integer' },
425
+ },
426
+ };
427
+ return components;
428
+ }
429
+ generateEnumComponent(_enum) {
430
+ const schema = {
431
+ type: 'string',
432
+ enum: _enum.values.filter((f) => !sdk_1.AUXILIARY_FIELDS.includes(f)),
433
+ };
434
+ return schema;
435
+ }
436
+ generateEntityComponent(model) {
437
+ const properties = {};
438
+ const fields = model.fields.filter((f) => !sdk_1.AUXILIARY_FIELDS.includes(f.name));
439
+ const required = [];
440
+ for (const field of fields) {
441
+ properties[field.name] = this.generateField(field);
442
+ if (field.isRequired && !(field.relationName && field.isList)) {
443
+ required.push(field.name);
444
+ }
445
+ }
446
+ const result = { type: 'object', properties };
447
+ if (required.length > 0) {
448
+ result.required = required;
449
+ }
450
+ return result;
451
+ }
452
+ generateField(def) {
453
+ switch (def.kind) {
454
+ case 'scalar':
455
+ return this.wrapArray(this.prismaTypeToOpenAPIType(def.type), def.isList);
456
+ case 'enum':
457
+ case 'object':
458
+ return this.wrapArray(this.ref(def.type, false), def.isList);
459
+ default:
460
+ throw new sdk_1.PluginError(`Unsupported field kind: ${def.kind}`);
461
+ }
462
+ }
463
+ generateInputComponent(input) {
464
+ const properties = {};
465
+ const fields = input.fields.filter((f) => !sdk_1.AUXILIARY_FIELDS.includes(f.name));
466
+ for (const field of fields) {
467
+ const options = field.inputTypes
468
+ .filter((f) => f.type !== 'Null')
469
+ .map((f) => {
470
+ return this.wrapArray(this.prismaTypeToOpenAPIType(f.type), f.isList);
471
+ });
472
+ properties[field.name] = options.length > 1 ? { oneOf: options } : options[0];
473
+ }
474
+ const result = { type: 'object', properties };
475
+ this.setInputRequired(fields, result);
476
+ return result;
477
+ }
478
+ generateOutputComponent(output) {
479
+ const properties = {};
480
+ const fields = output.fields.filter((f) => !sdk_1.AUXILIARY_FIELDS.includes(f.name));
481
+ for (const field of fields) {
482
+ let outputType;
483
+ switch (field.outputType.location) {
484
+ case 'scalar':
485
+ case 'enumTypes':
486
+ outputType = this.prismaTypeToOpenAPIType(field.outputType.type);
487
+ break;
488
+ case 'outputObjectTypes':
489
+ outputType = this.prismaTypeToOpenAPIType(typeof field.outputType.type === 'string' ? field.outputType.type : field.outputType.type.name);
490
+ break;
491
+ }
492
+ field.outputType;
493
+ properties[field.name] = this.wrapArray(outputType, field.outputType.isList);
494
+ }
495
+ const result = { type: 'object', properties };
496
+ this.setOutputRequired(fields, result);
497
+ return result;
498
+ }
499
+ setInputRequired(fields, result) {
500
+ const required = fields.filter((f) => f.isRequired).map((f) => f.name);
501
+ if (required.length > 0) {
502
+ result.required = required;
503
+ }
504
+ }
505
+ setOutputRequired(fields, result) {
506
+ const required = fields.filter((f) => f.isNullable !== true).map((f) => f.name);
507
+ if (required.length > 0) {
508
+ result.required = required;
509
+ }
510
+ }
511
+ prismaTypeToOpenAPIType(type) {
512
+ switch (type) {
513
+ case 'String':
514
+ return { type: 'string' };
515
+ case 'Int':
516
+ case 'BigInt':
517
+ return { type: 'integer' };
518
+ case 'Float':
519
+ case 'Decimal':
520
+ return { type: 'number' };
521
+ case 'Boolean':
522
+ case 'True':
523
+ return { type: 'boolean' };
524
+ case 'DateTime':
525
+ return { type: 'string', format: 'date-time' };
526
+ case 'JSON':
527
+ case 'Json':
528
+ return {};
529
+ default:
530
+ return this.ref(type.toString(), false);
531
+ }
532
+ }
533
+ wrapArray(schema, isArray) {
534
+ if (isArray) {
535
+ return { type: 'array', items: schema };
536
+ }
537
+ else {
538
+ return schema;
539
+ }
540
+ }
541
+ ref(type, rooted = true) {
542
+ if (rooted) {
543
+ this.usedComponents.add(type);
544
+ }
545
+ return { $ref: `#/components/schemas/${type}` };
546
+ }
547
+ array(itemType) {
548
+ return { type: 'array', items: itemType };
549
+ }
550
+ oneOf(...schemas) {
551
+ return { oneOf: schemas };
552
+ }
553
+ }
554
+ exports.OpenAPIGenerator = OpenAPIGenerator;
555
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ import { PluginOptions } from '@zenstackhq/sdk';
3
+ import { Model } from '@zenstackhq/sdk/ast';
4
+ export declare const name = "OpenAPI";
5
+ export default function run(model: Model, options: PluginOptions, dmmf: DMMF.Document): Promise<void>;
package/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.name = void 0;
13
+ const generator_1 = require("./generator");
14
+ exports.name = 'OpenAPI';
15
+ function run(model, options, dmmf) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ return new generator_1.OpenAPIGenerator(model, options, dmmf).generate();
18
+ });
19
+ }
20
+ exports.default = run;
21
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,2CAA+C;AAElC,QAAA,IAAI,GAAG,SAAS,CAAC;AAE9B,SAA8B,GAAG,CAAC,KAAY,EAAE,OAAsB,EAAE,IAAmB;;QACvF,OAAO,IAAI,4BAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjE,CAAC;CAAA;AAFD,sBAEC"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@zenstackhq/openapi",
3
+ "displayName": "ZenStack Plugin and Runtime for OpenAPI",
4
+ "version": "1.0.0-alpha.60",
5
+ "description": "ZenStack plugin and runtime supporting OpenAPI",
6
+ "main": "index.js",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/zenstackhq/zenstack"
10
+ },
11
+ "publishConfig": {
12
+ "directory": "dist",
13
+ "linkDirectory": true
14
+ },
15
+ "keywords": [],
16
+ "author": "ZenStack Team",
17
+ "license": "MIT",
18
+ "dependencies": {
19
+ "@prisma/generator-helper": "^4.7.1",
20
+ "change-case": "^4.1.2",
21
+ "openapi-types": "^12.1.0",
22
+ "tiny-invariant": "^1.3.1",
23
+ "@zenstackhq/sdk": "1.0.0-alpha.70",
24
+ "@zenstackhq/runtime": "1.0.0-alpha.70"
25
+ },
26
+ "devDependencies": {
27
+ "@prisma/internals": "^4.7.1",
28
+ "@types/jest": "^29.4.0",
29
+ "@types/tmp": "^0.2.3",
30
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
31
+ "@typescript-eslint/parser": "^5.54.0",
32
+ "copyfiles": "^2.4.1",
33
+ "eslint": "^8.35.0",
34
+ "jest": "^29.4.3",
35
+ "rimraf": "^3.0.2",
36
+ "tmp": "^0.2.1",
37
+ "ts-jest": "^29.0.5",
38
+ "typescript": "^4.9.5",
39
+ "@zenstackhq/testtools": "1.0.0-alpha.70",
40
+ "zenstack": "1.0.0-alpha.70"
41
+ },
42
+ "scripts": {
43
+ "clean": "rimraf dist",
44
+ "build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ./LICENSE dist && copyfiles -u 1 ./src/plugin.zmodel dist",
45
+ "watch": "tsc --watch",
46
+ "lint": "eslint src --ext ts",
47
+ "test": "jest"
48
+ }
49
+ }
package/plugin.zmodel ADDED
@@ -0,0 +1 @@
1
+ attribute @@openapi.ignore()