@qwe8652591/abap-recursive-query 1.1.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.
- package/LICENSE +21 -0
- package/README.md +223 -0
- package/dist/cli/consumer-cli.d.ts +8 -0
- package/dist/cli/consumer-cli.d.ts.map +1 -0
- package/dist/cli/consumer-cli.js +180 -0
- package/dist/cli/producer-cli.d.ts +8 -0
- package/dist/cli/producer-cli.d.ts.map +1 -0
- package/dist/cli/producer-cli.js +249 -0
- package/dist/cli/query-object.d.ts +3 -0
- package/dist/cli/query-object.d.ts.map +1 -0
- package/dist/cli/query-object.js +486 -0
- package/dist/common/FilterCache.d.ts +62 -0
- package/dist/common/FilterCache.d.ts.map +1 -0
- package/dist/common/FilterCache.js +119 -0
- package/dist/common/RedisQueueManager.d.ts +170 -0
- package/dist/common/RedisQueueManager.d.ts.map +1 -0
- package/dist/common/RedisQueueManager.js +663 -0
- package/dist/common/abapStructures.d.ts +391 -0
- package/dist/common/abapStructures.d.ts.map +1 -0
- package/dist/common/abapStructures.js +2 -0
- package/dist/common/config.d.ts +66 -0
- package/dist/common/config.d.ts.map +1 -0
- package/dist/common/config.js +56 -0
- package/dist/common/index.d.ts +13 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +38 -0
- package/dist/common/recursiveQueryConfig.d.ts +77 -0
- package/dist/common/recursiveQueryConfig.d.ts.map +1 -0
- package/dist/common/recursiveQueryConfig.js +129 -0
- package/dist/common/tableStructures.d.ts +176 -0
- package/dist/common/tableStructures.d.ts.map +1 -0
- package/dist/common/tableStructures.js +10 -0
- package/dist/common/types.d.ts +104 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +31 -0
- package/dist/common/utils.d.ts +57 -0
- package/dist/common/utils.d.ts.map +1 -0
- package/dist/common/utils.js +300 -0
- package/dist/consumer/FileDownloadConsumer.d.ts +127 -0
- package/dist/consumer/FileDownloadConsumer.d.ts.map +1 -0
- package/dist/consumer/FileDownloadConsumer.js +1003 -0
- package/dist/consumer/generators/baseGenerator.d.ts +38 -0
- package/dist/consumer/generators/baseGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/baseGenerator.js +103 -0
- package/dist/consumer/generators/domainGenerator.d.ts +78 -0
- package/dist/consumer/generators/domainGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/domainGenerator.js +241 -0
- package/dist/consumer/generators/guiStatusGenerator.d.ts +16 -0
- package/dist/consumer/generators/guiStatusGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/guiStatusGenerator.js +48 -0
- package/dist/consumer/generators/guiTitleGenerator.d.ts +16 -0
- package/dist/consumer/generators/guiTitleGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/guiTitleGenerator.js +48 -0
- package/dist/consumer/generators/index.d.ts +14 -0
- package/dist/consumer/generators/index.d.ts.map +1 -0
- package/dist/consumer/generators/index.js +38 -0
- package/dist/consumer/generators/messageGenerator.d.ts +16 -0
- package/dist/consumer/generators/messageGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/messageGenerator.js +73 -0
- package/dist/consumer/generators/metadataGenerator.d.ts +29 -0
- package/dist/consumer/generators/metadataGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/metadataGenerator.js +135 -0
- package/dist/consumer/generators/screenGenerator.d.ts +173 -0
- package/dist/consumer/generators/screenGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/screenGenerator.js +859 -0
- package/dist/consumer/generators/structureGenerator.d.ts +36 -0
- package/dist/consumer/generators/structureGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/structureGenerator.js +131 -0
- package/dist/consumer/generators/textElementGenerator.d.ts +16 -0
- package/dist/consumer/generators/textElementGenerator.d.ts.map +1 -0
- package/dist/consumer/generators/textElementGenerator.js +70 -0
- package/dist/consumer/handlers/handleGetClass.d.ts +8 -0
- package/dist/consumer/handlers/handleGetClass.d.ts.map +1 -0
- package/dist/consumer/handlers/handleGetClass.js +18 -0
- package/dist/consumer/handlers/handleGetFunction.d.ts +8 -0
- package/dist/consumer/handlers/handleGetFunction.d.ts.map +1 -0
- package/dist/consumer/handlers/handleGetFunction.js +19 -0
- package/dist/consumer/handlers/handleGetFunctionGroup.d.ts +8 -0
- package/dist/consumer/handlers/handleGetFunctionGroup.d.ts.map +1 -0
- package/dist/consumer/handlers/handleGetFunctionGroup.js +19 -0
- package/dist/consumer/handlers/handleGetInclude.d.ts +8 -0
- package/dist/consumer/handlers/handleGetInclude.d.ts.map +1 -0
- package/dist/consumer/handlers/handleGetInclude.js +18 -0
- package/dist/consumer/handlers/handleGetProgram.d.ts +8 -0
- package/dist/consumer/handlers/handleGetProgram.d.ts.map +1 -0
- package/dist/consumer/handlers/handleGetProgram.js +27 -0
- package/dist/consumer/handlers/handleZTableQuery.d.ts +8 -0
- package/dist/consumer/handlers/handleZTableQuery.d.ts.map +1 -0
- package/dist/consumer/handlers/handleZTableQuery.js +20 -0
- package/dist/consumer/handlers/index.d.ts +10 -0
- package/dist/consumer/handlers/index.d.ts.map +1 -0
- package/dist/consumer/handlers/index.js +27 -0
- package/dist/consumer/index.d.ts +9 -0
- package/dist/consumer/index.d.ts.map +1 -0
- package/dist/consumer/index.js +24 -0
- package/dist/consumer/utils/download.d.ts +13 -0
- package/dist/consumer/utils/download.d.ts.map +1 -0
- package/dist/consumer/utils/download.js +38 -0
- package/dist/consumer/utils/index.d.ts +5 -0
- package/dist/consumer/utils/index.d.ts.map +1 -0
- package/dist/consumer/utils/index.js +20 -0
- package/dist/handlers/handleGetClass.d.ts +8 -0
- package/dist/handlers/handleGetClass.d.ts.map +1 -0
- package/dist/handlers/handleGetClass.js +19 -0
- package/dist/handlers/handleGetFunction.d.ts +8 -0
- package/dist/handlers/handleGetFunction.d.ts.map +1 -0
- package/dist/handlers/handleGetFunction.js +20 -0
- package/dist/handlers/handleGetFunctionGroup.d.ts +8 -0
- package/dist/handlers/handleGetFunctionGroup.d.ts.map +1 -0
- package/dist/handlers/handleGetFunctionGroup.js +19 -0
- package/dist/handlers/handleGetInclude.d.ts +8 -0
- package/dist/handlers/handleGetInclude.d.ts.map +1 -0
- package/dist/handlers/handleGetInclude.js +19 -0
- package/dist/handlers/handleGetInterface.d.ts +8 -0
- package/dist/handlers/handleGetInterface.d.ts.map +1 -0
- package/dist/handlers/handleGetInterface.js +19 -0
- package/dist/handlers/handleGetPackage.d.ts +8 -0
- package/dist/handlers/handleGetPackage.d.ts.map +1 -0
- package/dist/handlers/handleGetPackage.js +42 -0
- package/dist/handlers/handleGetProgram.d.ts +8 -0
- package/dist/handlers/handleGetProgram.d.ts.map +1 -0
- package/dist/handlers/handleGetProgram.js +19 -0
- package/dist/handlers/handleGetStructure.d.ts +8 -0
- package/dist/handlers/handleGetStructure.d.ts.map +1 -0
- package/dist/handlers/handleGetStructure.js +19 -0
- package/dist/handlers/handleGetTable.d.ts +8 -0
- package/dist/handlers/handleGetTable.d.ts.map +1 -0
- package/dist/handlers/handleGetTable.js +19 -0
- package/dist/handlers/handleGetTableContents.d.ts +8 -0
- package/dist/handlers/handleGetTableContents.d.ts.map +1 -0
- package/dist/handlers/handleGetTableContents.js +22 -0
- package/dist/handlers/handleGetTransaction.d.ts +8 -0
- package/dist/handlers/handleGetTransaction.d.ts.map +1 -0
- package/dist/handlers/handleGetTransaction.js +19 -0
- package/dist/handlers/handleGetTypeInfo.d.ts +8 -0
- package/dist/handlers/handleGetTypeInfo.d.ts.map +1 -0
- package/dist/handlers/handleGetTypeInfo.js +32 -0
- package/dist/handlers/handleSearchObject.d.ts +8 -0
- package/dist/handlers/handleSearchObject.d.ts.map +1 -0
- package/dist/handlers/handleSearchObject.js +20 -0
- package/dist/handlers/handleZObjectQuery.d.ts +8 -0
- package/dist/handlers/handleZObjectQuery.d.ts.map +1 -0
- package/dist/handlers/handleZObjectQuery.js +25 -0
- package/dist/handlers/handleZTableQuery.d.ts +8 -0
- package/dist/handlers/handleZTableQuery.d.ts.map +1 -0
- package/dist/handlers/handleZTableQuery.js +20 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/lib/download.d.ts +49 -0
- package/dist/lib/download.d.ts.map +1 -0
- package/dist/lib/download.js +78 -0
- package/dist/lib/index.d.ts +9 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +23 -0
- package/dist/lib/utils.d.ts +31 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +272 -0
- package/dist/producer/RecursiveQueryProducer.d.ts +92 -0
- package/dist/producer/RecursiveQueryProducer.d.ts.map +1 -0
- package/dist/producer/RecursiveQueryProducer.js +496 -0
- package/dist/producer/handlers/handleZObjectQuery.d.ts +8 -0
- package/dist/producer/handlers/handleZObjectQuery.d.ts.map +1 -0
- package/dist/producer/handlers/handleZObjectQuery.js +24 -0
- package/dist/producer/handlers/index.d.ts +6 -0
- package/dist/producer/handlers/index.d.ts.map +1 -0
- package/dist/producer/handlers/index.js +21 -0
- package/dist/producer/index.d.ts +7 -0
- package/dist/producer/index.d.ts.map +1 -0
- package/dist/producer/index.js +22 -0
- package/dist/recursive/abapStructures.d.ts +377 -0
- package/dist/recursive/abapStructures.d.ts.map +1 -0
- package/dist/recursive/abapStructures.js +2 -0
- package/dist/recursive/generate/baseGenerator.d.ts +34 -0
- package/dist/recursive/generate/baseGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/baseGenerator.js +112 -0
- package/dist/recursive/generate/domainGenerator.d.ts +26 -0
- package/dist/recursive/generate/domainGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/domainGenerator.js +128 -0
- package/dist/recursive/generate/functionGroupGenerator.d.ts +30 -0
- package/dist/recursive/generate/functionGroupGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/functionGroupGenerator.js +90 -0
- package/dist/recursive/generate/index.d.ts +12 -0
- package/dist/recursive/generate/index.d.ts.map +1 -0
- package/dist/recursive/generate/index.js +34 -0
- package/dist/recursive/generate/messageGenerator.d.ts +16 -0
- package/dist/recursive/generate/messageGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/messageGenerator.js +73 -0
- package/dist/recursive/generate/screenGenerator.d.ts +173 -0
- package/dist/recursive/generate/screenGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/screenGenerator.js +858 -0
- package/dist/recursive/generate/structureGenerator.d.ts +22 -0
- package/dist/recursive/generate/structureGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/structureGenerator.js +88 -0
- package/dist/recursive/generate/textElementGenerator.d.ts +16 -0
- package/dist/recursive/generate/textElementGenerator.d.ts.map +1 -0
- package/dist/recursive/generate/textElementGenerator.js +68 -0
- package/dist/recursive/handleRecursiveObjectQuery.d.ts +94 -0
- package/dist/recursive/handleRecursiveObjectQuery.d.ts.map +1 -0
- package/dist/recursive/handleRecursiveObjectQuery.js +219 -0
- package/dist/recursive/recursiveObjectQuery.d.ts +159 -0
- package/dist/recursive/recursiveObjectQuery.d.ts.map +1 -0
- package/dist/recursive/recursiveObjectQuery.js +1358 -0
- package/dist/recursive/recursiveQueryConfig.d.ts +129 -0
- package/dist/recursive/recursiveQueryConfig.d.ts.map +1 -0
- package/dist/recursive/recursiveQueryConfig.js +133 -0
- package/dist/recursive/tableStructures.d.ts +196 -0
- package/dist/recursive/tableStructures.d.ts.map +1 -0
- package/dist/recursive/tableStructures.js +10 -0
- package/package.json +47 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultConfig = exports.defaultFilters = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 默认过滤规则
|
|
6
|
+
* 这些是推荐的通用过滤规则,可以避免递归查询大量标准 SAP 对象
|
|
7
|
+
* 主要过滤与业务逻辑无关的 SAP 框架、系统工具和技术组件
|
|
8
|
+
*/
|
|
9
|
+
exports.defaultFilters = {
|
|
10
|
+
excludeNames: [
|
|
11
|
+
// 常见的系统程序
|
|
12
|
+
'SAPLSMTR',
|
|
13
|
+
'SAPLSMTR_NAVIGATION',
|
|
14
|
+
'SAPLSTRD',
|
|
15
|
+
'SAPLSLVC',
|
|
16
|
+
'SAPLSLVC_FULLSCREEN',
|
|
17
|
+
'SAPLSBAL',
|
|
18
|
+
'SAPLSPOL',
|
|
19
|
+
'SAPLSTXB',
|
|
20
|
+
'SAPMSSY0',
|
|
21
|
+
'SAPMSSY1',
|
|
22
|
+
'SAPMSSY3',
|
|
23
|
+
'SAPMSSYD'
|
|
24
|
+
],
|
|
25
|
+
excludeNamePatterns: [
|
|
26
|
+
// ============ SAP 标准对象和命名空间 ============
|
|
27
|
+
// 'SAP*', // SAP 标准程序和对象
|
|
28
|
+
// '/SAP/*', // SAP 命名空间
|
|
29
|
+
'/1*', // SAP 内部命名空间
|
|
30
|
+
// ============ Repository 和系统工具 ============
|
|
31
|
+
'RS*', // Repository 工具 (SE80, SE11等)
|
|
32
|
+
// 'RM*', // 报表管理器
|
|
33
|
+
'SE*', // 系统编辑器相关
|
|
34
|
+
'SY*', // 系统相关
|
|
35
|
+
'RSSCD*', // 变更文档
|
|
36
|
+
'RSTS*', // 测试工具
|
|
37
|
+
// ============ GUI 和 ALV 框架 ============
|
|
38
|
+
'CL_GUI_*', // GUI 控制类
|
|
39
|
+
'CL_ALV_*', // ALV 表格类
|
|
40
|
+
'CL_SALV_*', // 新版 ALV 类
|
|
41
|
+
'SAPLSALV*', // ALV 函数组
|
|
42
|
+
// ============ ABAP 基础框架类 ============
|
|
43
|
+
'CL_ABAP_*', // ABAP 基础类(类型描述、反射等)
|
|
44
|
+
'CL_SYSTEM_*', // 系统类
|
|
45
|
+
'CL_OS_*', // 操作系统相关类
|
|
46
|
+
// ============ Web Dynpro 框架 ============
|
|
47
|
+
'CL_WD_*', // Web Dynpro 类
|
|
48
|
+
'CL_WDR_*', // Web Dynpro Runtime
|
|
49
|
+
'/IWBEP/*', // Gateway Business Enablement
|
|
50
|
+
'/IWFND/*', // Gateway Foundation
|
|
51
|
+
'/IWCOR/*', // Gateway Core
|
|
52
|
+
// ============ OData 和 REST 框架 ============
|
|
53
|
+
'CL_REST_*', // REST 框架
|
|
54
|
+
'/IWMB/*', // Model Builder
|
|
55
|
+
'/IWSRV/*', // Service 相关
|
|
56
|
+
// ============ UI5 和 Fiori 框架 ============
|
|
57
|
+
'/UI2/*', // UI2 框架
|
|
58
|
+
'/UI5/*', // UI5 框架
|
|
59
|
+
'/NEPTUNE/*', // Neptune (低代码平台)
|
|
60
|
+
// ============ HTTP、网络和通信框架 ============
|
|
61
|
+
'CL_HTTP_*', // HTTP 客户端/服务器
|
|
62
|
+
'CL_PROXY_*', // 代理类
|
|
63
|
+
'CL_SOAP_*', // SOAP 框架
|
|
64
|
+
'CL_REST_*', // REST 框架
|
|
65
|
+
// ============ XML、JSON 数据处理框架 ============
|
|
66
|
+
'CL_XML_*', // XML 处理
|
|
67
|
+
'CL_JSON_*', // JSON 处理
|
|
68
|
+
'CL_IXML_*', // iXML 处理
|
|
69
|
+
'CL_SXML_*', // Simple XML
|
|
70
|
+
'CL_XSLT_*', // XSLT 处理
|
|
71
|
+
// ============ BCS 邮件和消息框架 ============
|
|
72
|
+
'CL_BCS*', // Business Communication Services (邮件)
|
|
73
|
+
'CL_CAM_*', // Communication Application
|
|
74
|
+
'CL_SWF_*', // 工作流
|
|
75
|
+
// ============ 数据库和持久化框架 ============
|
|
76
|
+
'CL_SQL_*', // SQL 相关
|
|
77
|
+
'CL_OSQL_*', // Open SQL
|
|
78
|
+
// ============ Dynpro (经典屏幕) 框架 ============
|
|
79
|
+
'CL_DYNP_*', // Dynpro 相关
|
|
80
|
+
// ============ BAPI 和标准接口框架 ============
|
|
81
|
+
'BAPI_*', // 标准 BAPI (如果只关注自定义业务)
|
|
82
|
+
// ============ 日志和监控框架 ============
|
|
83
|
+
'CL_LOGGER*', // 日志框架
|
|
84
|
+
'CL_SLG*', // Application Log
|
|
85
|
+
'CL_ATRA*', // Application Trace
|
|
86
|
+
// ============ 安全和授权框架 ============
|
|
87
|
+
'CL_AUTH*', // 权限检查
|
|
88
|
+
'CL_SEC*', // 安全相关
|
|
89
|
+
// ============ 打印和输出框架 ============
|
|
90
|
+
'CL_SMARTFORM*', // Smartforms
|
|
91
|
+
'CL_SSF_*', // SSF (Smart Style)
|
|
92
|
+
'CL_FP_*', // Forms (Adobe Forms等)
|
|
93
|
+
// ============ 工具和实用类 ============
|
|
94
|
+
'CL_DEMO_*', // 演示类
|
|
95
|
+
'CL_PROGRESS_*', // 进度指示器
|
|
96
|
+
'CL_DD_*', // Data Dictionary
|
|
97
|
+
// ============ 批处理和后台处理 ============
|
|
98
|
+
'CL_BP_*', // 批处理相关
|
|
99
|
+
'CL_BATCH*', // 批处理
|
|
100
|
+
// ============ BASIS 技术组件 ============
|
|
101
|
+
'CL_SPOOL*', // Spool 系统
|
|
102
|
+
'CL_BATCH*', // 批处理输入
|
|
103
|
+
// ============ 标准函数组 (SAP 系统层面) ============
|
|
104
|
+
// 'SAPL*', // 大多数 SAP 标准函数组以 SAPL 开头
|
|
105
|
+
// ============ 标准表和结构 (系统级别) ============
|
|
106
|
+
'STANDARD', // 标准表类型
|
|
107
|
+
'SYSUUID*', // 系统 UUID
|
|
108
|
+
'DD*', // Data Dictionary 对象
|
|
109
|
+
// ============ 旧版本兼容性对象 ============
|
|
110
|
+
'*_LEGACY',
|
|
111
|
+
'*_COMPAT',
|
|
112
|
+
'*_DEPRECATED'
|
|
113
|
+
]
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* 默认配置
|
|
117
|
+
*/
|
|
118
|
+
exports.defaultConfig = {
|
|
119
|
+
maxRecursionDepth: 1,
|
|
120
|
+
downloadRootPath: './downloads',
|
|
121
|
+
downloadIncludes: true,
|
|
122
|
+
enableCircularReferenceCheck: true,
|
|
123
|
+
concurrentRequestLimit: 10,
|
|
124
|
+
requestInterval: 100,
|
|
125
|
+
recursionFilters: {
|
|
126
|
+
excludeNames: [],
|
|
127
|
+
excludeNamePatterns: []
|
|
128
|
+
}
|
|
129
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据库表结构定义
|
|
3
|
+
* 对应 table.json 文件的结构定义
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* 此文件包含了 SAP 数据库表、字段、索引的完整结构定义
|
|
7
|
+
* 用于解析和处理从 SAP 系统导出的表结构信息
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 数据库表信息结构
|
|
11
|
+
* 对应 table.json 中的 GT_TABLES 节点
|
|
12
|
+
*/
|
|
13
|
+
export interface TableInfo {
|
|
14
|
+
/** 索引序号 */
|
|
15
|
+
IDX?: number;
|
|
16
|
+
/** 表名 */
|
|
17
|
+
TABNAME: string;
|
|
18
|
+
/** 表类别 (如 TRANSP: 透明表, POOL: 池表, CLUSTER: 簇表) */
|
|
19
|
+
TABCLASS?: string;
|
|
20
|
+
/** 中文描述 */
|
|
21
|
+
DDTEXT_ZH?: string;
|
|
22
|
+
/** 英文描述 */
|
|
23
|
+
DDTEXT_EN?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 域固定值结构
|
|
27
|
+
* 对应 table.json 中的 GT_FIELDS.IDOMAINS 节点
|
|
28
|
+
*/
|
|
29
|
+
export interface DomainValue {
|
|
30
|
+
/** 域名 */
|
|
31
|
+
DOMNAME: string;
|
|
32
|
+
/** 域值下限 (低值) */
|
|
33
|
+
DOMVALUE_L: string;
|
|
34
|
+
/** 域值上限 (高值,用于区间) */
|
|
35
|
+
DOMVALUE_H: string;
|
|
36
|
+
/** 中文描述 */
|
|
37
|
+
DDTEXT_ZH?: string;
|
|
38
|
+
/** 英文描述 */
|
|
39
|
+
DDTEXT_EN?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 数据库表字段信息结构
|
|
43
|
+
* 对应 table.json 中的 GT_FIELDS 节点
|
|
44
|
+
*/
|
|
45
|
+
export interface TableField {
|
|
46
|
+
/** 索引序号 */
|
|
47
|
+
IDX?: number;
|
|
48
|
+
/** 表名 */
|
|
49
|
+
TABNAME: string;
|
|
50
|
+
/** 字段名 */
|
|
51
|
+
FIELDNAME: string;
|
|
52
|
+
/** 中文描述 */
|
|
53
|
+
DDTEXT_ZH?: string;
|
|
54
|
+
/** 英文描述 */
|
|
55
|
+
DDTEXT_EN?: string;
|
|
56
|
+
/** 字段在表中的位置 */
|
|
57
|
+
POSITION?: number;
|
|
58
|
+
/** 数据类型 (如 CHAR, NUMC, DATS, CUKY, QUAN等) */
|
|
59
|
+
DATATYPE?: string;
|
|
60
|
+
/** 字段长度 */
|
|
61
|
+
LENG?: number;
|
|
62
|
+
/** 小数位数 (用于数值类型字段) */
|
|
63
|
+
DECIMALS?: number;
|
|
64
|
+
/** 主键标志 (X表示是主键) */
|
|
65
|
+
KEYFLAG?: string;
|
|
66
|
+
/** 辅助键标志 */
|
|
67
|
+
KEYFLAG2?: string;
|
|
68
|
+
/** 必填标志 (X表示必填) */
|
|
69
|
+
MANDATORY?: string;
|
|
70
|
+
/** 备用中文描述 */
|
|
71
|
+
DDTEXT_ZH2?: string;
|
|
72
|
+
/** 检查表 (外键引用的表) */
|
|
73
|
+
CHECKTABLE?: string;
|
|
74
|
+
/** 域名 (Domain) */
|
|
75
|
+
DOMNAME?: string;
|
|
76
|
+
/** 数据元素 (Data Element/Roll Name) */
|
|
77
|
+
ROLLNAME?: string;
|
|
78
|
+
/** 带符号标志 (X表示可以带正负号) */
|
|
79
|
+
SIGNFLAG?: string;
|
|
80
|
+
/** 搜索帮助来源 (Search Help Origin) */
|
|
81
|
+
SHLPORIGIN?: string;
|
|
82
|
+
/** 小写标志 (X表示允许小写) */
|
|
83
|
+
LOWERCASE?: string;
|
|
84
|
+
/** 8位长度的检查表名 */
|
|
85
|
+
CHECKTABLE_8L?: string;
|
|
86
|
+
/** 左侧基数 (外键关系的左侧基数,如 "1" 表示一对一或多对一) */
|
|
87
|
+
CARDLEFT?: string;
|
|
88
|
+
/** 基数 (外键关系的基数标识,如 "N" 表示多, "CN" 表示一或多) */
|
|
89
|
+
CARD?: string;
|
|
90
|
+
/** 域固定值列表 (如枚举值、固定值域) */
|
|
91
|
+
IDOMAINS?: DomainValue[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 数据库表索引字段结构
|
|
95
|
+
* 对应 table.json 中的 GT_INDEXS.FIELDNAME 节点
|
|
96
|
+
*/
|
|
97
|
+
export interface IndexField {
|
|
98
|
+
/** 索引字段名 */
|
|
99
|
+
FIELDNAME: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 数据库表索引信息结构
|
|
103
|
+
* 对应 table.json 中的 GT_INDEXS 节点
|
|
104
|
+
*/
|
|
105
|
+
export interface TableIndex {
|
|
106
|
+
/** 数据库表名 */
|
|
107
|
+
SQLTAB: string;
|
|
108
|
+
/** 索引名称 */
|
|
109
|
+
INDEXNAME: string;
|
|
110
|
+
/** 索引描述 */
|
|
111
|
+
DDTEXT?: string;
|
|
112
|
+
/** 唯一索引标志 (X表示唯一索引) */
|
|
113
|
+
UNIQUEFLAG?: string;
|
|
114
|
+
/** 索引字段列表 */
|
|
115
|
+
FIELDNAME?: IndexField[];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 数据库表外键信息结构
|
|
119
|
+
* 对应 table.json 中的 GT_FOREIGNKEY 节点
|
|
120
|
+
*/
|
|
121
|
+
export interface TableForeignKey {
|
|
122
|
+
/** 表名 (包含外键的表) */
|
|
123
|
+
TABNAME: string;
|
|
124
|
+
/** 字段名 (外键字段) */
|
|
125
|
+
FIELDNAME: string;
|
|
126
|
+
/** 主键位置 */
|
|
127
|
+
PRIMPOS?: number;
|
|
128
|
+
/** 外表名 (Foreign Table,引用的表) */
|
|
129
|
+
FORTABLE?: string;
|
|
130
|
+
/** 外键字段名 (Foreign Key) */
|
|
131
|
+
FORKEY?: string;
|
|
132
|
+
/** 检查表 (Check Table,被引用的主表) */
|
|
133
|
+
CHECKTABLE?: string;
|
|
134
|
+
/** 检查字段 (Check Field,被引用表的字段) */
|
|
135
|
+
CHECKFIELD?: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 完整的表结构数据
|
|
139
|
+
* 对应整个 table.json 的顶层结构
|
|
140
|
+
*
|
|
141
|
+
* @description
|
|
142
|
+
* 这是从 SAP 系统导出的完整表结构信息,包含:
|
|
143
|
+
* - GT_TABLES: 表的基本信息
|
|
144
|
+
* - GT_FIELDS: 表的所有字段定义
|
|
145
|
+
* - GT_INDEXS: 表的所有索引定义
|
|
146
|
+
* - GT_FOREIGNKEY: 表的外键关系定义
|
|
147
|
+
*/
|
|
148
|
+
export interface TableStructureData {
|
|
149
|
+
/** 表信息列表 */
|
|
150
|
+
GT_TABLES?: TableInfo[];
|
|
151
|
+
/** 字段信息列表 */
|
|
152
|
+
GT_FIELDS?: TableField[];
|
|
153
|
+
/** 索引信息列表 */
|
|
154
|
+
GT_INDEXS?: TableIndex[];
|
|
155
|
+
/** 外键信息列表 */
|
|
156
|
+
GT_FOREIGNKEY?: TableForeignKey[];
|
|
157
|
+
}
|
|
158
|
+
export interface TableData {
|
|
159
|
+
/** 索引序号 */
|
|
160
|
+
IDX?: number;
|
|
161
|
+
/** 表名 */
|
|
162
|
+
TABNAME: string;
|
|
163
|
+
/** 表类别 (如 TRANSP: 透明表, POOL: 池表, CLUSTER: 簇表) */
|
|
164
|
+
TABCLASS?: string;
|
|
165
|
+
/** 中文描述 */
|
|
166
|
+
DDTEXT_ZH?: string;
|
|
167
|
+
/** 英文描述 */
|
|
168
|
+
DDTEXT_EN?: string;
|
|
169
|
+
/** 字段信息列表 */
|
|
170
|
+
GT_FIELDS?: TableField[];
|
|
171
|
+
/** 索引信息列表 */
|
|
172
|
+
GT_INDEXS?: TableIndex[];
|
|
173
|
+
/** 外键信息列表 */
|
|
174
|
+
GT_FOREIGNKEY?: TableForeignKey[];
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=tableStructures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableStructures.d.ts","sourceRoot":"","sources":["../../src/common/tableStructures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 队列系统的类型定义
|
|
3
|
+
* 用于 Redis 队列的生产者-消费者模式
|
|
4
|
+
*/
|
|
5
|
+
import { AbapObjectData } from './abapStructures';
|
|
6
|
+
/**
|
|
7
|
+
* 任务状态
|
|
8
|
+
*/
|
|
9
|
+
export type TaskStatus = 'PENDING' | 'RUNNING' | 'COMPLETED' | 'FAILED' | 'SKIPPED';
|
|
10
|
+
/**
|
|
11
|
+
* Job 状态
|
|
12
|
+
*/
|
|
13
|
+
export type JobStatus = 'PENDING' | 'RUNNING' | 'COMPLETED' | 'FAILED' | 'CANCELLED';
|
|
14
|
+
/**
|
|
15
|
+
* 任务类型
|
|
16
|
+
*/
|
|
17
|
+
export type TaskType = 'DOWNLOAD';
|
|
18
|
+
/**
|
|
19
|
+
* Task(任务)结构
|
|
20
|
+
*/
|
|
21
|
+
export interface Task {
|
|
22
|
+
taskId: string;
|
|
23
|
+
jobId: string;
|
|
24
|
+
objectKey: string;
|
|
25
|
+
taskType: TaskType;
|
|
26
|
+
objectType: string;
|
|
27
|
+
objectName: string;
|
|
28
|
+
depth: number;
|
|
29
|
+
priority: number;
|
|
30
|
+
status: TaskStatus;
|
|
31
|
+
retryCount: number;
|
|
32
|
+
maxRetries: number;
|
|
33
|
+
createdAt: Date;
|
|
34
|
+
startedAt?: Date;
|
|
35
|
+
completedAt?: Date;
|
|
36
|
+
metadata: {
|
|
37
|
+
cacheKey: string;
|
|
38
|
+
dependencyCount: number;
|
|
39
|
+
downloadPath?: string;
|
|
40
|
+
};
|
|
41
|
+
error?: string;
|
|
42
|
+
workerId?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Job(查询任务)结构
|
|
46
|
+
*/
|
|
47
|
+
export interface Job {
|
|
48
|
+
jobId: string;
|
|
49
|
+
rootObjectType: string;
|
|
50
|
+
rootObjectName: string;
|
|
51
|
+
config: any;
|
|
52
|
+
status: JobStatus;
|
|
53
|
+
totalTasks: number;
|
|
54
|
+
completedTasks: number;
|
|
55
|
+
failedTasks: number;
|
|
56
|
+
skippedTasks: number;
|
|
57
|
+
createdAt: Date;
|
|
58
|
+
startedAt?: Date;
|
|
59
|
+
completedAt?: Date;
|
|
60
|
+
result?: any;
|
|
61
|
+
errors: string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 缓存的对象数据
|
|
65
|
+
* 现在与 AbapObjectData 完全一致,使用类型别名保持语义清晰
|
|
66
|
+
*/
|
|
67
|
+
export type CachedObjectData = AbapObjectData;
|
|
68
|
+
/**
|
|
69
|
+
* Redis Key 命名规范
|
|
70
|
+
*/
|
|
71
|
+
export declare const RedisKeys: {
|
|
72
|
+
TASK_QUEUE: (jobId: string) => string;
|
|
73
|
+
TASK: (taskId: string) => string;
|
|
74
|
+
JOB: (jobId: string) => string;
|
|
75
|
+
JOB_TASKS: (jobId: string) => string;
|
|
76
|
+
JOB_INDEX: string;
|
|
77
|
+
CACHE: (jobId: string, objectKey: string) => string;
|
|
78
|
+
VISITED: (jobId: string) => string;
|
|
79
|
+
PROGRESS: (jobId: string) => string;
|
|
80
|
+
QUEUE_SIZE: (jobId: string) => string;
|
|
81
|
+
WORKERS: string;
|
|
82
|
+
WORKER_HEARTBEAT: (workerId: string) => string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Job 进度信息
|
|
86
|
+
*/
|
|
87
|
+
export interface JobProgress {
|
|
88
|
+
totalTasks: number;
|
|
89
|
+
completedTasks: number;
|
|
90
|
+
failedTasks: number;
|
|
91
|
+
skippedTasks: number;
|
|
92
|
+
percentage: number;
|
|
93
|
+
estimatedTimeRemaining?: number;
|
|
94
|
+
averageTaskDuration?: number;
|
|
95
|
+
lastUpdateTime: Date;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 依赖关系
|
|
99
|
+
*/
|
|
100
|
+
export interface Dependency {
|
|
101
|
+
objectType: string;
|
|
102
|
+
objectName: string;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,IAAI;IAEjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IAGnB,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAGF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IAGd,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IAGZ,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IAGnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,SAAS;wBAEE,MAAM;mBAGX,MAAM;iBAGR,MAAM;uBACA,MAAM;;mBAIV,MAAM,aAAa,MAAM;qBAIvB,MAAM;sBAGL,MAAM;wBAGJ,MAAM;;iCAIG,MAAM;CAEtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 队列系统的类型定义
|
|
4
|
+
* 用于 Redis 队列的生产者-消费者模式
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.RedisKeys = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Redis Key 命名规范
|
|
10
|
+
*/
|
|
11
|
+
exports.RedisKeys = {
|
|
12
|
+
// === 任务队列(按Job隔离)===
|
|
13
|
+
TASK_QUEUE: (jobId) => `abap:queue:tasks:${jobId}`, // Sorted Set ⚠️ 按Job隔离
|
|
14
|
+
// === 单个任务详情 ===
|
|
15
|
+
TASK: (taskId) => `abap:task:${taskId}`, // Hash
|
|
16
|
+
// === Job 状态 ===
|
|
17
|
+
JOB: (jobId) => `abap:job:${jobId}`, // Hash
|
|
18
|
+
JOB_TASKS: (jobId) => `abap:job:${jobId}:tasks`, // Set
|
|
19
|
+
JOB_INDEX: 'abap:job:index', // ZSet
|
|
20
|
+
// === 对象缓存 ===
|
|
21
|
+
CACHE: (jobId, objectKey) => `abap:cache:${jobId}:${objectKey}`, // String (gzip)
|
|
22
|
+
// === 去重集合 ===
|
|
23
|
+
VISITED: (jobId) => `abap:job:${jobId}:visited`, // Set
|
|
24
|
+
// === 进度追踪 ===
|
|
25
|
+
PROGRESS: (jobId) => `abap:job:${jobId}:progress`, // Hash
|
|
26
|
+
// === 队列监控 ===
|
|
27
|
+
QUEUE_SIZE: (jobId) => `abap:queue:size:${jobId}`, // String (计数器)
|
|
28
|
+
// === Worker 管理 ===
|
|
29
|
+
WORKERS: 'abap:workers', // Hash
|
|
30
|
+
WORKER_HEARTBEAT: (workerId) => `abap:worker:${workerId}:heartbeat`, // String
|
|
31
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { AxiosResponse } from 'axios';
|
|
4
|
+
export interface SapConfig {
|
|
5
|
+
url: string;
|
|
6
|
+
username: string;
|
|
7
|
+
password: string;
|
|
8
|
+
client: string;
|
|
9
|
+
}
|
|
10
|
+
export { McpError, ErrorCode, AxiosResponse };
|
|
11
|
+
/**
|
|
12
|
+
* 从环境变量获取 SAP 配置
|
|
13
|
+
*/
|
|
14
|
+
export declare function getConfig(): SapConfig;
|
|
15
|
+
export declare function return_response(response: AxiosResponse): {
|
|
16
|
+
isError: boolean;
|
|
17
|
+
content: {
|
|
18
|
+
type: string;
|
|
19
|
+
text: any;
|
|
20
|
+
}[];
|
|
21
|
+
};
|
|
22
|
+
export declare function return_error(error: any): {
|
|
23
|
+
isError: boolean;
|
|
24
|
+
content: {
|
|
25
|
+
type: string;
|
|
26
|
+
text: string;
|
|
27
|
+
}[];
|
|
28
|
+
};
|
|
29
|
+
export declare function createAxiosInstance(): axios.AxiosInstance;
|
|
30
|
+
export declare function getBaseUrl(): Promise<Buffer<ArrayBuffer>>;
|
|
31
|
+
export declare function getAuthHeaders(): Promise<{
|
|
32
|
+
Authorization: string;
|
|
33
|
+
'SAP-Client': string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* XML转义函数 - 将特殊字符转换为XML实体
|
|
37
|
+
*/
|
|
38
|
+
export declare function escapeXml(text: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* 对象名称转义函数 - 将特殊字符转换为文件系统安全的字符
|
|
41
|
+
*
|
|
42
|
+
* 转义规则:
|
|
43
|
+
* - 斜杠 (/, \) -> 下划线 (_)
|
|
44
|
+
* - 尖括号 (<, >) -> 井号 (#)
|
|
45
|
+
* - 其他非字母数字字符 -> 下划线 (_)
|
|
46
|
+
*
|
|
47
|
+
* @param name - 原始对象名称
|
|
48
|
+
* @returns 转义后的安全名称
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* sanitizeObjectName('SAPLMEGUI') // 'SAPLMEGUI'
|
|
52
|
+
* sanitizeObjectName('OBJECT/NAME') // 'OBJECT_NAME'
|
|
53
|
+
* sanitizeObjectName('OBJECT<TYPE>') // 'OBJECT#TYPE#'
|
|
54
|
+
*/
|
|
55
|
+
export declare function sanitizeObjectName(name: string): string;
|
|
56
|
+
export declare function makeAdtRequest(url: string, method: string, timeout: number, data?: any, params?: any): Promise<any>;
|
|
57
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAE9C;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAerC;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa;;;;;;EAQtD;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG;;;;;;EAUtC;AAGD,wBAAgB,mBAAmB,wBASlC;AAOD,wBAAsB,UAAU,iCAa/B;AAED,wBAAsB,cAAc;;;GAUnC;AAyCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU9C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,gBAuG1G"}
|