@apimatic/cli 1.5.0 → 2.0.0-beta.2

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 (610) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -212
  3. package/apimatic.schema.json +550 -0
  4. package/lib/actions/action-result.js +3 -0
  5. package/lib/actions/action-result.js.map +1 -1
  6. package/lib/actions/api/transform.js +36 -33
  7. package/lib/actions/api/transform.js.map +1 -1
  8. package/lib/actions/api/validate.d.ts +9 -6
  9. package/lib/actions/api/validate.js +44 -38
  10. package/lib/actions/api/validate.js.map +1 -1
  11. package/lib/actions/auth/login.js +7 -4
  12. package/lib/actions/auth/login.js.map +1 -1
  13. package/lib/actions/auth/logout.js +2 -1
  14. package/lib/actions/auth/logout.js.map +1 -1
  15. package/lib/actions/auth/status.js +5 -3
  16. package/lib/actions/auth/status.js.map +1 -1
  17. package/lib/actions/plugin/generate.d.ts +5 -1
  18. package/lib/actions/plugin/generate.js +83 -56
  19. package/lib/actions/plugin/generate.js.map +1 -1
  20. package/lib/actions/plugin/publish.d.ts +2 -1
  21. package/lib/actions/plugin/publish.js +34 -37
  22. package/lib/actions/plugin/publish.js.map +1 -1
  23. package/lib/actions/plugin/record-metadata.d.ts +3 -2
  24. package/lib/actions/plugin/record-metadata.js +33 -30
  25. package/lib/actions/plugin/record-metadata.js.map +1 -1
  26. package/lib/actions/portal/generate.d.ts +8 -6
  27. package/lib/actions/portal/generate.js +50 -61
  28. package/lib/actions/portal/generate.js.map +1 -1
  29. package/lib/actions/portal/prepare-project.d.ts +25 -0
  30. package/lib/actions/portal/prepare-project.js +68 -0
  31. package/lib/actions/portal/prepare-project.js.map +1 -0
  32. package/lib/actions/portal/serve.d.ts +21 -6
  33. package/lib/actions/portal/serve.js +170 -153
  34. package/lib/actions/portal/serve.js.map +1 -1
  35. package/lib/actions/publishing/profile/list.js +4 -2
  36. package/lib/actions/publishing/profile/list.js.map +1 -1
  37. package/lib/actions/quickstart.d.ts +23 -5
  38. package/lib/actions/quickstart.js +221 -21
  39. package/lib/actions/quickstart.js.map +1 -1
  40. package/lib/actions/sdk/generate.d.ts +4 -7
  41. package/lib/actions/sdk/generate.js +53 -93
  42. package/lib/actions/sdk/generate.js.map +1 -1
  43. package/lib/actions/sdk/publish/interactive.d.ts +4 -3
  44. package/lib/actions/sdk/publish/interactive.js +96 -97
  45. package/lib/actions/sdk/publish/interactive.js.map +1 -1
  46. package/lib/actions/sdk/publish/non-interactive.d.ts +4 -2
  47. package/lib/actions/sdk/publish/non-interactive.js +91 -90
  48. package/lib/actions/sdk/publish/non-interactive.js.map +1 -1
  49. package/lib/actions/sdk/publish.d.ts +3 -2
  50. package/lib/actions/sdk/publish.js +55 -53
  51. package/lib/actions/sdk/publish.js.map +1 -1
  52. package/lib/actions/sdk/record-published-sdk.d.ts +14 -0
  53. package/lib/actions/sdk/record-published-sdk.js +57 -0
  54. package/lib/actions/sdk/record-published-sdk.js.map +1 -0
  55. package/lib/client-utils/auth-manager.js +1 -1
  56. package/lib/client-utils/auth-manager.js.map +1 -1
  57. package/lib/commands/api/transform.d.ts +1 -1
  58. package/lib/commands/api/transform.js +44 -40
  59. package/lib/commands/api/transform.js.map +1 -1
  60. package/lib/commands/api/validate.js +16 -16
  61. package/lib/commands/api/validate.js.map +1 -1
  62. package/lib/commands/auth/login.js +14 -15
  63. package/lib/commands/auth/login.js.map +1 -1
  64. package/lib/commands/auth/logout.js +5 -6
  65. package/lib/commands/auth/logout.js.map +1 -1
  66. package/lib/commands/auth/status.js +4 -5
  67. package/lib/commands/auth/status.js.map +1 -1
  68. package/lib/commands/plugin/generate.d.ts +3 -3
  69. package/lib/commands/plugin/generate.js +20 -20
  70. package/lib/commands/plugin/generate.js.map +1 -1
  71. package/lib/commands/plugin/publish.js +18 -18
  72. package/lib/commands/plugin/publish.js.map +1 -1
  73. package/lib/commands/portal/generate.d.ts +9 -8
  74. package/lib/commands/portal/generate.js +36 -27
  75. package/lib/commands/portal/generate.js.map +1 -1
  76. package/lib/commands/portal/serve.d.ts +7 -9
  77. package/lib/commands/portal/serve.js +41 -44
  78. package/lib/commands/portal/serve.js.map +1 -1
  79. package/lib/commands/publishing/profile/list.js +8 -12
  80. package/lib/commands/publishing/profile/list.js.map +1 -1
  81. package/lib/commands/quickstart.d.ts +5 -5
  82. package/lib/commands/quickstart.js +18 -24
  83. package/lib/commands/quickstart.js.map +1 -1
  84. package/lib/commands/sdk/generate.d.ts +5 -7
  85. package/lib/commands/sdk/generate.js +58 -70
  86. package/lib/commands/sdk/generate.js.map +1 -1
  87. package/lib/commands/sdk/publish.d.ts +6 -7
  88. package/lib/commands/sdk/publish.js +66 -60
  89. package/lib/commands/sdk/publish.js.map +1 -1
  90. package/lib/hooks/node-version.d.ts +3 -0
  91. package/lib/hooks/node-version.js +12 -0
  92. package/lib/hooks/node-version.js.map +1 -0
  93. package/lib/hooks/not-found.js +2 -3
  94. package/lib/hooks/not-found.js.map +1 -1
  95. package/lib/hooks/utils.d.ts +4 -2
  96. package/lib/hooks/utils.js +2 -2
  97. package/lib/hooks/utils.js.map +1 -1
  98. package/lib/infrastructure/env-info.d.ts +3 -0
  99. package/lib/infrastructure/env-info.js +13 -6
  100. package/lib/infrastructure/env-info.js.map +1 -1
  101. package/lib/infrastructure/file-service.d.ts +35 -8
  102. package/lib/infrastructure/file-service.js +149 -53
  103. package/lib/infrastructure/file-service.js.map +1 -1
  104. package/lib/infrastructure/file-watch-service.d.ts +40 -0
  105. package/lib/infrastructure/file-watch-service.js +167 -0
  106. package/lib/infrastructure/file-watch-service.js.map +1 -0
  107. package/lib/infrastructure/generation-status-poller.d.ts +8 -7
  108. package/lib/infrastructure/generation-status-poller.js +20 -12
  109. package/lib/infrastructure/generation-status-poller.js.map +1 -1
  110. package/lib/infrastructure/launcher-service.js +6 -6
  111. package/lib/infrastructure/launcher-service.js.map +1 -1
  112. package/lib/infrastructure/network-service.d.ts +3 -0
  113. package/lib/infrastructure/network-service.js +15 -1
  114. package/lib/infrastructure/network-service.js.map +1 -1
  115. package/lib/infrastructure/portal-build-service.d.ts +19 -0
  116. package/lib/infrastructure/portal-build-service.js +58 -0
  117. package/lib/infrastructure/portal-build-service.js.map +1 -0
  118. package/lib/infrastructure/portal-dev-server-service.d.ts +29 -0
  119. package/lib/infrastructure/portal-dev-server-service.js +135 -0
  120. package/lib/infrastructure/portal-dev-server-service.js.map +1 -0
  121. package/lib/infrastructure/portal-pages-service.d.ts +17 -0
  122. package/lib/infrastructure/portal-pages-service.js +103 -0
  123. package/lib/infrastructure/portal-pages-service.js.map +1 -0
  124. package/lib/infrastructure/portal-project-service.d.ts +77 -0
  125. package/lib/infrastructure/portal-project-service.js +309 -0
  126. package/lib/infrastructure/portal-project-service.js.map +1 -0
  127. package/lib/infrastructure/service-error.d.ts +1 -0
  128. package/lib/infrastructure/service-error.js +39 -41
  129. package/lib/infrastructure/service-error.js.map +1 -1
  130. package/lib/infrastructure/services/api-client-factory.js +15 -13
  131. package/lib/infrastructure/services/api-client-factory.js.map +1 -1
  132. package/lib/infrastructure/services/api-service.d.ts +7 -5
  133. package/lib/infrastructure/services/api-service.js +28 -20
  134. package/lib/infrastructure/services/api-service.js.map +1 -1
  135. package/lib/infrastructure/services/auth-service.js +4 -9
  136. package/lib/infrastructure/services/auth-service.js.map +1 -1
  137. package/lib/infrastructure/services/file-download-service.js +3 -3
  138. package/lib/infrastructure/services/file-download-service.js.map +1 -1
  139. package/lib/infrastructure/services/plugin-service.d.ts +1 -8
  140. package/lib/infrastructure/services/plugin-service.js +11 -22
  141. package/lib/infrastructure/services/plugin-service.js.map +1 -1
  142. package/lib/infrastructure/services/portal-artifacts-service.d.ts +44 -0
  143. package/lib/infrastructure/services/portal-artifacts-service.js +268 -0
  144. package/lib/infrastructure/services/portal-artifacts-service.js.map +1 -0
  145. package/lib/infrastructure/services/portal-authorization-service.d.ts +22 -0
  146. package/lib/infrastructure/services/portal-authorization-service.js +23 -0
  147. package/lib/infrastructure/services/portal-authorization-service.js.map +1 -0
  148. package/lib/infrastructure/services/publishing-api-service.d.ts +1 -1
  149. package/lib/infrastructure/services/publishing-api-service.js +11 -15
  150. package/lib/infrastructure/services/publishing-api-service.js.map +1 -1
  151. package/lib/infrastructure/services/sdk-generation-service.d.ts +21 -0
  152. package/lib/infrastructure/services/sdk-generation-service.js +118 -0
  153. package/lib/infrastructure/services/sdk-generation-service.js.map +1 -0
  154. package/lib/infrastructure/services/telemetry-service.js +5 -4
  155. package/lib/infrastructure/services/telemetry-service.js.map +1 -1
  156. package/lib/infrastructure/services/transformation-service.js +29 -32
  157. package/lib/infrastructure/services/transformation-service.js.map +1 -1
  158. package/lib/infrastructure/services/validation-service.d.ts +12 -53
  159. package/lib/infrastructure/services/validation-service.js +24 -199
  160. package/lib/infrastructure/services/validation-service.js.map +1 -1
  161. package/lib/infrastructure/timer-extensions.d.ts +2 -0
  162. package/lib/infrastructure/timer-extensions.js +10 -0
  163. package/lib/infrastructure/timer-extensions.js.map +1 -0
  164. package/lib/infrastructure/tmp-extensions.d.ts +31 -1
  165. package/lib/infrastructure/tmp-extensions.js +86 -3
  166. package/lib/infrastructure/tmp-extensions.js.map +1 -1
  167. package/lib/infrastructure/zip-service.js +2 -2
  168. package/lib/infrastructure/zip-service.js.map +1 -1
  169. package/lib/prompts/api/validate.d.ts +6 -7
  170. package/lib/prompts/api/validate.js +12 -12
  171. package/lib/prompts/api/validate.js.map +1 -1
  172. package/lib/prompts/format.d.ts +4 -0
  173. package/lib/prompts/format.js +5 -0
  174. package/lib/prompts/format.js.map +1 -1
  175. package/lib/prompts/plugin/generate.d.ts +17 -12
  176. package/lib/prompts/plugin/generate.js +94 -44
  177. package/lib/prompts/plugin/generate.js.map +1 -1
  178. package/lib/prompts/plugin/publish.d.ts +2 -1
  179. package/lib/prompts/plugin/publish.js +8 -7
  180. package/lib/prompts/plugin/publish.js.map +1 -1
  181. package/lib/prompts/plugin/record-metadata.d.ts +1 -0
  182. package/lib/prompts/plugin/record-metadata.js +10 -7
  183. package/lib/prompts/plugin/record-metadata.js.map +1 -1
  184. package/lib/prompts/portal/artifacts.d.ts +8 -0
  185. package/lib/prompts/portal/artifacts.js +26 -0
  186. package/lib/prompts/portal/artifacts.js.map +1 -0
  187. package/lib/prompts/portal/authorization.d.ts +6 -0
  188. package/lib/prompts/portal/authorization.js +29 -0
  189. package/lib/prompts/portal/authorization.js.map +1 -0
  190. package/lib/prompts/portal/code-samples.d.ts +1 -0
  191. package/lib/prompts/portal/code-samples.js +9 -0
  192. package/lib/prompts/portal/code-samples.js.map +1 -0
  193. package/lib/prompts/portal/generate.d.ts +14 -9
  194. package/lib/prompts/portal/generate.js +48 -26
  195. package/lib/prompts/portal/generate.js.map +1 -1
  196. package/lib/prompts/portal/prepare-project.d.ts +20 -0
  197. package/lib/prompts/portal/prepare-project.js +36 -0
  198. package/lib/prompts/portal/prepare-project.js.map +1 -0
  199. package/lib/prompts/portal/serve.d.ts +32 -12
  200. package/lib/prompts/portal/serve.js +100 -39
  201. package/lib/prompts/portal/serve.js.map +1 -1
  202. package/lib/prompts/portal/source.d.ts +26 -0
  203. package/lib/prompts/portal/source.js +253 -0
  204. package/lib/prompts/portal/source.js.map +1 -0
  205. package/lib/prompts/prompt.d.ts +11 -3
  206. package/lib/prompts/prompt.js +39 -15
  207. package/lib/prompts/prompt.js.map +1 -1
  208. package/lib/prompts/quickstart.d.ts +46 -3
  209. package/lib/prompts/quickstart.js +193 -12
  210. package/lib/prompts/quickstart.js.map +1 -1
  211. package/lib/prompts/sdk/generate.d.ts +15 -13
  212. package/lib/prompts/sdk/generate.js +29 -32
  213. package/lib/prompts/sdk/generate.js.map +1 -1
  214. package/lib/prompts/sdk/publish/interactive.d.ts +10 -6
  215. package/lib/prompts/sdk/publish/interactive.js +26 -24
  216. package/lib/prompts/sdk/publish/interactive.js.map +1 -1
  217. package/lib/prompts/sdk/publish/non-interactive.d.ts +2 -1
  218. package/lib/prompts/sdk/publish/non-interactive.js +5 -4
  219. package/lib/prompts/sdk/publish/non-interactive.js.map +1 -1
  220. package/lib/prompts/sdk/publish.d.ts +3 -3
  221. package/lib/prompts/sdk/publish.js +13 -17
  222. package/lib/prompts/sdk/publish.js.map +1 -1
  223. package/lib/prompts/sdk/record-published-sdk.d.ts +7 -0
  224. package/lib/prompts/sdk/record-published-sdk.js +26 -0
  225. package/lib/prompts/sdk/record-published-sdk.js.map +1 -0
  226. package/lib/types/apimatic-config/document.d.ts +68 -0
  227. package/lib/types/apimatic-config/document.js +161 -0
  228. package/lib/types/apimatic-config/document.js.map +1 -0
  229. package/lib/types/apimatic-config/languages-block.d.ts +39 -0
  230. package/lib/types/apimatic-config/languages-block.js +58 -0
  231. package/lib/types/apimatic-config/languages-block.js.map +1 -0
  232. package/lib/types/apimatic-config-context.d.ts +48 -0
  233. package/lib/types/apimatic-config-context.js +121 -0
  234. package/lib/types/apimatic-config-context.js.map +1 -0
  235. package/lib/types/build/build.d.ts +1 -89
  236. package/lib/types/build/build.js +6 -161
  237. package/lib/types/build/build.js.map +1 -1
  238. package/lib/types/events/domain-event.js +3 -0
  239. package/lib/types/events/domain-event.js.map +1 -1
  240. package/lib/types/events/quickstart-completed.js +3 -3
  241. package/lib/types/events/quickstart-completed.js.map +1 -1
  242. package/lib/types/events/quickstart-initiated.js +3 -3
  243. package/lib/types/events/quickstart-initiated.js.map +1 -1
  244. package/lib/types/events/sdk-publish-validation-failed.js +1 -1
  245. package/lib/types/events/sdk-publish-validation-failed.js.map +1 -1
  246. package/lib/types/file/directory.d.ts +4 -9
  247. package/lib/types/file/directory.js +17 -65
  248. package/lib/types/file/directory.js.map +1 -1
  249. package/lib/types/file/directoryPath.d.ts +17 -0
  250. package/lib/types/file/directoryPath.js +47 -2
  251. package/lib/types/file/directoryPath.js.map +1 -1
  252. package/lib/types/file/fileName.d.ts +8 -0
  253. package/lib/types/file/fileName.js +28 -6
  254. package/lib/types/file/fileName.js.map +1 -1
  255. package/lib/types/file/filePath.d.ts +18 -2
  256. package/lib/types/file/filePath.js +39 -4
  257. package/lib/types/file/filePath.js.map +1 -1
  258. package/lib/types/file/resource-input.js +1 -2
  259. package/lib/types/file/resource-input.js.map +1 -1
  260. package/lib/types/file/urlPath.js +2 -1
  261. package/lib/types/file/urlPath.js.map +1 -1
  262. package/lib/types/flags-provider.js +22 -22
  263. package/lib/types/flags-provider.js.map +1 -1
  264. package/lib/types/package-settings-context.js +2 -1
  265. package/lib/types/package-settings-context.js.map +1 -1
  266. package/lib/types/plugin/plugin-config.d.ts +10 -50
  267. package/lib/types/plugin/plugin-config.js +7 -1
  268. package/lib/types/plugin/plugin-config.js.map +1 -1
  269. package/lib/types/plugin-config-context.d.ts +30 -37
  270. package/lib/types/plugin-config-context.js +108 -139
  271. package/lib/types/plugin-config-context.js.map +1 -1
  272. package/lib/types/plugin-context.js +3 -2
  273. package/lib/types/plugin-context.js.map +1 -1
  274. package/lib/types/portal/code-samples.d.ts +27 -0
  275. package/lib/types/portal/code-samples.js +67 -0
  276. package/lib/types/portal/code-samples.js.map +1 -0
  277. package/lib/types/portal/config/ai-config.d.ts +15 -0
  278. package/lib/types/portal/config/ai-config.js +26 -0
  279. package/lib/types/portal/config/ai-config.js.map +1 -0
  280. package/lib/types/portal/config/brand-config.d.ts +55 -0
  281. package/lib/types/portal/config/brand-config.js +105 -0
  282. package/lib/types/portal/config/brand-config.js.map +1 -0
  283. package/lib/types/portal/config/color.d.ts +19 -0
  284. package/lib/types/portal/config/color.js +43 -0
  285. package/lib/types/portal/config/color.js.map +1 -0
  286. package/lib/types/portal/config/fields.d.ts +23 -0
  287. package/lib/types/portal/config/fields.js +67 -0
  288. package/lib/types/portal/config/fields.js.map +1 -0
  289. package/lib/types/portal/config/link.d.ts +18 -0
  290. package/lib/types/portal/config/link.js +72 -0
  291. package/lib/types/portal/config/link.js.map +1 -0
  292. package/lib/types/portal/config/navigation-config.d.ts +13 -0
  293. package/lib/types/portal/config/navigation-config.js +30 -0
  294. package/lib/types/portal/config/navigation-config.js.map +1 -0
  295. package/lib/types/portal/config/site-config.d.ts +32 -0
  296. package/lib/types/portal/config/site-config.js +88 -0
  297. package/lib/types/portal/config/site-config.js.map +1 -0
  298. package/lib/types/portal/config/static-asset.d.ts +25 -0
  299. package/lib/types/portal/config/static-asset.js +77 -0
  300. package/lib/types/portal/config/static-asset.js.map +1 -0
  301. package/lib/types/portal/content-notices.d.ts +20 -0
  302. package/lib/types/portal/content-notices.js +2 -0
  303. package/lib/types/portal/content-notices.js.map +1 -0
  304. package/lib/types/portal/content-tree.d.ts +103 -0
  305. package/lib/types/portal/content-tree.js +344 -0
  306. package/lib/types/portal/content-tree.js.map +1 -0
  307. package/lib/types/portal/endpoint.d.ts +6 -0
  308. package/lib/types/portal/endpoint.js +12 -0
  309. package/lib/types/portal/endpoint.js.map +1 -0
  310. package/lib/types/portal/generated-pages.d.ts +68 -0
  311. package/lib/types/portal/generated-pages.js +111 -0
  312. package/lib/types/portal/generated-pages.js.map +1 -0
  313. package/lib/types/portal/generation-status.d.ts +31 -0
  314. package/lib/types/portal/generation-status.js +26 -0
  315. package/lib/types/portal/generation-status.js.map +1 -0
  316. package/lib/types/portal/openapi-document.d.ts +48 -0
  317. package/lib/types/portal/openapi-document.js +138 -0
  318. package/lib/types/portal/openapi-document.js.map +1 -0
  319. package/lib/types/portal/page-fragments.d.ts +13 -0
  320. package/lib/types/portal/page-fragments.js +24 -0
  321. package/lib/types/portal/page-fragments.js.map +1 -0
  322. package/lib/types/portal/page-template.d.ts +15 -0
  323. package/lib/types/portal/page-template.js +64 -0
  324. package/lib/types/portal/page-template.js.map +1 -0
  325. package/lib/types/portal/page.d.ts +24 -0
  326. package/lib/types/portal/page.js +100 -0
  327. package/lib/types/portal/page.js.map +1 -0
  328. package/lib/types/portal/portal-artifacts.d.ts +25 -0
  329. package/lib/types/portal/portal-artifacts.js +30 -0
  330. package/lib/types/portal/portal-artifacts.js.map +1 -0
  331. package/lib/types/portal/portal-config.d.ts +69 -0
  332. package/lib/types/portal/portal-config.js +105 -0
  333. package/lib/types/portal/portal-config.js.map +1 -0
  334. package/lib/types/portal/portal-downloads.d.ts +8 -0
  335. package/lib/types/portal/portal-downloads.js +14 -0
  336. package/lib/types/portal/portal-downloads.js.map +1 -0
  337. package/lib/types/portal/portal-languages.d.ts +15 -0
  338. package/lib/types/portal/portal-languages.js +45 -0
  339. package/lib/types/portal/portal-languages.js.map +1 -0
  340. package/lib/types/portal/portal-navigation.d.ts +65 -0
  341. package/lib/types/portal/portal-navigation.js +217 -0
  342. package/lib/types/portal/portal-navigation.js.map +1 -0
  343. package/lib/types/portal/portal-sdk.d.ts +15 -0
  344. package/lib/types/portal/portal-sdk.js +28 -0
  345. package/lib/types/portal/portal-sdk.js.map +1 -0
  346. package/lib/types/portal/portal-source.d.ts +129 -0
  347. package/lib/types/portal/portal-source.js +2 -0
  348. package/lib/types/portal/portal-source.js.map +1 -0
  349. package/lib/types/portal/portal-stylesheet.d.ts +19 -0
  350. package/lib/types/portal/portal-stylesheet.js +40 -0
  351. package/lib/types/portal/portal-stylesheet.js.map +1 -0
  352. package/lib/types/portal/portal-tabs.d.ts +33 -0
  353. package/lib/types/portal/portal-tabs.js +38 -0
  354. package/lib/types/portal/portal-tabs.js.map +1 -0
  355. package/lib/types/portal/preview-config.d.ts +20 -0
  356. package/lib/types/portal/preview-config.js +32 -0
  357. package/lib/types/portal/preview-config.js.map +1 -0
  358. package/lib/types/portal/preview-content.d.ts +18 -0
  359. package/lib/types/portal/preview-content.js +50 -0
  360. package/lib/types/portal/preview-content.js.map +1 -0
  361. package/lib/types/portal/published-package.d.ts +12 -0
  362. package/lib/types/portal/published-package.js +35 -0
  363. package/lib/types/portal/published-package.js.map +1 -0
  364. package/lib/types/portal/unknown-fields.d.ts +5 -0
  365. package/lib/types/portal/unknown-fields.js +10 -0
  366. package/lib/types/portal/unknown-fields.js.map +1 -0
  367. package/lib/types/portal-context.d.ts +38 -6
  368. package/lib/types/portal-context.js +71 -24
  369. package/lib/types/portal-context.js.map +1 -1
  370. package/lib/types/portal-source-context.d.ts +77 -0
  371. package/lib/types/portal-source-context.js +408 -0
  372. package/lib/types/portal-source-context.js.map +1 -0
  373. package/lib/types/project-context.d.ts +49 -0
  374. package/lib/types/project-context.js +151 -0
  375. package/lib/types/project-context.js.map +1 -0
  376. package/lib/types/project-layout.d.ts +9 -0
  377. package/lib/types/project-layout.js +10 -0
  378. package/lib/types/project-layout.js.map +1 -0
  379. package/lib/types/publish/package-settings-configuration.d.ts +2 -0
  380. package/lib/types/publish/profile-id.js +1 -0
  381. package/lib/types/publish/profile-id.js.map +1 -1
  382. package/lib/types/publish/publishing-profile.d.ts +3 -1
  383. package/lib/types/publish/publishing-profile.js +33 -15
  384. package/lib/types/publish/publishing-profile.js.map +1 -1
  385. package/lib/types/publish/publishing-profiles.js +2 -1
  386. package/lib/types/publish/publishing-profiles.js.map +1 -1
  387. package/lib/types/publish/version.js +1 -0
  388. package/lib/types/publish/version.js.map +1 -1
  389. package/lib/types/resource-context.js +3 -2
  390. package/lib/types/resource-context.js.map +1 -1
  391. package/lib/types/sdk/generate.d.ts +22 -16
  392. package/lib/types/sdk/generate.js +64 -41
  393. package/lib/types/sdk/generate.js.map +1 -1
  394. package/lib/types/sdk/stability-choice.d.ts +12 -0
  395. package/lib/types/sdk/stability-choice.js +24 -0
  396. package/lib/types/sdk/stability-choice.js.map +1 -0
  397. package/lib/types/sdk-context.d.ts +4 -5
  398. package/lib/types/sdk-context.js +10 -18
  399. package/lib/types/sdk-context.js.map +1 -1
  400. package/lib/types/spec-context.d.ts +5 -4
  401. package/lib/types/spec-context.js +9 -8
  402. package/lib/types/spec-context.js.map +1 -1
  403. package/lib/types/temp-context.d.ts +1 -1
  404. package/lib/types/temp-context.js +5 -4
  405. package/lib/types/temp-context.js.map +1 -1
  406. package/lib/types/transform-context.d.ts +9 -5
  407. package/lib/types/transform-context.js +21 -18
  408. package/lib/types/transform-context.js.map +1 -1
  409. package/lib/utils/error-utils.d.ts +2 -0
  410. package/lib/utils/error-utils.js +5 -0
  411. package/lib/utils/error-utils.js.map +1 -0
  412. package/lib/utils/json-utils.d.ts +2 -0
  413. package/lib/utils/json-utils.js +4 -0
  414. package/lib/utils/json-utils.js.map +1 -0
  415. package/lib/utils/string-utils.d.ts +8 -1
  416. package/lib/utils/string-utils.js +13 -26
  417. package/lib/utils/string-utils.js.map +1 -1
  418. package/lib/utils/utils.d.ts +1 -3
  419. package/lib/utils/utils.js +12 -40
  420. package/lib/utils/utils.js.map +1 -1
  421. package/oclif.manifest.json +154 -442
  422. package/package.json +47 -25
  423. package/portal-pages/context-plugin.mdx +26 -0
  424. package/portal-pages/sdk.mdx +8 -0
  425. package/portal-pages/sdks.mdx +11 -0
  426. package/portal-template/NOTICE +37 -0
  427. package/portal-template/downloads.ts +41 -0
  428. package/portal-template/generated-pages-reload.ts +51 -0
  429. package/portal-template/package.json +11 -0
  430. package/portal-template/portal-config.ts +32 -0
  431. package/portal-template/prerender-pages.ts +81 -0
  432. package/portal-template/spec-reload.ts +26 -0
  433. package/portal-template/src/components/api-page.tsx +15 -0
  434. package/portal-template/src/components/code-block.tsx +9 -0
  435. package/portal-template/src/components/command-block.tsx +50 -0
  436. package/portal-template/src/components/example-layout.tsx +99 -0
  437. package/portal-template/src/components/logos.tsx +127 -0
  438. package/portal-template/src/components/mdx.tsx +28 -0
  439. package/portal-template/src/components/not-found.tsx +11 -0
  440. package/portal-template/src/components/plugin-install.tsx +22 -0
  441. package/portal-template/src/components/plugin-support.tsx +53 -0
  442. package/portal-template/src/components/sdk-actions.tsx +79 -0
  443. package/portal-template/src/components/sdk-cards.tsx +100 -0
  444. package/portal-template/src/components/search.tsx +41 -0
  445. package/portal-template/src/components/usage-tabs.tsx +92 -0
  446. package/portal-template/src/lib/code-samples.server.ts +40 -0
  447. package/portal-template/src/lib/code-samples.ts +43 -0
  448. package/portal-template/src/lib/code-titles.ts +29 -0
  449. package/portal-template/src/lib/install-command.ts +13 -0
  450. package/portal-template/src/lib/json.ts +5 -0
  451. package/portal-template/src/lib/layout.shared.tsx +41 -0
  452. package/portal-template/src/lib/layout.tsx +16 -0
  453. package/portal-template/src/lib/llms.server.ts +54 -0
  454. package/portal-template/src/lib/media-adapters.ts +34 -0
  455. package/portal-template/src/lib/navigation.ts +406 -0
  456. package/portal-template/src/lib/openapi-bundle.server.ts +343 -0
  457. package/portal-template/src/lib/openapi-filter.ts +191 -0
  458. package/portal-template/src/lib/openapi-labels.ts +15 -0
  459. package/portal-template/src/lib/openapi-methods.ts +12 -0
  460. package/portal-template/src/lib/openapi-section.server.ts +280 -0
  461. package/portal-template/src/lib/openapi-slim.ts +202 -0
  462. package/portal-template/src/lib/openapi.server.ts +16 -0
  463. package/portal-template/src/lib/portal-types.ts +36 -0
  464. package/portal-template/src/lib/portal.server.ts +13 -0
  465. package/portal-template/src/lib/portal.ts +11 -0
  466. package/portal-template/src/lib/rehype-code-titles.ts +53 -0
  467. package/portal-template/src/lib/request-examples.ts +72 -0
  468. package/portal-template/src/lib/seo.ts +21 -0
  469. package/portal-template/src/lib/shared.ts +51 -0
  470. package/portal-template/src/lib/shiki-bundle.ts +104 -0
  471. package/portal-template/src/lib/sitemap.server.ts +20 -0
  472. package/portal-template/src/lib/source.server.ts +27 -0
  473. package/portal-template/src/lib/source.ts +49 -0
  474. package/portal-template/src/lib/tabs.ts +37 -0
  475. package/portal-template/src/router.tsx +12 -0
  476. package/portal-template/src/routes/$.tsx +194 -0
  477. package/portal-template/src/routes/__root.tsx +56 -0
  478. package/portal-template/src/routes/api/search[.]json.ts +9 -0
  479. package/portal-template/src/routes/llms-full[.]txt.ts +10 -0
  480. package/portal-template/src/routes/llms[.]txt.ts +10 -0
  481. package/portal-template/src/routes/robots[.]txt.ts +10 -0
  482. package/portal-template/src/routes/sitemap[.]xml.ts +10 -0
  483. package/portal-template/src/routes/spa-shell.tsx +7 -0
  484. package/portal-template/src/routes/{$}[.]md.ts +21 -0
  485. package/portal-template/src/styles/app.css +33 -0
  486. package/portal-template/tsconfig.json +26 -0
  487. package/portal-template/vite.config.ts +68 -0
  488. package/lib/actions/plugin/record-sdk.d.ts +0 -14
  489. package/lib/actions/plugin/record-sdk.js +0 -60
  490. package/lib/actions/plugin/record-sdk.js.map +0 -1
  491. package/lib/actions/portal/copilot.d.ts +0 -17
  492. package/lib/actions/portal/copilot.js +0 -89
  493. package/lib/actions/portal/copilot.js.map +0 -1
  494. package/lib/actions/portal/quickstart.d.ts +0 -18
  495. package/lib/actions/portal/quickstart.js +0 -238
  496. package/lib/actions/portal/quickstart.js.map +0 -1
  497. package/lib/actions/portal/recipe/new-recipe.d.ts +0 -15
  498. package/lib/actions/portal/recipe/new-recipe.js +0 -177
  499. package/lib/actions/portal/recipe/new-recipe.js.map +0 -1
  500. package/lib/actions/portal/toc/new-toc.d.ts +0 -21
  501. package/lib/actions/portal/toc/new-toc.js +0 -95
  502. package/lib/actions/portal/toc/new-toc.js.map +0 -1
  503. package/lib/actions/sdk/merge-source-tree.d.ts +0 -12
  504. package/lib/actions/sdk/merge-source-tree.js +0 -78
  505. package/lib/actions/sdk/merge-source-tree.js.map +0 -1
  506. package/lib/actions/sdk/quickstart.d.ts +0 -18
  507. package/lib/actions/sdk/quickstart.js +0 -188
  508. package/lib/actions/sdk/quickstart.js.map +0 -1
  509. package/lib/actions/sdk/save-changes.d.ts +0 -8
  510. package/lib/actions/sdk/save-changes.js +0 -93
  511. package/lib/actions/sdk/save-changes.js.map +0 -1
  512. package/lib/application/portal/recipe/portal-recipe.d.ts +0 -8
  513. package/lib/application/portal/recipe/portal-recipe.js +0 -33
  514. package/lib/application/portal/recipe/portal-recipe.js.map +0 -1
  515. package/lib/application/portal/recipe/recipe-generator.d.ts +0 -21
  516. package/lib/application/portal/recipe/recipe-generator.js +0 -130
  517. package/lib/application/portal/recipe/recipe-generator.js.map +0 -1
  518. package/lib/application/portal/toc/toc-content-parser.d.ts +0 -5
  519. package/lib/application/portal/toc/toc-content-parser.js +0 -44
  520. package/lib/application/portal/toc/toc-content-parser.js.map +0 -1
  521. package/lib/application/portal/toc/toc-structure-generator.d.ts +0 -11
  522. package/lib/application/portal/toc/toc-structure-generator.js +0 -165
  523. package/lib/application/portal/toc/toc-structure-generator.js.map +0 -1
  524. package/lib/commands/portal/copilot.d.ts +0 -13
  525. package/lib/commands/portal/copilot.js +0 -34
  526. package/lib/commands/portal/copilot.js.map +0 -1
  527. package/lib/commands/portal/recipe/new.d.ts +0 -12
  528. package/lib/commands/portal/recipe/new.js +0 -45
  529. package/lib/commands/portal/recipe/new.js.map +0 -1
  530. package/lib/commands/portal/toc/new.d.ts +0 -16
  531. package/lib/commands/portal/toc/new.js +0 -68
  532. package/lib/commands/portal/toc/new.js.map +0 -1
  533. package/lib/commands/sdk/save-changes.d.ts +0 -14
  534. package/lib/commands/sdk/save-changes.js +0 -51
  535. package/lib/commands/sdk/save-changes.js.map +0 -1
  536. package/lib/infrastructure/debounce-service.d.ts +0 -10
  537. package/lib/infrastructure/debounce-service.js +0 -55
  538. package/lib/infrastructure/debounce-service.js.map +0 -1
  539. package/lib/infrastructure/services/portal-service.d.ts +0 -43
  540. package/lib/infrastructure/services/portal-service.js +0 -337
  541. package/lib/infrastructure/services/portal-service.js.map +0 -1
  542. package/lib/prompts/plugin/record-sdk.d.ts +0 -9
  543. package/lib/prompts/plugin/record-sdk.js +0 -40
  544. package/lib/prompts/plugin/record-sdk.js.map +0 -1
  545. package/lib/prompts/portal/copilot.d.ts +0 -18
  546. package/lib/prompts/portal/copilot.js +0 -82
  547. package/lib/prompts/portal/copilot.js.map +0 -1
  548. package/lib/prompts/portal/quickstart.d.ts +0 -42
  549. package/lib/prompts/portal/quickstart.js +0 -243
  550. package/lib/prompts/portal/quickstart.js.map +0 -1
  551. package/lib/prompts/portal/recipe/new-recipe.d.ts +0 -29
  552. package/lib/prompts/portal/recipe/new-recipe.js +0 -165
  553. package/lib/prompts/portal/recipe/new-recipe.js.map +0 -1
  554. package/lib/prompts/portal/toc/new-toc.d.ts +0 -16
  555. package/lib/prompts/portal/toc/new-toc.js +0 -50
  556. package/lib/prompts/portal/toc/new-toc.js.map +0 -1
  557. package/lib/prompts/sdk/merge-source-tree.d.ts +0 -22
  558. package/lib/prompts/sdk/merge-source-tree.js +0 -90
  559. package/lib/prompts/sdk/merge-source-tree.js.map +0 -1
  560. package/lib/prompts/sdk/quickstart.d.ts +0 -38
  561. package/lib/prompts/sdk/quickstart.js +0 -196
  562. package/lib/prompts/sdk/quickstart.js.map +0 -1
  563. package/lib/prompts/sdk/save-changes.d.ts +0 -21
  564. package/lib/prompts/sdk/save-changes.js +0 -84
  565. package/lib/prompts/sdk/save-changes.js.map +0 -1
  566. package/lib/types/build-context.d.ts +0 -26
  567. package/lib/types/build-context.js +0 -111
  568. package/lib/types/build-context.js.map +0 -1
  569. package/lib/types/events/recipe-creation-failed.d.ts +0 -5
  570. package/lib/types/events/recipe-creation-failed.js +0 -8
  571. package/lib/types/events/recipe-creation-failed.js.map +0 -1
  572. package/lib/types/events/sdk-changes-saved.d.ts +0 -8
  573. package/lib/types/events/sdk-changes-saved.js +0 -11
  574. package/lib/types/events/sdk-changes-saved.js.map +0 -1
  575. package/lib/types/events/sdk-changes-tracked.d.ts +0 -8
  576. package/lib/types/events/sdk-changes-tracked.js +0 -11
  577. package/lib/types/events/sdk-changes-tracked.js.map +0 -1
  578. package/lib/types/events/sdk-conflicts-resolved.d.ts +0 -8
  579. package/lib/types/events/sdk-conflicts-resolved.js +0 -11
  580. package/lib/types/events/sdk-conflicts-resolved.js.map +0 -1
  581. package/lib/types/events/toc-creation-failed.d.ts +0 -5
  582. package/lib/types/events/toc-creation-failed.js +0 -8
  583. package/lib/types/events/toc-creation-failed.js.map +0 -1
  584. package/lib/types/merge-source-tree-context.d.ts +0 -28
  585. package/lib/types/merge-source-tree-context.js +0 -63
  586. package/lib/types/merge-source-tree-context.js.map +0 -1
  587. package/lib/types/plugin/language-entry.d.ts +0 -9
  588. package/lib/types/plugin/language-entry.js +0 -64
  589. package/lib/types/plugin/language-entry.js.map +0 -1
  590. package/lib/types/recipe/recipe.d.ts +0 -22
  591. package/lib/types/recipe/recipe.js +0 -6
  592. package/lib/types/recipe/recipe.js.map +0 -1
  593. package/lib/types/recipe-context.d.ts +0 -9
  594. package/lib/types/recipe-context.js +0 -26
  595. package/lib/types/recipe-context.js.map +0 -1
  596. package/lib/types/save-changes-context.d.ts +0 -17
  597. package/lib/types/save-changes-context.js +0 -42
  598. package/lib/types/save-changes-context.js.map +0 -1
  599. package/lib/types/sdl/sdl.d.ts +0 -10
  600. package/lib/types/sdl/sdl.js +0 -18
  601. package/lib/types/sdl/sdl.js.map +0 -1
  602. package/lib/types/toc/toc-components.d.ts +0 -36
  603. package/lib/types/toc/toc-components.js +0 -94
  604. package/lib/types/toc/toc-components.js.map +0 -1
  605. package/lib/types/toc/toc.d.ts +0 -67
  606. package/lib/types/toc/toc.js +0 -2
  607. package/lib/types/toc/toc.js.map +0 -1
  608. package/lib/types/toc-context.d.ts +0 -12
  609. package/lib/types/toc-context.js +0 -26
  610. package/lib/types/toc-context.js.map +0 -1
@@ -0,0 +1,268 @@
1
+ import axios from 'axios';
2
+ import FormData from 'form-data';
3
+ import { err, ok } from 'neverthrow';
4
+ import { getAuthInfo } from '../../client-utils/auth-manager.js';
5
+ import { FileName } from '../../types/file/fileName.js';
6
+ import { FilePath } from '../../types/file/filePath.js';
7
+ import { CodeSampleCatalog, CodeSampleCatalogs } from '../../types/portal/code-samples.js';
8
+ import { PortalArtifactsGenerationStatus } from '../../types/portal/generation-status.js';
9
+ import { PortalArtifacts } from '../../types/portal/portal-artifacts.js';
10
+ import { Language } from '../../types/sdk/generate.js';
11
+ import { isJsonObject } from '../../utils/json-utils.js';
12
+ import { discardStreamBody } from '../../utils/utils.js';
13
+ import { envInfo } from '../env-info.js';
14
+ import { FileService } from '../file-service.js';
15
+ import { bulleted, pollUntilCompleted, TIMING_DEFAULTS } from '../generation-status-poller.js';
16
+ import { mapRequestError, mapTransportError, ServiceError } from '../service-error.js';
17
+ import { ZipService } from '../zip-service.js';
18
+ /** The entries the portal artifacts zip is made of, as the endpoint lays them out. */
19
+ const ARTIFACTS_ZIP = {
20
+ sdkDirectory: 'sdk',
21
+ sdkDocsDirectory: 'docs',
22
+ codeSamplesDirectory: 'code-samples',
23
+ plugin: 'plugin.zip'
24
+ };
25
+ export class PortalArtifactsService {
26
+ apiBaseUrl = 'https://api.apimatic.io';
27
+ fileService = new FileService();
28
+ zipService = new ZipService();
29
+ timings;
30
+ constructor(timings = {}) {
31
+ this.timings = { ...TIMING_DEFAULTS, ...timings };
32
+ }
33
+ /**
34
+ * One run of `/portal-artifacts`: the SDKs, the code-sample catalogs and the context plugin,
35
+ * delivered as a single archive and unpacked into `into`.
36
+ *
37
+ * `source` is the `src/` directory, which is zipped and uploaded as the build. What the run
38
+ * produces is decided entirely by the `apimatic.json` inside it — the languages it names, and
39
+ * whether it carries a `plugin` block.
40
+ */
41
+ async generate(source, into, configDir, commandMetadata, authKey) {
42
+ const authInfo = await getAuthInfo(configDir.toString());
43
+ // `auth logout` blanks config.json rather than deleting it, so a logged-out user still has a
44
+ // non-null AuthInfo with an empty key — check the key, not the object.
45
+ const token = authKey || authInfo?.authKey;
46
+ if (!token) {
47
+ return err(ServiceError.unauthorizedWithHint(null));
48
+ }
49
+ const build = new FilePath(into, new FileName('build.zip'));
50
+ try {
51
+ await this.zipService.archive(source, build);
52
+ }
53
+ catch {
54
+ return err(ServiceError.InvalidResponse);
55
+ }
56
+ const initiated = await this.initiateGeneration(build, commandMetadata, token);
57
+ if (initiated.isErr()) {
58
+ return err(initiated.error);
59
+ }
60
+ const generationId = initiated.value.id;
61
+ const completed = await pollUntilCompleted({
62
+ pollIntervalMs: this.timings.pollIntervalMs,
63
+ fetchStatus: () => this.getGenerationStatus(generationId, commandMetadata.shell, token),
64
+ timeout: { budgetMs: this.timings.generationTimeoutMs, label: 'Portal artifacts generation' },
65
+ formatValidationError: formatPortalArtifactsError
66
+ });
67
+ if (completed.isErr()) {
68
+ return err(completed.error);
69
+ }
70
+ const zip = await this.download(generationId, commandMetadata.shell, token);
71
+ if (zip.isErr()) {
72
+ return err(zip.error);
73
+ }
74
+ return await this.unpack(zip.value, into);
75
+ }
76
+ async initiateGeneration(build, commandMetadata, token) {
77
+ const buildFileStream = await this.fileService.getStream(build);
78
+ try {
79
+ const formData = new FormData();
80
+ formData.append('file', buildFileStream);
81
+ const response = await this.axiosInstance(commandMetadata.shell, token).post('/portal-artifacts', formData, {
82
+ headers: formData.getHeaders(),
83
+ params: { origin: `APIMATIC CLI ${commandMetadata.commandName}` },
84
+ responseType: 'json'
85
+ });
86
+ const id = response.data?.id;
87
+ return id ? ok({ id }) : err(ServiceError.InvalidResponse);
88
+ }
89
+ catch (error) {
90
+ return err(mapRequestError(error));
91
+ }
92
+ finally {
93
+ buildFileStream.close();
94
+ }
95
+ }
96
+ async getGenerationStatus(generationId, shell, token) {
97
+ try {
98
+ const response = await this.axiosInstance(shell, token).get(`/portal-artifacts/${generationId}/status`, {
99
+ headers: { Accept: 'application/json' },
100
+ maxRedirects: 0,
101
+ validateStatus: () => true
102
+ });
103
+ if (response.status === 200) {
104
+ return ok(response.data);
105
+ }
106
+ // The gateway answers a finished run with a redirect to the download, the same as it does
107
+ // for plugin generation. The status body never says `Completed`; the 302 is what says it.
108
+ if (response.status === 302) {
109
+ return ok({ status: PortalArtifactsGenerationStatus.Completed });
110
+ }
111
+ // `validateStatus` above stops axios throwing, so nothing reaches the catch block.
112
+ if (response.status === 401) {
113
+ return err(ServiceError.unauthorizedWithHint(null));
114
+ }
115
+ if (response.status === 404) {
116
+ return err(ServiceError.NotFound);
117
+ }
118
+ if (response.status === 500) {
119
+ return err(ServiceError.ServerError);
120
+ }
121
+ return err(ServiceError.InvalidResponse);
122
+ }
123
+ catch (error) {
124
+ return err(mapRequestError(error));
125
+ }
126
+ }
127
+ async download(generationId, shell, token) {
128
+ try {
129
+ const response = await this.axiosInstance(shell, token).get(`/portal-artifacts/${generationId}/download`, {
130
+ responseType: 'stream'
131
+ });
132
+ return ok(response.data);
133
+ }
134
+ catch (error) {
135
+ // The body of a failed streamed response is itself a stream; leaving it open hangs the CLI.
136
+ if (axios.isAxiosError(error)) {
137
+ discardStreamBody(error.response?.data);
138
+ }
139
+ return err(mapTransportError(error));
140
+ }
141
+ }
142
+ /**
143
+ * The archive holds `sdk/<language>.zip`, `docs/<language>.json`, `code-samples/<language>.json`
144
+ * and, when the config asked for one, `plugin.zip`. Everything is optional: a portal that declares
145
+ * no languages and no plugin is a valid run that delivers an empty zip.
146
+ */
147
+ async unpack(zip, into) {
148
+ const archive = new FilePath(into, new FileName('portal-artifacts.zip'));
149
+ const contents = into.join('artifacts');
150
+ try {
151
+ await this.fileService.writeFile(archive, zip);
152
+ await this.fileService.createDirectoryIfNotExists(contents);
153
+ await this.zipService.unArchive(archive, contents);
154
+ }
155
+ catch {
156
+ return err(ServiceError.InvalidResponse);
157
+ }
158
+ const codeSampleCatalogs = await this.readCodeSampleCatalogs(contents.join(ARTIFACTS_ZIP.codeSamplesDirectory));
159
+ if (codeSampleCatalogs.isErr()) {
160
+ return err(codeSampleCatalogs.error);
161
+ }
162
+ const sdkDocs = await this.readSdkDocs(contents.join(ARTIFACTS_ZIP.sdkDocsDirectory));
163
+ if (sdkDocs.isErr()) {
164
+ return err(sdkDocs.error);
165
+ }
166
+ const plugin = new FilePath(contents, new FileName(ARTIFACTS_ZIP.plugin));
167
+ return ok(new PortalArtifacts(codeSampleCatalogs.value, await this.readSdks(contents.join(ARTIFACTS_ZIP.sdkDirectory)), sdkDocs.value, (await this.fileService.fileExists(plugin)) ? plugin : undefined));
168
+ }
169
+ /** An unreadable file fails the run, as an unreadable catalog does, rather than publish a page without its docs. */
170
+ async readSdkDocs(directory) {
171
+ const docs = new Map();
172
+ if (!(await this.fileService.directoryExists(directory))) {
173
+ return ok(docs);
174
+ }
175
+ for (const fileName of await this.fileService.getFileNames(directory)) {
176
+ if (!fileName.hasExactExtension('.json')) {
177
+ continue;
178
+ }
179
+ let json;
180
+ try {
181
+ json = JSON.parse(await this.fileService.getContents(new FilePath(directory, fileName)));
182
+ }
183
+ catch {
184
+ return err(ServiceError.InvalidResponse);
185
+ }
186
+ if (!isJsonObject(json) || typeof json.gettingStarted !== 'string') {
187
+ return err(ServiceError.InvalidResponse);
188
+ }
189
+ docs.set(fileName.withoutExtension().toString(), json.gettingStarted);
190
+ }
191
+ return ok(docs);
192
+ }
193
+ /**
194
+ * Keyed by the delivered file's stem rather than parsed into `Language`, so a language the
195
+ * server adds before this CLI models it is still placed rather than dropped.
196
+ */
197
+ async readSdks(directory) {
198
+ if (!(await this.fileService.directoryExists(directory))) {
199
+ return new Map();
200
+ }
201
+ const sdks = new Map();
202
+ for (const fileName of await this.fileService.getFileNames(directory)) {
203
+ if (fileName.hasExactExtension('.zip')) {
204
+ sdks.set(fileName.withoutExtension().toString(), new FilePath(directory, fileName));
205
+ }
206
+ }
207
+ return sdks;
208
+ }
209
+ /**
210
+ * A catalog this CLI cannot read is an error rather than an omission: silently dropping one
211
+ * would publish a portal missing the samples for a language the user asked for, and say nothing.
212
+ */
213
+ async readCodeSampleCatalogs(directory) {
214
+ if (!(await this.fileService.directoryExists(directory))) {
215
+ return ok(new CodeSampleCatalogs([]));
216
+ }
217
+ const languages = Object.values(Language);
218
+ const catalogs = [];
219
+ for (const fileName of await this.fileService.getFileNames(directory)) {
220
+ if (!fileName.hasExactExtension('.json')) {
221
+ continue;
222
+ }
223
+ const language = fileName.withoutExtension().toString();
224
+ if (!languages.includes(language)) {
225
+ return err(ServiceError.InvalidResponse);
226
+ }
227
+ let json;
228
+ try {
229
+ json = JSON.parse(await this.fileService.getContents(new FilePath(directory, fileName)));
230
+ }
231
+ catch {
232
+ return err(ServiceError.InvalidResponse);
233
+ }
234
+ const catalog = CodeSampleCatalog.fromJson(language, json);
235
+ if (!catalog) {
236
+ return err(ServiceError.InvalidResponse);
237
+ }
238
+ catalogs.push(catalog);
239
+ }
240
+ return ok(new CodeSampleCatalogs(catalogs));
241
+ }
242
+ axiosInstance(shell, apiKey) {
243
+ return axios.create({
244
+ baseURL: envInfo.getBaseUrl() ?? this.apiBaseUrl,
245
+ timeout: this.timings.requestTimeoutMs,
246
+ headers: {
247
+ 'User-Agent': envInfo.getUserAgent(shell),
248
+ Authorization: `X-Auth-Key ${apiKey}`
249
+ }
250
+ });
251
+ }
252
+ }
253
+ /** The key a problem with the specification itself arrives under, named as the user knows it. */
254
+ const SUBJECTS = { validationSummary: 'API definition' };
255
+ /**
256
+ * A run is all or nothing, and it reports every reason at once: one key per language that failed,
257
+ * plus `plugin` and the specification's. Listing them under their own names is the only way a user
258
+ * learns that two things went wrong rather than one.
259
+ */
260
+ const formatPortalArtifactsError = (errors) => {
261
+ const entries = Object.entries(errors);
262
+ if (entries.length === 0) {
263
+ return 'Portal artifacts generation failed.';
264
+ }
265
+ const lines = entries.flatMap(([subject, messages]) => messages.map((message) => `${SUBJECTS[subject] ?? subject}: ${message}`));
266
+ return 'Portal artifacts could not be generated.\n' + bulleted(lines);
267
+ };
268
+ //# sourceMappingURL=portal-artifacts-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-artifacts-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-artifacts-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Result } from 'neverthrow';
2
+ import { DirectoryPath } from '../../types/file/directoryPath.js';
3
+ import { ServiceError } from '../service-error.js';
4
+ /**
5
+ * Why the portal may not be built. `unverifiable` is deliberately distinct from
6
+ * `notEntitled`: the first means we could not reach the account, the second means we did
7
+ * and the plan says no.
8
+ */
9
+ export type PortalAuthorizationFailure = {
10
+ kind: 'unauthenticated';
11
+ } | {
12
+ kind: 'unverifiable';
13
+ error: ServiceError;
14
+ host: string;
15
+ } | {
16
+ kind: 'notEntitled';
17
+ };
18
+ /** Checks the account may generate a portal on this machine, before any build work starts. */
19
+ export declare class PortalAuthorizationService {
20
+ private readonly apiService;
21
+ authorize(configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<void, PortalAuthorizationFailure>>;
22
+ }
@@ -0,0 +1,23 @@
1
+ import { err, ok } from 'neverthrow';
2
+ import { ServiceErrorCode } from '../service-error.js';
3
+ import { ApiService } from './api-service.js';
4
+ /** Long enough for a slow connection, short enough that the build does not appear to hang. */
5
+ const PROFILE_TIMEOUT_MS = 10_000;
6
+ /** Checks the account may generate a portal on this machine, before any build work starts. */
7
+ export class PortalAuthorizationService {
8
+ apiService = new ApiService();
9
+ async authorize(configDir, shell, authKey) {
10
+ const account = await this.apiService.getAccountInfo(configDir, shell, authKey, PROFILE_TIMEOUT_MS);
11
+ if (account.isErr()) {
12
+ // Fail closed: an unreachable profile endpoint never grants the entitlement.
13
+ return err(account.error.code === ServiceErrorCode.UnAuthorized
14
+ ? { kind: 'unauthenticated' }
15
+ : { kind: 'unverifiable', error: account.error, host: this.apiService.apiHost() });
16
+ }
17
+ if (!account.value.isOnPremGenerationAllowed) {
18
+ return err({ kind: 'notEntitled' });
19
+ }
20
+ return ok(undefined);
21
+ }
22
+ }
23
+ //# sourceMappingURL=portal-authorization-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-authorization-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-authorization-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,8FAA8F;AAC9F,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAYlC,8FAA8F;AAC9F,MAAM,OAAO,0BAA0B;IACpB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAExC,KAAK,CAAC,SAAS,CACpB,SAAwB,EACxB,KAAa,EACb,OAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEpG,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,6EAA6E;YAC7E,OAAO,GAAG,CACR,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,YAAY;gBAClD,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE;gBAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;YAC7C,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -12,7 +12,7 @@ import { ProfileId } from '../../types/publish/profile-id.js';
12
12
  export declare class PublishingApiService {
13
13
  private readonly apiBaseUrl;
14
14
  private readonly fileService;
15
- getPublishingProfiles(configDir: DirectoryPath, shell: string): Promise<Result<PublishingProfileItem[], ServiceError>>;
15
+ getPublishingProfiles(configDir: DirectoryPath, shell: string, authKey?: string | null): Promise<Result<PublishingProfileItem[], ServiceError>>;
16
16
  publishSdkPackage(sdkFilePath: FilePath, profileId: ProfileId, language: Language, packageVersion: SemVersion, publishType: PublishType[], configDir: DirectoryPath, shell: string): Promise<Result<PublishingInfo, ServiceError>>;
17
17
  getSdkPublishingLog(publishingLogId: string, configDir: DirectoryPath, shell: string): Promise<Result<PublishLogItem, ServiceError>>;
18
18
  private axiosInstance;
@@ -6,19 +6,17 @@ import { getAuthInfo } from '../../client-utils/auth-manager.js';
6
6
  import { envInfo } from '../env-info.js';
7
7
  import { FileService } from '../file-service.js';
8
8
  export class PublishingApiService {
9
- constructor() {
10
- this.apiBaseUrl = 'https://api.package-publishing.apimatic.io/api';
11
- this.fileService = new FileService();
12
- }
13
- async getPublishingProfiles(configDir, shell) {
9
+ apiBaseUrl = 'https://api.package-publishing.apimatic.io/api';
10
+ fileService = new FileService();
11
+ async getPublishingProfiles(configDir, shell, authKey = null) {
14
12
  const authInfo = await getAuthInfo(configDir.toString());
15
13
  // `auth logout` blanks config.json rather than deleting it, so a logged-out user
16
14
  // still has a non-null AuthInfo with an empty key — check the key, not the object.
17
- if (!(authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey)) {
15
+ const token = authKey || authInfo?.authKey;
16
+ if (!token) {
18
17
  return err(ServiceError.unauthorizedWithHint(null));
19
18
  }
20
19
  try {
21
- const token = authInfo.authKey;
22
20
  const response = await this.axiosInstance(shell, token).get(`/publishing-profile/user`);
23
21
  if (response.status === 200) {
24
22
  return ok(response.data);
@@ -30,11 +28,10 @@ export class PublishingApiService {
30
28
  }
31
29
  }
32
30
  async publishSdkPackage(sdkFilePath, profileId, language, packageVersion, publishType, configDir, shell) {
33
- var _a, _b;
34
31
  const authInfo = await getAuthInfo(configDir.toString());
35
32
  // `auth logout` blanks config.json rather than deleting it, so a logged-out user
36
33
  // still has a non-null AuthInfo with an empty key — check the key, not the object.
37
- if (!(authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey)) {
34
+ if (!authInfo?.authKey) {
38
35
  return err(ServiceError.unauthorizedWithHint(null));
39
36
  }
40
37
  const sdkFileStream = await this.fileService.getStream(sdkFilePath);
@@ -59,12 +56,12 @@ export class PublishingApiService {
59
56
  }
60
57
  catch (error) {
61
58
  if (error instanceof AxiosError) {
62
- const data = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data;
59
+ const data = error.response?.data;
63
60
  if (error.status === 400) {
64
61
  const errors = data.errors;
65
- const detail = errors ? (_b = Object.values(errors)[0]) === null || _b === void 0 ? void 0 : _b[0] : data.detail;
62
+ const detail = errors ? Object.values(errors)[0]?.[0] : data.detail;
66
63
  const errorMessage = data.title + '\n- ' + detail;
67
- return err(ServiceError.badRequest(errorMessage, errors !== null && errors !== void 0 ? errors : {}));
64
+ return err(ServiceError.badRequest(errorMessage, errors ?? {}));
68
65
  }
69
66
  if (error.status === 403) {
70
67
  const errorMessage = data.title + '\n- ' + data.detail;
@@ -85,7 +82,7 @@ export class PublishingApiService {
85
82
  const authInfo = await getAuthInfo(configDir.toString());
86
83
  // `auth logout` blanks config.json rather than deleting it, so a logged-out user
87
84
  // still has a non-null AuthInfo with an empty key — check the key, not the object.
88
- if (!(authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey)) {
85
+ if (!authInfo?.authKey) {
89
86
  return err(ServiceError.unauthorizedWithHint(null));
90
87
  }
91
88
  try {
@@ -101,7 +98,6 @@ export class PublishingApiService {
101
98
  }
102
99
  }
103
100
  axiosInstance(shell, apiKey) {
104
- var _a;
105
101
  const headers = {
106
102
  'User-Agent': envInfo.getUserAgent(shell)
107
103
  };
@@ -109,7 +105,7 @@ export class PublishingApiService {
109
105
  headers.Authorization = `X-Auth-Key ${apiKey}`;
110
106
  }
111
107
  return axios.create({
112
- baseURL: (_a = envInfo.getPublishingBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl,
108
+ baseURL: envInfo.getPublishingBaseUrl() ?? this.apiBaseUrl,
113
109
  headers
114
110
  });
115
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publishing-api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/publishing-api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishing-api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/publishing-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { FilePath } from '../../types/file/filePath.js';
2
+ import { DirectoryPath } from '../../types/file/directoryPath.js';
3
+ import { CommandMetadata } from '../../types/common/command-metadata.js';
4
+ import { Result } from 'neverthrow';
5
+ import { Language, Stability } from '../../types/sdk/generate.js';
6
+ import { ServiceError } from '../service-error.js';
7
+ import { GenerationTimings } from '../generation-status-poller.js';
8
+ export declare class SdkGenerationService {
9
+ private readonly CONTENT_TYPE;
10
+ private readonly apiBaseUrl;
11
+ private readonly fileService;
12
+ private readonly timings;
13
+ constructor(timings?: GenerationTimings);
14
+ generateSdk(buildPath: FilePath, language: Language, stability: Stability, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError>>;
15
+ private createAuthorizationHeader;
16
+ private resolveToken;
17
+ private getSdkGenerationStatus;
18
+ private axiosInstance;
19
+ private readonly stabilityTag;
20
+ private readonly languageSdk;
21
+ }
@@ -0,0 +1,118 @@
1
+ import axios from 'axios';
2
+ import { ContentType, FileWrapper, SdkLanguages, Status, StabilityLevelTag, V2SdkGenerationController } from '@apimatic/sdk';
3
+ import { getAuthInfo } from '../../client-utils/auth-manager.js';
4
+ import { FileService } from '../file-service.js';
5
+ import { apiClientFactory } from './api-client-factory.js';
6
+ import { err, ok } from 'neverthrow';
7
+ import { Language, Stability } from '../../types/sdk/generate.js';
8
+ import { handleServiceError, ServiceError } from '../service-error.js';
9
+ import { pollUntilCompleted, TIMING_DEFAULTS } from '../generation-status-poller.js';
10
+ import { envInfo } from '../env-info.js';
11
+ export class SdkGenerationService {
12
+ CONTENT_TYPE = ContentType.EnumMultipartformdata;
13
+ apiBaseUrl = 'https://api.apimatic.io';
14
+ fileService = new FileService();
15
+ timings;
16
+ constructor(timings = {}) {
17
+ this.timings = { ...TIMING_DEFAULTS, ...timings };
18
+ }
19
+ async generateSdk(buildPath, language, stability, configDir, commandMetadata, authKey) {
20
+ const buildFileStream = await this.fileService.getStream(buildPath);
21
+ const file = new FileWrapper(buildFileStream);
22
+ const authInfo = await getAuthInfo(configDir.toString());
23
+ const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
24
+ const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
25
+ const v2sdkGenerationController = new V2SdkGenerationController(client);
26
+ let generationId;
27
+ try {
28
+ const response = await v2sdkGenerationController.generateV2SdkViaBuildInputAsync(this.CONTENT_TYPE, file, this.languageSdk[language], this.stabilityTag[stability]);
29
+ generationId = response.result.id;
30
+ }
31
+ catch (error) {
32
+ return err(handleServiceError(error));
33
+ }
34
+ finally {
35
+ buildFileStream.close();
36
+ }
37
+ const statusResult = await pollUntilCompleted({
38
+ pollIntervalMs: this.timings.pollIntervalMs,
39
+ fetchStatus: () => this.getSdkGenerationStatus(generationId, commandMetadata.shell, this.resolveToken(authInfo, authKey)),
40
+ timeout: { budgetMs: this.timings.generationTimeoutMs, label: 'SDK generation' }
41
+ });
42
+ if (statusResult.isErr()) {
43
+ return err(statusResult.error);
44
+ }
45
+ try {
46
+ const sdkResponse = await v2sdkGenerationController.downloadGeneratedV2Sdk(generationId);
47
+ return ok(sdkResponse.result);
48
+ }
49
+ catch (error) {
50
+ return err(handleServiceError(error));
51
+ }
52
+ }
53
+ createAuthorizationHeader = (authInfo, overrideAuthKey) => {
54
+ return `X-Auth-Key ${this.resolveToken(authInfo, overrideAuthKey) ?? ''}`;
55
+ };
56
+ resolveToken = (authInfo, overrideAuthKey) => {
57
+ return overrideAuthKey || authInfo?.authKey;
58
+ };
59
+ async getSdkGenerationStatus(requestId, shell, token) {
60
+ if (!token) {
61
+ return err(ServiceError.UnAuthorized);
62
+ }
63
+ try {
64
+ const response = await this.axiosInstance(shell, token).get(`/sdk/v2/${requestId}/status`, {
65
+ headers: { Accept: 'application/json' },
66
+ maxRedirects: 0,
67
+ validateStatus: () => true
68
+ });
69
+ if (response.status === 200) {
70
+ return ok(response.data);
71
+ }
72
+ // Once generation finishes, the API redirects to the download location.
73
+ if (response.status === 302) {
74
+ return ok({ status: Status.Completed });
75
+ }
76
+ // `validateStatus` above stops axios throwing, so nothing reaches the
77
+ // catch block — classify the status here, or a mistyped endpoint path and
78
+ // an expired auth key both surface as a generic "unexpected error".
79
+ if (response.status === 401) {
80
+ return err(ServiceError.UnAuthorized);
81
+ }
82
+ if (response.status === 404) {
83
+ return err(ServiceError.NotFound);
84
+ }
85
+ if (response.status === 500) {
86
+ return err(ServiceError.ServerError);
87
+ }
88
+ return err(ServiceError.InvalidResponse);
89
+ }
90
+ catch (error) {
91
+ return err(handleServiceError(error));
92
+ }
93
+ }
94
+ axiosInstance(shell, apiKey) {
95
+ return axios.create({
96
+ baseURL: envInfo.getBaseUrl() ?? this.apiBaseUrl,
97
+ timeout: this.timings.requestTimeoutMs,
98
+ headers: {
99
+ 'User-Agent': envInfo.getUserAgent(shell),
100
+ Authorization: `X-Auth-Key ${apiKey}`
101
+ }
102
+ });
103
+ }
104
+ stabilityTag = {
105
+ [Stability.STABLE]: StabilityLevelTag.Stable,
106
+ [Stability.BETA]: StabilityLevelTag.Beta
107
+ };
108
+ languageSdk = {
109
+ [Language.CSHARP]: SdkLanguages.Csharp,
110
+ [Language.JAVA]: SdkLanguages.Java,
111
+ [Language.PHP]: SdkLanguages.Php,
112
+ [Language.PYTHON]: SdkLanguages.Python,
113
+ [Language.RUBY]: SdkLanguages.Ruby,
114
+ [Language.TYPESCRIPT]: SdkLanguages.Typescript,
115
+ [Language.GO]: SdkLanguages.Go
116
+ };
117
+ }
118
+ //# sourceMappingURL=sdk-generation-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-generation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/sdk-generation-service.ts"],"names":[],"mappings":"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"}
@@ -5,15 +5,16 @@ import { envInfo } from "../env-info.js";
5
5
  import path from "path";
6
6
  import { ApiService } from "./api-service.js";
7
7
  export class TelemetryService {
8
+ configDirectory;
9
+ apiService = new ApiService();
8
10
  constructor(configDirectory) {
9
11
  this.configDirectory = configDirectory;
10
- this.apiService = new ApiService();
11
12
  }
12
13
  async trackEvent(event, shell) {
13
14
  const authInfo = await this.getAuthInfo(this.configDirectory.toString());
14
15
  const telemetryOptedOut = process.env.APIMATIC_CLI_TELEMETRY_OPTOUT === "1";
15
- const authKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey;
16
- if (telemetryOptedOut || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.APIMATIC_CLI_TELEMETRY_OPTOUT) === "1" || !authKey) {
16
+ const authKey = authInfo?.authKey;
17
+ if (telemetryOptedOut || authInfo?.APIMATIC_CLI_TELEMETRY_OPTOUT === "1" || !authKey) {
17
18
  return;
18
19
  }
19
20
  const payload = {
@@ -30,7 +31,7 @@ export class TelemetryService {
30
31
  try {
31
32
  return JSON.parse(await fs.readFile(path.join(configDirectory, "config.json"), "utf8"));
32
33
  }
33
- catch (_a) {
34
+ catch {
34
35
  return null;
35
36
  }
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/telemetry-service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,OAAO,gBAAgB;IAG3B,YAA6B,eAA8B;QAA9B,oBAAe,GAAf,eAAe,CAAe;QAF1C,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEe,CAAC;IAExD,KAAK,CAAC,UAAU,CAAwB,KAAQ,EAAE,KAAa;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,GAAG,CAAC;QAC5E,MAAM,OAAO,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC;QAElC,IAAI,iBAAiB,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,6BAA6B,MAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;YACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,cAAc,EAAE,EAAE,CAAC,OAAO,EAAE;YAC5B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B,CAAC;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,eAAuB;QAC/C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/telemetry-service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,OAAO,gBAAgB;IAGE,eAAe;IAF3B,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAE/C,YAA6B,eAA8B;+BAA9B,eAAe;IAAkB,CAAC;IAExD,KAAK,CAAC,UAAU,CAAwB,KAAQ,EAAE,KAAa;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,GAAG,CAAC;QAC5E,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAElC,IAAI,iBAAiB,IAAI,QAAQ,EAAE,6BAA6B,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;YACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,cAAc,EAAE,EAAE,CAAC,OAAO,EAAE;YAC5B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B,CAAC;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,eAAuB;QAC/C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}