@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
@@ -4,7 +4,7 @@ import { PublishLogItem } from '../../types/publish-api/publish-log.js';
4
4
  import { PublishingInfo } from '../../types/publish-api/publishing-info.js';
5
5
  import { PublishType } from '../../types/publish-api/publishing-profile-item.js';
6
6
  import { SemVersion } from '../../types/publish/version.js';
7
- import { CodegenOption, Language } from '../../types/sdk/generate.js';
7
+ import { Language, Stability } from '../../types/sdk/generate.js';
8
8
  import { PublishingProfile } from '../../types/publish/publishing-profile.js';
9
9
  export type PublishingOutcome = 'succeeded' | 'failed' | 'cancelled';
10
10
  export declare class SdkPublishPrompts {
@@ -20,6 +20,6 @@ export interface PublishingDetails {
20
20
  language: Language;
21
21
  version: SemVersion;
22
22
  publishType: PublishType[];
23
- codegenOption?: CodegenOption;
23
+ stability?: Stability;
24
24
  }
25
- export declare function formatPublishingDetails({ profile, language, version, publishType, codegenOption }: PublishingDetails): string;
25
+ export declare function formatPublishingDetails({ profile, language, version, publishType, stability }: PublishingDetails): string;
@@ -1,4 +1,5 @@
1
1
  import { log, spinner } from '@clack/prompts';
2
+ import { sleep } from '../../infrastructure/timer-extensions.js';
2
3
  import { PublishType } from '../../types/publish-api/publishing-profile-item.js';
3
4
  import { noteWrapped, withSpinner } from '../prompt.js';
4
5
  import { format as f } from '../format.js';
@@ -24,10 +25,10 @@ ${f.link(publishingLogUrl)}`;
24
25
  async pollPublishingStatus(getSdkPublishingLogFn) {
25
26
  const TERMINAL_STATES = new Set(['Succeeded', 'Failed', 'Exception', 'InternalError']);
26
27
  const POLL_INTERVAL_MS = 10000; // poll after every 10 seconds.
27
- let abortWait;
28
+ const waitAbort = new AbortController();
28
29
  const spin = spinner({
29
30
  onCancel: () => {
30
- abortWait === null || abortWait === void 0 ? void 0 : abortWait();
31
+ waitAbort.abort();
31
32
  },
32
33
  cancelMessage: 'Publishing is still running on APIMatic and will continue without the CLI.'
33
34
  });
@@ -43,14 +44,13 @@ ${f.link(publishingLogUrl)}`;
43
44
  const statusMessage = [...events]
44
45
  .sort((a, b) => (a.publishType === 'SourceCode' ? -1 : b.publishType === 'SourceCode' ? 1 : 0))
45
46
  .map((event) => {
46
- var _a;
47
47
  const target = event.publishType === 'SourceCode' ? 'Source Code' : 'Package';
48
48
  const eventLabels = {
49
49
  Queued: 'Queued',
50
50
  InProgress: 'In Progress',
51
51
  Succeeded: 'Published'
52
52
  };
53
- const label = (_a = eventLabels[event.eventType]) !== null && _a !== void 0 ? _a : 'Failed';
53
+ const label = eventLabels[event.eventType] ?? 'Failed';
54
54
  return `${target}: [${label}]`;
55
55
  })
56
56
  .join(' | ');
@@ -60,23 +60,19 @@ ${f.link(publishingLogUrl)}`;
60
60
  return isExecutionSuccessful ? 'succeeded' : 'failed';
61
61
  }
62
62
  spin.message(statusMessage);
63
- await new Promise((resolve) => {
64
- const timer = setTimeout(resolve, POLL_INTERVAL_MS);
65
- abortWait = () => {
66
- clearTimeout(timer);
67
- resolve();
68
- };
69
- });
70
- abortWait = undefined;
63
+ const sleepResult = await sleep(POLL_INTERVAL_MS, waitAbort.signal);
64
+ if (sleepResult !== 'ok') {
65
+ return sleepResult;
66
+ }
71
67
  }
72
68
  return 'cancelled';
73
69
  }
74
70
  }
75
- export function formatPublishingDetails({ profile, language, version, publishType, codegenOption }) {
71
+ export function formatPublishingDetails({ profile, language, version, publishType, stability }) {
76
72
  const targets = [...publishType]
77
- .map((t) => (t === PublishType.PackagePublishing ? "Package" : "Source Code"))
78
- .join(" + ");
79
- const generator = codegenOption ? `\n Generator: ${codegenOption}` : "";
80
- return `\n\n Profile: ${profile}\n Language: ${language}\n Version: ${version}\n Targets: ${targets}${generator}`;
73
+ .map((t) => (t === PublishType.PackagePublishing ? 'Package' : 'Source Code'))
74
+ .join(' + ');
75
+ const level = stability ? `\n Stability: ${stability}` : '';
76
+ return `\n\n Profile: ${profile}\n Language: ${language}\n Version: ${version}\n Targets: ${targets}${level}`;
81
77
  }
82
78
  //# sourceMappingURL=publish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/prompts/sdk/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/prompts/sdk/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,oDAAoD,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,OAAO,iBAAiB;IACrB,UAAU,CAAC,EAAiD;QACjE,OAAO,WAAW,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAEM,yBAAyB,CAAC,YAA0B;QACzD,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAEM,YAAY,CAAC,iBAAyB;QAC3C,GAAG,CAAC,IAAI,CACN,kGAAkG;YAChG,iBAAiB,CACpB,CAAC;IACJ,CAAC;IAEM,uBAAuB,CAAC,iBAAyB;QACtD,GAAG,CAAC,IAAI,CAAC,0CAA0C,GAAG,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAEM,qBAAqB,CAAC,gBAAwB;QACnD,MAAM,OAAO,GAAG;EAClB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzB,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,qBAA0E;QAE1E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QACvF,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,+BAA+B;QAE/D,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC;YACnB,QAAQ,EAAE,GAAG,EAAE;gBACb,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,aAAa,EAAE,4EAA4E;SAC5F,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAE/C,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,EAAE,CAAC;YAE1D,IAAI,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC;YAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACzF,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9F,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9E,MAAM,WAAW,GAA2B;oBAC1C,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,aAAa;oBACzB,SAAS,EAAE,WAAW;iBACvB,CAAC;gBACF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC;gBACvD,OAAO,GAAG,MAAM,MAAM,KAAK,GAAG,CAAC;YACjC,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,CAAC,CAAC;YAEf,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC;gBACvF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAUD,MAAM,UAAU,uBAAuB,CAAC,EACtC,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,EACS;IAClB,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;SAC7E,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,oBAAoB,OAAO,kBAAkB,QAAQ,kBAAkB,OAAO,kBAAkB,OAAO,GAAG,KAAK,EAAE,CAAC;AAC3H,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Language } from '../../types/sdk/generate.js';
2
+ export declare class RecordPublishedSdkPrompts {
3
+ sdkRecorded(language: Language, configExists: boolean): void;
4
+ noSourceRepository(language: Language): void;
5
+ configUnreadable(reason?: string): void;
6
+ configNotWritten(): void;
7
+ }
@@ -0,0 +1,26 @@
1
+ import { log } from '@clack/prompts';
2
+ import { APIMATIC_CONFIG_FILE_NAME } from '../../types/apimatic-config/document.js';
3
+ import { format as f } from '../format.js';
4
+ export class RecordPublishedSdkPrompts {
5
+ sdkRecorded(language, configExists) {
6
+ const message = (configExists
7
+ ? `Updated ${f.var(APIMATIC_CONFIG_FILE_NAME)} for ${f.var(language)}. `
8
+ : `Created ${f.var(APIMATIC_CONFIG_FILE_NAME)} and added ${f.var(language)}. `) +
9
+ `Run '${f.cmdAlt('apimatic', 'plugin', 'generate')}' to build your context plugin.`;
10
+ log.info(message);
11
+ }
12
+ noSourceRepository(language) {
13
+ const message = `Context plugin generation needs a source repository, and none was published for ${f.var(language)}. ` +
14
+ `Publish the SDK's source code to complete its ${f.var(APIMATIC_CONFIG_FILE_NAME)} entry.`;
15
+ log.warn(message);
16
+ }
17
+ configUnreadable(reason) {
18
+ const cause = reason ? `: ${reason}` : '';
19
+ const message = `${f.var(APIMATIC_CONFIG_FILE_NAME)} cannot be used${cause}, so this published SDK's details were not added to it. ` + `Fix it and try again.`;
20
+ log.warn(message);
21
+ }
22
+ configNotWritten() {
23
+ log.warn(`${f.var(APIMATIC_CONFIG_FILE_NAME)} could not be written, so this published SDK's details were not added to it.`);
24
+ }
25
+ }
26
+ //# sourceMappingURL=record-published-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-published-sdk.js","sourceRoot":"","sources":["../../../src/prompts/sdk/record-published-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,yBAAyB;IAC7B,WAAW,CAAC,QAAkB,EAAE,YAAqB;QAC1D,MAAM,OAAO,GACX,CAAC,YAAY;YACX,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;YACxE,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjF,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,iCAAiC,CAAC;QACtF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAEM,kBAAkB,CAAC,QAAkB;QAC1C,MAAM,OAAO,GACX,mFAAmF,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;YACtG,iDAAiD,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAC7F,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAEM,gBAAgB,CAAC,MAAe;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GACX,GAAG,CAAC,CAAC,GAAG,CACN,yBAAyB,CAC1B,kBAAkB,KAAK,0DAA0D,GAAG,uBAAuB,CAAC;QAC/G,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAEM,gBAAgB;QACrB,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,8EAA8E,CAClH,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,68 @@
1
+ import { Result } from 'neverthrow';
2
+ export declare const APIMATIC_CONFIG_FILE_NAME = "apimatic.json";
3
+ /**
4
+ * Where editors find the file's schema: the copy the published package carries, under the `beta`
5
+ * dist-tag. jsDelivr resolves a major range such as `@2` to its newest stable release and never to
6
+ * a prerelease, so `@2` leads nowhere until 2.0.0 ships; `@beta` reaches the newest prerelease.
7
+ */
8
+ export declare const APIMATIC_SCHEMA_URL = "https://cdn.jsdelivr.net/npm/@apimatic/cli@beta/apimatic.schema.json";
9
+ /** The one format this CLI reads. A file naming another is refused rather than misread. */
10
+ export declare const SCHEMA_VERSION = 1;
11
+ /** A block one command owns. */
12
+ export type ConfigBlockName = 'portal' | 'plugin' | 'languages';
13
+ /** Where a finding comes from: a block, or `root` for the file itself and the keys beside the blocks. */
14
+ export type ConfigBlock = 'root' | ConfigBlockName;
15
+ /**
16
+ * Something wrong with the file, kept apart from its wording. The portal path lists findings
17
+ * one sentence each and the plugin path folds them into one clause behind the file's name; both
18
+ * read the same `field` and `problem`, so the two cannot drift.
19
+ */
20
+ export interface ConfigFinding {
21
+ block: ConfigBlock;
22
+ /** The key the finding is about, as a dotted path from the root, or null for the file as a whole. */
23
+ field: string | null;
24
+ /** What is wrong with it, as a predicate: "is not a JSON object". */
25
+ problem: string;
26
+ }
27
+ /** The parsed `apimatic.json`: its blocks, the keys around them in the order written, and what is wrong with it. */
28
+ export declare class ApimaticConfigDocument {
29
+ private readonly root;
30
+ private readonly findings;
31
+ private constructor();
32
+ /** What a file the CLI creates starts from. */
33
+ static empty(): ApimaticConfigDocument;
34
+ /**
35
+ * Refuses only what no command could use: a file holding no JSON object at all. Everything
36
+ * else parses, and what is wrong inside it is carried as findings for each command to read or
37
+ * ignore by block, so a malformed block one command owns never stops another.
38
+ */
39
+ static parse(text: string): Result<ApimaticConfigDocument, ConfigFinding[]>;
40
+ private static of;
41
+ private static analyze;
42
+ private static schemaVersionFindings;
43
+ private static pluginFindings;
44
+ private static languagesFindings;
45
+ /** As written, whatever that is: the portal's own parser says what is wrong with it. */
46
+ portal(): unknown;
47
+ /** The block, or undefined when it is absent or, as the findings say, not an object. */
48
+ plugin(): Record<string, unknown> | undefined;
49
+ /** The block, or undefined when it is absent or, as the findings say, not an object. */
50
+ languages(): Record<string, unknown> | undefined;
51
+ findingsFor(...blocks: ConfigBlock[]): ConfigFinding[];
52
+ /** `$schema` goes first among the keys, where a reader looks for it. */
53
+ referencingSchema(schemaUrl: string): ApimaticConfigDocument;
54
+ /**
55
+ * The document with one block replaced. A block the file already holds keeps its place among
56
+ * the other keys; a new one goes after the last.
57
+ */
58
+ with(block: ConfigBlockName, value: object): ApimaticConfigDocument;
59
+ /** The file's text, keys in the order held, in the indentation and with the ending the caller found. */
60
+ serialize(indent: string, trailingNewline: boolean): string;
61
+ }
62
+ /** One sentence per finding, each naming the file or the field, for a list a user fixes one line at a time. */
63
+ export declare function findingSentences(findings: readonly ConfigFinding[]): string[];
64
+ /**
65
+ * Every finding as one clause about the file, for a message that has already named it:
66
+ * "it is empty", "its 'languages' is not a JSON object".
67
+ */
68
+ export declare function findingClause(findings: readonly ConfigFinding[]): string;
@@ -0,0 +1,161 @@
1
+ import { err, ok } from 'neverthrow';
2
+ import { isJsonObject } from '../../utils/json-utils.js';
3
+ import { stripByteOrderMark } from '../../utils/string-utils.js';
4
+ import { PLUGIN_ID_PATTERN } from '../plugin/plugin-config.js';
5
+ import { SemVersion } from '../publish/version.js';
6
+ export const APIMATIC_CONFIG_FILE_NAME = 'apimatic.json';
7
+ /**
8
+ * Where editors find the file's schema: the copy the published package carries, under the `beta`
9
+ * dist-tag. jsDelivr resolves a major range such as `@2` to its newest stable release and never to
10
+ * a prerelease, so `@2` leads nowhere until 2.0.0 ships; `@beta` reaches the newest prerelease.
11
+ */
12
+ export const APIMATIC_SCHEMA_URL = 'https://cdn.jsdelivr.net/npm/@apimatic/cli@beta/apimatic.schema.json';
13
+ /** The one format this CLI reads. A file naming another is refused rather than misread. */
14
+ export const SCHEMA_VERSION = 1;
15
+ const NOT_A_JSON_OBJECT = 'is not a JSON object';
16
+ const MALFORMED_PLUGIN_ID = `must be lower-case alphanumeric words separated by single dashes, for example 'acme-payments'`;
17
+ const MALFORMED_PLUGIN_VERSION = `must be a version in the format major.minor.patch, for example '0.1.0'`;
18
+ /** The parsed `apimatic.json`: its blocks, the keys around them in the order written, and what is wrong with it. */
19
+ export class ApimaticConfigDocument {
20
+ root;
21
+ findings;
22
+ constructor(root, findings) {
23
+ this.root = root;
24
+ this.findings = findings;
25
+ }
26
+ /** What a file the CLI creates starts from. */
27
+ static empty() {
28
+ return ApimaticConfigDocument.of({ schemaVersion: SCHEMA_VERSION });
29
+ }
30
+ /**
31
+ * Refuses only what no command could use: a file holding no JSON object at all. Everything
32
+ * else parses, and what is wrong inside it is carried as findings for each command to read or
33
+ * ignore by block, so a malformed block one command owns never stops another.
34
+ */
35
+ static parse(text) {
36
+ const contents = stripByteOrderMark(text);
37
+ if (contents.trim() === '') {
38
+ return err([{ block: 'root', field: null, problem: 'is empty' }]);
39
+ }
40
+ let data;
41
+ try {
42
+ data = JSON.parse(contents);
43
+ }
44
+ catch {
45
+ return err([{ block: 'root', field: null, problem: 'is not valid JSON' }]);
46
+ }
47
+ if (!isJsonObject(data)) {
48
+ return err([{ block: 'root', field: null, problem: NOT_A_JSON_OBJECT }]);
49
+ }
50
+ return ok(ApimaticConfigDocument.of(data));
51
+ }
52
+ static of(root) {
53
+ return new ApimaticConfigDocument(root, ApimaticConfigDocument.analyze(root));
54
+ }
55
+ // The shape checks are what the writers need: a merge spreads a block, which turns a string
56
+ // into `{"0":"a"}` and a number into nothing, so a wrong shape is refused before it can
57
+ // corrupt the file. The identity checks are the plugin's own rules, reported here so the
58
+ // portal path can leave them unread.
59
+ static analyze(root) {
60
+ return [
61
+ ...ApimaticConfigDocument.schemaVersionFindings(root.schemaVersion),
62
+ ...ApimaticConfigDocument.pluginFindings(root.plugin),
63
+ ...ApimaticConfigDocument.languagesFindings(root.languages)
64
+ ];
65
+ }
66
+ static schemaVersionFindings(schemaVersion) {
67
+ if (schemaVersion === undefined || schemaVersion === SCHEMA_VERSION) {
68
+ return [];
69
+ }
70
+ const written = JSON.stringify(schemaVersion);
71
+ return [
72
+ {
73
+ block: 'root',
74
+ field: 'schemaVersion',
75
+ problem: `is ${written}, which this version of the CLI does not read; it reads ${SCHEMA_VERSION}`
76
+ }
77
+ ];
78
+ }
79
+ static pluginFindings(plugin) {
80
+ if (plugin === undefined) {
81
+ return [];
82
+ }
83
+ if (!isJsonObject(plugin)) {
84
+ return [{ block: 'plugin', field: 'plugin', problem: NOT_A_JSON_OBJECT }];
85
+ }
86
+ const findings = [];
87
+ const id = plugin.pluginId;
88
+ if (typeof id === 'string' && (id.trim() === '' || !PLUGIN_ID_PATTERN.test(id))) {
89
+ findings.push({ block: 'plugin', field: 'plugin.pluginId', problem: MALFORMED_PLUGIN_ID });
90
+ }
91
+ const version = plugin.pluginVersion;
92
+ if (typeof version === 'string' && (version.trim() === '' || SemVersion.tryCreate(version).isErr())) {
93
+ findings.push({ block: 'plugin', field: 'plugin.pluginVersion', problem: MALFORMED_PLUGIN_VERSION });
94
+ }
95
+ return findings;
96
+ }
97
+ static languagesFindings(languages) {
98
+ if (languages === undefined) {
99
+ return [];
100
+ }
101
+ if (!isJsonObject(languages)) {
102
+ return [{ block: 'languages', field: 'languages', problem: NOT_A_JSON_OBJECT }];
103
+ }
104
+ // Both levels are spread by `upsertLanguage`, so both are refused when they are not objects.
105
+ return Object.entries(languages).flatMap(([language, entry]) => {
106
+ if (!isJsonObject(entry)) {
107
+ return [{ block: 'languages', field: `languages.${language}`, problem: NOT_A_JSON_OBJECT }];
108
+ }
109
+ if (entry.publishing !== undefined && !isJsonObject(entry.publishing)) {
110
+ return [{ block: 'languages', field: `languages.${language}.publishing`, problem: NOT_A_JSON_OBJECT }];
111
+ }
112
+ return [];
113
+ });
114
+ }
115
+ /** As written, whatever that is: the portal's own parser says what is wrong with it. */
116
+ portal() {
117
+ return this.root.portal;
118
+ }
119
+ /** The block, or undefined when it is absent or, as the findings say, not an object. */
120
+ plugin() {
121
+ return isJsonObject(this.root.plugin) ? this.root.plugin : undefined;
122
+ }
123
+ /** The block, or undefined when it is absent or, as the findings say, not an object. */
124
+ languages() {
125
+ return isJsonObject(this.root.languages) ? this.root.languages : undefined;
126
+ }
127
+ findingsFor(...blocks) {
128
+ return this.findings.filter((finding) => blocks.includes(finding.block));
129
+ }
130
+ /** `$schema` goes first among the keys, where a reader looks for it. */
131
+ referencingSchema(schemaUrl) {
132
+ const rest = { ...this.root };
133
+ delete rest.$schema;
134
+ return ApimaticConfigDocument.of({ $schema: schemaUrl, ...rest });
135
+ }
136
+ /**
137
+ * The document with one block replaced. A block the file already holds keeps its place among
138
+ * the other keys; a new one goes after the last.
139
+ */
140
+ with(block, value) {
141
+ return ApimaticConfigDocument.of({ ...this.root, [block]: value });
142
+ }
143
+ /** The file's text, keys in the order held, in the indentation and with the ending the caller found. */
144
+ serialize(indent, trailingNewline) {
145
+ return JSON.stringify(this.root, null, indent) + (trailingNewline ? '\n' : '');
146
+ }
147
+ }
148
+ /** One sentence per finding, each naming the file or the field, for a list a user fixes one line at a time. */
149
+ export function findingSentences(findings) {
150
+ return findings.map(({ field, problem }) => field === null ? `${APIMATIC_CONFIG_FILE_NAME} ${problem}.` : `'${field}' ${problem}.`);
151
+ }
152
+ /**
153
+ * Every finding as one clause about the file, for a message that has already named it:
154
+ * "it is empty", "its 'languages' is not a JSON object".
155
+ */
156
+ export function findingClause(findings) {
157
+ return findings
158
+ .map(({ field, problem }) => (field === null ? `it ${problem}` : `its '${field}' ${problem}`))
159
+ .join('; ');
160
+ }
161
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/types/apimatic-config/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { JsonObject } from '../../utils/json-utils.js';
2
+ import { GitConfiguration, PackageConfigurationForLanguage, PackageSettingsState } from '../publish/package-settings-configuration.js';
3
+ import { SemVersion, SemVersionString } from '../publish/version.js';
4
+ import { Language } from '../sdk/generate.js';
5
+ import { ApimaticConfigDocument } from './document.js';
6
+ export declare const LANGUAGES_EXAMPLE = "\"languages\": { \"typescript\": {} }";
7
+ export interface LanguageSource {
8
+ repositoryUrl: string;
9
+ branch?: string;
10
+ }
11
+ /** The package's name is not here: the service reads it from `packageConfiguration`. */
12
+ interface PackageRelease {
13
+ version: SemVersionString;
14
+ }
15
+ interface LanguagePublishing<TConfiguration> {
16
+ source?: LanguageSource;
17
+ package?: PackageRelease;
18
+ /** Optional because a profile can configure a repository without a package. */
19
+ packageConfiguration?: TConfiguration;
20
+ }
21
+ export type LanguagePublishingEntry<L extends Language> = LanguagePublishing<PackageConfigurationForLanguage[L]>;
22
+ /** Without `publishing`, the language was asked for but nothing has been published yet. */
23
+ export interface PluginLanguageEntry<L extends Language> {
24
+ publishing?: LanguagePublishingEntry<L>;
25
+ }
26
+ export type PluginLanguages = Partial<{
27
+ [L in Language]: PluginLanguageEntry<L>;
28
+ }>;
29
+ export declare const languagesOf: (document: ApimaticConfigDocument) => PluginLanguages;
30
+ export declare const isPublished: (entry: PluginLanguageEntry<Language> | undefined) => boolean;
31
+ export declare function buildLanguageEntry<L extends Language>(language: L, gitConfiguration: GitConfiguration | undefined, packageConfiguration: PackageConfigurationForLanguage[L] | undefined, packageVersion: SemVersion | undefined): PluginLanguageEntry<L>;
32
+ export declare function withLanguage<L extends Language>(languages: PluginLanguages, language: L, entry: PluginLanguageEntry<L>, packageSettings: PackageSettingsState): PluginLanguages;
33
+ export interface RecordedPublishing {
34
+ repositoryUrl: string | null;
35
+ version: string | null;
36
+ packageConfiguration: Readonly<JsonObject>;
37
+ }
38
+ export declare function recordedPublishing(entry: unknown): RecordedPublishing;
39
+ export {};
@@ -0,0 +1,58 @@
1
+ import { isJsonObject } from '../../utils/json-utils.js';
2
+ const GITHUB_BASE_URL = 'https://github.com';
3
+ export const LANGUAGES_EXAMPLE = '"languages": { "typescript": {} }';
4
+ export const languagesOf = (document) => (document.languages() ?? {});
5
+ export const isPublished = (entry) => Boolean(entry?.publishing?.source ?? entry?.publishing?.package);
6
+ export function buildLanguageEntry(language, gitConfiguration, packageConfiguration, packageVersion) {
7
+ const repositoryName = gitConfiguration?.repositoryName?.trim();
8
+ const source = repositoryName
9
+ ? {
10
+ repositoryUrl: `${GITHUB_BASE_URL}/${repositoryName}`,
11
+ branch: gitConfiguration?.branch ? gitConfiguration.branch : undefined
12
+ }
13
+ : undefined;
14
+ return {
15
+ publishing: {
16
+ source,
17
+ package: packageVersion ? { version: packageVersion.toString() } : undefined,
18
+ // Written even without a release: it says how the package is set up, not that one exists.
19
+ packageConfiguration
20
+ }
21
+ };
22
+ }
23
+ export function withLanguage(languages, language, entry, packageSettings) {
24
+ const existingEntry = languages[language];
25
+ const existingPublishing = existingEntry?.publishing;
26
+ const publishing = entry.publishing
27
+ ? {
28
+ ...existingPublishing,
29
+ ...entry.publishing,
30
+ source: entry.publishing.source ?? existingPublishing?.source,
31
+ package: entry.publishing.package ?? existingPublishing?.package,
32
+ packageConfiguration: packageSettings === 'disabled'
33
+ ? undefined
34
+ : entry.publishing.packageConfiguration ?? existingPublishing?.packageConfiguration
35
+ }
36
+ : existingPublishing;
37
+ return { ...languages, [language]: { ...existingEntry, ...entry, ...(publishing ? { publishing } : {}) } };
38
+ }
39
+ export function recordedPublishing(entry) {
40
+ const publishing = objectAt(entry, 'publishing');
41
+ const source = objectAt(publishing, 'source');
42
+ const release = objectAt(publishing, 'package');
43
+ return {
44
+ repositoryUrl: stringAt(source, 'repositoryUrl'),
45
+ version: stringAt(release, 'version'),
46
+ packageConfiguration: objectAt(publishing, 'packageConfiguration')
47
+ };
48
+ }
49
+ // `T` only types `key`, so renaming a field fails to compile here instead of reading nothing.
50
+ function objectAt(value, key) {
51
+ const found = isJsonObject(value) ? value[key] : undefined;
52
+ return isJsonObject(found) ? found : {};
53
+ }
54
+ function stringAt(value, key) {
55
+ const found = value[key];
56
+ return typeof found === 'string' ? found : null;
57
+ }
58
+ //# sourceMappingURL=languages-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages-block.js","sourceRoot":"","sources":["../../../src/types/apimatic-config/languages-block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { Result } from 'neverthrow';
2
+ import { ApimaticConfigDocument, ConfigBlockName, ConfigFinding } from './apimatic-config/document.js';
3
+ import { DirectoryPath } from './file/directoryPath.js';
4
+ import { FilePath } from './file/filePath.js';
5
+ /**
6
+ * What a reader finds. `path` rides along purely so a prompt can say where to fix the file.
7
+ * A parsed document may still carry findings; each command reads the blocks it owns.
8
+ */
9
+ export type ApimaticConfigState = {
10
+ state: 'missing';
11
+ } | {
12
+ state: 'unparseable';
13
+ findings: ConfigFinding[];
14
+ path: FilePath;
15
+ } | {
16
+ state: 'parsed';
17
+ document: ApimaticConfigDocument;
18
+ path: FilePath;
19
+ };
20
+ export type ApimaticConfigWriteFailure = 'unreadable' | 'unwritable';
21
+ /** The `apimatic.json` in a project's `src/`, beside `APIMATIC-BUILD.json`. */
22
+ export declare class ApimaticConfigContext {
23
+ private readonly sourceDirectory;
24
+ private readonly fileService;
25
+ constructor(sourceDirectory: DirectoryPath);
26
+ private get configFile();
27
+ exists(): Promise<boolean>;
28
+ read(): Promise<ApimaticConfigState>;
29
+ /**
30
+ * Reads the document, hands the whole of it to `apply`, writes back the whole of what comes
31
+ * back. `blocks` names what the caller is about to write: a finding in one of them, or at
32
+ * the root, refuses the write, so a merge never spreads a malformed block into the file. A
33
+ * missing file starts from the empty document. A file that exists but cannot be parsed is
34
+ * left alone rather than overwritten, and a write fault is reported rather than thrown: this
35
+ * runs after work that already succeeded, and nothing here may turn that into a crash. A merge
36
+ * that changes nothing writes nothing, so re-running a command leaves the file as it was saved.
37
+ */
38
+ merge(blocks: readonly ConfigBlockName[], apply: (document: ApimaticConfigDocument) => ApimaticConfigDocument): Promise<Result<ApimaticConfigDocument, ApimaticConfigWriteFailure>>;
39
+ /**
40
+ * Rewrites the file without its byte-order mark, if it has one. Reading past a mark is enough
41
+ * while the file stays here, but `plugin generate` zips it and sends it to a parser that is
42
+ * not this one. Only the mark goes: the rest is written back byte for byte, so a layout this
43
+ * CLI never chose, and the line endings with it, survive a rewrite nobody asked for.
44
+ */
45
+ removeByteOrderMark(): Promise<Result<void, ApimaticConfigWriteFailure>>;
46
+ private load;
47
+ private static detectFormat;
48
+ }