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