• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import ts from 'typescript';
17import { ApiInfo, MethodInfo } from '../parser/ApiInfoDefination';
18import { Comment } from '../parser/Comment';
19import { NumberConstant } from '../../utils/Constant';
20export class BasicDiffInfo {
21  private static EMPTY = '';
22  //apiType
23  apiType: string = BasicDiffInfo.EMPTY;
24  statusCode: ApiStatusCode = ApiStatusCode.DEFAULT;
25  // parentModuleName: string = 'global';
26  //旧数据
27  oldApiDefinedText: string = BasicDiffInfo.EMPTY;
28  //新数据
29  newApiDefinedText: string = BasicDiffInfo.EMPTY;
30  //旧apiName
31  oldApiName: string = BasicDiffInfo.EMPTY;
32  //新apiName
33  newApiName: string = BasicDiffInfo.EMPTY;
34  //旧dts文件名
35  oldDtsName: string = BasicDiffInfo.EMPTY;
36  //新dts文件名
37  newDtsName: string = BasicDiffInfo.EMPTY;
38  //diff节点类型
39  diffType: ApiDiffType = ApiDiffType.DEFAULT;
40  //diff节点类型描述
41  diffMessage: string = '';
42  // 获取json的url
43  changeLogUrl: string = '';
44  // json中的数据
45  changeLogs: string[] = [];
46  //是否兼容
47  isCompatible: boolean = true;
48  //层次关系
49  oldHierarchicalRelations: string[] = [];
50  //层次关系
51  newHierarchicalRelations: string[] = [];
52  // api所在的位置信息
53  oldPos: ts.LineAndCharacter = { line: -1, character: -1 };
54  // api所在的位置信息
55  newPos: ts.LineAndCharacter = { line: -1, character: -1 };
56  oldDescription: string = '';
57  newDescription: string = '';
58  //syscap中用于区分子系统的字段
59  oldSyscapField: string = '';
60  newSyscapField: string = '';
61
62  setApiType(apiType: string): BasicDiffInfo {
63    if (apiType) {
64      this.apiType = apiType;
65    } else {
66      this.apiType = BasicDiffInfo.EMPTY;
67    }
68    return this;
69  }
70
71  getApiType(): string {
72    return this.apiType;
73  }
74
75  getStatusCode(): ApiStatusCode {
76    return this.statusCode;
77  }
78
79  setStatusCode(statusCode: ApiStatusCode): BasicDiffInfo {
80    this.statusCode = statusCode;
81    return this;
82  }
83
84  setOldApiDefinedText(oldApiDefinedText: string): BasicDiffInfo {
85    this.oldApiDefinedText = oldApiDefinedText;
86    return this;
87  }
88
89  getOldApiDefinedText(): string {
90    return this.oldApiDefinedText;
91  }
92
93  setNewApiDefinedText(newApiDefinedText: string): BasicDiffInfo {
94    this.newApiDefinedText = newApiDefinedText;
95    return this;
96  }
97
98  getNewApiDefinedText(): string {
99    return this.newApiDefinedText;
100  }
101
102  setOldApiName(oldApiName: string): BasicDiffInfo {
103    this.oldApiName = oldApiName;
104    return this;
105  }
106
107  getOldApiName(): string {
108    return this.oldApiName;
109  }
110
111  setNewApiName(newApiName: string): BasicDiffInfo {
112    this.newApiName = newApiName;
113    return this;
114  }
115
116  getNewApiName(): string {
117    return this.newApiName;
118  }
119
120  setOldDtsName(oldDtsName: string): BasicDiffInfo {
121    this.oldDtsName = oldDtsName;
122    return this;
123  }
124
125  getOldDtsName(): string {
126    return this.oldDtsName;
127  }
128
129  setNewDtsName(newDtsName: string): BasicDiffInfo {
130    this.newDtsName = newDtsName;
131    return this;
132  }
133
134  getNewDtsName(): string {
135    return this.newDtsName;
136  }
137
138  setDiffType(diffType: ApiDiffType): BasicDiffInfo {
139    this.diffType = diffType;
140    return this;
141  }
142
143  getDiffType(): ApiDiffType {
144    return this.diffType;
145  }
146
147  setDiffMessage(diffMessage: string): BasicDiffInfo {
148    this.diffMessage = diffMessage;
149    return this;
150  }
151
152  getDiffMessage(): string {
153    return this.diffMessage;
154  }
155
156  setChangeLogUrl(changeLogUrl: string): BasicDiffInfo {
157    this.changeLogUrl = changeLogUrl;
158    return this;
159  }
160
161  getChangeLogUrl(): string {
162    return this.changeLogUrl;
163  }
164
165  addChangeLogs(changeLogs: string): BasicDiffInfo {
166    this.changeLogs.push(changeLogs);
167    return this;
168  }
169
170  getChangeLogs(): string[] {
171    return this.changeLogs;
172  }
173
174  setIsCompatible(isCompatible: boolean): BasicDiffInfo {
175    this.isCompatible = isCompatible;
176    return this;
177  }
178
179  getIsCompatible(): boolean {
180    return this.isCompatible;
181  }
182
183  setOldHierarchicalRelations(oldHierarchicalRelations: string[]): BasicDiffInfo {
184    this.oldHierarchicalRelations = oldHierarchicalRelations;
185    return this;
186  }
187
188  getOldHierarchicalRelations(): string[] {
189    return this.oldHierarchicalRelations;
190  }
191
192  setNewHierarchicalRelations(newHierarchicalRelations: string[]): BasicDiffInfo {
193    this.newHierarchicalRelations = newHierarchicalRelations;
194    return this;
195  }
196
197  getNewHierarchicalRelations(): string[] {
198    return this.newHierarchicalRelations;
199  }
200
201  setOldPos(oldPos: ts.LineAndCharacter): BasicDiffInfo {
202    this.oldPos = oldPos;
203    return this;
204  }
205
206  getOldPos(): ts.LineAndCharacter {
207    return this.oldPos;
208  }
209
210  setNewPos(newPos: ts.LineAndCharacter): BasicDiffInfo {
211    this.newPos = newPos;
212    return this;
213  }
214
215  getNewPos(): ts.LineAndCharacter {
216    return this.newPos;
217  }
218
219  getOldDescription(): string {
220    return this.oldDescription;
221  }
222
223  setOldDescription(oldDescription: string): BasicDiffInfo {
224    this.oldDescription = oldDescription;
225    return this;
226  }
227
228  getNewDescription(): string {
229    return this.newDescription;
230  }
231
232  setNewDescription(newDescription: string): BasicDiffInfo {
233    this.newDescription = newDescription;
234    return this;
235  }
236
237  getOldApiInfo(): string {
238    return '';
239  }
240
241  getParentModuleName(hierarchicalRelations: string[]): string {
242    let parentModuleName: string = 'global';
243    if (hierarchicalRelations.length > NumberConstant.RELATION_LENGTH) {
244      parentModuleName = hierarchicalRelations[hierarchicalRelations.length - NumberConstant.RELATION_LENGTH];
245    }
246    return parentModuleName;
247  }
248
249  setOldSyscapField(syscapField: string): BasicDiffInfo {
250    this.oldSyscapField = syscapField;
251    return this;
252  }
253
254  getOldSyscapField(): string {
255    return this.oldSyscapField;
256  }
257
258  setNewSyscapField(syscapField: string): BasicDiffInfo {
259    this.newSyscapField = syscapField;
260    return this;
261  }
262
263  getNewSyscapField(): string {
264    return this.newSyscapField;
265  }
266}
267
268export class DiffTypeInfo {
269  private diffType: ApiDiffType = ApiDiffType.DEFAULT; //diff节点类型
270  private statusCode: ApiStatusCode = ApiStatusCode.DEFAULT;
271  private oldMessage: string = ''; //旧版本信息
272  private newMessage: string = ''; //新版本信息
273
274  constructor(statusCode?: ApiStatusCode, diffType?: ApiDiffType, oldMessage?: string, newMessage?: string) {
275    if (statusCode !== undefined) {
276      this.setStatusCode(statusCode);
277    }
278    if (diffType) {
279      this.setDiffType(diffType);
280    }
281    if (oldMessage) {
282      this.setOldMessage(oldMessage);
283    }
284    if (newMessage) {
285      this.setNewMessage(newMessage);
286    }
287  }
288
289  getStatusCode(): ApiStatusCode {
290    return this.statusCode;
291  }
292
293  setStatusCode(statusCode: ApiStatusCode): DiffTypeInfo {
294    this.statusCode = statusCode;
295    return this;
296  }
297
298  getDiffType(): ApiDiffType {
299    return this.diffType;
300  }
301
302  setDiffType(diffType: ApiDiffType): DiffTypeInfo {
303    this.diffType = diffType;
304    return this;
305  }
306
307  getOldMessage(): string {
308    return this.oldMessage;
309  }
310  setOldMessage(oldMessage: string): DiffTypeInfo {
311    this.oldMessage = oldMessage;
312    return this;
313  }
314
315  getNewMessage(): string {
316    return this.newMessage;
317  }
318  setNewMessage(newMessage: string): DiffTypeInfo {
319    this.newMessage = newMessage;
320    return this;
321  }
322}
323export interface JsDocDiffProcessor {
324  (oldJsDocInfo: Comment.JsDocInfo | undefined, newJsDocInfo: Comment.JsDocInfo | undefined): DiffTypeInfo | undefined;
325}
326
327export interface ApiSceneDiffProcessor {
328  (oldApiInfo: ApiInfo, newApiInfo: ApiInfo): DiffTypeInfo | undefined;
329}
330export interface ApiScenesDiffProcessor {
331  (oldApiInfo: MethodInfo, newApiInfo: MethodInfo): DiffTypeInfo[] | DiffTypeInfo | undefined;
332}
333
334export interface ApiNodeDiffProcessor {
335  (oldApiInfo: ApiInfo, newApiInfo: ApiInfo, diffInfos: BasicDiffInfo[]): void;
336}
337
338export enum ApiStatusCode {
339  DEFAULT = -1,
340  DELETE = 0,
341  DELETE_DTS = 1,
342  DELETE_CLASS = 2,
343  NEW_API = 3,
344  VERSION_CHNAGES = 4,
345  DEPRECATED_CHNAGES = 5,
346  NEW_ERRORCODE = 6,
347  ERRORCODE_CHANGES = 7,
348  SYSCAP_CHANGES = 8,
349  SYSTEM_API_CHNAGES = 9,
350  PERMISSION_DELETE = 10,
351  PERMISSION_NEW = 11,
352  PERMISSION_CHANGES = 12,
353  MODEL_CHNAGES = 13,
354  TYPE_CHNAGES = 14,
355  CLASS_CHANGES = 15,
356  FUNCTION_CHANGES = 16,
357  CHANGELOG = 17,
358  DTS_CHANGED = 18,
359  FORM_CHANGED = 19,
360  CROSSPLATFORM_CHANGED = 20,
361  NEW_DTS = 21,
362  NEW_CLASS = 22,
363  NEW_DECORATOR = 23,
364  DELETE_DECORATOR = 24,
365}
366
367export enum ApiDiffType {
368  DEFAULT = 0,
369  SYSTEM_TO_PUBLIC,
370  PUBLIC_TO_SYSTEM,
371  NA_TO_STAGE,
372  NA_TO_FA,
373  FA_TO_STAGE,
374  STAGE_TO_FA,
375  STAGE_TO_NA,
376  FA_TO_NA,
377  NA_TO_CARD,
378  CARD_TO_NA,
379  NA_TO_CROSS_PLATFORM,
380  CROSS_PLATFORM_TO_NA,
381  SYSCAP_NA_TO_HAVE,
382  SYSCAP_HAVE_TO_NA,
383  SYSCAP_A_TO_B,
384  DEPRECATED_NA_TO_HAVE,
385  DEPRECATED_HAVE_TO_NA,
386  DEPRECATED_A_TO_B,
387  ERROR_CODE_NA_TO_HAVE,
388  ERROR_CODE_ADD,
389  ERROR_CODE_REDUCE,
390  ERROR_CODE_CHANGE,
391  PERMISSION_NA_TO_HAVE,
392  PERMISSION_HAVE_TO_NA,
393  /** 增加or或减少and权限 权限范围变大 */
394  PERMISSION_RANGE_BIGGER,
395  /** 减少or或增加and权限 权限范围变小 */
396  PERMISSION_RANGE_SMALLER,
397  /** 同时存在权限范围变大和变小的情况 */
398  PERMISSION_RANGE_CHANGE,
399  /** type范围变大 */
400  TYPE_RANGE_BIGGER,
401  /** type范围减小 */
402  TYPE_RANGE_SMALLER,
403  /** type范围改变,既有变大情况也有变小情况 */
404  TYPE_RANGE_CHANGE,
405  API_NAME_CHANGE,
406  FUNCTION_RETURN_TYPE_ADD,
407  FUNCTION_RETURN_TYPE_REDUCE,
408  FUNCTION_RETURN_TYPE_CHANGE,
409  FUNCTION_PARAM_POS_CHANGE,
410  /** 函数新增可选参数 */
411  FUNCTION_PARAM_UNREQUIRED_ADD,
412  /** 函数新增必选参数 */
413  FUNCTION_PARAM_REQUIRED_ADD,
414  FUNCTION_PARAM_REDUCE,
415  /** 函数中的必选参数变为可选参数 */
416  FUNCTION_PARAM_TO_UNREQUIRED,
417  /** 函数中的可选参数变为必选参数 */
418  FUNCTION_PARAM_TO_REQUIRED,
419  FUNCTION_PARAM_NAME_CHANGE,
420  FUNCTION_PARAM_TYPE_CHANGE,
421  /**  函数的参数类型范围扩大 */
422  FUNCTION_PARAM_TYPE_ADD,
423  /**  函数的参数类型范围缩小 */
424  FUNCTION_PARAM_TYPE_REDUCE,
425  PROPERTY_READONLY_TO_UNREQUIRED,
426  PROPERTY_READONLY_TO_REQUIRED,
427  PROPERTY_WRITABLE_TO_UNREQUIRED,
428  PROPERTY_WRITABLE_TO_REQUIRED,
429  PROPERTY_TYPE_CHANGE,
430  PROPERTY_READONLY_ADD,
431  PROPERTY_READONLY_REDUCE,
432  PROPERTY_WRITABLE_ADD,
433  PROPERTY_WRITABLE_REDUCE,
434  CONSTANT_VALUE_CHANGE,
435  TYPE_ALIAS_CHANGE,
436  TYPE_ALIAS_ADD,
437  TYPE_ALIAS_REDUCE,
438  ENUM_MEMBER_VALUE_CHANGE,
439  ADD,
440  REDUCE,
441  NEW_DECORATOR,
442  DELETE_DECORATOR,
443  SINCE_VERSION_NA_TO_HAVE,
444  SINCE_VERSION_HAVE_TO_NA,
445  SINCE_VERSION_A_TO_B,
446  HISTORICAL_JSDOC_CHANGE,
447  HISTORICAL_API_CHANGE,
448}
449
450export const diffTypeMap: Map<ApiDiffType, string> = new Map([
451  [ApiDiffType.SYSTEM_TO_PUBLIC, 'API访问级别变更'],
452  [ApiDiffType.PUBLIC_TO_SYSTEM, 'API访问级别变更'],
453  [ApiDiffType.NA_TO_STAGE, 'API模型切换'],
454  [ApiDiffType.NA_TO_FA, 'API模型切换'],
455  [ApiDiffType.FA_TO_STAGE, 'API模型切换'],
456  [ApiDiffType.STAGE_TO_FA, 'API模型切换'],
457  [ApiDiffType.STAGE_TO_NA, 'API模型切换'],
458  [ApiDiffType.FA_TO_NA, 'API模型切换'],
459  [ApiDiffType.NA_TO_CARD, 'API卡片权限变更'],
460  [ApiDiffType.CARD_TO_NA, 'API卡片权限变更'],
461  [ApiDiffType.NA_TO_CROSS_PLATFORM, 'API跨平台权限变更'],
462  [ApiDiffType.CROSS_PLATFORM_TO_NA, 'API跨平台权限变更'],
463  [ApiDiffType.SYSCAP_NA_TO_HAVE, 'syscap变更'],
464  [ApiDiffType.SYSCAP_HAVE_TO_NA, 'syscap变更'],
465  [ApiDiffType.SYSCAP_A_TO_B, 'syscap变更'],
466  [ApiDiffType.DEPRECATED_NA_TO_HAVE, 'API废弃版本变更'],
467  [ApiDiffType.DEPRECATED_HAVE_TO_NA, 'API废弃版本变更'],
468  [ApiDiffType.DEPRECATED_A_TO_B, 'API废弃版本变更'],
469  [ApiDiffType.ERROR_CODE_NA_TO_HAVE, '错误码变更'],
470  [ApiDiffType.ERROR_CODE_ADD, '错误码变更'],
471  [ApiDiffType.ERROR_CODE_REDUCE, '错误码变更'],
472  [ApiDiffType.ERROR_CODE_CHANGE, '错误码变更'],
473  [ApiDiffType.PERMISSION_NA_TO_HAVE, '权限变更'],
474  [ApiDiffType.PERMISSION_HAVE_TO_NA, '权限变更'],
475  [ApiDiffType.PERMISSION_RANGE_BIGGER, '权限变更'],
476  [ApiDiffType.PERMISSION_RANGE_SMALLER, '权限变更'],
477  [ApiDiffType.PERMISSION_RANGE_CHANGE, '权限变更'],
478  [ApiDiffType.TYPE_RANGE_BIGGER, '自定义类型变更'],
479  [ApiDiffType.TYPE_RANGE_SMALLER, '自定义类型变更'],
480  [ApiDiffType.TYPE_RANGE_CHANGE, '自定义类型变更'],
481  [ApiDiffType.API_NAME_CHANGE, 'API名称变更'],
482  [ApiDiffType.FUNCTION_RETURN_TYPE_ADD, '函数变更'],
483  [ApiDiffType.FUNCTION_RETURN_TYPE_REDUCE, '函数变更'],
484  [ApiDiffType.FUNCTION_RETURN_TYPE_CHANGE, '函数变更'],
485  [ApiDiffType.FUNCTION_PARAM_POS_CHANGE, '函数变更'],
486  [ApiDiffType.FUNCTION_PARAM_UNREQUIRED_ADD, '函数变更'],
487  [ApiDiffType.FUNCTION_PARAM_REQUIRED_ADD, '函数变更'],
488  [ApiDiffType.FUNCTION_PARAM_REDUCE, '函数变更'],
489  [ApiDiffType.FUNCTION_PARAM_TO_UNREQUIRED, '函数变更'],
490  [ApiDiffType.FUNCTION_PARAM_TO_REQUIRED, '函数变更'],
491  [ApiDiffType.FUNCTION_PARAM_NAME_CHANGE, '函数变更'],
492  [ApiDiffType.FUNCTION_PARAM_TYPE_CHANGE, '函数变更'],
493  [ApiDiffType.FUNCTION_PARAM_TYPE_ADD, '函数变更'],
494  [ApiDiffType.FUNCTION_PARAM_TYPE_REDUCE, '函数变更'],
495  [ApiDiffType.PROPERTY_READONLY_TO_UNREQUIRED, '属性变更'],
496  [ApiDiffType.PROPERTY_READONLY_TO_REQUIRED, '属性变更'],
497  [ApiDiffType.PROPERTY_WRITABLE_TO_UNREQUIRED, '属性变更'],
498  [ApiDiffType.PROPERTY_WRITABLE_TO_REQUIRED, '属性变更'],
499  [ApiDiffType.PROPERTY_TYPE_CHANGE, '属性变更'],
500  [ApiDiffType.PROPERTY_READONLY_ADD, '属性变更'],
501  [ApiDiffType.PROPERTY_READONLY_REDUCE, '属性变更'],
502  [ApiDiffType.PROPERTY_WRITABLE_ADD, '属性变更'],
503  [ApiDiffType.PROPERTY_WRITABLE_REDUCE, '属性变更'],
504  [ApiDiffType.CONSTANT_VALUE_CHANGE, '常量变更'],
505  [ApiDiffType.TYPE_ALIAS_CHANGE, '自定义类型变更'],
506  [ApiDiffType.TYPE_ALIAS_ADD, '自定义类型变更'],
507  [ApiDiffType.TYPE_ALIAS_REDUCE, '自定义类型变更'],
508  [ApiDiffType.ENUM_MEMBER_VALUE_CHANGE, '枚举赋值发生改变'],
509  [ApiDiffType.ADD, '新增API'],
510  [ApiDiffType.REDUCE, '删除API'],
511  [ApiDiffType.DELETE_DECORATOR, '删除装饰器'],
512  [ApiDiffType.NEW_DECORATOR, '新增装饰器'],
513  [ApiDiffType.SINCE_VERSION_A_TO_B, '起始版本有变化'],
514  [ApiDiffType.SINCE_VERSION_HAVE_TO_NA, '起始版本有变化'],
515  [ApiDiffType.SINCE_VERSION_NA_TO_HAVE, '起始版本有变化'],
516]);
517
518export const diffMap: Map<ApiDiffType, string> = new Map([
519  [ApiDiffType.SYSTEM_TO_PUBLIC, '从系统API变更为公开API'],
520  [ApiDiffType.PUBLIC_TO_SYSTEM, '从公开API变更为系统API'],
521  [ApiDiffType.NA_TO_STAGE, '从无模型使用限制到仅在Stage模型下使用'],
522  [ApiDiffType.NA_TO_FA, '从无模型使用限制到仅在FA模型下使用'],
523  [ApiDiffType.FA_TO_STAGE, '从仅在FA模型下使用到仅在Stage模型下使用'],
524  [ApiDiffType.STAGE_TO_FA, '从仅在Stage模型下使用到仅在FA模型下使用'],
525  [ApiDiffType.STAGE_TO_NA, '从仅在Stage模型下使用到无模型使用限制'],
526  [ApiDiffType.FA_TO_NA, '从仅在FA模型下使用到无模型使用限制'],
527  [ApiDiffType.NA_TO_CARD, '从不支持卡片到支持卡片'],
528  [ApiDiffType.CARD_TO_NA, '从支持卡片到不支持卡片'],
529  [ApiDiffType.NA_TO_CROSS_PLATFORM, '从不支持跨平台到支持跨平台'],
530  [ApiDiffType.CROSS_PLATFORM_TO_NA, '从支持跨平台到不支持跨平台'],
531  [ApiDiffType.SYSCAP_NA_TO_HAVE, '从没有syscap到有syscap'],
532  [ApiDiffType.SYSCAP_HAVE_TO_NA, '从有syscap到没有syscap'],
533  [ApiDiffType.SYSCAP_A_TO_B, 'syscap发生改变'],
534  [ApiDiffType.DEPRECATED_NA_TO_HAVE, '接口变更为废弃'],
535  [ApiDiffType.DEPRECATED_HAVE_TO_NA, '废弃接口变更为不废弃'],
536  [ApiDiffType.DEPRECATED_A_TO_B, '接口废弃版本发生变化'],
537  [ApiDiffType.ERROR_CODE_NA_TO_HAVE, '错误码从无到有'],
538  [ApiDiffType.ERROR_CODE_ADD, '错误码增加'],
539  [ApiDiffType.ERROR_CODE_REDUCE, '错误码减少'],
540  [ApiDiffType.ERROR_CODE_CHANGE, '错误码的code值发生变化'],
541  [ApiDiffType.PERMISSION_NA_TO_HAVE, '权限从无到有'],
542  [ApiDiffType.PERMISSION_HAVE_TO_NA, '权限从有到无'],
543  [ApiDiffType.PERMISSION_RANGE_BIGGER, '增加or或减少and权限'],
544  [ApiDiffType.PERMISSION_RANGE_SMALLER, '减少or或增加and权限'],
545  [ApiDiffType.PERMISSION_RANGE_CHANGE, '权限发送改变无法判断范围变化'],
546  [ApiDiffType.TYPE_RANGE_BIGGER, '类型范围变大'],
547  [ApiDiffType.TYPE_RANGE_SMALLER, '类型范围变小'],
548  [ApiDiffType.TYPE_RANGE_CHANGE, '类型范围改变'],
549  [ApiDiffType.API_NAME_CHANGE, 'API名称变更'],
550  [ApiDiffType.FUNCTION_RETURN_TYPE_ADD, '函数返回值类型扩大'],
551  [ApiDiffType.FUNCTION_RETURN_TYPE_REDUCE, '函数返回值类型缩小'],
552  [ApiDiffType.FUNCTION_RETURN_TYPE_CHANGE, '函数返回值类型改变'],
553  [ApiDiffType.FUNCTION_PARAM_POS_CHANGE, '函数参数位置发生改变'],
554  [ApiDiffType.FUNCTION_PARAM_UNREQUIRED_ADD, '函数新增可选参数'],
555  [ApiDiffType.FUNCTION_PARAM_REQUIRED_ADD, '函数新增必选参数'],
556  [ApiDiffType.FUNCTION_PARAM_REDUCE, '函数删除参数'],
557  [ApiDiffType.FUNCTION_PARAM_TO_UNREQUIRED, '函数中的必选参数变为可选参数'],
558  [ApiDiffType.FUNCTION_PARAM_TO_REQUIRED, '函数中的可选参数变为必选参数'],
559  [ApiDiffType.FUNCTION_PARAM_NAME_CHANGE, '函数中的参数名称发生改变'],
560  [ApiDiffType.FUNCTION_PARAM_TYPE_CHANGE, '函数的参数类型变更'],
561  [ApiDiffType.FUNCTION_PARAM_TYPE_ADD, '函数的参数类型范围扩大'],
562  [ApiDiffType.FUNCTION_PARAM_TYPE_REDUCE, '函数的参数类型范围缩小'],
563  [ApiDiffType.PROPERTY_READONLY_TO_UNREQUIRED, '只读属性由必选变为可选'],
564  [ApiDiffType.PROPERTY_READONLY_TO_REQUIRED, '只读属性由可选变为必选'],
565  [ApiDiffType.PROPERTY_WRITABLE_TO_UNREQUIRED, '可写属性由必选变为可选'],
566  [ApiDiffType.PROPERTY_WRITABLE_TO_REQUIRED, '可写属性由可选变为必选'],
567  [ApiDiffType.PROPERTY_TYPE_CHANGE, '属性类型发生改变'],
568  [ApiDiffType.PROPERTY_READONLY_ADD, '只读属性类型范围扩大'],
569  [ApiDiffType.PROPERTY_READONLY_REDUCE, '只读属性类型范围缩小'],
570  [ApiDiffType.PROPERTY_WRITABLE_ADD, '可写属性类型范围扩大'],
571  [ApiDiffType.PROPERTY_WRITABLE_REDUCE, '可写属性类型范围缩小'],
572  [ApiDiffType.CONSTANT_VALUE_CHANGE, '常量值发生改变'],
573  [ApiDiffType.TYPE_ALIAS_CHANGE, '自定义类型值直接改变'],
574  [ApiDiffType.TYPE_ALIAS_ADD, '自定义类型值范围扩大'],
575  [ApiDiffType.TYPE_ALIAS_REDUCE, '自定义类型值范围缩小'],
576  [ApiDiffType.ENUM_MEMBER_VALUE_CHANGE, '枚举赋值发生改变'],
577  [ApiDiffType.ADD, '新增API'],
578  [ApiDiffType.REDUCE, '删除API'],
579  [ApiDiffType.DELETE_DECORATOR, '删除装饰器'],
580  [ApiDiffType.NEW_DECORATOR, '新增装饰器'],
581  [ApiDiffType.SINCE_VERSION_A_TO_B, '起始版本号变更'],
582  [ApiDiffType.SINCE_VERSION_HAVE_TO_NA, '起始版本号删除'],
583  [ApiDiffType.SINCE_VERSION_NA_TO_HAVE, '起始版本号新增'],
584  [ApiDiffType.HISTORICAL_JSDOC_CHANGE, '历史版本jsdoc变更'],
585  [ApiDiffType.HISTORICAL_API_CHANGE, '历史版本API变更'],
586]);
587
588export const incompatibleApiDiffTypes: Set<ApiDiffType> = new Set([
589  ApiDiffType.PUBLIC_TO_SYSTEM,
590  ApiDiffType.NA_TO_STAGE,
591  ApiDiffType.NA_TO_FA,
592  ApiDiffType.FA_TO_STAGE,
593  ApiDiffType.STAGE_TO_FA,
594  ApiDiffType.CARD_TO_NA,
595  ApiDiffType.CROSS_PLATFORM_TO_NA,
596  ApiDiffType.ERROR_CODE_NA_TO_HAVE,
597  ApiDiffType.ERROR_CODE_CHANGE,
598  ApiDiffType.PERMISSION_NA_TO_HAVE,
599  ApiDiffType.PERMISSION_RANGE_SMALLER,
600  ApiDiffType.PERMISSION_RANGE_CHANGE,
601  ApiDiffType.API_NAME_CHANGE,
602  ApiDiffType.FUNCTION_RETURN_TYPE_ADD,
603  ApiDiffType.FUNCTION_RETURN_TYPE_CHANGE,
604  ApiDiffType.FUNCTION_PARAM_POS_CHANGE,
605  ApiDiffType.FUNCTION_PARAM_REQUIRED_ADD,
606  ApiDiffType.FUNCTION_PARAM_REDUCE,
607  ApiDiffType.FUNCTION_PARAM_TO_REQUIRED,
608  ApiDiffType.FUNCTION_PARAM_TYPE_CHANGE,
609  ApiDiffType.FUNCTION_PARAM_TYPE_REDUCE,
610  ApiDiffType.PROPERTY_READONLY_TO_REQUIRED,
611  ApiDiffType.PROPERTY_WRITABLE_TO_UNREQUIRED,
612  ApiDiffType.PROPERTY_WRITABLE_TO_REQUIRED,
613  ApiDiffType.PROPERTY_TYPE_CHANGE,
614  ApiDiffType.PROPERTY_READONLY_ADD,
615  ApiDiffType.PROPERTY_WRITABLE_ADD,
616  ApiDiffType.PROPERTY_WRITABLE_REDUCE,
617  ApiDiffType.CONSTANT_VALUE_CHANGE,
618  ApiDiffType.TYPE_ALIAS_CHANGE,
619  ApiDiffType.TYPE_ALIAS_ADD,
620  ApiDiffType.TYPE_ALIAS_REDUCE,
621  ApiDiffType.ENUM_MEMBER_VALUE_CHANGE,
622  ApiDiffType.REDUCE,
623  ApiDiffType.HISTORICAL_JSDOC_CHANGE,
624  ApiDiffType.HISTORICAL_API_CHANGE,
625]);
626