@com75271-assist/build-api 1.0.0

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.
@@ -0,0 +1,1354 @@
1
+ declare interface ApiDoc {
2
+ basePath: string;
3
+ definitions: Data<Model>;
4
+ info: ApiInfo;
5
+ paths: ApiPath;
6
+ swagger: string;
7
+ tags: ApiTag[];
8
+ }
9
+
10
+ declare interface ApiInfo {
11
+ description: string;
12
+ title: string;
13
+ version: string;
14
+ }
15
+
16
+ declare interface ApiOperation {
17
+ operationId: string;
18
+ parameters?: Parameter[];
19
+ produces: string[];
20
+ responses: Data<Response_2>;
21
+ summary: string;
22
+ tags: string[];
23
+ }
24
+
25
+ declare interface ApiOperationResolveApiName {
26
+ map?: CountMap_2;
27
+ countName?: (name: string) => string;
28
+ }
29
+
30
+ declare interface ApiOperationWrapper {
31
+ serviceName: string;
32
+ operationName: string;
33
+ package: string;
34
+ url: string;
35
+ method: string;
36
+ apiOperation: ApiOperation;
37
+ responseTypeResolver?: (apiOperation: ApiOperation) => string;
38
+ modelPoolMap: Map<string, TsModel>;
39
+ paramPackageName?: string;
40
+ }
41
+
42
+ declare interface ApiPath {
43
+ [prop: string]: Data<ApiOperation>;
44
+ }
45
+
46
+ declare interface ApiTag {
47
+ name: string;
48
+ description: string;
49
+ }
50
+
51
+ declare interface Builder {
52
+ /**
53
+ * 生成
54
+ */
55
+ build(): void;
56
+ }
57
+
58
+ /**
59
+ * 根据swagger2定义生成javascript接口文档
60
+ * @param config
61
+ */
62
+ export declare function buildSwagger2Js(config: NjkJsSwagger2BuilderConfig): void;
63
+
64
+ export declare const buildSwagger2Ts: typeof buildSwaggerTs;
65
+
66
+ /**
67
+ * 根据swagger3定义生成typescript接口文档
68
+ * @param config
69
+ */
70
+ export declare function buildSwagger3Ts(config: NjkTsSwagger3BuilderConfig): void;
71
+
72
+ /**
73
+ * 根据swagger2定义生成typescript接口文档
74
+ * @param config
75
+ */
76
+ export declare function buildSwaggerTs(config: NjkTsSwagger2BuilderConfig): void;
77
+
78
+ declare class CountMap {
79
+ private map;
80
+ count(name: string): number;
81
+ }
82
+
83
+ declare class CountMap_2 {
84
+ private map = new Map<string, number>()
85
+
86
+ public count(name: string) {
87
+ const count = (this.map.get(name) || 0) + 1
88
+ this.map.set(name, count)
89
+ return count
90
+ }
91
+ }
92
+
93
+ declare interface Data<T> {
94
+ [prop: string]: T;
95
+ }
96
+
97
+ declare interface EnumItem {
98
+ name: string;
99
+ label: string;
100
+ }
101
+
102
+ declare interface EnumModelProperty extends SampleModelProperty {
103
+ type: 'string';
104
+ enum: string[];
105
+ enumList: EnumItem[];
106
+ enumSimpleTypeName: string;
107
+ enumTypeName: string;
108
+ }
109
+
110
+ declare interface EnumModelPropertyWrapper extends ModelPropertyWrapper {
111
+ package: string;
112
+ modelProperty: EnumModelProperty;
113
+ }
114
+
115
+ declare interface Model {
116
+ required?: string[];
117
+ title: string;
118
+ type: string;
119
+ }
120
+
121
+ declare interface ModelProperty {
122
+ allowEmptyValue?: boolean;
123
+ description?: string;
124
+ example?: unknown;
125
+ }
126
+
127
+ declare interface ModelPropertyWrapper {
128
+ name: string;
129
+ modelProperty: ModelProperty;
130
+ model: Model | null;
131
+ }
132
+
133
+ declare interface ModelWrapper {
134
+ package: string;
135
+ name: string;
136
+ model: Model;
137
+ modelPackageName?: string;
138
+ enumPackageName?: string;
139
+ }
140
+
141
+ export declare enum NameStyle {
142
+ /**
143
+ * 小驼峰
144
+ */
145
+ CAMEL_CASE = 0,
146
+ /**
147
+ * 大驼峰
148
+ */
149
+ UPPER_CAMEL_CASE = 1,
150
+ /**
151
+ * 帕斯卡命名,等于大驼峰
152
+ */
153
+ PASCAL = 2,
154
+ /**
155
+ * 下划线
156
+ */
157
+ UNDER_SCORE_CASE = 3,
158
+ /**
159
+ * 短横线
160
+ */
161
+ KEBAB_CASE = 4
162
+ }
163
+
164
+ declare interface NjkApi {
165
+ /**
166
+ * 依赖,import xx from xx
167
+ */
168
+ dependencies: NjkDependency[];
169
+ /**
170
+ * 名称
171
+ */
172
+ name: string;
173
+ /**
174
+ * 描述
175
+ */
176
+ description: string;
177
+ /**
178
+ * api地址
179
+ */
180
+ url: string;
181
+ /**
182
+ * api method
183
+ */
184
+ method: string;
185
+ /**
186
+ * 响应类型
187
+ */
188
+ responseType: string;
189
+ /**
190
+ * 参数
191
+ */
192
+ parameter?: NjkApiParameter;
193
+ /**
194
+ * 响应
195
+ */
196
+ response: NjkApiResponse;
197
+ }
198
+
199
+ declare interface NjkApiParameter {
200
+ /**
201
+ * 名称
202
+ */
203
+ name: string;
204
+ /**
205
+ * 参数防止位置
206
+ */
207
+ parameterInBody?: boolean;
208
+ }
209
+
210
+ declare interface NjkApiResponse {
211
+ /**
212
+ * 名称
213
+ */
214
+ name: string;
215
+ /**
216
+ * 泛型名称
217
+ */
218
+ genericityName?: string;
219
+ /**
220
+ * 是否数组
221
+ */
222
+ isArray?: boolean;
223
+ }
224
+
225
+ declare abstract class NjkBuilder implements Builder {
226
+ protected njkBuilderConfig: NjkBuilderConfig;
227
+ protected template: NjkTemplate;
228
+ /**
229
+ * 需要生成的 Models
230
+ * @protected
231
+ */
232
+ protected models: NjkModel[];
233
+ /**
234
+ * 需要生成的 EnumModels
235
+ * @protected
236
+ */
237
+ protected enumModels: NjkEnumModel[];
238
+ /**
239
+ * 需要生成的 Services
240
+ * @protected
241
+ */
242
+ protected services: NjkService[];
243
+ constructor(njkBuilderConfig: NjkBuilderConfig, template: NjkTemplate);
244
+ /**
245
+ * 执行生成器
246
+ */
247
+ build(): void;
248
+ /**
249
+ * 删除输出目录
250
+ * @protected
251
+ */
252
+ removeOutputDir(): void;
253
+ /**
254
+ * 创建模版
255
+ * @protected
256
+ */
257
+ buildTemplate(): Promise<void>;
258
+ /**
259
+ * 重置models
260
+ * @param models
261
+ * @protected
262
+ */
263
+ protected setModels(models: NjkModel[]): void;
264
+ /**
265
+ * 重置enumModels
266
+ * @param enumModels
267
+ * @protected
268
+ */
269
+ protected setEnumModels(enumModels: NjkEnumModel[]): void;
270
+ /**
271
+ * 重置services
272
+ * @param services
273
+ * @protected
274
+ */
275
+ protected setServices(services: NjkService[]): void;
276
+ /**
277
+ * 创建model模版
278
+ * @param models
279
+ * @protected
280
+ */
281
+ protected buildModelTemplate(models: NjkModel[]): Promise<void>;
282
+ /**
283
+ * 创建enumModel模版
284
+ * @param enumModels
285
+ * @protected
286
+ */
287
+ protected buildEnumModelTemplate(enumModels: NjkEnumModel[]): Promise<void>;
288
+ /**
289
+ * 创建service模版
290
+ * @param services
291
+ * @protected
292
+ */
293
+ protected buildServiceTemplate(services: NjkService[]): Promise<void>;
294
+ /**
295
+ * models去重
296
+ * @param models
297
+ * @protected
298
+ */
299
+ protected distinctModels<T extends NjkModel>(models: T[]): T[];
300
+ /**
301
+ * 处理文件名,子类可复写该方法实现文件扩展名
302
+ * @param packagePath
303
+ * @param name
304
+ * @protected
305
+ */
306
+ protected resolveFileName(packagePath: string, name: string): string;
307
+ /**
308
+ * 处理文件后缀名,方便子类复写
309
+ * @param name
310
+ * @protected
311
+ */
312
+ protected resolveFileNameExt(name: string): string;
313
+ }
314
+
315
+ declare interface NjkBuilderConfig {
316
+ /**
317
+ * Service集合
318
+ */
319
+ services?: NjkService[];
320
+ /**
321
+ * Model集合
322
+ */
323
+ models?: NjkModel[];
324
+ /**
325
+ * EnumModel集合
326
+ */
327
+ enumModels?: NjkEnumModel[];
328
+ /**
329
+ * 输出目录
330
+ */
331
+ outputDir: string;
332
+ /**
333
+ * 文件命名风格
334
+ */
335
+ fileNameStyle?: NameStyle;
336
+ /**
337
+ * 包名命名风格
338
+ */
339
+ packageNameStyle?: NameStyle;
340
+ }
341
+
342
+ declare interface NjkDependency {
343
+ /**
344
+ * 依赖的 Model
345
+ */
346
+ model: NjkModel;
347
+ /**
348
+ * package引用路径
349
+ */
350
+ package: string;
351
+ /**
352
+ * model的别名
353
+ */
354
+ aliasName?: string;
355
+ }
356
+
357
+ declare interface NjkEnumItem {
358
+ /**
359
+ * 名称
360
+ */
361
+ name: string;
362
+ /**
363
+ * 值
364
+ */
365
+ value: string;
366
+ /**
367
+ * 描述
368
+ */
369
+ description: string;
370
+ }
371
+
372
+ declare interface NjkEnumModel extends NjkModel {
373
+ /**
374
+ * 枚举数据
375
+ */
376
+ enumItems: NjkEnumItem[];
377
+ /**
378
+ * 描述
379
+ */
380
+ description: string;
381
+ }
382
+
383
+ export declare class NjkJsSwagger2Builder extends NjkTsSwagger2Builder {
384
+ protected config: NjkJsSwagger2BuilderConfig;
385
+ constructor(config: NjkJsSwagger2BuilderConfig);
386
+ protected resolveFileNameExt(name: string): string;
387
+ }
388
+
389
+ declare interface NjkJsSwagger2BuilderConfig extends NjkTsSwagger2BuilderConfig {
390
+ }
391
+
392
+ declare interface NjkModel {
393
+ /**
394
+ * 包名
395
+ */
396
+ package: string;
397
+ /**
398
+ * 类名
399
+ */
400
+ name: string;
401
+ /**
402
+ * 文件名,默认等于name
403
+ */
404
+ fileName?: string;
405
+ /**
406
+ * 依赖,import xx from xx
407
+ */
408
+ dependencies: NjkDependency[];
409
+ /**
410
+ * 属性
411
+ */
412
+ properties: NjkModelProperty[];
413
+ /**
414
+ * 继承父类名称
415
+ */
416
+ parentName?: string;
417
+ }
418
+
419
+ declare interface NjkModelProperty {
420
+ /**
421
+ * 属性名
422
+ */
423
+ name: string;
424
+ /**
425
+ * 是否必须
426
+ */
427
+ required: boolean;
428
+ /**
429
+ * 类型名称
430
+ */
431
+ typeName: string;
432
+ /**
433
+ * 是否为数组
434
+ */
435
+ isArray: boolean;
436
+ /**
437
+ * 是否为引用类型
438
+ */
439
+ isRef: boolean;
440
+ /**
441
+ * 描述
442
+ */
443
+ description: string;
444
+ }
445
+
446
+ declare interface NjkService {
447
+ /**
448
+ * 包名
449
+ */
450
+ package: string;
451
+ /**
452
+ * 类名
453
+ */
454
+ name: string;
455
+ /**
456
+ * 文件名,默认等于name
457
+ */
458
+ fileName?: string;
459
+ /**
460
+ * 依赖,import xx from xx
461
+ */
462
+ dependencies: NjkDependency[];
463
+ /**
464
+ * api
465
+ */
466
+ apis: NjkApi[];
467
+ }
468
+
469
+ declare class NjkTemplate {
470
+ protected config: NjkTemplateConfig;
471
+ /**
472
+ * Model 的模版内容
473
+ *
474
+ * @protected
475
+ *
476
+ * @memberOf NjkTemplate
477
+ */
478
+ protected modelTemplateContent: string;
479
+ /**
480
+ * EnumModel 的模版内容
481
+ *
482
+ * @protected
483
+ *
484
+ * @memberOf NjkTemplate
485
+ */
486
+ protected enumModelTemplateContent: string;
487
+ /**
488
+ * Service 的模版内容
489
+ *
490
+ * @protected
491
+ *
492
+ * @memberOf NjkTemplate
493
+ */
494
+ protected serviceTemplateContent: string;
495
+ constructor(config: NjkTemplateConfig);
496
+ /**
497
+ * 创建 Model 模版
498
+ *
499
+ * @param {object} context
500
+ * @param {string} newFileAbsPath
501
+ *
502
+ * @memberOf NjkTemplate
503
+ */
504
+ createModel(context: object, newFileAbsPath: string): Promise<void>;
505
+ /**
506
+ * 创建 EnumModel 模版
507
+ *
508
+ * @param {object} context
509
+ * @param {string} newFileAbsPath
510
+ *
511
+ * @memberOf NjkTemplate
512
+ */
513
+ createEnumModel(context: object, newFileAbsPath: string): Promise<void>;
514
+ /**
515
+ * 创建 Service 模版
516
+ *
517
+ * @param {object} context
518
+ * @param {string} newFileAbsPath
519
+ *
520
+ * @memberOf NjkTemplate
521
+ */
522
+ createService(context: object, newFileAbsPath: string): Promise<void>;
523
+ /**
524
+ * 创建模版
525
+ *
526
+ * @param {string} templateContent
527
+ * @param {object} context
528
+ * @param {string} newFileAbsPath
529
+ *
530
+ * @memberOf NjkTemplate
531
+ */
532
+ createTemplate(templateContent: string, context: object, newFileAbsPath: string): Promise<void>;
533
+ /**
534
+ * 模版上下文
535
+ *
536
+ * @protected
537
+ * @param {object} context
538
+ * @returns
539
+ *
540
+ * @memberOf NjkTemplate
541
+ */
542
+ protected getContext(context: object): {
543
+ utils: {
544
+ upperUnderline: (value: string) => string;
545
+ injectUrl: (url: string, data: object) => string;
546
+ feedLine: (str: string, replacer: string, len: number) => string;
547
+ feedEnumModel: (str: string, replacer: string) => string;
548
+ };
549
+ } & object;
550
+ }
551
+
552
+ declare interface NjkTemplateConfig {
553
+ /**
554
+ * model模版
555
+ */
556
+ modelTemplate?: string;
557
+ /**
558
+ * 枚举模版
559
+ */
560
+ enumModelTemplate?: string;
561
+ /**
562
+ * service模版
563
+ */
564
+ serviceTemplate?: string;
565
+ /**
566
+ * model context
567
+ */
568
+ modelContext?: Data<string>;
569
+ /**
570
+ * enumModel context
571
+ */
572
+ enumModelContext?: Data<string>;
573
+ /**
574
+ * service context
575
+ */
576
+ serviceContext?: Data<string>;
577
+ }
578
+
579
+ declare class NjkTsBuilder extends NjkBuilder {
580
+ static readonly defaultConfig: NjkTsBuilderConfig;
581
+ constructor(config: NjkTsBuilderConfig);
582
+ /**
583
+ * 合并service中的api
584
+ * @param services
585
+ * @protected
586
+ */
587
+ protected mergeServiceApis(services: TsService[]): TsService[];
588
+ /**
589
+ * 重整models的依赖关系
590
+ * @param models
591
+ * @param modelPoolMap
592
+ * @protected
593
+ */
594
+ protected reformModelDependencies(models: TsModel[], modelPoolMap: Map<string, TsModel>): TsModel[];
595
+ /**
596
+ * 返回ts后缀名
597
+ * @param name
598
+ * @protected
599
+ */
600
+ protected resolveFileNameExt(name: string): string;
601
+ /**
602
+ * 根据命名风格处理文件和导入路径
603
+ * @param options
604
+ * @protected
605
+ */
606
+ protected resolveNameStyle(options: {
607
+ models: TsModel[];
608
+ enumModels: TsEnumModel[];
609
+ services: TsService[];
610
+ }): void;
611
+ }
612
+
613
+ declare interface NjkTsBuilderConfig {
614
+ template?: NjkTemplateConfig;
615
+ builder: NjkBuilderConfig;
616
+ }
617
+
618
+ export declare class NjkTsSwagger2Builder extends NjkTsBuilder {
619
+ protected config: NjkTsSwagger2BuilderConfig;
620
+ protected modelTranslator: Swagger2ModelTranslator;
621
+ protected enumModelTranslator: Swagger2EnumModelTranslator;
622
+ protected modelPropertyTranslator: Swagger2ModelPropertyTranslator;
623
+ protected parameterTranslator: Swagger2ParameterTranslator;
624
+ protected responseTranslator: Swagger2ResponseTranslator;
625
+ protected apiOperationTranslator: Swagger2ApiOperationTranslator;
626
+ protected genericityDependenciesTranslator: TsGenericityDependenciesTranslator;
627
+ protected swaggerService: SwaggerService;
628
+ protected packageDepth: number;
629
+ protected defaultSwaggerResourcePath: string;
630
+ protected defaultSwaggerDocumentPath: string;
631
+ constructor(config: NjkTsSwagger2BuilderConfig);
632
+ build(): void;
633
+ /**
634
+ * 构建Swagger2生成器
635
+ * @param resource
636
+ * @param doc
637
+ * @protected
638
+ */
639
+ protected buildSwagger2(resource: SwaggerResource, doc: ApiDoc): Promise<void>;
640
+ /**
641
+ * 创建Model
642
+ * @param doc
643
+ * @protected
644
+ */
645
+ protected buildSwagger2Models(doc: ApiDoc): {
646
+ models: TsModel[];
647
+ modelPoolMap: Map<string, TsModel>;
648
+ enumModels: TsEnumModel[];
649
+ };
650
+ /**
651
+ * 创建Service
652
+ * @param resource
653
+ * @param doc
654
+ * @param modelPoolMap
655
+ * @protected
656
+ */
657
+ protected buildSwagger2Services(resource: SwaggerResource, doc: ApiDoc, modelPoolMap: Map<string, TsModel>): TsService[];
658
+ /**
659
+ * 创建参数Model
660
+ * @param doc
661
+ * @param modelPoolMap
662
+ * @protected
663
+ */
664
+ protected buildSwagger2ParameterModels(doc: ApiDoc, modelPoolMap: Map<string, TsModel>): {
665
+ parameterModels: TsModel[];
666
+ enumModels: TsEnumModel[];
667
+ };
668
+ /**
669
+ * 计算出包的根目录,并更新到doc.basePath
670
+ * @param doc
671
+ * @protected
672
+ */
673
+ protected resolveBasePath(doc: ApiDoc): void;
674
+ }
675
+
676
+ declare interface NjkTsSwagger2BuilderConfig {
677
+ /**
678
+ * 模版配置
679
+ */
680
+ template?: NjkTemplateConfig;
681
+ /**
682
+ * 输出目录
683
+ */
684
+ outputDir?: string;
685
+ /**
686
+ * 作为package路径的层级深度,可选范围=[1, 9],默认3
687
+ */
688
+ packageDepth?: number;
689
+ /**
690
+ * responseType解析器
691
+ * @param apiOperation
692
+ */
693
+ responseTypeResolver?: (apiOperation: ApiOperation) => string;
694
+ /**
695
+ * 文件命名风格
696
+ */
697
+ fileNameStyle?: NameStyle;
698
+ /**
699
+ * 包名命名风格
700
+ */
701
+ packageNameStyle?: NameStyle;
702
+ swagger: {
703
+ /**
704
+ * swagger域名
705
+ */
706
+ domain: string;
707
+ /**
708
+ * resourcePath请求路径,默认swagger2的路径
709
+ */
710
+ resourcePath?: string;
711
+ /**
712
+ * documentPath请求路径,默认swagger2的路径
713
+ */
714
+ documentPath?: string;
715
+ /**
716
+ * 过滤SwaggerResource,可选择只输出部分SwaggerResource的接口
717
+ */
718
+ resourceFilter?: (resource: SwaggerResource) => boolean;
719
+ /**
720
+ * SwaggerResource中过滤paths,更细粒度的根据path过滤
721
+ */
722
+ pathFilter?: (resource: SwaggerResource, url: string, method: string, apiOperation: ApiOperation) => boolean;
723
+ };
724
+ templateContext?: {
725
+ /**
726
+ * Model 模版上下文
727
+ */
728
+ model?: Data<any>;
729
+ /**
730
+ * EnumModel 模版上下文
731
+ */
732
+ enumModel?: Data<any>;
733
+ /**
734
+ * Service 模版上下文
735
+ */
736
+ service?: Data<any>;
737
+ };
738
+ }
739
+
740
+ export declare class NjkTsSwagger3Builder extends NjkTsBuilder {
741
+ protected config: NjkTsSwagger3BuilderConfig;
742
+ protected modelTranslator: Swagger3ModelTranslator;
743
+ protected modelPropertyTranslator: Swagger3ModelPropertyTranslator;
744
+ protected parameterTranslator: Swagger3ParameterTranslator;
745
+ protected requestBodyTranslator: Swagger3RequestBodyTranslator;
746
+ protected responseTranslator: Swagger3ResponseTranslator;
747
+ protected apiOperationTranslator: Swagger3ApiOperationTranslator;
748
+ protected genericityDependenciesTranslator: Swagger3TsGenericityDependenciesTranslator;
749
+ swaggerService: Swagger3Service;
750
+ protected packageDepth: number;
751
+ protected defaultSwaggerResourcePath: string;
752
+ protected defaultSwaggerDocumentPath: string;
753
+ constructor(config: NjkTsSwagger3BuilderConfig);
754
+ build(): void;
755
+ buildSwagger3(resource: Swagger3Resource, doc: Swagger3ApiDoc): Promise<void>;
756
+ buildSwagger3Models(doc: Swagger3ApiDoc, data: {
757
+ rootPackage: string;
758
+ }): {
759
+ models: TsModel[];
760
+ modelPoolMap: Map<string, TsModel>;
761
+ enumModels: TsEnumModel[];
762
+ };
763
+ buildSwagger3Services(resource: Swagger3Resource, doc: Swagger3ApiDoc, modelPoolMap: Map<string, TsModel>): TsService[];
764
+ /**
765
+ * 创建参数Model
766
+ * @param doc
767
+ * @param data
768
+ */
769
+ buildSwagger3ParameterModels(doc: Swagger3ApiDoc, data: {
770
+ rootPackage: string;
771
+ modelPoolMap: Map<string, TsModel>;
772
+ }): {
773
+ parameterModels: TsModel[];
774
+ enumModels: TsEnumModel[];
775
+ };
776
+ /**
777
+ * 计算出包的根目录,并更新到doc.basePath
778
+ * @param doc
779
+ */
780
+ resolveBasePath(doc: Swagger3ApiDoc): string;
781
+ }
782
+
783
+ declare interface NjkTsSwagger3BuilderConfig extends NjkTsSwagger2BuilderConfig {
784
+ responseTypeResolver?: (apiOperation: Swagger3ApiOperation) => string;
785
+ swagger: {
786
+ /**
787
+ * swagger域名
788
+ */
789
+ domain: string;
790
+ /**
791
+ * resourcePath请求路径,默认swagger2的路径
792
+ */
793
+ resourcePath?: string;
794
+ /**
795
+ * documentPath请求路径,默认swagger2的路径
796
+ */
797
+ documentPath?: string;
798
+ /**
799
+ * 过滤SwaggerResource,可选择只输出部分SwaggerResource的接口
800
+ */
801
+ resourceFilter?: (resource: Swagger3Resource) => boolean;
802
+ /**
803
+ * SwaggerResource中过滤paths,更细粒度的根据path过滤
804
+ */
805
+ pathFilter?: (resource: Swagger3Resource, url: string, method: string, apiOperation: Swagger3ApiOperation) => boolean;
806
+ /**
807
+ * 枚举处理
808
+ */
809
+ resolveEnumItem?: (item: string) => NjkEnumItem;
810
+ };
811
+ }
812
+
813
+ declare interface Parameter {
814
+ description: string;
815
+ in: string;
816
+ name: string;
817
+ required: boolean;
818
+ items?: TypeArray<SampleType>;
819
+ }
820
+
821
+ declare interface ParameterWrapper {
822
+ parameters: Parameter[];
823
+ package: string;
824
+ name: string;
825
+ modelPoolMap: Map<string, TsModel>;
826
+ enumPackageName?: string;
827
+ paramPackageName?: string;
828
+ }
829
+
830
+ declare interface Response_2 {
831
+ description: string;
832
+ }
833
+
834
+ declare interface ResponseWrapper {
835
+ response: Response_2;
836
+ modelPoolMap: Map<string, TsModel>;
837
+ }
838
+
839
+ declare interface SampleModelProperty extends ModelProperty, SampleType {
840
+ format?: string;
841
+ }
842
+
843
+ declare interface SampleType {
844
+ type: string;
845
+ }
846
+
847
+ declare class Swagger2ApiOperationTranslator implements Translator<ApiOperationWrapper, TsApi> {
848
+ protected parameterTranslator: Swagger2ParameterTranslator;
849
+ protected responseTranslator: Swagger2ResponseTranslator;
850
+ protected genericityDependenciesTranslator: TsGenericityDependenciesTranslator;
851
+ translate(data: ApiOperationWrapper): TsApi;
852
+ resolveServiceName(name: string): string;
853
+ resolveApiName(name: string, options?: ApiOperationResolveApiName): string;
854
+ resolveApiParameterName(name: string, options?: ApiOperationResolveApiName): string;
855
+ /**
856
+ * responseType解析
857
+ * @param apiOperation
858
+ */
859
+ responseTypeResolver(apiOperation: ApiOperation): string;
860
+ }
861
+
862
+ declare class Swagger2EnumModelTranslator implements Translator<EnumModelPropertyWrapper, TsEnumModel> {
863
+ translate(data: EnumModelPropertyWrapper): TsEnumModel;
864
+ }
865
+
866
+ declare class Swagger2ModelPropertyTranslator implements Translator<ModelPropertyWrapper, TsModelProperty> {
867
+ translate(data: ModelPropertyWrapper): TsModelProperty;
868
+ }
869
+
870
+ declare class Swagger2ModelTranslator implements Translator<ModelWrapper, TsModel | null> {
871
+ protected modelPropertyTranslator: Swagger2ModelPropertyTranslator;
872
+ protected enumModelPropertyTranslator: Swagger2EnumModelTranslator;
873
+ translate(data: ModelWrapper): TsModel | null;
874
+ }
875
+
876
+ declare class Swagger2ParameterTranslator implements Translator<ParameterWrapper, TsApiParameter> {
877
+ protected enumModelPropertyTranslator: Swagger2EnumModelTranslator;
878
+ translate(data: ParameterWrapper): TsApiParameter;
879
+ }
880
+
881
+ declare class Swagger2ResponseTranslator implements Translator<ResponseWrapper, TsApiResponse | null> {
882
+ translate(data: ResponseWrapper): TsApiResponse | null;
883
+ }
884
+
885
+ declare interface Swagger3ApiComponent {
886
+ schemas: Data<Swagger3Model>;
887
+ }
888
+
889
+ declare interface Swagger3ApiDoc {
890
+ components: Swagger3ApiComponent;
891
+ info: Swagger3ApiInfo;
892
+ openapi: string;
893
+ paths: Swagger3ApiPath;
894
+ servers: Swagger3ApiServer[];
895
+ tags: Swagger3ApiTag[];
896
+ }
897
+
898
+ declare interface Swagger3ApiInfo {
899
+ contact: SwaggerApiInfoContact;
900
+ description: string;
901
+ title: string;
902
+ version: string;
903
+ }
904
+
905
+ declare interface Swagger3ApiOperation {
906
+ operationId: string;
907
+ responses: Swagger3HttpResponses;
908
+ summary: string;
909
+ tags?: string[];
910
+ produces?: string[];
911
+ }
912
+
913
+ declare interface Swagger3ApiOperationResolveApiName {
914
+ map?: CountMap;
915
+ countName?: (name: string) => string;
916
+ }
917
+
918
+ declare class Swagger3ApiOperationTranslator implements Translator<Swagger3ApiOperationWrapper, TsApi> {
919
+ protected parameterTranslator: Swagger3ParameterTranslator;
920
+ protected requestBodyTranslator: Swagger3RequestBodyTranslator;
921
+ protected responseTranslator: Swagger3ResponseTranslator;
922
+ protected genericityDependenciesTranslator: Swagger3TsGenericityDependenciesTranslator;
923
+ translate(data: Swagger3ApiOperationWrapper): TsApi;
924
+ resolveServiceName(name: string): string;
925
+ resolveApiName(name: string, options?: Swagger3ApiOperationResolveApiName): string;
926
+ resolveApiParameterName(name: string, options?: Swagger3ApiOperationResolveApiName): string;
927
+ /**
928
+ * responseType解析
929
+ *
930
+ * @param {Swagger3ApiOperation} apiOperation
931
+ * @returns {string}
932
+ *
933
+ * @memberOf Swagger3ApiOperationTranslator
934
+ */
935
+ responseTypeResolver(apiOperation: Swagger3ApiOperation): string;
936
+ }
937
+
938
+ declare interface Swagger3ApiOperationWrapper {
939
+ serviceName: string;
940
+ operationName: string;
941
+ package: string;
942
+ url: string;
943
+ method: string;
944
+ apiOperation: Swagger3ApiOperation;
945
+ responseTypeResolver?: (apiOperation: Swagger3ApiOperation) => string;
946
+ modelPoolMap: Map<string, TsModel>;
947
+ }
948
+
949
+ declare interface Swagger3ApiPath {
950
+ [prop: string]: Data<Swagger3ApiOperation>;
951
+ }
952
+
953
+ declare interface Swagger3ApiServer {
954
+ description: string;
955
+ url: string;
956
+ }
957
+
958
+ declare interface Swagger3ApiTag {
959
+ name: string;
960
+ description: string;
961
+ }
962
+
963
+ declare interface Swagger3ArrayType<T> {
964
+ type: 'array';
965
+ items: T;
966
+ }
967
+
968
+ declare type Swagger3ComplexType = Swagger3Ref | Swagger3SampleType | Swagger3ArrayType<Swagger3Ref> | Swagger3ArrayType<Swagger3SampleType>;
969
+
970
+ declare interface Swagger3EnumModelProperty extends Swagger3ModelProperty {
971
+ type: 'string' | 'array';
972
+ enum: string[];
973
+ items?: Swagger3EnumModelProperty;
974
+ }
975
+
976
+ declare interface Swagger3EnumModelPropertyWrapper {
977
+ package: string;
978
+ modelProperty: Swagger3EnumModelProperty;
979
+ modelPropertyName: string;
980
+ modelName: string;
981
+ resolveEnumItem?: (item: string) => NjkEnumItem;
982
+ }
983
+
984
+ declare class Swagger3EnumModelTranslator implements Translator<Swagger3EnumModelPropertyWrapper, TsEnumModel> {
985
+ translate(data: Swagger3EnumModelPropertyWrapper): TsEnumModel;
986
+ }
987
+
988
+ declare interface Swagger3HttpResponse {
989
+ description: string;
990
+ content?: Data<Swagger3Response>;
991
+ }
992
+
993
+ declare interface Swagger3HttpResponses {
994
+ [prop: number]: Swagger3HttpResponse;
995
+ }
996
+
997
+ declare interface Swagger3Model {
998
+ type: string;
999
+ title?: string;
1000
+ required?: string;
1001
+ }
1002
+
1003
+ declare interface Swagger3ModelProperty {
1004
+ description?: string;
1005
+ format?: string;
1006
+ allOf?: Swagger3Ref[];
1007
+ oneOf?: Swagger3Ref[];
1008
+ }
1009
+
1010
+ declare class Swagger3ModelPropertyTranslator implements Translator<Swagger3ModelPropertyWrapper, TsModelProperty> {
1011
+ translate(data: Swagger3ModelPropertyWrapper): TsModelProperty;
1012
+ }
1013
+
1014
+ declare interface Swagger3ModelPropertyWrapper {
1015
+ modelProperty: Swagger3ModelProperty;
1016
+ modelPropertyName: string;
1017
+ model: Swagger3Model;
1018
+ modelName: string;
1019
+ }
1020
+
1021
+ declare class Swagger3ModelTranslator implements Translator<Swagger3ModelWrapper, TsModel | null> {
1022
+ protected modelPropertyTranslator: Swagger3ModelPropertyTranslator;
1023
+ protected enumModelPropertyTranslator: Swagger3EnumModelTranslator;
1024
+ translate(data: Swagger3ModelWrapper): TsModel;
1025
+ }
1026
+
1027
+ declare interface Swagger3ModelWrapper {
1028
+ package: string;
1029
+ modelName: string;
1030
+ model: Swagger3Model;
1031
+ resolveEnumItem?: (item: string) => NjkEnumItem;
1032
+ }
1033
+
1034
+ declare interface Swagger3Parameter {
1035
+ in: Swagger3ParameterIn | string;
1036
+ name: string;
1037
+ required: boolean;
1038
+ style: string;
1039
+ schema: Swagger3Model;
1040
+ description?: string;
1041
+ format?: string;
1042
+ }
1043
+
1044
+ declare enum Swagger3ParameterIn {
1045
+ header = "header",
1046
+ query = "query",
1047
+ path = "path",
1048
+ body = "body",
1049
+ formData = "formData"
1050
+ }
1051
+
1052
+ declare class Swagger3ParameterTranslator implements Translator<Swagger3ParameterWrapper, TsApiParameter> {
1053
+ protected enumModelPropertyTranslator: Swagger3EnumModelTranslator;
1054
+ translate(data: Swagger3ParameterWrapper): TsApiParameter;
1055
+ }
1056
+
1057
+ declare interface Swagger3ParameterWrapper {
1058
+ parameters: Swagger3Parameter[];
1059
+ package: string;
1060
+ name: string;
1061
+ modelPoolMap: Map<string, TsModel>;
1062
+ resolveEnumItem?: (item: string) => NjkEnumItem;
1063
+ }
1064
+
1065
+ declare interface Swagger3Ref {
1066
+ $ref: string;
1067
+ }
1068
+
1069
+ declare interface Swagger3RequestBody {
1070
+ contentType?: string;
1071
+ schema: Swagger3ComplexType;
1072
+ }
1073
+
1074
+ declare class Swagger3RequestBodyTranslator implements Translator<Swagger3RequestBodyWrapper, TsApiParameter> {
1075
+ translate(data: Swagger3RequestBodyWrapper): TsApiParameter;
1076
+ }
1077
+
1078
+ declare interface Swagger3RequestBodyWrapper {
1079
+ requestBody: Swagger3RequestBody;
1080
+ package: string;
1081
+ name: string;
1082
+ modelPoolMap: Map<string, TsModel>;
1083
+ }
1084
+
1085
+ declare interface Swagger3Resource {
1086
+ location: string;
1087
+ name: string;
1088
+ swaggerVersion: string;
1089
+ url: string;
1090
+ }
1091
+
1092
+ declare interface Swagger3Response {
1093
+ responseType: string;
1094
+ }
1095
+
1096
+ declare class Swagger3ResponseTranslator implements Translator<Swagger3ResponseWrapper, TsApiResponse | null> {
1097
+ translate(data: Swagger3ResponseWrapper): TsApiResponse | null;
1098
+ }
1099
+
1100
+ declare interface Swagger3ResponseWrapper {
1101
+ responses: Swagger3HttpResponses;
1102
+ modelPoolMap: Map<string, TsModel>;
1103
+ }
1104
+
1105
+ declare interface Swagger3SampleType {
1106
+ type: string;
1107
+ }
1108
+
1109
+ declare class Swagger3Service {
1110
+ protected domain: string;
1111
+ protected resourcePath: string;
1112
+ protected documentPath: string;
1113
+ constructor(domain: string, resourcePath?: string, documentPath?: string);
1114
+ /**
1115
+ * 获取 Swagger3Resource[]
1116
+ */
1117
+ listSwaggerResources(): Promise<Swagger3Resource[]>;
1118
+ /**
1119
+ * 获取 Swagger3ApiDoc
1120
+ * @param group
1121
+ */
1122
+ getApiDoc(group: string): Promise<Swagger3ApiDoc>;
1123
+ }
1124
+
1125
+ declare class Swagger3TsGenericityDependenciesTranslator extends TsGenericityDependenciesTranslator {
1126
+ }
1127
+
1128
+ declare interface SwaggerApiInfoContact {
1129
+ email: string;
1130
+ name: string;
1131
+ url: string;
1132
+ }
1133
+
1134
+ declare interface SwaggerResource {
1135
+ location: string;
1136
+ name: string;
1137
+ swaggerVersion: string;
1138
+ url: string;
1139
+ }
1140
+
1141
+ declare interface SwaggerResource {
1142
+ location: string;
1143
+ name: string;
1144
+ swaggerVersion: string;
1145
+ url: string;
1146
+ }
1147
+
1148
+ declare class SwaggerService {
1149
+ protected domain: string;
1150
+ protected resourcePath: string;
1151
+ protected documentPath: string;
1152
+ constructor(domain: string, resourcePath?: string, documentPath?: string);
1153
+ /**
1154
+ * 获取 SwaggerResource[]
1155
+ */
1156
+ listSwaggerResources(): Promise<SwaggerResource[]>;
1157
+ /**
1158
+ * 获取 ApiDoc
1159
+ * @param group
1160
+ */
1161
+ getApiDoc(group: string): Promise<ApiDoc>;
1162
+ }
1163
+
1164
+ declare interface Translator<T, R> {
1165
+ /**
1166
+ * 转化
1167
+ * @param data
1168
+ */
1169
+ translate(data: T): R;
1170
+ }
1171
+
1172
+ declare interface TsApi extends NjkApi {
1173
+ }
1174
+
1175
+ declare interface TsApiParameter extends NjkApiParameter, TsModel {
1176
+ parent?: TsModelType;
1177
+ }
1178
+
1179
+ declare interface TsApiResponse extends NjkApiResponse {
1180
+ /**
1181
+ * 类型
1182
+ *
1183
+ * @type {TsModelType}
1184
+ * @memberOf TsApiResponse
1185
+ */
1186
+ modelType: TsModelType;
1187
+ }
1188
+
1189
+ declare interface TsEnumModel extends NjkEnumModel {
1190
+ }
1191
+
1192
+ /**
1193
+ * 泛型
1194
+ *
1195
+ * @export
1196
+ * @interface TsGenericity
1197
+ */
1198
+ declare interface TsGenericity {
1199
+ /**
1200
+ * 类名
1201
+ *
1202
+ * @type {string}
1203
+ * @memberOf TsGenericity
1204
+ */
1205
+ className: string;
1206
+ /**
1207
+ * 包含内部所有的类名
1208
+ *
1209
+ * @type {string[]}
1210
+ * @memberOf TsGenericity
1211
+ */
1212
+ classNames: string[];
1213
+ /**
1214
+ * 占位符
1215
+ *
1216
+ * @type {string}
1217
+ * @memberOf TsGenericity
1218
+ */
1219
+ replaceName: string;
1220
+ /**
1221
+ * 包含内部所有的占位符
1222
+ *
1223
+ * @type {string[]}
1224
+ * @memberOf TsGenericity
1225
+ */
1226
+ replaceNames: string[];
1227
+ /**
1228
+ * 显示名称,
1229
+ * showName直接包含了className => ClassName<...Genericities>
1230
+ *
1231
+ * @type {string}
1232
+ * @memberOf TsGenericity
1233
+ */
1234
+ showName: string;
1235
+ /**
1236
+ * 泛型显示名称
1237
+ *
1238
+ * @type {string}
1239
+ * @memberOf TsGenericity
1240
+ */
1241
+ replaceShowName: string;
1242
+ /**
1243
+ * 内部泛型
1244
+ *
1245
+ * @type {TsGenericity[]}
1246
+ * @memberOf TsGenericity
1247
+ */
1248
+ genericities: TsGenericity[];
1249
+ }
1250
+
1251
+ /**
1252
+ * 计算出TsGenericity的所有依赖
1253
+ */
1254
+ declare class TsGenericityDependenciesTranslator implements Translator<TsGenericityWrapper, NjkDependency[]> {
1255
+ translate(data: TsGenericityWrapper): NjkDependency[];
1256
+ resolveTsModelTypeDependencies(modelType: TsModelType, modelPoolMap: Map<string, TsModel>, dependencies?: NjkDependency[]): NjkDependency[];
1257
+ }
1258
+
1259
+ declare interface TsGenericityWrapper {
1260
+ package: string;
1261
+ genericity: TsGenericity;
1262
+ modelPoolMap: Map<string, TsModel>;
1263
+ }
1264
+
1265
+ declare interface TsModel extends NjkModel {
1266
+ /**
1267
+ * 包含的枚举类型
1268
+ *
1269
+ * @type {TsModel[]}
1270
+ * @memberOf TsModel
1271
+ */
1272
+ enumModels?: TsEnumModel[];
1273
+ /**
1274
+ * 泛型
1275
+ *
1276
+ * @type {TsGenericity}
1277
+ * @memberOf TsModelProperty
1278
+ */
1279
+ genericity?: TsGenericity;
1280
+ }
1281
+
1282
+ declare interface TsModelProperty extends NjkModelProperty {
1283
+ /**
1284
+ * 属性修饰符
1285
+ *
1286
+ * @type {TsModelPropertyModifer}
1287
+ * @memberOf TsModelProperty
1288
+ */
1289
+ modifier: TsModelPropertyModifer;
1290
+ }
1291
+
1292
+ declare enum TsModelPropertyModifer {
1293
+ package = "",
1294
+ public = "public",
1295
+ protected = "protected",
1296
+ private = "private"
1297
+ }
1298
+
1299
+ declare interface TsModelType {
1300
+ /**
1301
+ * 名称
1302
+ *
1303
+ * @type {string}
1304
+ * @memberOf TsModelType
1305
+ */
1306
+ name: string;
1307
+ /**
1308
+ * 限定类型
1309
+ *
1310
+ * @type {TsModelTypeRestrict}
1311
+ * @memberOf TsModelType
1312
+ */
1313
+ type: TsModelTypeRestrict;
1314
+ /**
1315
+ * 是否为数组
1316
+ *
1317
+ * @type {boolean}
1318
+ * @memberOf TsModelType
1319
+ */
1320
+ isArray: boolean;
1321
+ /**
1322
+ * 引用类型时为指定的引用对象
1323
+ * 泛型时为泛型定义
1324
+ *
1325
+ * @type {TsModel | TsGenericity}
1326
+ * @memberOf TsModelType
1327
+ */
1328
+ target?: TsModel | TsGenericity;
1329
+ }
1330
+
1331
+ declare enum TsModelTypeRestrict {
1332
+ /**
1333
+ * 基础类型
1334
+ */
1335
+ sample = 0,
1336
+ /**
1337
+ * 引用类型
1338
+ */
1339
+ ref = 1,
1340
+ /**
1341
+ * 泛型
1342
+ */
1343
+ genericity = 2
1344
+ }
1345
+
1346
+ declare interface TsService extends NjkService {
1347
+ }
1348
+
1349
+ declare interface TypeArray<T> {
1350
+ type: 'array';
1351
+ items: T;
1352
+ }
1353
+
1354
+ export { }