@devlearning/swagger-generator 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.vscode/launch.json +28 -28
  2. package/README.md +209 -209
  3. package/dist/api.constants.d.ts +2 -0
  4. package/dist/api.constants.js +22 -22
  5. package/dist/generator-old.d.ts +0 -0
  6. package/dist/generator-old.js +1 -1
  7. package/dist/generator.d.ts +40 -0
  8. package/dist/generator.js +2 -0
  9. package/dist/generators-writers/angular/api-angular-writer.d.ts +15 -0
  10. package/dist/generators-writers/angular/api-angular-writer.js +15 -15
  11. package/dist/generators-writers/angular/constants.d.ts +4 -0
  12. package/dist/generators-writers/angular/constants.js +24 -24
  13. package/dist/generators-writers/angular/model-angular-writer.d.ts +10 -0
  14. package/dist/generators-writers/angular/model-angular-writer.js +6 -6
  15. package/dist/generators-writers/dart/api-dart-writer.d.ts +11 -0
  16. package/dist/generators-writers/dart/api-dart-writer.js +1 -1
  17. package/dist/generators-writers/dart/model-dart-writer.d.ts +9 -0
  18. package/dist/generators-writers/dart/model-dart-writer.js +2 -2
  19. package/dist/generators-writers/dart/models/import-definition-dart.d.ts +5 -0
  20. package/dist/generators-writers/dart/normalizator.d.ts +10 -0
  21. package/dist/generators-writers/dart/templates/api.mustache +49 -49
  22. package/dist/generators-writers/dart/templates/enum.mustache +14 -14
  23. package/dist/generators-writers/dart/templates/model.mustache +17 -17
  24. package/dist/generators-writers/nextjs/api-nextjs-writer.d.ts +15 -0
  25. package/dist/generators-writers/nextjs/api-nextjs-writer.js +12 -12
  26. package/dist/generators-writers/nextjs/constants.d.ts +1 -0
  27. package/dist/generators-writers/nextjs/constants.js +4 -4
  28. package/dist/generators-writers/nextjs/model-nextjs-writer.d.ts +10 -0
  29. package/dist/generators-writers/nextjs/model-nextjs-writer.js +6 -6
  30. package/dist/generators-writers/utils.d.ts +12 -0
  31. package/dist/index.d.ts +17 -0
  32. package/dist/model.constants.d.ts +0 -0
  33. package/dist/model.constants.js +1 -1
  34. package/dist/models/api-dto.d.ts +18 -0
  35. package/dist/models/enum-value-dto.d.ts +4 -0
  36. package/dist/models/model-dto.d.ts +9 -0
  37. package/dist/models/parameter-dto.d.ts +7 -0
  38. package/dist/models/property-dto.d.ts +4 -0
  39. package/dist/models/swagger/swagger-component-property.d.ts +1 -0
  40. package/dist/models/swagger/swagger-component.d.ts +10 -0
  41. package/dist/models/swagger/swagger-content.d.ts +4 -0
  42. package/dist/models/swagger/swagger-info.d.ts +4 -0
  43. package/dist/models/swagger/swagger-method.d.ts +9 -0
  44. package/dist/models/swagger/swagger-schema.d.ts +12 -0
  45. package/dist/models/swagger/swagger.d.ts +47 -0
  46. package/dist/models/type-dto.d.ts +8 -0
  47. package/dist/swagger-downloader.d.ts +5 -0
  48. package/dist/templates/api.mustache +29 -0
  49. package/dist/templates/model.mustache +18 -0
  50. package/package.json +45 -45
  51. package/src/api.constants.ts +26 -26
  52. package/src/generator-old.ts +449 -449
  53. package/src/generator.ts +583 -582
  54. package/src/generators-writers/angular/api-angular-writer.ts +141 -141
  55. package/src/generators-writers/angular/constants.ts +36 -36
  56. package/src/generators-writers/angular/model-angular-writer.ts +62 -62
  57. package/src/generators-writers/dart/api-dart-writer.ts +198 -198
  58. package/src/generators-writers/dart/model-dart-writer.ts +162 -162
  59. package/src/generators-writers/dart/models/import-definition-dart.ts +5 -5
  60. package/src/generators-writers/dart/normalizator.ts +72 -72
  61. package/src/generators-writers/dart/templates/api.mustache +49 -49
  62. package/src/generators-writers/dart/templates/enum.mustache +14 -14
  63. package/src/generators-writers/dart/templates/model.mustache +17 -17
  64. package/src/generators-writers/nextjs/api-nextjs-writer.ts +156 -156
  65. package/src/generators-writers/nextjs/constants.ts +5 -5
  66. package/src/generators-writers/nextjs/model-nextjs-writer.ts +61 -61
  67. package/src/generators-writers/utils.ts +78 -78
  68. package/src/index.ts +96 -96
  69. package/src/models/api-dto.ts +17 -17
  70. package/src/models/enum-value-dto.ts +3 -3
  71. package/src/models/model-dto.ts +9 -9
  72. package/src/models/parameter-dto.ts +7 -7
  73. package/src/models/property-dto.ts +4 -4
  74. package/src/models/swagger/swagger-component-property.ts +11 -11
  75. package/src/models/swagger/swagger-component.ts +17 -17
  76. package/src/models/swagger/swagger-content.ts +4 -4
  77. package/src/models/swagger/swagger-info.ts +3 -3
  78. package/src/models/swagger/swagger-method.ts +7 -7
  79. package/src/models/swagger/swagger-schema.ts +20 -20
  80. package/src/models/swagger/swagger.ts +38 -38
  81. package/src/models/type-dto.ts +7 -7
  82. package/src/swagger-downloader.ts +12 -12
  83. package/tsconfig.json +33 -28
@@ -0,0 +1,4 @@
1
+ export interface SwaggerInfo {
2
+ title: string;
3
+ version: string;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { SwaggerParameter, SwaggerRequestBody, SwaggerResponses } from "./swagger.js";
2
+ export interface SwaggerMethod {
3
+ tags: string[];
4
+ parameters: SwaggerParameter[];
5
+ requestBody: SwaggerRequestBody;
6
+ responses: {
7
+ [key: string]: SwaggerResponses;
8
+ };
9
+ }
@@ -0,0 +1,12 @@
1
+ export interface SwaggerSchema {
2
+ type?: string;
3
+ $ref?: string;
4
+ allOf?: SwaggerSchema[];
5
+ format?: string;
6
+ items?: SwaggerSchema;
7
+ properties?: {
8
+ [key: string]: SwaggerSchema;
9
+ };
10
+ nullable?: boolean;
11
+ minLength?: number;
12
+ }
@@ -0,0 +1,47 @@
1
+ import { SwaggerComponent } from "./swagger-component.js";
2
+ import { SwaggerContent } from "./swagger-content.js";
3
+ import { SwaggerInfo } from "./swagger-info.js";
4
+ import { SwaggerMethod } from "./swagger-method.js";
5
+ import { SwaggerSchema } from "./swagger-schema.js";
6
+ export interface Swagger {
7
+ openApi: string;
8
+ info: SwaggerInfo;
9
+ paths: {
10
+ [key: string]: {
11
+ [key: string]: SwaggerMethod;
12
+ };
13
+ };
14
+ components: SwaggerComponents;
15
+ }
16
+ export interface SwaggerParameter {
17
+ name: string;
18
+ in: string;
19
+ required: boolean;
20
+ schema: SwaggerSchema;
21
+ }
22
+ export interface SwaggerRequestBody {
23
+ content: {
24
+ [key: string]: SwaggerContent;
25
+ };
26
+ encoding: SwaggerEncoding;
27
+ required?: boolean;
28
+ }
29
+ export interface SwaggerResponses {
30
+ description: string;
31
+ content: {
32
+ [key: string]: SwaggerContent;
33
+ };
34
+ }
35
+ export interface SwaggerComponents {
36
+ schemas: {
37
+ [key: string]: SwaggerComponent;
38
+ };
39
+ }
40
+ export interface SwaggerEncoding {
41
+ File: {
42
+ style: 'form';
43
+ };
44
+ Id: {
45
+ style: 'form';
46
+ };
47
+ }
@@ -0,0 +1,8 @@
1
+ export interface TypeDto {
2
+ typeName: string;
3
+ nullable: boolean;
4
+ isNativeType: boolean;
5
+ isTypeReference: boolean;
6
+ isVoid: boolean;
7
+ isArray: boolean;
8
+ }
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { Swagger } from "./models/swagger/swagger.js";
3
+ export declare class SwaggerDownloader {
4
+ download(swaggerJsonUrl: URL): Promise<Swagger>;
5
+ }
@@ -0,0 +1,29 @@
1
+ import 'package:{{package}}/core/di/injector.dart';
2
+ import 'package:dio/dio.dart';
3
+ {{#imports}}
4
+ {{{.}}}
5
+ {{/imports}}
6
+
7
+ class {{apiClassName}} {
8
+ final Dio _dio;
9
+
10
+ {{apiClassName}}() : _dio = getIt<Dio>();
11
+
12
+ {{#endpoints}}
13
+ Future<{{responseType}}> {{methodName}}({{#haveRequest}}{{requestType}} request{{/haveRequest}}) async {
14
+ final response = await _dio.{{httpMethod}}(
15
+ '{{{path}}}',
16
+ {{#haveRequest}}
17
+ {{#isGet}}
18
+ queryParameters: request.toJson(),
19
+ {{/isGet}}
20
+ {{^isGet}}
21
+ data: request.toJson(),
22
+ {{/isGet}}
23
+ {{/haveRequest}}
24
+ );
25
+ return {{responseType}}.fromJson(response.data);
26
+ }
27
+
28
+ {{/endpoints}}
29
+ }
@@ -0,0 +1,18 @@
1
+ import 'package:freezed_annotation/freezed_annotation.dart';
2
+ {{#imports}}
3
+ {{{.}}}
4
+ {{/imports}}
5
+
6
+ part '{{filename}}.freezed.dart';
7
+ part '{{filename}}.g.dart';
8
+
9
+ @freezed
10
+ abstract class {{modelName}} with _${{modelName}} {
11
+ const factory {{modelName}}({
12
+ {{#fields}}
13
+ {{required}}{{type}}{{nullable}} {{name}},
14
+ {{/fields}}
15
+ }) = _{{modelName}};
16
+
17
+ factory {{modelName}}.fromJson(Map<String, dynamic> json) => _${{modelName}}FromJson(json);
18
+ }
package/package.json CHANGED
@@ -1,45 +1,45 @@
1
- {
2
- "name": "@devlearning/swagger-generator",
3
- "version": "1.1.1",
4
- "description": "Swagger generator apis and models for Angular and NextJS",
5
- "main": "index.js",
6
- "type": "module",
7
- "scripts": {
8
- "debug-angular": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogeneration/output --target angular --dateTimeLibrary moment",
9
- "debug-nextjs": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogeneration/output --target next --dateTimeLibrary date-fns",
10
- "debug-flutter": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogen --target flutter --package coqudo_app",
11
- "copy-templates": "copyfiles -u 3 \"src/generators-writers/dart/templates/**/*\" dist/generators-writers/dart",
12
- "deploy": "npx tsc && npm publish"
13
- },
14
- "bin": {
15
- "swgen": "./dist/index.js"
16
- },
17
- "keywords": [
18
- "swagger",
19
- "angular",
20
- "nextjs",
21
- "dart",
22
- "flutter",
23
- "api",
24
- "generator"
25
- ],
26
- "author": "",
27
- "license": "ISC",
28
- "dependencies": {
29
- "cli-progress": "^3.12.0",
30
- "mustache": "^4.2.0",
31
- "node-fetch": "^3.3.2",
32
- "yargs": "^18.0.0"
33
- },
34
- "node-fetch": "^3.3.2",
35
- "devDependencies": {
36
- "@types/cli-progress": "^3.11.6",
37
- "@types/mustache": "^4.2.6",
38
- "@types/node": "^20.19.10",
39
- "@types/yargs": "^17.0.33",
40
- "copyfiles": "^2.4.1",
41
- "ts-node": "^10.9.1",
42
- "tsconfig-paths": "^4.2.0",
43
- "typescript": "^5.1.6"
44
- }
45
- }
1
+ {
2
+ "name": "@devlearning/swagger-generator",
3
+ "version": "1.1.2",
4
+ "description": "Swagger generator apis and models for Angular and NextJS",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "debug-angular": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogeneration/output --target angular --dateTimeLibrary moment",
9
+ "debug-nextjs": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogeneration/output --target next --dateTimeLibrary date-fns",
10
+ "debug-flutter": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogen --target flutter --package coqudo_app",
11
+ "copy-templates": "copyfiles -u 3 \"src/generators-writers/dart/templates/**/*\" dist/generators-writers/dart",
12
+ "deploy": "npx tsc && npm publish"
13
+ },
14
+ "bin": {
15
+ "swgen": "./dist/index.js"
16
+ },
17
+ "keywords": [
18
+ "swagger",
19
+ "angular",
20
+ "nextjs",
21
+ "dart",
22
+ "flutter",
23
+ "api",
24
+ "generator"
25
+ ],
26
+ "author": "",
27
+ "license": "ISC",
28
+ "dependencies": {
29
+ "cli-progress": "^3.12.0",
30
+ "mustache": "^4.2.0",
31
+ "node-fetch": "^3.3.2",
32
+ "yargs": "^18.0.0"
33
+ },
34
+ "node-fetch": "^3.3.2",
35
+ "devDependencies": {
36
+ "@types/cli-progress": "^3.11.6",
37
+ "@types/mustache": "^4.2.6",
38
+ "@types/node": "^24.7.0",
39
+ "@types/yargs": "^17.0.33",
40
+ "copyfiles": "^2.4.1",
41
+ "ts-node": "^10.9.1",
42
+ "tsconfig-paths": "^4.2.0",
43
+ "typescript": "^5.1.6"
44
+ }
45
+ }
@@ -1,27 +1,27 @@
1
- export const API_PRE =
2
- `import { HttpClient } from '@angular/common/http';
3
- import { Observable, catchError, map } from 'rxjs';
4
- import * as Models from './model.autogenerated';
5
- import { HttpHeaders } from "@angular/common/http";
6
-
7
- export const httpOptions = {
8
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
9
- };
10
-
11
- export const httpOptionsMultipart = {};
12
-
13
- export abstract class ApiAutogeneratedService {
14
- constructor(
15
- public _http: HttpClient,
16
- public _baseUrl: string,
17
- ) { }
18
-
19
- protected abstract _momentToString(moment: moment.Moment): string;
20
- protected abstract _handleRequest<T>(request: T): T;
21
- protected abstract _handleMultipart<T>(request: T): FormData;
22
- protected abstract _handleResponse<T>(response: T): T;
23
- protected abstract _handleError(error: any, obs: any): Observable<never>;
24
- `;
25
-
26
- export const API_POST =
1
+ export const API_PRE =
2
+ `import { HttpClient } from '@angular/common/http';
3
+ import { Observable, catchError, map } from 'rxjs';
4
+ import * as Models from './model.autogenerated';
5
+ import { HttpHeaders } from "@angular/common/http";
6
+
7
+ export const httpOptions = {
8
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
9
+ };
10
+
11
+ export const httpOptionsMultipart = {};
12
+
13
+ export abstract class ApiAutogeneratedService {
14
+ constructor(
15
+ public _http: HttpClient,
16
+ public _baseUrl: string,
17
+ ) { }
18
+
19
+ protected abstract _momentToString(moment: moment.Moment): string;
20
+ protected abstract _handleRequest<T>(request: T): T;
21
+ protected abstract _handleMultipart<T>(request: T): FormData;
22
+ protected abstract _handleResponse<T>(response: T): T;
23
+ protected abstract _handleError(error: any, obs: any): Observable<never>;
24
+ `;
25
+
26
+ export const API_POST =
27
27
  `}`;