@lcap/nasl 2.18.0 → 2.20.0-beta.1

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 (326) hide show
  1. package/out/automate/engine/index.js +3 -3
  2. package/out/automate/engine/index.js.map +1 -1
  3. package/out/bak/translator.js +85 -37
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/common/BaseNode.d.ts +6 -10
  6. package/out/common/BaseNode.js +7 -52
  7. package/out/common/BaseNode.js.map +1 -1
  8. package/out/concepts/AnonymousFunction__.js.map +1 -1
  9. package/out/concepts/App__.d.ts +0 -10
  10. package/out/concepts/App__.js +0 -74
  11. package/out/concepts/App__.js.map +1 -1
  12. package/out/concepts/Assignee__.js.map +1 -1
  13. package/out/concepts/AssignmentLine__.d.ts +5 -5
  14. package/out/concepts/AssignmentLine__.js +6 -6
  15. package/out/concepts/AssignmentLine__.js.map +1 -1
  16. package/out/concepts/Assignment__.js +2 -1
  17. package/out/concepts/Assignment__.js.map +1 -1
  18. package/out/concepts/BatchAssignment__.d.ts +60 -60
  19. package/out/concepts/BatchAssignment__.js +11 -21
  20. package/out/concepts/BatchAssignment__.js.map +1 -1
  21. package/out/concepts/BindAttribute__.d.ts +0 -19
  22. package/out/concepts/BindAttribute__.js +2 -39
  23. package/out/concepts/BindAttribute__.js.map +1 -1
  24. package/out/concepts/BindEvent__.js.map +1 -1
  25. package/out/concepts/BindStyle__.d.ts +2 -2
  26. package/out/concepts/BindStyle__.js +3 -3
  27. package/out/concepts/BindStyle__.js.map +1 -1
  28. package/out/concepts/BooleanLiteral__.js +8 -0
  29. package/out/concepts/BooleanLiteral__.js.map +1 -1
  30. package/out/concepts/CallFunction__.js +25 -58
  31. package/out/concepts/CallFunction__.js.map +1 -1
  32. package/out/concepts/CallInterface__.d.ts +0 -7
  33. package/out/concepts/CallInterface__.js +7 -53
  34. package/out/concepts/CallInterface__.js.map +1 -1
  35. package/out/concepts/CallLogic__.js +14 -63
  36. package/out/concepts/CallLogic__.js.map +1 -1
  37. package/out/concepts/CallQueryComponent__.js +1 -13
  38. package/out/concepts/CallQueryComponent__.js.map +1 -1
  39. package/out/concepts/CompletionProperty__.js +0 -3
  40. package/out/concepts/CompletionProperty__.js.map +1 -1
  41. package/out/concepts/ConfigGroup__.js.map +1 -1
  42. package/out/concepts/ConfigProperty__.js.map +1 -1
  43. package/out/concepts/Configuration__.js.map +1 -1
  44. package/out/concepts/DataSource__.d.ts +0 -6
  45. package/out/concepts/DataSource__.js +0 -41
  46. package/out/concepts/DataSource__.js.map +1 -1
  47. package/out/concepts/Destination__.d.ts +1 -9
  48. package/out/concepts/Destination__.js +29 -61
  49. package/out/concepts/Destination__.js.map +1 -1
  50. package/out/concepts/EntityProperty__.d.ts +8 -21
  51. package/out/concepts/EntityProperty__.js +23 -109
  52. package/out/concepts/EntityProperty__.js.map +1 -1
  53. package/out/concepts/Entity__.d.ts +0 -32
  54. package/out/concepts/Entity__.js +2 -117
  55. package/out/concepts/Entity__.js.map +1 -1
  56. package/out/concepts/Enum__.js +4 -0
  57. package/out/concepts/Enum__.js.map +1 -1
  58. package/out/concepts/Event__.js.map +1 -1
  59. package/out/concepts/ForEachStatement__.d.ts +4 -0
  60. package/out/concepts/ForEachStatement__.js +8 -4
  61. package/out/concepts/ForEachStatement__.js.map +1 -1
  62. package/out/concepts/Function__.js.map +1 -1
  63. package/out/concepts/Identifier__.js +4 -16
  64. package/out/concepts/Identifier__.js.map +1 -1
  65. package/out/concepts/IfStatement__.d.ts +0 -8
  66. package/out/concepts/IfStatement__.js +0 -22
  67. package/out/concepts/IfStatement__.js.map +1 -1
  68. package/out/concepts/InterfaceParam__.js.map +1 -1
  69. package/out/concepts/Interface__.js.map +1 -1
  70. package/out/concepts/LogicItem__.d.ts +1 -1
  71. package/out/concepts/LogicItem__.js.map +1 -1
  72. package/out/concepts/Logic__.d.ts +1 -6
  73. package/out/concepts/Logic__.js +43 -144
  74. package/out/concepts/Logic__.js.map +1 -1
  75. package/out/concepts/MatchCase__.d.ts +1 -1
  76. package/out/concepts/MatchCase__.js +8 -15
  77. package/out/concepts/MatchCase__.js.map +1 -1
  78. package/out/concepts/Match__.d.ts +19 -21
  79. package/out/concepts/Match__.js +25 -112
  80. package/out/concepts/Match__.js.map +1 -1
  81. package/out/concepts/MemberExpression__.d.ts +1 -4
  82. package/out/concepts/MemberExpression__.js +15 -30
  83. package/out/concepts/MemberExpression__.js.map +1 -1
  84. package/out/concepts/Module__.js.map +1 -1
  85. package/out/concepts/Namespace__.js.map +1 -1
  86. package/out/concepts/NumericLiteral__.js +1 -1
  87. package/out/concepts/NumericLiteral__.js.map +1 -1
  88. package/out/concepts/OqlQueryComponent__.d.ts +3 -7
  89. package/out/concepts/OqlQueryComponent__.js +95 -56
  90. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  91. package/out/concepts/Param__.d.ts +1 -1
  92. package/out/concepts/Param__.js +4 -40
  93. package/out/concepts/Param__.js.map +1 -1
  94. package/out/concepts/ProcessComponent__.js.map +1 -1
  95. package/out/concepts/ProcessElement__.js.map +1 -1
  96. package/out/concepts/Process__.js.map +1 -1
  97. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  98. package/out/concepts/QueryOrderByExpression__.d.ts +3 -3
  99. package/out/concepts/QueryOrderByExpression__.js +3 -3
  100. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  101. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  102. package/out/concepts/Return__.js +2 -38
  103. package/out/concepts/Return__.js.map +1 -1
  104. package/out/concepts/SelectMembers__.d.ts +1 -1
  105. package/out/concepts/SelectMembers__.js +2 -2
  106. package/out/concepts/SelectMembers__.js.map +1 -1
  107. package/out/concepts/SqlQueryComponent__.d.ts +4 -2
  108. package/out/concepts/SqlQueryComponent__.js +88 -9
  109. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  110. package/out/concepts/StringLiteral__.js +7 -0
  111. package/out/concepts/StringLiteral__.js.map +1 -1
  112. package/out/concepts/StructureProperty__.js.map +1 -1
  113. package/out/concepts/Structure__.js.map +1 -1
  114. package/out/concepts/TypeAnnotation__.d.ts +0 -1
  115. package/out/concepts/TypeAnnotation__.js +12 -25
  116. package/out/concepts/TypeAnnotation__.js.map +1 -1
  117. package/out/concepts/TypeParam__.d.ts +0 -1
  118. package/out/concepts/TypeParam__.js +0 -2
  119. package/out/concepts/TypeParam__.js.map +1 -1
  120. package/out/concepts/UnaryExpression__.js +9 -6
  121. package/out/concepts/UnaryExpression__.js.map +1 -1
  122. package/out/concepts/ValidationRule__.js +23 -88
  123. package/out/concepts/ValidationRule__.js.map +1 -1
  124. package/out/concepts/Variable__.js +2 -38
  125. package/out/concepts/Variable__.js.map +1 -1
  126. package/out/concepts/ViewComponent__.js.map +1 -1
  127. package/out/concepts/ViewElement__.d.ts +29 -30
  128. package/out/concepts/ViewElement__.js +51 -117
  129. package/out/concepts/ViewElement__.js.map +1 -1
  130. package/out/concepts/View__.d.ts +3 -4
  131. package/out/concepts/View__.js +83 -93
  132. package/out/concepts/View__.js.map +1 -1
  133. package/out/concepts/WhileStatement__.js +1 -1
  134. package/out/concepts/WhileStatement__.js.map +1 -1
  135. package/out/concepts/basics/stdlib/nasl.browser.js +0 -50
  136. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  137. package/out/concepts/basics/stdlib/nasl.ui.js +4 -36
  138. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  139. package/out/concepts/basics/stdlib/nasl.util.js +43 -63
  140. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  141. package/out/concepts/index__.d.ts +0 -2
  142. package/out/concepts/index__.js +0 -2
  143. package/out/concepts/index__.js.map +1 -1
  144. package/out/generator/genBundleFiles.d.ts +2 -5
  145. package/out/generator/genBundleFiles.js +45 -148
  146. package/out/generator/genBundleFiles.js.map +1 -1
  147. package/out/generator/index.d.ts +0 -1
  148. package/out/generator/index.js +0 -1
  149. package/out/generator/index.js.map +1 -1
  150. package/out/index.d.ts +2 -3
  151. package/out/index.js +1 -5
  152. package/out/index.js.map +1 -1
  153. package/out/server/entity2LogicNamespace.js +11 -11
  154. package/out/server/entity2LogicNamespace.js.map +1 -1
  155. package/out/server/extendBaseNode.js.map +1 -1
  156. package/out/server/formatTsUtils.js +17 -10
  157. package/out/server/formatTsUtils.js.map +1 -1
  158. package/out/server/getLogics.js +6 -13
  159. package/out/server/getLogics.js.map +1 -1
  160. package/out/server/getMemberIdentifier.js +7 -7
  161. package/out/server/getMemberIdentifier.js.map +1 -1
  162. package/out/server/getProcesses.d.ts +1 -1
  163. package/out/server/index.d.ts +1 -0
  164. package/out/server/index.js +27 -2
  165. package/out/server/index.js.map +1 -1
  166. package/out/server/naslServer.d.ts +7 -47
  167. package/out/server/naslServer.js +393 -591
  168. package/out/server/naslServer.js.map +1 -1
  169. package/out/server/naslStdlibMap.js +28 -30
  170. package/out/server/naslStdlibMap.js.map +1 -1
  171. package/out/server/translator.js +7 -40
  172. package/out/server/translator.js.map +1 -1
  173. package/out/service/storage/init.js +3 -33
  174. package/out/service/storage/init.js.map +1 -1
  175. package/out/templator/genCreateBlock.js +4 -6
  176. package/out/templator/genCreateBlock.js.map +1 -1
  177. package/out/templator/genCurdEditMultipleKeyBlock.js +4 -7
  178. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  179. package/out/templator/genCurdMultipleKeyBlock.js +5 -7
  180. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  181. package/out/templator/genEnumSelectBlock.js +2 -5
  182. package/out/templator/genEnumSelectBlock.js.map +1 -1
  183. package/out/templator/genGridViewBlock.js +2 -2
  184. package/out/templator/genGridViewBlock.js.map +1 -1
  185. package/out/templator/genListViewBlock.js +2 -2
  186. package/out/templator/genListViewBlock.js.map +1 -1
  187. package/out/templator/genQueryComponent.d.ts +2 -2
  188. package/out/templator/genQueryComponent.js +1 -4
  189. package/out/templator/genQueryComponent.js.map +1 -1
  190. package/out/templator/genTableBlock.js +2 -2
  191. package/out/templator/genTableBlock.js.map +1 -1
  192. package/out/templator/genUpdateBlock.js +3 -4
  193. package/out/templator/genUpdateBlock.js.map +1 -1
  194. package/out/templator/utils.js +1 -1
  195. package/out/templator/utils.js.map +1 -1
  196. package/out/test/integration/node-nasl-server.js +38 -10
  197. package/out/test/integration/node-nasl-server.js.map +1 -1
  198. package/out/translator/index.d.ts +0 -1
  199. package/out/translator/index.js +1 -1
  200. package/out/translator/index.js.map +1 -1
  201. package/out/utils/index.d.ts +0 -1
  202. package/out/utils/index.js +1 -38
  203. package/out/utils/index.js.map +1 -1
  204. package/out/utils/string.d.ts +2 -15
  205. package/out/utils/string.js +3 -18
  206. package/out/utils/string.js.map +1 -1
  207. package/package.json +2 -2
  208. package/sandbox/stdlib/nasl.auth.ts +1 -1
  209. package/sandbox/stdlib/nasl.core.ts +1 -0
  210. package/sandbox/stdlib/nasl.logging.ts +4 -4
  211. package/sandbox/stdlib/nasl.util.ts +9 -5
  212. package/src/automate/engine/index.js +4 -4
  213. package/src/automate/engine/uniqueName.js +3 -3
  214. package/src/automate/template/myProcess.js +1 -1
  215. package/src/automate/upgrader/2.20.js +41 -0
  216. package/src/bak/translator.js +4 -1
  217. package/src/common/BaseNode.ts +1 -0
  218. package/src/concepts/AnonymousFunction__.ts +48 -2
  219. package/src/concepts/App__.ts +288 -615
  220. package/src/concepts/BatchAssignment__.ts +111 -51
  221. package/src/concepts/BindAttribute__.ts +18 -25
  222. package/src/concepts/BindDirective__.ts +7 -0
  223. package/src/concepts/BindEvent__.ts +7 -0
  224. package/src/concepts/BindStyle__.ts +7 -0
  225. package/src/concepts/CallFunction__.ts +34 -45
  226. package/src/concepts/CallInterface__.ts +2 -1
  227. package/src/concepts/CallLogic__.ts +87 -55
  228. package/src/concepts/CallQueryComponent__.ts +4 -1
  229. package/src/concepts/Constant__.ts +7 -0
  230. package/src/concepts/DataSource__.ts +57 -5
  231. package/src/concepts/Destination__.ts +100 -43
  232. package/src/concepts/Frontend__.ts +937 -0
  233. package/src/concepts/Identifier__.ts +18 -16
  234. package/src/concepts/LogicItem__.ts +8 -1
  235. package/src/concepts/Logic__.ts +134 -149
  236. package/src/concepts/Match__.ts +13 -29
  237. package/src/concepts/NewComposite__.ts +1357 -0
  238. package/src/concepts/NewList__.ts +440 -0
  239. package/src/concepts/NewMap__.ts +666 -0
  240. package/src/concepts/New__.ts +73 -0
  241. package/src/concepts/Param__.ts +245 -199
  242. package/src/concepts/ProcessElement__.ts +43 -36
  243. package/src/concepts/ProcessOutcomes__.ts +90 -0
  244. package/src/concepts/Process__.ts +1 -23
  245. package/src/concepts/Return__.ts +11 -1
  246. package/src/concepts/SelectMembers__.ts +3 -3
  247. package/src/concepts/Transactional__.ts +7 -0
  248. package/src/concepts/TypeAnnotation__.ts +54 -49
  249. package/src/concepts/ValidationRule__.ts +19 -1
  250. package/src/concepts/Variable__.ts +12 -6
  251. package/src/concepts/ViewElement__.ts +26 -3
  252. package/src/concepts/View__.ts +25 -25
  253. package/src/concepts/basics/stdlib/nasl.auth.ts +1 -1
  254. package/src/concepts/basics/stdlib/nasl.logging.ts +5 -0
  255. package/src/concepts/basics/stdlib/nasl.ui.ts +2 -0
  256. package/src/concepts/basics/stdlib/nasl.util.ts +153 -19
  257. package/src/concepts/index__.ts +7 -0
  258. package/src/enums/KEYWORDS.ts +9 -0
  259. package/src/generator/genBundleFiles.ts +74 -245
  260. package/src/generator/genMetaData.ts +178 -78
  261. package/src/generator/genReleaseBody.ts +87 -44
  262. package/src/generator/index.ts +1 -0
  263. package/src/generator/permission.ts +261 -0
  264. package/src/index.ts +1 -1
  265. package/src/server/entity2LogicNamespace.ts +90 -10
  266. package/src/server/extendBaseNode.ts +33 -22
  267. package/src/server/formatTsUtils.ts +36 -46
  268. package/src/server/getLogics.ts +13 -1
  269. package/src/server/getMemberIdentifier.ts +5 -5
  270. package/src/server/getProcesses.ts +1 -1
  271. package/src/server/naslServer.ts +254 -71
  272. package/src/server/process2LogicNamespace.ts +8 -0
  273. package/src/server/translator.ts +51 -5
  274. package/src/service/creator/add.configs.js +4 -0
  275. package/src/service/datasource/api.js +11 -0
  276. package/src/service/datasource/index.js +6 -0
  277. package/src/service/storage/init.ts +12 -0
  278. package/src/service/video/VideoTranscribe.js +1 -0
  279. package/src/templator/genEditTableBlock.ts +8 -16
  280. package/src/templator/genGetBlock.ts +18 -19
  281. package/src/templator/genGridViewBlock.ts +18 -18
  282. package/src/templator/genListViewBlock.ts +8 -11
  283. package/src/templator/genTableBlock.ts +6 -10
  284. package/ts-worker/lib/tsserver.js +8 -1
  285. package/out/automate/engine/2.14-components.d.ts +0 -1115
  286. package/out/automate/engine/2.14-components.js +0 -1087
  287. package/out/automate/engine/2.14-components.js.map +0 -1
  288. package/out/concepts/ExternalDestination__.d.ts +0 -73
  289. package/out/concepts/ExternalDestination__.js +0 -264
  290. package/out/concepts/ExternalDestination__.js.map +0 -1
  291. package/out/concepts/MatchExpression__.d.ts +0 -97
  292. package/out/concepts/MatchExpression__.js +0 -281
  293. package/out/concepts/MatchExpression__.js.map +0 -1
  294. package/out/concepts/StringInterpolation__.d.ts +0 -113
  295. package/out/concepts/StringInterpolation__.js +0 -227
  296. package/out/concepts/StringInterpolation__.js.map +0 -1
  297. package/out/generator/genReleaseBody.d.ts +0 -41
  298. package/out/generator/genReleaseBody.js +0 -340
  299. package/out/generator/genReleaseBody.js.map +0 -1
  300. package/out/service/defaultErrorMessage.json +0 -97
  301. package/out/service/logic/api.d.ts +0 -9
  302. package/out/service/logic/api.js +0 -11
  303. package/out/service/logic/api.js.map +0 -1
  304. package/out/service/logic/index.d.ts +0 -2
  305. package/out/service/logic/index.js +0 -10
  306. package/out/service/logic/index.js.map +0 -1
  307. package/src/automate/engine/dist/index.dev.js +0 -517
  308. package/src/common/dist/BaseNode.js +0 -1101
  309. package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +0 -24
  310. package/src/concepts/dist/Anchor__.js +0 -179
  311. package/src/concepts/dist/Assignment__.js +0 -301
  312. package/src/concepts/dist/CallFunction__.js +0 -473
  313. package/src/concepts/dist/CallInterface__.js +0 -533
  314. package/src/concepts/dist/CallLogic__.js +0 -864
  315. package/src/concepts/dist/ForEachStatement__.js +0 -426
  316. package/src/concepts/dist/MatchCase__.js +0 -587
  317. package/src/concepts/dist/MemberExpression__.js +0 -348
  318. package/src/concepts/dist/Param__.js +0 -537
  319. package/src/concepts/dist/Return__.js +0 -493
  320. package/src/generator/dist/genBundleFiles.js +0 -414
  321. package/src/server/dist/formatTsUtils.js +0 -683
  322. package/src/server/dist/naslServer.js +0 -3396
  323. package/src/service/storage/dist/init.js +0 -541
  324. package/ts-worker/dist/webpack.config.dev.js +0 -104
  325. package/ts-worker/lib/dist/tsserver.dev.js +0 -22953
  326. package/ts-worker/sources/lib/dist/tsserver.dev.js +0 -22912
@@ -47,6 +47,8 @@ import {
47
47
  AnonymousFunction,
48
48
  MatchCase,
49
49
  OqlQueryComponent,
50
+ NewMap,
51
+ NewList,
50
52
  } from '../concepts';
51
53
  import { SourceMapItem } from '../translator';
52
54
  import { Diagnostic } from '../manager/diagnostic';
@@ -86,6 +88,8 @@ function transformType(tsType: string): string {
86
88
  return '无返回值';
87
89
  else if (tsType === '__elements')
88
90
  return '页面元素';
91
+ else if (tsType === '__unknown__')
92
+ return '无效';
89
93
  else if (tsType === 'extensions')
90
94
  return '拓展模块';
91
95
  else if (tsType === 'Promise<void>')
@@ -173,8 +177,13 @@ const TS_RULES: Array<{
173
177
  }> = [
174
178
  {
175
179
  re: /Object literal may only specify known properties, and '(.+?)' does not exist in type/,
176
- result: '当前参数$1,不可用',
177
- transforms: [outOriginalvalue],
180
+ result: '当前参数$1,不可用。',
181
+ transforms: [transformType],
182
+ },
183
+ {
184
+ re: /Object literal may only specify known properties, but '(.+?)' does not exist in type/,
185
+ result: '当前参数$1,不可用。',
186
+ transforms: [transformType],
178
187
  },
179
188
  {
180
189
  re: /Argument of type '(.+?)' is not assignable to parameter of type '(.+?)'/,
@@ -227,6 +236,10 @@ const TS_RULES: Array<{
227
236
  re: /Cannot find name '__(?:IDENTIFIER|LEFT|RIGHT)__'/,
228
237
  result: '表达式不能为空。',
229
238
  },
239
+ {
240
+ re: /Cannot find name '__(?:FRONTENDVARIABLES)__'/,
241
+ result: '前端全局变量:不可在非页面下使用。',
242
+ },
230
243
  {
231
244
  re: /Cannot find name '__(?:QueryFieldExpression)__'/,
232
245
  result: '数据查询:实体属性不能为空。',
@@ -362,6 +375,11 @@ const TS_RULES: Array<{
362
375
  re: /'__destinationEmpty__' is declared but its value is never read./,
363
376
  result: '任务未关联页面',
364
377
  },
378
+ {
379
+ re: /Variable '(.+?)' implicitly has an 'any' type./,
380
+ result: '$1推断不出类型!请连线或手动设置',
381
+ transforms: [transformType],
382
+ },
365
383
  ];
366
384
 
367
385
  const POST_RULES: Array<{
@@ -473,11 +491,13 @@ export function naslNodeTranslateMessage(minRange: MinRange, tsErrorDetail: Diag
473
491
  }
474
492
  }
475
493
 
476
- if (node instanceof ProcessElement && (node.type === 'ExclusiveGateway' || node.type === 'ParallelGateway')) {
494
+ if (node instanceof ProcessElement && (['ExclusiveGateway', 'ParallelGateway', 'InclusiveGateway'].includes(node.type))) {
477
495
  const reg = /Expected (.+?) arguments, but got (.+?)./.exec(text);
478
496
  let u = '排他网关';
479
497
  if (node.type === 'ParallelGateway') {
480
498
  u = '并行网关';
499
+ } else if (node.type === 'InclusiveGateway') {
500
+ u = '包容网关';
481
501
  }
482
502
  if (reg[2] === '0') {
483
503
  tsErrorDetail.message = `${u}出口顺序流和入口顺序流个数不能等于0`;
@@ -494,8 +514,15 @@ export function naslNodeTranslateMessage(minRange: MinRange, tsErrorDetail: Diag
494
514
  }
495
515
  // 赋值左右侧类型不一致, 把文字换一下
496
516
  if (/Argument of type '(.+?)' is not assignable to parameter of type '(.+?)'/.exec(text) && node.parentNode instanceof Assignment) {
497
- // node = node.getAncestor('CallLogic');
498
- tsErrorDetail.message = tsErrorDetail.message.replace('参数类型不一致!传入类型:', '赋值:类型不一致!右边类型:').replace('接收类型:', '左边类型:');
517
+ // OQL 的返回类型报错需要转换翻译,其内部 SQL 语句的参数类型报错不转换翻译
518
+ if (node instanceof OqlQueryComponent) {
519
+ if ((node.getCurrentSource().currentSource.range.start.line + 1) === tsErrorDetail.originalDiagnostic.start.line) {
520
+ tsErrorDetail.message = tsErrorDetail.message.replace('参数类型不一致!传入类型:', '赋值:类型不一致!右边类型:').replace('接收类型:', '左边类型:');
521
+ }
522
+ } else {
523
+ // node = node.getAncestor('CallLogic');
524
+ tsErrorDetail.message = tsErrorDetail.message.replace('参数类型不一致!传入类型:', '赋值:类型不一致!右边类型:').replace('接收类型:', '左边类型:');
525
+ }
499
526
  }
500
527
  if (node instanceof Argument || node instanceof Anchor) {
501
528
  // if (/Type '(.+?)' is not assignable to type '(.+?)'./.exec(text)) {
@@ -596,6 +623,14 @@ export function naslNodeTranslateMessage(minRange: MinRange, tsErrorDetail: Diag
596
623
  tsErrorDetail.message = identifierToString(node);
597
624
  }
598
625
  }
626
+
627
+ if (/'__UpdateNoProperty__' is declared but its value is never read./.exec(text)) {
628
+ tsErrorDetail.message = '局部更新:未选择任何属性';
629
+ const callLogic = node.parentNode.parentNode.parentNode as CallLogic;
630
+ const bodyArgument = callLogic.arguments.find(item => item.keyword === 'body');
631
+ node = bodyArgument.expression;
632
+ }
633
+
599
634
  // 左右类型不一致的,把上级信息带上
600
635
  if (/^Type '(.+?)' is not assignable to type '(.+?)'\./.exec(text) || /^This condition will always return '(.+?)' since the types '(.+?)' and '(.+?)' have no overlap./.exec(text)) {
601
636
  let str = tsErrorDetail.message;
@@ -607,6 +642,8 @@ export function naslNodeTranslateMessage(minRange: MinRange, tsErrorDetail: Diag
607
642
  tsErrorDetail.message = tsErrorDetail.message.replace('左右参数', '返回值')
608
643
  .replace('左边类型', '接收类型')
609
644
  .replace('右边类型', '传入类型');
645
+ } else if (text === `Type 'void' is not assignable to type 'never'.`) {
646
+ tsErrorDetail.message = `${node.name}推断不出类型!请连线或手动设置`;
610
647
  }
611
648
  }
612
649
  // 参数类型不一致!
@@ -636,6 +673,15 @@ export function naslNodeTranslateMessage(minRange: MinRange, tsErrorDetail: Diag
636
673
  node.isSmpty = true;
637
674
  }
638
675
  }
676
+ if (/Variable '(.+?)' implicitly has an 'any' type./.exec(text)) {
677
+ if (node.parentNode instanceof NewMap || node.parentNode instanceof NewList)
678
+ return;
679
+ // if (node.parentNode instanceof NewMap) {
680
+ // tsErrorDetail.message = 'newMap未设置类型,右侧属性' + tsErrorDetail.message.split('请连线或手动设置')[0];
681
+ // } else if (node.parentNode instanceof NewList) {
682
+ // tsErrorDetail.message = 'newList未设置类型,属性' + tsErrorDetail.message.split('请连线或手动设置')[0];
683
+ // }
684
+ }
639
685
  for (const rule of POST_RULES) {
640
686
  if (rule.re.test(tsErrorDetail.message))
641
687
  tsErrorDetail.message = tsErrorDetail.message.replace(rule.re, rule.result);
@@ -9,6 +9,10 @@ function httpCode(response, params, requestInfo) {
9
9
  if ((data.code === undefined) || (data.code + '').startsWith('2')) {
10
10
  return response;
11
11
  }
12
+ if (data.code === 401339 && data.msg === '租户已过期或禁用') {
13
+ location.href = '/dashboard/exception/tenantExpired';
14
+ return
15
+ }
12
16
  if (typeof window !== 'undefined' && new RegExp('^/designer').test(window.location.pathname)) {
13
17
  if (data.code === 401) {
14
18
  window.location.href = '/login';
@@ -0,0 +1,11 @@
1
+ export default {
2
+ pingDatabase: {
3
+ config: {
4
+ noErrorTip: true,
5
+ },
6
+ url: {
7
+ method: 'post',
8
+ path: '/api/v1/app/config/database/ping',
9
+ },
10
+ },
11
+ };
@@ -0,0 +1,6 @@
1
+ import { createService } from '../creator';
2
+ import api from './api';
3
+
4
+ const service = createService(api);
5
+
6
+ export default service;
@@ -436,6 +436,18 @@ export async function loadApp(appId?: string) {
436
436
  },
437
437
  });
438
438
  // const data = res?.data?.result;
439
+ // // mock数据,需要删除
440
+ // data[0].frontends = [];
441
+ // data?.[0].frontends.push({
442
+ // id: '111',
443
+ // concept: 'Frontend',
444
+ // name: 'pcFrontend1',
445
+ // title: 'pc端',
446
+ // type: 'pc',
447
+ // views: data?.[0].views,
448
+ // variables: data?.[0].frontendVariables,
449
+ // componentDependencies: data?.[0].componentDependencies,
450
+ // });
439
451
  app = new App(Object.assign(data?.[0], { id: appId }));
440
452
  } else if (config.storage.protocol === 'mock') {
441
453
  app = new App({
@@ -95,6 +95,7 @@ class VideoTranscribe {
95
95
  a.href = this.videoUrl;
96
96
  document.body.appendChild(a);
97
97
  a.click();
98
+ document.body.removeChild(a);
98
99
  }
99
100
  }
100
101
 
@@ -1,14 +1,10 @@
1
1
  import * as utils from '../utils';
2
- import { App, Module, Namespace, Entity, EntityProperty, DataSource } from '../concepts';
2
+ import { Entity, EntityProperty, DataSource } from '../concepts';
3
3
  import {
4
- getExpression, filterProperty, NameGroup,
5
- getFirstDisplayedProperty, getParamFromLogic, genCallComponentLogic,
6
- genMemberExpression, genLogicParam,
4
+ filterProperty, NameGroup, getFirstDisplayedProperty, getParamFromLogic,
5
+ genCallComponentLogic, genMemberExpression, genLogicParam,
7
6
  } from '.';
8
- import {
9
- NaslCoreTypeAnnotation, NaslUITypeAnnotation, NaslCollectionTypeAnnotation,
10
- NaslTypeAnnotation, NaslLogicItem, NaslNode,
11
- } from './utils';
7
+ import { NaslUITypeAnnotation, NaslLogicItem, NaslNode } from './utils';
12
8
 
13
9
  /**
14
10
  * 根据实体属性生成表格列模板
@@ -19,20 +15,16 @@ export function genEditTableColumnTemplate(entity: Entity, property: EntityPrope
19
15
  const lowerEntityName = utils.firstLowerCase(entity.name);
20
16
  const valueExpression = `current.item.${lowerEntityName}.${property.name}`;
21
17
  const title = property.label || property.name;
22
-
23
- const expression = getExpression(property, `current.item.${lowerEntityName}.${property.name}`);
24
-
25
18
  const canEditable = (property: EntityProperty) => !property.readonly;
26
-
27
19
  const getText = (property: EntityProperty) => {
28
20
  const propertyTypeName = property.typeAnnotation.typeName;
29
21
  if (propertyTypeName === 'Boolean') {
30
22
  return `
31
- <u-text v-if="${expression}" text="是"></u-text>
32
- <u-text v-if="!${expression}" text="否"></u-text>
23
+ <u-text v-if="${valueExpression}" text="是"></u-text>
24
+ <u-text v-if="!${valueExpression}" text="否"></u-text>
33
25
  `;
34
26
  } else {
35
- return `<u-text :text="${expression}"></u-text>`;
27
+ return `<u-text :text="${valueExpression}"></u-text>`;
36
28
  }
37
29
  };
38
30
 
@@ -120,7 +112,7 @@ export function genEditTableTemplate(entity: Entity, nameGroup: NameGroup, selec
120
112
  return `<u-table-view ref="${nameGroup.viewElementMainView}" :data-source="${nameGroup.viewLogicLoad}" data-schema="${nameGroup.structure}"
121
113
  value-field="${nameGroup.viewVariableEntity}.id"
122
114
  :pageable="true" :remote-paging="true" :show-sizer="true" :default-column-width="300" editable>
123
- <u-table-view-column type="index" width="60"><template #title><u-text text="序号"></u-text></template></u-table-view-column>
115
+ <u-table-view-column type="index" width="60"><template #title><u-text text="序号"></u-text></template><template #cell="current"></template></u-table-view-column>
124
116
 
125
117
  ${properties.map((property) => genEditTableColumnTemplate(entity, property, nameGroup, selectNameGroupMap) + '\n').join('')}
126
118
 
@@ -2,7 +2,7 @@ import { config } from '../config';
2
2
  import * as utils from '../utils';
3
3
  import { Entity, Logic, View, ViewElement } from '../concepts';
4
4
  import { NaslCoreTypeAnnotation, NaslTypeAnnotation, NaslLogicItem, NaslNode } from './utils';
5
- import { NameGroup, filterProperty, getExpression, genLogicParam } from '.';
5
+ import { NameGroup, filterProperty, genLogicParam } from '.';
6
6
 
7
7
  export function genGetTemplate(entity: Entity, nameGroup: NameGroup) {
8
8
  const properties = entity.properties.filter(filterProperty('inDetail'));
@@ -11,15 +11,14 @@ export function genGetTemplate(entity: Entity, nameGroup: NameGroup) {
11
11
  <u-info-list-group>
12
12
  <template #title><u-text text="基本信息"></u-text></template>
13
13
  ${properties
14
- .map((property) => {
15
- let formItem = ` <u-info-list-item><template #label><u-text text="${property.label || property.name}"></u-text></template>`;
16
-
17
- formItem += '<u-text :text="' + getExpression(property, `${nameGroup.viewVariableEntity}.${property.name}`) + '"></u-text>';
18
-
19
- formItem += ` </u-info-list-item>\n`;
20
- return formItem;
21
- })
22
- .join('')}
14
+ .map((property) => {
15
+ const valueExpression = `${nameGroup.viewVariableEntity}.${property.name}`;
16
+ let formItem = ` <u-info-list-item><template #label><u-text text="${property.label || property.name}"></u-text></template>`;
17
+ formItem += `<u-text :text="'${valueExpression}'"></u-text>`;
18
+ formItem += ` </u-info-list-item>\n`;
19
+ return formItem;
20
+ })
21
+ .join('')}
23
22
  </u-info-list-group>
24
23
  </u-info-list>`;
25
24
  }
@@ -55,16 +54,16 @@ export function genH5GetTemplate(entity: Entity, nameGroup: NameGroup) {
55
54
 
56
55
  return `<van-cell-group>
57
56
  ${properties
58
- .map((property) => {
59
- const temptitle = property.label || property.name;
60
- let formItem = ` <van-cell isLink`;
57
+ .map((property) => {
58
+ const temptitle = property.label || property.name;
59
+ let formItem = ` <van-cell isLink`;
61
60
 
62
- formItem += ' :value="' + getExpression(property, `${nameGroup.viewVariableEntity}.${property.name}`) + '">';
63
- formItem += `<template #title>${temptitle}</template>`;
64
- formItem += `<template>{{ ${getExpression(property, `${nameGroup.viewVariableEntity}.${property.name}`)} }}</template> </van-cell>\n`;
65
- return formItem;
66
- })
67
- .join('')}
61
+ formItem += ' :value="' + `${nameGroup.viewVariableEntity}.${property.name}` + '">';
62
+ formItem += `<template #title>${temptitle}</template>`;
63
+ formItem += `<template>{{ ${`${nameGroup.viewVariableEntity}.${property.name}`} }}</template> </van-cell>\n`;
64
+ return formItem;
65
+ })
66
+ .join('')}
68
67
  </van-cell-group>`;
69
68
  }
70
69
 
@@ -1,8 +1,7 @@
1
1
  import { config } from '../config';
2
2
  import * as utils from '../utils';
3
- import { App, Module, Namespace, Entity, EntityProperty, View, DataSource, ViewElement } from '../concepts';
3
+ import { App, Module, Namespace, Entity, EntityProperty, DataSource, ViewElement } from '../concepts';
4
4
  import {
5
- getExpression,
6
5
  filterProperty,
7
6
  NameGroup,
8
7
  genUniqueQueryNameGroup,
@@ -12,7 +11,7 @@ import {
12
11
  genCallComponentLogic,
13
12
  genQueryLogic,
14
13
  } from '.';
15
- import { NaslCoreTypeAnnotation, NaslUITypeAnnotation, NaslCollectionTypeAnnotation, NaslTypeAnnotation, NaslLogicItem, NaslNode } from './utils';
14
+ import { NaslUITypeAnnotation, NaslLogicItem, NaslNode } from './utils';
16
15
 
17
16
  /**
18
17
  * 根据实体属性生成表格列模板
@@ -23,7 +22,7 @@ export function genGridViewCardTemplate(property: EntityProperty, nameGroup: Nam
23
22
  const dataSource = entity.parentNode as DataSource;
24
23
  const lowerEntityName = utils.firstLowerCase(entity.name);
25
24
  const currentName = nameGroup.currentName || 'current';
26
- let expression = `${currentName}.item.${lowerEntityName}.${property.name}`;
25
+ let valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
27
26
  const title = property.label || property.name;
28
27
 
29
28
  if (property.relationEntity) {
@@ -33,23 +32,24 @@ export function genGridViewCardTemplate(property: EntityProperty, nameGroup: Nam
33
32
  const displayedProperty = getFirstDisplayedProperty(relationEntity);
34
33
  if (displayedProperty) {
35
34
  const relationLowerEntityName = utils.firstLowerCase(relationEntity.name);
36
- expression = getExpression(property, `${currentName}.item.${relationLowerEntityName}.${displayedProperty.name}`);
35
+ valueExpression = `${currentName}.item.${relationLowerEntityName}.${displayedProperty.name}`;
37
36
  } else
38
37
  return '';
39
38
  } else
40
39
  return '';
41
- } else
42
- expression = getExpression(property, `${currentName}.item.${lowerEntityName}.${property.name}`);
40
+ } else {
41
+ valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
43
42
 
43
+ }
44
44
  const getText = (property: EntityProperty) => {
45
45
  const propertyTypeName = property.typeAnnotation.typeName;
46
46
  if (propertyTypeName === 'Boolean') {
47
47
  return `
48
- <u-text v-if="${expression}" text="是"></u-text>
49
- <u-text v-if="!${expression}" text="否"></u-text>
48
+ <u-text v-if="${valueExpression}" text="是"></u-text>
49
+ <u-text v-if="!${valueExpression}" text="否"></u-text>
50
50
  `;
51
51
  } else {
52
- return `<u-text :text="${expression}"></u-text>`;
52
+ return `<u-text :text="${valueExpression}"></u-text>`;
53
53
  }
54
54
  };
55
55
 
@@ -64,7 +64,7 @@ export function genH5GridViewCardTemplate(property: EntityProperty, nameGroup?:
64
64
  const lowerEntityName = utils.firstLowerCase(entity.name);
65
65
 
66
66
  const currentName = nameGroup.currentName || 'current';
67
- let expression = `${currentName}.item.${lowerEntityName}.${property.name}`;
67
+ let valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
68
68
 
69
69
  if (property.relationEntity) {
70
70
  // 有外键关联
@@ -73,23 +73,23 @@ export function genH5GridViewCardTemplate(property: EntityProperty, nameGroup?:
73
73
  const displayedProperty = getFirstDisplayedProperty(relationEntity);
74
74
  if (displayedProperty) {
75
75
  const relationLowerEntityName = utils.firstLowerCase(relationEntity.name);
76
- expression = getExpression(property, `${currentName}.item.${relationLowerEntityName}.${displayedProperty.name}`);
76
+ valueExpression = `${currentName}.item.${relationLowerEntityName}.${displayedProperty.name}`;
77
77
  } else
78
78
  return '';
79
79
  } else
80
80
  return '';
81
- } else
82
- expression = getExpression(property, `${currentName}.item.${lowerEntityName}.${property.name}`);
83
-
81
+ } else {
82
+ valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
83
+ }
84
84
  const getText = (property: EntityProperty) => {
85
85
  const propertyTypeName = property.typeAnnotation.typeName;
86
86
  if (propertyTypeName === 'Boolean') {
87
87
  return `
88
- <van-text v-if="${expression}" text="是" display="block"></van-text>
89
- <van-text v-if="!${expression}" text="否" display="block"></van-text>
88
+ <van-text v-if="${valueExpression}" text="是" display="block"></van-text>
89
+ <van-text v-if="!${valueExpression}" text="否" display="block"></van-text>
90
90
  `;
91
91
  } else {
92
- return `<van-text :text="${expression}" display="block"></van-text>`;
92
+ return `<van-text :text="${valueExpression}" display="block"></van-text>`;
93
93
  }
94
94
  };
95
95
  return `${getText(property)}`;
@@ -1,24 +1,22 @@
1
1
  import { config } from '../config';
2
2
  import * as utils from '../utils';
3
- import { App, Module, Namespace, Entity, EntityProperty, View, DataSource, ViewElement } from '../concepts';
4
- import { getExpression, genUniqueQueryNameGroup, getFirstDisplayedProperty, genQueryLogic, genQueryStructure, genLogicParam } from '.';
3
+ import { App, Module, Namespace, Entity, EntityProperty, DataSource, ViewElement } from '../concepts';
4
+ import { genUniqueQueryNameGroup, getFirstDisplayedProperty, genQueryLogic, genLogicParam } from '.';
5
5
  import {
6
- NameGroup, NaslUITypeAnnotation, NaslCollectionTypeAnnotation,
7
- NaslTypeAnnotation, NaslLogicItem, NaslNode,
6
+ NameGroup, NaslUITypeAnnotation, NaslLogicItem, NaslNode,
8
7
  } from './utils';
9
8
 
10
9
  export function genListViewTemplate(property: EntityProperty, nameGroup: NameGroup) {
11
10
  const entity = property.entity;
12
11
  const lowerEntityName = utils.firstLowerCase(entity.name);
13
12
  const currentName = nameGroup.currentName || 'current';
14
-
15
- const expression = getExpression(property, `${currentName}.item.${lowerEntityName}.${property.name}`);
13
+ const valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
16
14
  return `<u-list-view ref="${nameGroup.viewElementMainView}" :data-source="${nameGroup.viewLogicLoad}" data-schema="${nameGroup.structure}"
17
15
  text-field="${nameGroup.viewVariableEntity}.${property.name}"
18
16
  value-field="${nameGroup.viewVariableEntity}.id" :pageable="true" :remote-paging="true">
19
17
  <template #item="current">
20
18
  <u-linear-layout>
21
- <u-text :text="${expression}"></u-text>
19
+ <u-text :text="${valueExpression}"></u-text>
22
20
  </u-linear-layout>
23
21
  </template>
24
22
  </u-list-view>`;
@@ -28,14 +26,13 @@ export function genH5ListViewTemplate(property: EntityProperty, nameGroup: NameG
28
26
  const entity = property.entity;
29
27
  const lowerEntityName = utils.firstLowerCase(entity.name);
30
28
  const currentName = nameGroup.currentName || 'current';
31
-
32
- const expression = getExpression(property, `${currentName}.item.${lowerEntityName}.${property.name}`);
29
+ const valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
33
30
  return `<van-list-view ref="${nameGroup.viewElementMainView}" :data-source="${nameGroup.viewLogicLoad}" data-schema="${nameGroup.structure}"
34
31
  text-field="${nameGroup.viewVariableEntity}.${property.name}"
35
32
  value-field="${nameGroup.viewVariableEntity}.id" pageable="auto-more" :remote-paging="true">
36
33
  <template #item="current">
37
- <van-cell :value="${expression}" isLink>
38
- <template #title>{{ ${expression} }}</template>
34
+ <van-cell :value="${valueExpression}" isLink>
35
+ <template #title>{{ ${valueExpression} }}</template>
39
36
  </van-cell>
40
37
  </template>
41
38
  </van-list-view>`;
@@ -1,7 +1,6 @@
1
1
  import * as utils from '../utils';
2
2
  import { App, Module, Namespace, Entity, EntityProperty, View, DataSource, ViewElement } from '../concepts';
3
3
  import {
4
- getExpression,
5
4
  filterProperty,
6
5
  NameGroup,
7
6
  genUniqueQueryNameGroup,
@@ -22,27 +21,24 @@ export function genTableColumnTemplate(property: EntityProperty, currentName: st
22
21
 
23
22
  const dataSource = entity.parentNode as DataSource;
24
23
  const lowerEntityName = utils.firstLowerCase(entity.name);
25
- let expression = `${currentName}.item.${lowerEntityName}.${property.name}`;
24
+ let valueExpression = `${currentName}.item.${lowerEntityName}.${property.name}`;
26
25
  const title = property.label || property.name;
27
26
 
28
27
  if (property.relationEntity) {
29
28
  const relationLowerEntityName = utils.firstLowerCase(property.relationEntity);
30
29
  const relationEntity = dataSource?.findEntityByName(property.relationEntity);
31
30
  const displayedProperty = getFirstDisplayedProperty(relationEntity);
32
- // 有外键关联
33
- expression = getExpression(property, `${currentName}.item.${relationLowerEntityName}.${displayedProperty?.name || property.relationProperty}`);
34
- } else {
35
- expression = getExpression(property, `${currentName}.item.${lowerEntityName}.${property.name}`);
31
+ valueExpression = `${currentName}.item.${relationLowerEntityName}.${displayedProperty?.name || property.relationProperty}`;
36
32
  }
37
33
 
38
34
  const getText = (property: EntityProperty) => {
39
35
  if (property.typeAnnotation.typeName === 'Boolean') {
40
36
  return `
41
- <u-text v-if="${expression}" text="是"></u-text>
42
- <u-text v-if="!${expression}" text="否"></u-text>
37
+ <u-text v-if="${valueExpression}" text="是"></u-text>
38
+ <u-text v-if="!${valueExpression}" text="否"></u-text>
43
39
  `;
44
40
  } else {
45
- return `<u-text :text="${expression}"></u-text>`;
41
+ return `<u-text :text="${valueExpression}"></u-text>`;
46
42
  }
47
43
  };
48
44
 
@@ -68,7 +64,7 @@ export function genTableTemplate(entity: Entity, nameGroup: NameGroup, modifyabl
68
64
  return `<u-table-view ref="${nameGroup.viewElementMainView}" :data-source="${nameGroup.viewLogicLoad}" data-schema="${nameGroup.structure}"
69
65
  value-field="${nameGroup.viewVariableEntity}.id"
70
66
  :pageable="true" :remote-paging="true" :show-sizer="true">
71
- <u-table-view-column type="index" width="60"><template #title><u-text text="序号"></u-text></template></u-table-view-column>
67
+ <u-table-view-column type="index" width="60"><template #title><u-text text="序号"></u-text></template><template #cell="current"></template></u-table-view-column>
72
68
 
73
69
  ${properties.map((property) => genTableColumnTemplate(property, currentName) + '\n').join('')}
74
70
 
@@ -176736,7 +176736,7 @@ var ts;
176736
176736
 
176737
176737
  function analyzeTypeNode(typeNode) {
176738
176738
  const typeInfo = {};
176739
- const { typeName, typeArguments, members } = typeNode || {};
176739
+ const { typeName, typeArguments, members, types } = typeNode || {};
176740
176740
  if (typeName) {
176741
176741
  const { left, right } = typeName || {};
176742
176742
  if (right) {
@@ -176745,6 +176745,8 @@ var ts;
176745
176745
  if (left) {
176746
176746
  typeInfo.typeNamespace = analyzeTypeNameSpace(left);
176747
176747
  }
176748
+ } else if(Array.isArray(types)) {
176749
+ typeInfo.typeName = 'Union';
176748
176750
  } else {
176749
176751
  typeInfo.typeKind = 'anonymousStructure';
176750
176752
  }
@@ -176753,6 +176755,11 @@ var ts;
176753
176755
  return analyzeTypeNode(typeArg);
176754
176756
  });
176755
176757
  }
176758
+ if (Array.isArray(types)) {
176759
+ typeInfo.typeArguments = types.map((typeArg) => {
176760
+ return analyzeTypeNode(typeArg);
176761
+ });
176762
+ }
176756
176763
  if (Array.isArray(members)) {
176757
176764
  const properties = members.map((member) => {
176758
176765
  const { name, type } = member || {};