@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.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +223 -0
  3. package/dist/cli/consumer-cli.d.ts +8 -0
  4. package/dist/cli/consumer-cli.d.ts.map +1 -0
  5. package/dist/cli/consumer-cli.js +180 -0
  6. package/dist/cli/producer-cli.d.ts +8 -0
  7. package/dist/cli/producer-cli.d.ts.map +1 -0
  8. package/dist/cli/producer-cli.js +249 -0
  9. package/dist/cli/query-object.d.ts +3 -0
  10. package/dist/cli/query-object.d.ts.map +1 -0
  11. package/dist/cli/query-object.js +486 -0
  12. package/dist/common/FilterCache.d.ts +62 -0
  13. package/dist/common/FilterCache.d.ts.map +1 -0
  14. package/dist/common/FilterCache.js +119 -0
  15. package/dist/common/RedisQueueManager.d.ts +170 -0
  16. package/dist/common/RedisQueueManager.d.ts.map +1 -0
  17. package/dist/common/RedisQueueManager.js +663 -0
  18. package/dist/common/abapStructures.d.ts +391 -0
  19. package/dist/common/abapStructures.d.ts.map +1 -0
  20. package/dist/common/abapStructures.js +2 -0
  21. package/dist/common/config.d.ts +66 -0
  22. package/dist/common/config.d.ts.map +1 -0
  23. package/dist/common/config.js +56 -0
  24. package/dist/common/index.d.ts +13 -0
  25. package/dist/common/index.d.ts.map +1 -0
  26. package/dist/common/index.js +38 -0
  27. package/dist/common/recursiveQueryConfig.d.ts +77 -0
  28. package/dist/common/recursiveQueryConfig.d.ts.map +1 -0
  29. package/dist/common/recursiveQueryConfig.js +129 -0
  30. package/dist/common/tableStructures.d.ts +176 -0
  31. package/dist/common/tableStructures.d.ts.map +1 -0
  32. package/dist/common/tableStructures.js +10 -0
  33. package/dist/common/types.d.ts +104 -0
  34. package/dist/common/types.d.ts.map +1 -0
  35. package/dist/common/types.js +31 -0
  36. package/dist/common/utils.d.ts +57 -0
  37. package/dist/common/utils.d.ts.map +1 -0
  38. package/dist/common/utils.js +300 -0
  39. package/dist/consumer/FileDownloadConsumer.d.ts +127 -0
  40. package/dist/consumer/FileDownloadConsumer.d.ts.map +1 -0
  41. package/dist/consumer/FileDownloadConsumer.js +1003 -0
  42. package/dist/consumer/generators/baseGenerator.d.ts +38 -0
  43. package/dist/consumer/generators/baseGenerator.d.ts.map +1 -0
  44. package/dist/consumer/generators/baseGenerator.js +103 -0
  45. package/dist/consumer/generators/domainGenerator.d.ts +78 -0
  46. package/dist/consumer/generators/domainGenerator.d.ts.map +1 -0
  47. package/dist/consumer/generators/domainGenerator.js +241 -0
  48. package/dist/consumer/generators/guiStatusGenerator.d.ts +16 -0
  49. package/dist/consumer/generators/guiStatusGenerator.d.ts.map +1 -0
  50. package/dist/consumer/generators/guiStatusGenerator.js +48 -0
  51. package/dist/consumer/generators/guiTitleGenerator.d.ts +16 -0
  52. package/dist/consumer/generators/guiTitleGenerator.d.ts.map +1 -0
  53. package/dist/consumer/generators/guiTitleGenerator.js +48 -0
  54. package/dist/consumer/generators/index.d.ts +14 -0
  55. package/dist/consumer/generators/index.d.ts.map +1 -0
  56. package/dist/consumer/generators/index.js +38 -0
  57. package/dist/consumer/generators/messageGenerator.d.ts +16 -0
  58. package/dist/consumer/generators/messageGenerator.d.ts.map +1 -0
  59. package/dist/consumer/generators/messageGenerator.js +73 -0
  60. package/dist/consumer/generators/metadataGenerator.d.ts +29 -0
  61. package/dist/consumer/generators/metadataGenerator.d.ts.map +1 -0
  62. package/dist/consumer/generators/metadataGenerator.js +135 -0
  63. package/dist/consumer/generators/screenGenerator.d.ts +173 -0
  64. package/dist/consumer/generators/screenGenerator.d.ts.map +1 -0
  65. package/dist/consumer/generators/screenGenerator.js +859 -0
  66. package/dist/consumer/generators/structureGenerator.d.ts +36 -0
  67. package/dist/consumer/generators/structureGenerator.d.ts.map +1 -0
  68. package/dist/consumer/generators/structureGenerator.js +131 -0
  69. package/dist/consumer/generators/textElementGenerator.d.ts +16 -0
  70. package/dist/consumer/generators/textElementGenerator.d.ts.map +1 -0
  71. package/dist/consumer/generators/textElementGenerator.js +70 -0
  72. package/dist/consumer/handlers/handleGetClass.d.ts +8 -0
  73. package/dist/consumer/handlers/handleGetClass.d.ts.map +1 -0
  74. package/dist/consumer/handlers/handleGetClass.js +18 -0
  75. package/dist/consumer/handlers/handleGetFunction.d.ts +8 -0
  76. package/dist/consumer/handlers/handleGetFunction.d.ts.map +1 -0
  77. package/dist/consumer/handlers/handleGetFunction.js +19 -0
  78. package/dist/consumer/handlers/handleGetFunctionGroup.d.ts +8 -0
  79. package/dist/consumer/handlers/handleGetFunctionGroup.d.ts.map +1 -0
  80. package/dist/consumer/handlers/handleGetFunctionGroup.js +19 -0
  81. package/dist/consumer/handlers/handleGetInclude.d.ts +8 -0
  82. package/dist/consumer/handlers/handleGetInclude.d.ts.map +1 -0
  83. package/dist/consumer/handlers/handleGetInclude.js +18 -0
  84. package/dist/consumer/handlers/handleGetProgram.d.ts +8 -0
  85. package/dist/consumer/handlers/handleGetProgram.d.ts.map +1 -0
  86. package/dist/consumer/handlers/handleGetProgram.js +27 -0
  87. package/dist/consumer/handlers/handleZTableQuery.d.ts +8 -0
  88. package/dist/consumer/handlers/handleZTableQuery.d.ts.map +1 -0
  89. package/dist/consumer/handlers/handleZTableQuery.js +20 -0
  90. package/dist/consumer/handlers/index.d.ts +10 -0
  91. package/dist/consumer/handlers/index.d.ts.map +1 -0
  92. package/dist/consumer/handlers/index.js +27 -0
  93. package/dist/consumer/index.d.ts +9 -0
  94. package/dist/consumer/index.d.ts.map +1 -0
  95. package/dist/consumer/index.js +24 -0
  96. package/dist/consumer/utils/download.d.ts +13 -0
  97. package/dist/consumer/utils/download.d.ts.map +1 -0
  98. package/dist/consumer/utils/download.js +38 -0
  99. package/dist/consumer/utils/index.d.ts +5 -0
  100. package/dist/consumer/utils/index.d.ts.map +1 -0
  101. package/dist/consumer/utils/index.js +20 -0
  102. package/dist/handlers/handleGetClass.d.ts +8 -0
  103. package/dist/handlers/handleGetClass.d.ts.map +1 -0
  104. package/dist/handlers/handleGetClass.js +19 -0
  105. package/dist/handlers/handleGetFunction.d.ts +8 -0
  106. package/dist/handlers/handleGetFunction.d.ts.map +1 -0
  107. package/dist/handlers/handleGetFunction.js +20 -0
  108. package/dist/handlers/handleGetFunctionGroup.d.ts +8 -0
  109. package/dist/handlers/handleGetFunctionGroup.d.ts.map +1 -0
  110. package/dist/handlers/handleGetFunctionGroup.js +19 -0
  111. package/dist/handlers/handleGetInclude.d.ts +8 -0
  112. package/dist/handlers/handleGetInclude.d.ts.map +1 -0
  113. package/dist/handlers/handleGetInclude.js +19 -0
  114. package/dist/handlers/handleGetInterface.d.ts +8 -0
  115. package/dist/handlers/handleGetInterface.d.ts.map +1 -0
  116. package/dist/handlers/handleGetInterface.js +19 -0
  117. package/dist/handlers/handleGetPackage.d.ts +8 -0
  118. package/dist/handlers/handleGetPackage.d.ts.map +1 -0
  119. package/dist/handlers/handleGetPackage.js +42 -0
  120. package/dist/handlers/handleGetProgram.d.ts +8 -0
  121. package/dist/handlers/handleGetProgram.d.ts.map +1 -0
  122. package/dist/handlers/handleGetProgram.js +19 -0
  123. package/dist/handlers/handleGetStructure.d.ts +8 -0
  124. package/dist/handlers/handleGetStructure.d.ts.map +1 -0
  125. package/dist/handlers/handleGetStructure.js +19 -0
  126. package/dist/handlers/handleGetTable.d.ts +8 -0
  127. package/dist/handlers/handleGetTable.d.ts.map +1 -0
  128. package/dist/handlers/handleGetTable.js +19 -0
  129. package/dist/handlers/handleGetTableContents.d.ts +8 -0
  130. package/dist/handlers/handleGetTableContents.d.ts.map +1 -0
  131. package/dist/handlers/handleGetTableContents.js +22 -0
  132. package/dist/handlers/handleGetTransaction.d.ts +8 -0
  133. package/dist/handlers/handleGetTransaction.d.ts.map +1 -0
  134. package/dist/handlers/handleGetTransaction.js +19 -0
  135. package/dist/handlers/handleGetTypeInfo.d.ts +8 -0
  136. package/dist/handlers/handleGetTypeInfo.d.ts.map +1 -0
  137. package/dist/handlers/handleGetTypeInfo.js +32 -0
  138. package/dist/handlers/handleSearchObject.d.ts +8 -0
  139. package/dist/handlers/handleSearchObject.d.ts.map +1 -0
  140. package/dist/handlers/handleSearchObject.js +20 -0
  141. package/dist/handlers/handleZObjectQuery.d.ts +8 -0
  142. package/dist/handlers/handleZObjectQuery.d.ts.map +1 -0
  143. package/dist/handlers/handleZObjectQuery.js +25 -0
  144. package/dist/handlers/handleZTableQuery.d.ts +8 -0
  145. package/dist/handlers/handleZTableQuery.d.ts.map +1 -0
  146. package/dist/handlers/handleZTableQuery.js +20 -0
  147. package/dist/index.d.ts +17 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +45 -0
  150. package/dist/lib/download.d.ts +49 -0
  151. package/dist/lib/download.d.ts.map +1 -0
  152. package/dist/lib/download.js +78 -0
  153. package/dist/lib/index.d.ts +9 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +23 -0
  156. package/dist/lib/utils.d.ts +31 -0
  157. package/dist/lib/utils.d.ts.map +1 -0
  158. package/dist/lib/utils.js +272 -0
  159. package/dist/producer/RecursiveQueryProducer.d.ts +92 -0
  160. package/dist/producer/RecursiveQueryProducer.d.ts.map +1 -0
  161. package/dist/producer/RecursiveQueryProducer.js +496 -0
  162. package/dist/producer/handlers/handleZObjectQuery.d.ts +8 -0
  163. package/dist/producer/handlers/handleZObjectQuery.d.ts.map +1 -0
  164. package/dist/producer/handlers/handleZObjectQuery.js +24 -0
  165. package/dist/producer/handlers/index.d.ts +6 -0
  166. package/dist/producer/handlers/index.d.ts.map +1 -0
  167. package/dist/producer/handlers/index.js +21 -0
  168. package/dist/producer/index.d.ts +7 -0
  169. package/dist/producer/index.d.ts.map +1 -0
  170. package/dist/producer/index.js +22 -0
  171. package/dist/recursive/abapStructures.d.ts +377 -0
  172. package/dist/recursive/abapStructures.d.ts.map +1 -0
  173. package/dist/recursive/abapStructures.js +2 -0
  174. package/dist/recursive/generate/baseGenerator.d.ts +34 -0
  175. package/dist/recursive/generate/baseGenerator.d.ts.map +1 -0
  176. package/dist/recursive/generate/baseGenerator.js +112 -0
  177. package/dist/recursive/generate/domainGenerator.d.ts +26 -0
  178. package/dist/recursive/generate/domainGenerator.d.ts.map +1 -0
  179. package/dist/recursive/generate/domainGenerator.js +128 -0
  180. package/dist/recursive/generate/functionGroupGenerator.d.ts +30 -0
  181. package/dist/recursive/generate/functionGroupGenerator.d.ts.map +1 -0
  182. package/dist/recursive/generate/functionGroupGenerator.js +90 -0
  183. package/dist/recursive/generate/index.d.ts +12 -0
  184. package/dist/recursive/generate/index.d.ts.map +1 -0
  185. package/dist/recursive/generate/index.js +34 -0
  186. package/dist/recursive/generate/messageGenerator.d.ts +16 -0
  187. package/dist/recursive/generate/messageGenerator.d.ts.map +1 -0
  188. package/dist/recursive/generate/messageGenerator.js +73 -0
  189. package/dist/recursive/generate/screenGenerator.d.ts +173 -0
  190. package/dist/recursive/generate/screenGenerator.d.ts.map +1 -0
  191. package/dist/recursive/generate/screenGenerator.js +858 -0
  192. package/dist/recursive/generate/structureGenerator.d.ts +22 -0
  193. package/dist/recursive/generate/structureGenerator.d.ts.map +1 -0
  194. package/dist/recursive/generate/structureGenerator.js +88 -0
  195. package/dist/recursive/generate/textElementGenerator.d.ts +16 -0
  196. package/dist/recursive/generate/textElementGenerator.d.ts.map +1 -0
  197. package/dist/recursive/generate/textElementGenerator.js +68 -0
  198. package/dist/recursive/handleRecursiveObjectQuery.d.ts +94 -0
  199. package/dist/recursive/handleRecursiveObjectQuery.d.ts.map +1 -0
  200. package/dist/recursive/handleRecursiveObjectQuery.js +219 -0
  201. package/dist/recursive/recursiveObjectQuery.d.ts +159 -0
  202. package/dist/recursive/recursiveObjectQuery.d.ts.map +1 -0
  203. package/dist/recursive/recursiveObjectQuery.js +1358 -0
  204. package/dist/recursive/recursiveQueryConfig.d.ts +129 -0
  205. package/dist/recursive/recursiveQueryConfig.d.ts.map +1 -0
  206. package/dist/recursive/recursiveQueryConfig.js +133 -0
  207. package/dist/recursive/tableStructures.d.ts +196 -0
  208. package/dist/recursive/tableStructures.d.ts.map +1 -0
  209. package/dist/recursive/tableStructures.js +10 -0
  210. package/package.json +47 -0
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 结构体/表数据获取器和保存器
3
+ * 通过 handleZTableQuery 获取表和结构体的完整数据,并保存到文件系统
4
+ */
5
+ import { TableData } from '../../common/tableStructures';
6
+ /**
7
+ * 文件保存结果
8
+ */
9
+ export interface SaveFileResult {
10
+ success: boolean;
11
+ filePath?: string;
12
+ error?: string;
13
+ }
14
+ /**
15
+ * 通过 handleZTableQuery 获取表/结构体的完整数据
16
+ * @param tableName 表名或结构体名
17
+ * @returns TableData 或 null(如果失败)
18
+ */
19
+ export declare function fetchTableData(tableName: string): Promise<TableData | null>;
20
+ /**
21
+ * 保存结构 JSON 文件到 structures 目录(所有类型)
22
+ * @param tableData 表数据
23
+ * @param structureName 结构名
24
+ * @param downloadRootPath 下载根目录
25
+ * @returns 保存结果
26
+ */
27
+ export declare function saveStructureJson(tableData: TableData, structureName: string, downloadRootPath: string): Promise<SaveFileResult>;
28
+ /**
29
+ * 保存透明表 JSON 文件到 tables 目录(仅用于透明表)
30
+ * @param tableData 表数据
31
+ * @param tableName 表名
32
+ * @param downloadRootPath 下载根目录
33
+ * @returns 保存结果
34
+ */
35
+ export declare function saveTableJson(tableData: TableData, tableName: string, downloadRootPath: string): Promise<SaveFileResult>;
36
+ //# sourceMappingURL=structureGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structureGenerator.d.ts","sourceRoot":"","sources":["../../../src/consumer/generators/structureGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK7E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA8CjF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACnC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,GACzB,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAC/B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACzB,OAAO,CAAC,cAAc,CAAC,CAgCzB"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * 结构体/表数据获取器和保存器
4
+ * 通过 handleZTableQuery 获取表和结构体的完整数据,并保存到文件系统
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.fetchTableData = fetchTableData;
8
+ exports.saveStructureJson = saveStructureJson;
9
+ exports.saveTableJson = saveTableJson;
10
+ const handlers_1 = require("../handlers");
11
+ const path_1 = require("path");
12
+ const fs_1 = require("fs");
13
+ /**
14
+ * 通过 handleZTableQuery 获取表/结构体的完整数据
15
+ * @param tableName 表名或结构体名
16
+ * @returns TableData 或 null(如果失败)
17
+ */
18
+ async function fetchTableData(tableName) {
19
+ try {
20
+ console.error(`[fetchTableData] 获取表结构数据: ${tableName}`);
21
+ const response = await (0, handlers_1.handleZTableQuery)({ name: tableName });
22
+ if (!response || !response.content || response.content.length === 0) {
23
+ console.error(`[fetchTableData] 获取表结构数据失败: ${tableName} - 无有效数据返回`);
24
+ return null;
25
+ }
26
+ const tableData = response.content[0].text;
27
+ // 解析JSON数据
28
+ let parsedData;
29
+ try {
30
+ parsedData = tableData;
31
+ }
32
+ catch (parseError) {
33
+ console.error(`[fetchTableData] 解析表结构数据失败: ${tableName}, 错误: ${parseError}`);
34
+ return null;
35
+ }
36
+ // 转换为 TableData 格式(单表结构:表信息 + 字段列表 + 索引列表)
37
+ const tableInfo = parsedData.GT_TABLES && parsedData.GT_TABLES.length > 0
38
+ ? parsedData.GT_TABLES[0]
39
+ : { TABNAME: tableName };
40
+ const finalTableData = {
41
+ IDX: tableInfo.IDX,
42
+ TABNAME: tableInfo.TABNAME,
43
+ TABCLASS: tableInfo.TABCLASS,
44
+ DDTEXT_ZH: tableInfo.DDTEXT_ZH,
45
+ DDTEXT_EN: tableInfo.DDTEXT_EN,
46
+ GT_FIELDS: parsedData.GT_FIELDS || [],
47
+ GT_INDEXS: parsedData.GT_INDEXS || [],
48
+ GT_FOREIGNKEY: parsedData.GT_FOREIGNKEY || []
49
+ };
50
+ console.error(`[fetchTableData] 获取表结构数据成功: ${tableName}, 类型: ${finalTableData.TABCLASS}, 字段数: ${finalTableData.GT_FIELDS?.length || 0}`);
51
+ return finalTableData;
52
+ }
53
+ catch (error) {
54
+ console.error(`[fetchTableData] 获取表结构数据失败: ${tableName}, 错误: ${error instanceof Error ? error.message : String(error)}`);
55
+ return null;
56
+ }
57
+ }
58
+ /**
59
+ * 保存结构 JSON 文件到 structures 目录(所有类型)
60
+ * @param tableData 表数据
61
+ * @param structureName 结构名
62
+ * @param downloadRootPath 下载根目录
63
+ * @returns 保存结果
64
+ */
65
+ async function saveStructureJson(tableData, structureName, downloadRootPath) {
66
+ try {
67
+ // 生成文件路径:downloadRootPath/structures/结构名.json
68
+ const structuresDir = (0, path_1.join)(downloadRootPath, 'structures');
69
+ if (!(0, fs_1.existsSync)(structuresDir)) {
70
+ (0, fs_1.mkdirSync)(structuresDir, { recursive: true });
71
+ }
72
+ const sanitizedName = structureName
73
+ .replace(/[/\\]/g, '_')
74
+ .replace(/[<>]/g, '#')
75
+ .replace(/[^a-zA-Z0-9_#]/g, '_');
76
+ const structureFilePath = (0, path_1.join)(structuresDir, `${sanitizedName}.json`);
77
+ // 保存JSON文件
78
+ (0, fs_1.writeFileSync)(structureFilePath, JSON.stringify(tableData, null, 2), 'utf-8');
79
+ console.error(`结构 JSON 已保存到 structures 目录: ${structureFilePath}`);
80
+ return {
81
+ success: true,
82
+ filePath: structureFilePath
83
+ };
84
+ }
85
+ catch (error) {
86
+ const errorMsg = error instanceof Error ? error.message : String(error);
87
+ console.error(`保存结构 JSON 失败: ${structureName}, 错误: ${errorMsg}`);
88
+ return {
89
+ success: false,
90
+ filePath: (0, path_1.join)(downloadRootPath, 'structures', `${structureName}.json`),
91
+ error: errorMsg
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * 保存透明表 JSON 文件到 tables 目录(仅用于透明表)
97
+ * @param tableData 表数据
98
+ * @param tableName 表名
99
+ * @param downloadRootPath 下载根目录
100
+ * @returns 保存结果
101
+ */
102
+ async function saveTableJson(tableData, tableName, downloadRootPath) {
103
+ try {
104
+ // 生成文件路径:downloadRootPath/tables/表名.json
105
+ const tablesDir = (0, path_1.join)(downloadRootPath, 'tables');
106
+ if (!(0, fs_1.existsSync)(tablesDir)) {
107
+ (0, fs_1.mkdirSync)(tablesDir, { recursive: true });
108
+ }
109
+ const sanitizedName = tableName
110
+ .replace(/[/\\]/g, '_')
111
+ .replace(/[<>]/g, '#')
112
+ .replace(/[^a-zA-Z0-9_#]/g, '_');
113
+ const tableFilePath = (0, path_1.join)(tablesDir, `${sanitizedName}.json`);
114
+ // 保存JSON文件
115
+ (0, fs_1.writeFileSync)(tableFilePath, JSON.stringify(tableData, null, 2), 'utf-8');
116
+ console.error(`透明表结构 JSON 已保存: ${tableFilePath}`);
117
+ return {
118
+ success: true,
119
+ filePath: tableFilePath
120
+ };
121
+ }
122
+ catch (error) {
123
+ const errorMsg = error instanceof Error ? error.message : String(error);
124
+ console.error(`保存透明表 JSON 失败: ${tableName}, 错误: ${errorMsg}`);
125
+ return {
126
+ success: false,
127
+ filePath: (0, path_1.join)(downloadRootPath, 'tables', `${tableName}.json`),
128
+ error: errorMsg
129
+ };
130
+ }
131
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 文本元素生成器
3
+ * 生成文本元素XML文件
4
+ */
5
+ import { TextElement } from '../../common/abapStructures';
6
+ /**
7
+ * 生成文本元素XML内容
8
+ * 遵循abapGit协议格式
9
+ */
10
+ export declare function generateTextElementsXmlContent(textElements: TextElement[]): string;
11
+ /**
12
+ * 生成文本元素XML文件
13
+ * 符合abapGit协议规范
14
+ */
15
+ export declare function generateTextElementsXml(textElements: TextElement[], objectName: string, objectType: string, downloadRootPath: string, resultDownloadedFiles: any[]): Promise<void>;
16
+ //# sourceMappingURL=textElementGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textElementGenerator.d.ts","sourceRoot":"","sources":["../../../src/consumer/generators/textElementGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D;;;GAGG;AACH,wBAAgB,8BAA8B,CAC1C,YAAY,EAAE,WAAW,EAAE,GAC5B,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CACzC,YAAY,EAAE,WAAW,EAAE,EAC3B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,qBAAqB,EAAE,GAAG,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * 文本元素生成器
4
+ * 生成文本元素XML文件
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateTextElementsXmlContent = generateTextElementsXmlContent;
8
+ exports.generateTextElementsXml = generateTextElementsXml;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const baseGenerator_1 = require("./baseGenerator");
12
+ /**
13
+ * 生成文本元素XML内容
14
+ * 遵循abapGit协议格式
15
+ */
16
+ function generateTextElementsXmlContent(textElements) {
17
+ let xml = '<?xml version="1.0" encoding="utf-8"?>\n';
18
+ xml += '<abapGit version="v1.0.0" serializer="LCL_OBJECT_TEXTS" serializer_version="v1.0.0">\n';
19
+ xml += ' <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">\n';
20
+ xml += ' <asx:values>\n';
21
+ xml += ' <TEXT_ELEMENTS>\n';
22
+ for (const textElement of textElements) {
23
+ if (textElement.KEY && textElement.ENTRY) {
24
+ xml += ' <TEXT_ELEMENT>\n';
25
+ xml = (0, baseGenerator_1.addXmlField)(xml, 'ID', textElement.ID, ' ');
26
+ xml = (0, baseGenerator_1.addXmlField)(xml, 'KEY', textElement.KEY, ' ');
27
+ xml = (0, baseGenerator_1.addXmlField)(xml, 'TEXT', textElement.ENTRY, ' ');
28
+ xml = (0, baseGenerator_1.addXmlNumericField)(xml, 'LENGTH', textElement.LENGTH, ' ');
29
+ xml = (0, baseGenerator_1.addXmlField)(xml, 'TEXT_ZH', textElement.ENTRY_ZH, ' ');
30
+ xml += ' </TEXT_ELEMENT>\n';
31
+ }
32
+ }
33
+ xml += ' </TEXT_ELEMENTS>\n';
34
+ xml += ' </asx:values>\n';
35
+ xml += ' </asx:abap>\n';
36
+ xml += '</abapGit>\n';
37
+ return xml;
38
+ }
39
+ /**
40
+ * 生成文本元素XML文件
41
+ * 符合abapGit协议规范
42
+ */
43
+ async function generateTextElementsXml(textElements, objectName, objectType, downloadRootPath, resultDownloadedFiles) {
44
+ const safeObjectName = objectName.replace(/[/\\]/g, '_');
45
+ // 文本元素文件路径:/texts目录下
46
+ const baseDir = (0, path_1.join)(downloadRootPath, 'texts');
47
+ if (!(0, fs_1.existsSync)(baseDir)) {
48
+ (0, fs_1.mkdirSync)(baseDir, { recursive: true });
49
+ }
50
+ // 生成符合abapGit协议的XML内容
51
+ const xmlContent = generateTextElementsXmlContent(textElements);
52
+ // 按照abapGit协议命名规范,文本元素通常集成到主文件中
53
+ // 如果需要单独导出,使用:{对象名}.texts.xml
54
+ const xmlFileName = `${safeObjectName}.texts.xml`;
55
+ const xmlFilePath = (0, path_1.join)(baseDir, xmlFileName);
56
+ (0, fs_1.writeFileSync)(xmlFilePath, xmlContent, 'utf-8');
57
+ console.error(`导出文本元素 ${objectName} 到: ${xmlFilePath}`);
58
+ // 记录下载统计
59
+ resultDownloadedFiles.push({
60
+ objectName: objectName,
61
+ objectType: 'TEXT_ELEMENTS',
62
+ filePath: xmlFilePath,
63
+ success: true,
64
+ metadata: {
65
+ elementCount: textElements.length,
66
+ exportType: 'separate',
67
+ objectType: objectType
68
+ }
69
+ });
70
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleGetClass(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleGetClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetClass.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleGetClass.ts"],"names":[],"mappings":"AAEA,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG;;;;;;GAY7C"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGetClass = handleGetClass;
4
+ const utils_1 = require("../../common/utils");
5
+ async function handleGetClass(args) {
6
+ try {
7
+ if (!args?.class_name) {
8
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Class name is required');
9
+ }
10
+ const encodedClassName = encodeURIComponent(args.class_name);
11
+ const url = `${await (0, utils_1.getBaseUrl)()}/sap/bc/adt/oo/classes/${encodedClassName}/source/main`;
12
+ const response = await (0, utils_1.makeAdtRequest)(url, 'GET', 30000);
13
+ return (0, utils_1.return_response)(response);
14
+ }
15
+ catch (error) {
16
+ return (0, utils_1.return_error)(error);
17
+ }
18
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleGetFunction(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleGetFunction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetFunction.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleGetFunction.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;;GAahD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGetFunction = handleGetFunction;
4
+ const utils_1 = require("../../common/utils");
5
+ async function handleGetFunction(args) {
6
+ try {
7
+ if (!args?.function_name || !args?.function_group) {
8
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Function name and group are required');
9
+ }
10
+ const encodedFunctionName = encodeURIComponent(args.function_name);
11
+ const encodedFunctionGroup = encodeURIComponent(args.function_group);
12
+ const url = `${await (0, utils_1.getBaseUrl)()}/sap/bc/adt/functions/groups/${encodedFunctionGroup}/fmodules/${encodedFunctionName}/source/main`;
13
+ const response = await (0, utils_1.makeAdtRequest)(url, 'GET', 30000);
14
+ return (0, utils_1.return_response)(response);
15
+ }
16
+ catch (error) {
17
+ return (0, utils_1.return_error)(error);
18
+ }
19
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleGetFunctionGroup(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleGetFunctionGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetFunctionGroup.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleGetFunctionGroup.ts"],"names":[],"mappings":"AAGA,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,GAAG;;;;;;GAYrD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGetFunctionGroup = handleGetFunctionGroup;
4
+ const utils_1 = require("../../common/utils");
5
+ const utils_2 = require("../../common/utils");
6
+ async function handleGetFunctionGroup(args) {
7
+ try {
8
+ if (!args?.function_group) {
9
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Function Group is required');
10
+ }
11
+ const encodedFunctionGroup = encodeURIComponent(args.function_group);
12
+ const url = `${await (0, utils_2.getBaseUrl)()}/sap/bc/adt/functions/groups/${encodedFunctionGroup}/source/main`;
13
+ const response = await (0, utils_2.makeAdtRequest)(url, 'GET', 30000);
14
+ return (0, utils_2.return_response)(response);
15
+ }
16
+ catch (error) {
17
+ return (0, utils_2.return_error)(error);
18
+ }
19
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleGetInclude(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleGetInclude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetInclude.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleGetInclude.ts"],"names":[],"mappings":"AAEA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,GAAG;;;;;;GAY/C"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGetInclude = handleGetInclude;
4
+ const utils_1 = require("../../common/utils");
5
+ async function handleGetInclude(args) {
6
+ try {
7
+ if (!args?.include_name) {
8
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Include name is required');
9
+ }
10
+ const encodedIncludeName = encodeURIComponent(args.include_name);
11
+ const url = `${await (0, utils_1.getBaseUrl)()}/sap/bc/adt/programs/includes/${encodedIncludeName}/source/main`;
12
+ const response = await (0, utils_1.makeAdtRequest)(url, 'GET', 30000);
13
+ return (0, utils_1.return_response)(response);
14
+ }
15
+ catch (error) {
16
+ return (0, utils_1.return_error)(error);
17
+ }
18
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleGetProgram(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleGetProgram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetProgram.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleGetProgram.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,GAAG;;;;;;GAyB/C"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGetProgram = handleGetProgram;
4
+ const utils_1 = require("../../common/utils");
5
+ const handleGetFunctionGroup_1 = require("./handleGetFunctionGroup");
6
+ async function handleGetProgram(args) {
7
+ try {
8
+ if (!args?.program_name) {
9
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Program name is required');
10
+ }
11
+ const programName = args.program_name;
12
+ // 如果程序名包含 SAPL,则提取函数组名并调用函数组查询
13
+ // 例如: SAPLMEGUI -> MEGUI, /ILE/SAPLMMO -> /ILE/MMO
14
+ if (programName.includes('SAPL')) {
15
+ const functionGroupName = programName.replace('SAPL', '');
16
+ console.error(`[程序查询] 检测到 SAPL 程序: ${programName}, 转换为函数组查询: ${functionGroupName}`);
17
+ return await (0, handleGetFunctionGroup_1.handleGetFunctionGroup)({ function_group: functionGroupName });
18
+ }
19
+ const encodedProgramName = encodeURIComponent(programName);
20
+ const url = `${await (0, utils_1.getBaseUrl)()}/sap/bc/adt/programs/programs/${encodedProgramName}/source/main`;
21
+ const response = await (0, utils_1.makeAdtRequest)(url, 'GET', 30000);
22
+ return (0, utils_1.return_response)(response);
23
+ }
24
+ catch (error) {
25
+ return (0, utils_1.return_error)(error);
26
+ }
27
+ }
@@ -0,0 +1,8 @@
1
+ export declare function handleZTableQuery(args: any): Promise<{
2
+ isError: boolean;
3
+ content: {
4
+ type: string;
5
+ text: any;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=handleZTableQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleZTableQuery.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/handleZTableQuery.ts"],"names":[],"mappings":"AAGA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;;GAchD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleZTableQuery = handleZTableQuery;
4
+ const utils_1 = require("../../common/utils");
5
+ const utils_2 = require("../../common/utils");
6
+ async function handleZTableQuery(args) {
7
+ try {
8
+ if (!args?.name) {
9
+ console.error('name:', args);
10
+ throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Table name is required');
11
+ }
12
+ const encodedName = encodeURIComponent(args.name);
13
+ const url = `${await (0, utils_2.getBaseUrl)()}/sap/bc/z_table_query?NAME=${encodedName}`;
14
+ const response = await (0, utils_2.makeAdtRequest)(url, 'GET', 30000);
15
+ return (0, utils_2.return_response)(response);
16
+ }
17
+ catch (error) {
18
+ return (0, utils_2.return_error)(error);
19
+ }
20
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 消费者使用的 Handlers
3
+ * 用于下载 ABAP 对象源代码和相关数据
4
+ */
5
+ export * from './handleGetClass';
6
+ export * from './handleGetFunction';
7
+ export * from './handleGetProgram';
8
+ export * from './handleGetInclude';
9
+ export * from './handleZTableQuery';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consumer/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * 消费者使用的 Handlers
4
+ * 用于下载 ABAP 对象源代码和相关数据
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ // 主要对象下载 handlers
22
+ __exportStar(require("./handleGetClass"), exports);
23
+ __exportStar(require("./handleGetFunction"), exports);
24
+ __exportStar(require("./handleGetProgram"), exports);
25
+ __exportStar(require("./handleGetInclude"), exports);
26
+ // 表结构查询 handler
27
+ __exportStar(require("./handleZTableQuery"), exports);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 消费者组件导出
3
+ * 负责文件下载和数据处理
4
+ */
5
+ export * from './FileDownloadConsumer';
6
+ export * from './handlers';
7
+ export * from './generators';
8
+ export * from './utils';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consumer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * 消费者组件导出
4
+ * 负责文件下载和数据处理
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ __exportStar(require("./FileDownloadConsumer"), exports);
22
+ __exportStar(require("./handlers"), exports);
23
+ __exportStar(require("./generators"), exports);
24
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 下载文件函数
3
+ * @param fileContent 文件内容(字符串或Buffer)
4
+ * @param filePath 文件路径
5
+ * @param fileType 文件类型(用于确定文件扩展名和编码)
6
+ * @returns 下载结果对象
7
+ */
8
+ export declare function downloadFile(fileContent: string | Buffer, filePath: string, fileType?: 'text' | 'json' | 'xml' | 'abap' | 'binary'): Promise<{
9
+ success: boolean;
10
+ message: string;
11
+ filePath?: string;
12
+ }>;
13
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/consumer/utils/download.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAsB,YAAY,CAC9B,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAiB,GAC/D,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BnE"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadFile = downloadFile;
4
+ const fs_1 = require("fs");
5
+ /**
6
+ * 下载文件函数
7
+ * @param fileContent 文件内容(字符串或Buffer)
8
+ * @param filePath 文件路径
9
+ * @param fileType 文件类型(用于确定文件扩展名和编码)
10
+ * @returns 下载结果对象
11
+ */
12
+ async function downloadFile(fileContent, filePath, fileType = 'text') {
13
+ try {
14
+ // 确保文件内容正确格式化
15
+ let content;
16
+ if (typeof fileContent === 'string') {
17
+ // 根据文件类型确定编码
18
+ const encoding = fileType === 'binary' ? 'binary' : 'utf8';
19
+ content = Buffer.from(fileContent, encoding);
20
+ }
21
+ else {
22
+ content = fileContent;
23
+ }
24
+ // 写入文件
25
+ (0, fs_1.writeFileSync)(filePath, content);
26
+ return {
27
+ success: true,
28
+ message: `文件下载成功: ${filePath}`,
29
+ filePath: filePath
30
+ };
31
+ }
32
+ catch (error) {
33
+ return {
34
+ success: false,
35
+ message: `文件下载失败: ${error instanceof Error ? error.message : String(error)}`
36
+ };
37
+ }
38
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 消费者工具函数导出
3
+ */
4
+ export * from './download';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consumer/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * 消费者工具函数导出
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./download"), exports);