@forge/cli 0.0.0-experimental-deeb8f6 → 0.0.0-experimental-c8e9749

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 (319) hide show
  1. package/CHANGELOG.md +1110 -2
  2. package/npm-shrinkwrap.json +13212 -223
  3. package/out/analytics-client/analytics-client.d.ts +36 -0
  4. package/out/analytics-client/analytics-client.d.ts.map +1 -0
  5. package/out/analytics-client/analytics-client.js +140 -0
  6. package/out/analytics-client/analytics-message-handler.d.ts +21 -0
  7. package/out/analytics-client/analytics-message-handler.d.ts.map +1 -0
  8. package/out/analytics-client/analytics-message-handler.js +43 -0
  9. package/out/autocomplete/autocomplete-config.json +243 -0
  10. package/out/autocomplete/index.d.ts +5 -0
  11. package/out/autocomplete/index.d.ts.map +1 -0
  12. package/out/autocomplete/index.js +41 -0
  13. package/out/autocomplete/isSupportedShell.d.ts +2 -0
  14. package/out/autocomplete/isSupportedShell.d.ts.map +1 -0
  15. package/out/autocomplete/isSupportedShell.js +11 -0
  16. package/out/autocomplete/types.d.ts +14 -0
  17. package/out/autocomplete/types.d.ts.map +1 -0
  18. package/out/autocomplete/types.js +2 -0
  19. package/out/autocomplete/util.d.ts +6 -0
  20. package/out/autocomplete/util.d.ts.map +1 -0
  21. package/out/autocomplete/util.js +15 -0
  22. package/out/bin/cli.d.ts +1 -0
  23. package/out/bin/cli.d.ts.map +1 -1
  24. package/out/bin/cli.js +4 -1
  25. package/out/bin/postinstall.d.ts +2 -0
  26. package/out/bin/postinstall.d.ts.map +1 -0
  27. package/out/bin/postinstall.js +23 -0
  28. package/out/command-line/anon-user-id.d.ts +3 -0
  29. package/out/command-line/anon-user-id.d.ts.map +1 -0
  30. package/out/command-line/anon-user-id.js +17 -0
  31. package/out/command-line/command.d.ts +80 -0
  32. package/out/command-line/command.d.ts.map +1 -0
  33. package/out/command-line/command.js +408 -0
  34. package/out/command-line/controller/assertUnreachable.d.ts +2 -0
  35. package/out/command-line/controller/assertUnreachable.d.ts.map +1 -0
  36. package/out/command-line/controller/assertUnreachable.js +7 -0
  37. package/out/command-line/controller/autocomplete-controller.d.ts +12 -0
  38. package/out/command-line/controller/autocomplete-controller.d.ts.map +1 -0
  39. package/out/command-line/controller/autocomplete-controller.js +54 -0
  40. package/out/command-line/controller/deploy-controller.d.ts +42 -0
  41. package/out/command-line/controller/deploy-controller.d.ts.map +1 -0
  42. package/out/command-line/controller/deploy-controller.js +139 -0
  43. package/out/command-line/controller/feedback-controller.d.ts +9 -0
  44. package/out/command-line/controller/feedback-controller.d.ts.map +1 -0
  45. package/out/command-line/controller/feedback-controller.js +19 -0
  46. package/out/command-line/controller/getNodeVersion.d.ts +2 -0
  47. package/out/command-line/controller/getNodeVersion.d.ts.map +1 -0
  48. package/out/command-line/controller/getNodeVersion.js +7 -0
  49. package/out/command-line/controller/install-controller.d.ts +35 -0
  50. package/out/command-line/controller/install-controller.d.ts.map +1 -0
  51. package/out/command-line/controller/install-controller.js +157 -0
  52. package/out/command-line/controller/lint-controller.d.ts +9 -0
  53. package/out/command-line/controller/lint-controller.d.ts.map +1 -0
  54. package/out/command-line/controller/lint-controller.js +20 -0
  55. package/out/command-line/controller/pre-command-controller.d.ts +25 -0
  56. package/out/command-line/controller/pre-command-controller.d.ts.map +1 -0
  57. package/out/command-line/controller/pre-command-controller.js +57 -0
  58. package/out/command-line/controller/prerequisites-controller.d.ts +15 -0
  59. package/out/command-line/controller/prerequisites-controller.d.ts.map +1 -0
  60. package/out/command-line/controller/prerequisites-controller.js +41 -0
  61. package/out/command-line/controller/settings-controller.d.ts +19 -0
  62. package/out/command-line/controller/settings-controller.d.ts.map +1 -0
  63. package/out/command-line/controller/settings-controller.js +48 -0
  64. package/out/command-line/controller/stubController.d.ts +9 -0
  65. package/out/command-line/controller/stubController.d.ts.map +1 -0
  66. package/out/command-line/controller/stubController.js +15 -0
  67. package/out/command-line/controller/tunnel-controller.d.ts +14 -0
  68. package/out/command-line/controller/tunnel-controller.d.ts.map +1 -0
  69. package/out/command-line/controller/tunnel-controller.js +43 -0
  70. package/out/command-line/dependency-injection.d.ts +76 -0
  71. package/out/command-line/dependency-injection.d.ts.map +1 -0
  72. package/out/command-line/dependency-injection.js +211 -0
  73. package/out/command-line/environment.d.ts +2 -0
  74. package/out/command-line/environment.d.ts.map +1 -0
  75. package/out/command-line/environment.js +16 -0
  76. package/out/command-line/errors.d.ts +6 -0
  77. package/out/command-line/errors.d.ts.map +1 -0
  78. package/out/command-line/errors.js +12 -0
  79. package/out/command-line/index.d.ts +5 -0
  80. package/out/command-line/index.d.ts.map +1 -0
  81. package/out/command-line/index.js +73 -0
  82. package/out/command-line/register-app-commands.d.ts +10 -0
  83. package/out/command-line/register-app-commands.d.ts.map +1 -0
  84. package/out/command-line/register-app-commands.js +128 -0
  85. package/out/command-line/register-authentication-command.d.ts +16 -0
  86. package/out/command-line/register-authentication-command.d.ts.map +1 -0
  87. package/out/command-line/register-authentication-command.js +94 -0
  88. package/out/command-line/register-autocomplete-commands.d.ts +3 -0
  89. package/out/command-line/register-autocomplete-commands.d.ts.map +1 -0
  90. package/out/command-line/register-autocomplete-commands.js +14 -0
  91. package/out/command-line/register-contributors-commands.d.ts +3 -0
  92. package/out/command-line/register-contributors-commands.d.ts.map +1 -0
  93. package/out/command-line/register-contributors-commands.js +134 -0
  94. package/out/command-line/register-deployment-commands.d.ts +22 -0
  95. package/out/command-line/register-deployment-commands.d.ts.map +1 -0
  96. package/out/command-line/register-deployment-commands.js +16 -0
  97. package/out/command-line/register-environment-variables-commands.d.ts +3 -0
  98. package/out/command-line/register-environment-variables-commands.d.ts.map +1 -0
  99. package/out/command-line/register-environment-variables-commands.js +103 -0
  100. package/out/command-line/register-feedback-commands.d.ts +3 -0
  101. package/out/command-line/register-feedback-commands.d.ts.map +1 -0
  102. package/out/command-line/register-feedback-commands.js +32 -0
  103. package/out/command-line/register-installation-commands.d.ts +6 -0
  104. package/out/command-line/register-installation-commands.d.ts.map +1 -0
  105. package/out/command-line/register-installation-commands.js +143 -0
  106. package/out/command-line/register-lint-command.d.ts +8 -0
  107. package/out/command-line/register-lint-command.d.ts.map +1 -0
  108. package/out/command-line/register-lint-command.js +16 -0
  109. package/out/command-line/register-log-commands.d.ts +4 -0
  110. package/out/command-line/register-log-commands.d.ts.map +1 -0
  111. package/out/command-line/register-log-commands.js +139 -0
  112. package/out/command-line/register-providers-commands.d.ts +3 -0
  113. package/out/command-line/register-providers-commands.d.ts.map +1 -0
  114. package/out/command-line/register-providers-commands.js +44 -0
  115. package/out/command-line/register-settings-commands.d.ts +3 -0
  116. package/out/command-line/register-settings-commands.d.ts.map +1 -0
  117. package/out/command-line/register-settings-commands.js +39 -0
  118. package/out/command-line/register-tunnel-commands.d.ts +3 -0
  119. package/out/command-line/register-tunnel-commands.d.ts.map +1 -0
  120. package/out/command-line/register-tunnel-commands.js +15 -0
  121. package/out/command-line/register-webtrigger-commands.d.ts +3 -0
  122. package/out/command-line/register-webtrigger-commands.d.ts.map +1 -0
  123. package/out/command-line/register-webtrigger-commands.js +56 -0
  124. package/out/command-line/sentry.d.ts +4 -0
  125. package/out/command-line/sentry.d.ts.map +1 -0
  126. package/out/command-line/sentry.js +16 -0
  127. package/out/command-line/unique-machine-id.d.ts +3 -0
  128. package/out/command-line/unique-machine-id.d.ts.map +1 -0
  129. package/out/command-line/unique-machine-id.js +19 -0
  130. package/out/command-line/version-info.d.ts +9 -0
  131. package/out/command-line/version-info.d.ts.map +1 -0
  132. package/out/command-line/version-info.js +42 -0
  133. package/out/command-line/view/analytics-settings-view.d.ts +7 -0
  134. package/out/command-line/view/analytics-settings-view.d.ts.map +1 -0
  135. package/out/command-line/view/analytics-settings-view.js +18 -0
  136. package/out/command-line/view/deploy-view.d.ts +21 -0
  137. package/out/command-line/view/deploy-view.d.ts.map +1 -0
  138. package/out/command-line/view/deploy-view.js +58 -0
  139. package/out/command-line/view/install-view.d.ts +18 -0
  140. package/out/command-line/view/install-view.d.ts.map +1 -0
  141. package/out/command-line/view/install-view.js +56 -0
  142. package/out/command-line/view/lint-view.d.ts +12 -0
  143. package/out/command-line/view/lint-view.d.ts.map +1 -0
  144. package/out/command-line/view/lint-view.js +31 -0
  145. package/out/command-line/view/lite-lint-view.d.ts +10 -0
  146. package/out/command-line/view/lite-lint-view.d.ts.map +1 -0
  147. package/out/command-line/view/lite-lint-view.js +18 -0
  148. package/out/command-line/view/settings-view.d.ts +10 -0
  149. package/out/command-line/view/settings-view.d.ts.map +1 -0
  150. package/out/command-line/view/settings-view.js +26 -0
  151. package/out/command-line/view/tunnel-view.d.ts +20 -0
  152. package/out/command-line/view/tunnel-view.d.ts.map +1 -0
  153. package/out/command-line/view/tunnel-view.js +92 -0
  154. package/out/contributors/add-contributor.d.ts +17 -0
  155. package/out/contributors/add-contributor.d.ts.map +1 -0
  156. package/out/contributors/add-contributor.js +14 -0
  157. package/out/contributors/graphql-client.d.ts +14 -0
  158. package/out/contributors/graphql-client.d.ts.map +1 -0
  159. package/out/contributors/graphql-client.js +113 -0
  160. package/out/contributors/list-contributors.d.ts +18 -0
  161. package/out/contributors/list-contributors.d.ts.map +1 -0
  162. package/out/contributors/list-contributors.js +14 -0
  163. package/out/contributors/remove-contributors.d.ts +18 -0
  164. package/out/contributors/remove-contributors.d.ts.map +1 -0
  165. package/out/contributors/remove-contributors.js +14 -0
  166. package/out/deploy/deployer/deploy-monitor-graphql-client.d.ts +24 -0
  167. package/out/deploy/deployer/deploy-monitor-graphql-client.d.ts.map +1 -0
  168. package/out/deploy/deployer/deploy-monitor-graphql-client.js +57 -0
  169. package/out/deploy/deployer/deployer.d.ts +40 -0
  170. package/out/deploy/deployer/deployer.d.ts.map +1 -0
  171. package/out/deploy/deployer/deployer.js +187 -0
  172. package/out/deploy/deployer/index.d.ts +4 -0
  173. package/out/deploy/deployer/index.d.ts.map +1 -0
  174. package/out/deploy/deployer/index.js +6 -0
  175. package/out/deploy/deployer/trigger-deploy-graphql-client.d.ts +19 -0
  176. package/out/deploy/deployer/trigger-deploy-graphql-client.d.ts.map +1 -0
  177. package/out/deploy/deployer/trigger-deploy-graphql-client.js +49 -0
  178. package/out/deploy/index.d.ts +5 -0
  179. package/out/deploy/index.d.ts.map +1 -0
  180. package/out/deploy/index.js +7 -0
  181. package/out/deploy/package-upload-deploy.d.ts +20 -0
  182. package/out/deploy/package-upload-deploy.d.ts.map +1 -0
  183. package/out/deploy/package-upload-deploy.js +37 -0
  184. package/out/deploy/packager/archiver.d.ts +27 -0
  185. package/out/deploy/packager/archiver.d.ts.map +1 -0
  186. package/out/deploy/packager/archiver.js +76 -0
  187. package/out/deploy/packager/index.d.ts +3 -0
  188. package/out/deploy/packager/index.d.ts.map +1 -0
  189. package/out/deploy/packager/index.js +5 -0
  190. package/out/deploy/packager/nativeui-bundler.d.ts +12 -0
  191. package/out/deploy/packager/nativeui-bundler.d.ts.map +1 -0
  192. package/out/deploy/packager/nativeui-bundler.js +34 -0
  193. package/out/deploy/packager/packager.d.ts +32 -0
  194. package/out/deploy/packager/packager.d.ts.map +1 -0
  195. package/out/deploy/packager/packager.js +21 -0
  196. package/out/deploy/packager/runtime-bundler.d.ts +15 -0
  197. package/out/deploy/packager/runtime-bundler.d.ts.map +1 -0
  198. package/out/deploy/packager/runtime-bundler.js +53 -0
  199. package/out/deploy/uploader/artifact-graphql-client.d.ts +26 -0
  200. package/out/deploy/uploader/artifact-graphql-client.d.ts.map +1 -0
  201. package/out/deploy/uploader/artifact-graphql-client.js +100 -0
  202. package/out/deploy/uploader/index.d.ts +3 -0
  203. package/out/deploy/uploader/index.d.ts.map +1 -0
  204. package/out/deploy/uploader/index.js +5 -0
  205. package/out/deploy/uploader/uploader.d.ts +19 -0
  206. package/out/deploy/uploader/uploader.d.ts.map +1 -0
  207. package/out/deploy/uploader/uploader.js +43 -0
  208. package/out/environment-variables/delete-environment-variable.d.ts +18 -0
  209. package/out/environment-variables/delete-environment-variable.d.ts.map +1 -0
  210. package/out/environment-variables/delete-environment-variable.js +14 -0
  211. package/out/environment-variables/graphql-client.d.ts +16 -0
  212. package/out/environment-variables/graphql-client.d.ts.map +1 -0
  213. package/out/environment-variables/graphql-client.js +113 -0
  214. package/out/environment-variables/list-environment-variables.d.ts +22 -0
  215. package/out/environment-variables/list-environment-variables.d.ts.map +1 -0
  216. package/out/environment-variables/list-environment-variables.js +14 -0
  217. package/out/environment-variables/set-environment-variable.d.ts +20 -0
  218. package/out/environment-variables/set-environment-variable.d.ts.map +1 -0
  219. package/out/environment-variables/set-environment-variable.js +14 -0
  220. package/out/installations/graphql-client.d.ts +75 -0
  221. package/out/installations/graphql-client.d.ts.map +1 -0
  222. package/out/installations/graphql-client.js +423 -0
  223. package/out/installations/install-app-site.d.ts +21 -0
  224. package/out/installations/install-app-site.d.ts.map +1 -0
  225. package/out/installations/install-app-site.js +19 -0
  226. package/out/installations/shared.d.ts +5 -0
  227. package/out/installations/shared.d.ts.map +1 -0
  228. package/out/installations/shared.js +20 -0
  229. package/out/installations/site-translation/bitbucket.d.ts +24 -0
  230. package/out/installations/site-translation/bitbucket.d.ts.map +1 -0
  231. package/out/installations/site-translation/bitbucket.js +113 -0
  232. package/out/installations/site-translation/cloudid-products.d.ts +17 -0
  233. package/out/installations/site-translation/cloudid-products.d.ts.map +1 -0
  234. package/out/installations/site-translation/cloudid-products.js +89 -0
  235. package/out/installations/site-translation/index.d.ts +4 -0
  236. package/out/installations/site-translation/index.d.ts.map +1 -0
  237. package/out/installations/site-translation/index.js +6 -0
  238. package/out/installations/site-translation/site-translation.d.ts +12 -0
  239. package/out/installations/site-translation/site-translation.d.ts.map +1 -0
  240. package/out/installations/site-translation/site-translation.js +2 -0
  241. package/out/installations/uninstall-app.d.ts +25 -0
  242. package/out/installations/uninstall-app.d.ts.map +1 -0
  243. package/out/installations/uninstall-app.js +43 -0
  244. package/out/migration-keys/graphql-client.d.ts +8 -0
  245. package/out/migration-keys/graphql-client.d.ts.map +1 -0
  246. package/out/migration-keys/graphql-client.js +55 -0
  247. package/out/providers/configure-provider.d.ts +19 -0
  248. package/out/providers/configure-provider.d.ts.map +1 -0
  249. package/out/providers/configure-provider.js +14 -0
  250. package/out/providers/graphql-client.d.ts +8 -0
  251. package/out/providers/graphql-client.d.ts.map +1 -0
  252. package/out/providers/graphql-client.js +45 -0
  253. package/out/service/cached-config-service.d.ts +8 -0
  254. package/out/service/cached-config-service.d.ts.map +1 -0
  255. package/out/service/cached-config-service.js +16 -0
  256. package/out/service/command-suggestion-service.d.ts +4 -0
  257. package/out/service/command-suggestion-service.d.ts.map +1 -0
  258. package/out/service/command-suggestion-service.js +17 -0
  259. package/out/service/docker-service.d.ts +24 -0
  260. package/out/service/docker-service.d.ts.map +1 -0
  261. package/out/service/docker-service.js +71 -0
  262. package/out/service/installation-service.d.ts +51 -0
  263. package/out/service/installation-service.d.ts.map +1 -0
  264. package/out/service/installation-service.js +91 -0
  265. package/out/service/lint-service.d.ts +23 -0
  266. package/out/service/lint-service.d.ts.map +1 -0
  267. package/out/service/lint-service.js +39 -0
  268. package/out/service/lite-lint-service.d.ts +10 -0
  269. package/out/service/lite-lint-service.d.ts.map +1 -0
  270. package/out/service/lite-lint-service.js +27 -0
  271. package/out/service/migration-keys-service.d.ts +19 -0
  272. package/out/service/migration-keys-service.d.ts.map +1 -0
  273. package/out/service/migration-keys-service.js +14 -0
  274. package/out/service/port-finding-service.d.ts +12 -0
  275. package/out/service/port-finding-service.d.ts.map +1 -0
  276. package/out/service/port-finding-service.js +34 -0
  277. package/out/service/resource-packaging-service.d.ts +46 -0
  278. package/out/service/resource-packaging-service.d.ts.map +1 -0
  279. package/out/service/resource-packaging-service.js +132 -0
  280. package/out/service/resources-uploader-service.d.ts +16 -0
  281. package/out/service/resources-uploader-service.d.ts.map +1 -0
  282. package/out/service/resources-uploader-service.js +39 -0
  283. package/out/service/tunnel-analytics-service.d.ts +11 -0
  284. package/out/service/tunnel-analytics-service.d.ts.map +1 -0
  285. package/out/service/tunnel-analytics-service.js +24 -0
  286. package/out/service/tunnel-service.d.ts +41 -0
  287. package/out/service/tunnel-service.d.ts.map +1 -0
  288. package/out/service/tunnel-service.js +196 -0
  289. package/out/storage/local-file-storage.d.ts +17 -0
  290. package/out/storage/local-file-storage.d.ts.map +1 -0
  291. package/out/storage/local-file-storage.js +53 -0
  292. package/out/webtrigger/get-webtrigger-url.d.ts +27 -0
  293. package/out/webtrigger/get-webtrigger-url.d.ts.map +1 -0
  294. package/out/webtrigger/get-webtrigger-url.js +26 -0
  295. package/out/webtrigger/graphql-client.d.ts +14 -0
  296. package/out/webtrigger/graphql-client.d.ts.map +1 -0
  297. package/out/webtrigger/graphql-client.js +52 -0
  298. package/out/workers/analytics-message-worker.d.ts +12 -0
  299. package/out/workers/analytics-message-worker.d.ts.map +1 -0
  300. package/out/workers/analytics-message-worker.js +29 -0
  301. package/out/workers/forge-cli-workers.d.ts +2 -0
  302. package/out/workers/forge-cli-workers.d.ts.map +1 -0
  303. package/out/workers/forge-cli-workers.js +21 -0
  304. package/out/workers/tunnel-clean-up-worker.d.ts +8 -0
  305. package/out/workers/tunnel-clean-up-worker.d.ts.map +1 -0
  306. package/out/workers/tunnel-clean-up-worker.js +31 -0
  307. package/out/workers/version-check-worker.d.ts +8 -0
  308. package/out/workers/version-check-worker.d.ts.map +1 -0
  309. package/out/workers/version-check-worker.js +20 -0
  310. package/out/workers/worker-info.d.ts +8 -0
  311. package/out/workers/worker-info.d.ts.map +1 -0
  312. package/out/workers/worker-info.js +15 -0
  313. package/out/workers/worker.d.ts +6 -0
  314. package/out/workers/worker.d.ts.map +1 -0
  315. package/out/workers/worker.js +9 -0
  316. package/out/workers/workers-starter.d.ts +5 -0
  317. package/out/workers/workers-starter.d.ts.map +1 -0
  318. package/out/workers/workers-starter.js +22 -0
  319. package/package.json +60 -5
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourcesUploaderService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const cli_shared_1 = require("@forge/cli-shared");
6
+ const form_data_1 = tslib_1.__importDefault(require("form-data"));
7
+ const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
8
+ class ResourceUploadError extends cli_shared_1.BaseError {
9
+ constructor(userError) {
10
+ super('Failed to upload resource to S3');
11
+ this.userError = userError;
12
+ }
13
+ isUserError() {
14
+ return Boolean(this.userError);
15
+ }
16
+ }
17
+ class ResourcesUploaderService {
18
+ constructor(fileSystemReader) {
19
+ this.fileSystemReader = fileSystemReader;
20
+ }
21
+ async upload({ archive, preSignedUrl }) {
22
+ const content = this.fileSystemReader.readBinaryFile(archive);
23
+ const formData = new form_data_1.default();
24
+ formData.append('Content-Type', 'application/zip');
25
+ formData.append('acl', 'bucket-owner-full-control');
26
+ Object.entries(preSignedUrl.uploadFormData).forEach(([k, v]) => {
27
+ formData.append(k, v);
28
+ });
29
+ formData.append('file', content);
30
+ const response = await (0, node_fetch_1.default)(preSignedUrl.uploadUrl, {
31
+ method: 'POST',
32
+ body: formData
33
+ });
34
+ if (!response.ok) {
35
+ throw new ResourceUploadError(response.status >= 400 && response.status < 500);
36
+ }
37
+ }
38
+ }
39
+ exports.ResourcesUploaderService = ResourcesUploaderService;
@@ -0,0 +1,11 @@
1
+ import { PersonalApiCredentialsValidated } from '@forge/cli-shared';
2
+ import { AnalyticsClientReporter } from '../analytics-client/analytics-client';
3
+ import { DownloadProgressCallbacks } from '../command-line/view/tunnel-view';
4
+ export declare class TunnelAnalyticsService {
5
+ private readonly analyticsClientReporter;
6
+ constructor(analyticsClientReporter: AnalyticsClientReporter);
7
+ reportDockerVersion(creds: PersonalApiCredentialsValidated, dockerVersion: string | null): void;
8
+ reportTunnelClosed(creds: PersonalApiCredentialsValidated): void;
9
+ getImageDownloadReporters(creds: PersonalApiCredentialsValidated): DownloadProgressCallbacks;
10
+ }
11
+ //# sourceMappingURL=tunnel-analytics-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-analytics-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-analytics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAAvB,uBAAuB,EAAE,uBAAuB;IAEtE,mBAAmB,CAAC,KAAK,EAAE,+BAA+B,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM/F,kBAAkB,CAAC,KAAK,EAAE,+BAA+B,GAAG,IAAI;IAIhE,yBAAyB,CAAC,KAAK,EAAE,+BAA+B,GAAG,yBAAyB;CAOpG"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TunnelAnalyticsService = void 0;
4
+ class TunnelAnalyticsService {
5
+ constructor(analyticsClientReporter) {
6
+ this.analyticsClientReporter = analyticsClientReporter;
7
+ }
8
+ reportDockerVersion(creds, dockerVersion) {
9
+ this.analyticsClientReporter.reportSuccess('docker version check', creds, {
10
+ dockerVersion
11
+ });
12
+ }
13
+ reportTunnelClosed(creds) {
14
+ this.analyticsClientReporter.reportSuccess('close tunnel', creds, {});
15
+ }
16
+ getImageDownloadReporters(creds) {
17
+ return {
18
+ onStart: () => this.analyticsClientReporter.reportSuccess('image download started', creds, {}),
19
+ onFailure: () => this.analyticsClientReporter.reportSuccess('image download failed', creds, {}),
20
+ onSuccess: () => this.analyticsClientReporter.reportSuccess('image download finished', creds, {})
21
+ };
22
+ }
23
+ }
24
+ exports.TunnelAnalyticsService = TunnelAnalyticsService;
@@ -0,0 +1,41 @@
1
+ import { HiddenError, PersonalApiCredentials, PersonalApiCredentialsValidated } from '@forge/cli-shared';
2
+ import { spawn } from 'cross-spawn';
3
+ import { DockerService } from './docker-service';
4
+ import { ConfigFilePortFindingService } from './port-finding-service';
5
+ import { TunnelAnalyticsService } from './tunnel-analytics-service';
6
+ export interface TunnelOptions {
7
+ debug?: boolean;
8
+ }
9
+ export declare const CONTAINER_NAME = "forge-tunnel-docker";
10
+ export declare const IMAGE_NAME: string;
11
+ export declare class HiddenDockerTunnelError extends HiddenError {
12
+ }
13
+ export declare abstract class TunnelService {
14
+ protected readonly configFilePortFindingService: ConfigFilePortFindingService;
15
+ constructor(configFilePortFindingService: ConfigFilePortFindingService);
16
+ abstract run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentialsValidated, debugEnabled: boolean, onError?: (err: Error) => Promise<void>): Promise<void>;
17
+ protected getDockerOptions(tunnelOptions: TunnelOptions, debugEnabled: boolean, { email, token }: PersonalApiCredentials): Promise<string[]>;
18
+ protected getPortOptions(port: number, resourcePorts: Record<string, number>, cspReporterPort: number | undefined): string[];
19
+ protected getResourcePortEnvVarOption(resourcePorts: Record<string, number>): string[];
20
+ protected getUserEnvironmentVariablesOptions(): string[];
21
+ protected addEnvVarsForLocalTunnel(env: {
22
+ [key: string]: string;
23
+ }): Record<string, string>;
24
+ protected transformDockerOptionsToEnvVars(options: string[]): {
25
+ [key: string]: string;
26
+ };
27
+ protected getInteractiveOptions(): string[];
28
+ protected getVolumeOptions(): string[];
29
+ }
30
+ export declare class LocalTunnelService extends TunnelService {
31
+ run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentials, debugEnabled: boolean, onError: (err: Error) => Promise<void>): Promise<void>;
32
+ }
33
+ export declare class DockerTunnelService extends TunnelService {
34
+ private readonly dockerService;
35
+ private readonly analyticsService;
36
+ constructor(configFilePortFindingService: ConfigFilePortFindingService, dockerService: DockerService, analyticsService: TunnelAnalyticsService);
37
+ run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentialsValidated, debugEnabled: boolean): Promise<void>;
38
+ bootstrapDocker(): Promise<ReturnType<typeof spawn>>;
39
+ private validateDockerVersion;
40
+ }
41
+ //# sourceMappingURL=tunnel-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,sBAAsB,EACtB,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAcpD,eAAO,MAAM,UAAU,QAEuB,CAAC;AAE/C,qBAAa,uBAAwB,SAAQ,WAAW;CAAG;AAE3D,8BAAsB,aAAa;IACrB,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;gBAA1D,4BAA4B,EAAE,4BAA4B;aAEzE,GAAG,CACjB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,+BAA+B,EACtC,YAAY,EAAE,OAAO,EACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC;cAEA,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,OAAO,EACrB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,sBAAsB,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BpB,SAAS,CAAC,cAAc,CACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,MAAM,EAAE;IAwBX,SAAS,CAAC,2BAA2B,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE;IAItF,SAAS,CAAC,kCAAkC,IAAI,MAAM,EAAE;IAUxD,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ1F,SAAS,CAAC,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAYvF,SAAS,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAQ3C,SAAS,CAAC,gBAAgB,IAAI,MAAM,EAAE;CAgBvC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACtC,GAAG,CACd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC;CA0BjB;AAED,qBAAa,mBAAoB,SAAQ,aAAa;IAGlD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAFjC,4BAA4B,EAAE,4BAA4B,EACzC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,sBAAsB;IAK9C,GAAG,CACd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,+BAA+B,EACtC,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IA2BH,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;YAKnD,qBAAqB;CASpC"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DockerTunnelService = exports.LocalTunnelService = exports.TunnelService = exports.HiddenDockerTunnelError = exports.IMAGE_NAME = exports.CONTAINER_NAME = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const cli_shared_1 = require("@forge/cli-shared");
6
+ const cross_spawn_1 = require("cross-spawn");
7
+ const os_1 = tslib_1.__importDefault(require("os"));
8
+ const path_1 = require("path");
9
+ const portfinder_1 = require("portfinder");
10
+ const semver_1 = require("semver");
11
+ const version_info_1 = require("../command-line/version-info");
12
+ const DISABLE_TTY = process.env.DISABLE_TTY === 'true';
13
+ const CUR_WORK_APP_DIR = process.env.CUR_WORK_APP_DIR;
14
+ exports.CONTAINER_NAME = 'forge-tunnel-docker';
15
+ const cliDetails = (0, version_info_1.getCLIDetails)();
16
+ let versionTags;
17
+ if ((cliDetails === null || cliDetails === void 0 ? void 0 : cliDetails.version) !== undefined) {
18
+ if (process.env.FORGE_IN_LOCAL_E2E === 'true') {
19
+ versionTags = ['e2e'];
20
+ }
21
+ else {
22
+ versionTags = (0, semver_1.prerelease)(cliDetails.version) || ['latest'];
23
+ }
24
+ }
25
+ else {
26
+ versionTags = ['latest'];
27
+ }
28
+ exports.IMAGE_NAME = process.env.FORGE_DEV_DOCKER_TUNNEL
29
+ ? 'local/forge-tunnel:test'
30
+ : `atlassian/forge-tunnel:${versionTags[0]}`;
31
+ class HiddenDockerTunnelError extends cli_shared_1.HiddenError {
32
+ }
33
+ exports.HiddenDockerTunnelError = HiddenDockerTunnelError;
34
+ class TunnelService {
35
+ constructor(configFilePortFindingService) {
36
+ this.configFilePortFindingService = configFilePortFindingService;
37
+ }
38
+ async getDockerOptions(tunnelOptions, debugEnabled, { email, token }) {
39
+ try {
40
+ const graphqlGateway = (0, cli_shared_1.getGraphqlGateway)();
41
+ return [
42
+ '--rm',
43
+ `--name`,
44
+ exports.CONTAINER_NAME,
45
+ `--env`,
46
+ `APP_FOLDER=/app`,
47
+ `--env`,
48
+ `FORGE_EMAIL=${email}`,
49
+ `--env`,
50
+ `FORGE_API_TOKEN=${token}`,
51
+ `--env`,
52
+ `ENVIRONMENT_KEY=default`,
53
+ `--env`,
54
+ `TUNNEL_INSPECTOR_ENABLED=${!!tunnelOptions.debug}`,
55
+ `--env`,
56
+ `FORGE_GRAPHQL_GATEWAY=${graphqlGateway}`,
57
+ `--env`,
58
+ `VERBOSE_MODE=${debugEnabled}`,
59
+ `--env`,
60
+ `CLI_DETAILS=${JSON.stringify(cliDetails)}`,
61
+ `${exports.IMAGE_NAME}`
62
+ ];
63
+ }
64
+ catch (e) {
65
+ throw new HiddenDockerTunnelError("Couldn't populate docker options for tunneling");
66
+ }
67
+ }
68
+ getPortOptions(port, resourcePorts, cspReporterPort) {
69
+ const resourcePortOptions = (0, cli_shared_1.flatMap)(Object.values(resourcePorts), (resourcePort) => [
70
+ '-p',
71
+ `${resourcePort}:${resourcePort}`
72
+ ]);
73
+ const cspReporterPortOption = cspReporterPort
74
+ ? ['-p', `${cspReporterPort}:${cspReporterPort}`, '--env', `CSP_REPORTER_PORT=${cspReporterPort}`]
75
+ : [];
76
+ const addHostOption = os_1.default.platform() === 'linux' ? ['--add-host', 'host.docker.internal:host-gateway'] : [];
77
+ return [
78
+ `-p`,
79
+ `${port}:${port}`,
80
+ ...resourcePortOptions,
81
+ ...addHostOption,
82
+ ...cspReporterPortOption,
83
+ `--env`,
84
+ `TUNNEL_INSPECTOR_PORT=${port}`
85
+ ];
86
+ }
87
+ getResourcePortEnvVarOption(resourcePorts) {
88
+ return ['--env', `RESOURCE_PORT_MAP=${JSON.stringify(resourcePorts)}`];
89
+ }
90
+ getUserEnvironmentVariablesOptions() {
91
+ const options = [];
92
+ Object.keys(process.env)
93
+ .filter((variable) => variable.startsWith('FORGE_USER_VAR_'))
94
+ .forEach((name) => {
95
+ options.push('--env', `${name}=${process.env[name]}`);
96
+ });
97
+ return options;
98
+ }
99
+ addEnvVarsForLocalTunnel(env) {
100
+ return Object.assign(Object.assign({}, env), { PATH: process.env.PATH || '', FORCE_COLOR: '1' });
101
+ }
102
+ transformDockerOptionsToEnvVars(options) {
103
+ const envVarRegex = new RegExp('^(\\w+)=(.+)$', 'g');
104
+ const envVars = options.filter((opt) => envVarRegex.test(opt));
105
+ const envVarObj = {};
106
+ envVars.forEach((envVar) => {
107
+ envVarRegex.lastIndex = 0;
108
+ const [, key, val] = envVarRegex.exec(envVar);
109
+ envVarObj[key] = val;
110
+ });
111
+ return envVarObj;
112
+ }
113
+ getInteractiveOptions() {
114
+ if (DISABLE_TTY) {
115
+ return [`-i`];
116
+ }
117
+ return [`-it`];
118
+ }
119
+ getVolumeOptions() {
120
+ const options = [`-v=${CUR_WORK_APP_DIR || process.cwd()}:/app:cached`];
121
+ if (process.env.FORGE_DEV_DOCKER_TUNNEL) {
122
+ options.push(`-v=${(0, path_1.join)(__dirname, '../../../..')}:/monorepo:cached`);
123
+ }
124
+ if (process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES) {
125
+ const mounts = process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES.split(',');
126
+ mounts.forEach((mount) => {
127
+ options.push(`-v=${mount}:cached`);
128
+ });
129
+ }
130
+ return options;
131
+ }
132
+ }
133
+ exports.TunnelService = TunnelService;
134
+ class LocalTunnelService extends TunnelService {
135
+ async run(tunnelOptions, creds, debugEnabled, onError) {
136
+ const dockerOptions = await this.getDockerOptions(tunnelOptions, debugEnabled, creds);
137
+ const port = await (0, portfinder_1.getPortPromise)();
138
+ const resourcePorts = await this.configFilePortFindingService.findPorts();
139
+ const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
140
+ const portOptions = this.getPortOptions(port, resourcePorts, cspReporterPort);
141
+ const envVariablesOptions = this.getUserEnvironmentVariablesOptions();
142
+ const resourcePortEnvVarOption = this.getResourcePortEnvVarOption(resourcePorts);
143
+ const env = this.addEnvVarsForLocalTunnel(this.transformDockerOptionsToEnvVars([
144
+ ...dockerOptions,
145
+ ...portOptions,
146
+ ...envVariablesOptions,
147
+ ...resourcePortEnvVarOption
148
+ ]));
149
+ (0, cross_spawn_1.spawn)('forge-tunnel', [], {
150
+ stdio: 'inherit',
151
+ env: Object.assign(Object.assign({}, env), { FORGE_DEV_TUNNEL: 'true' })
152
+ }).on('error', onError);
153
+ }
154
+ }
155
+ exports.LocalTunnelService = LocalTunnelService;
156
+ class DockerTunnelService extends TunnelService {
157
+ constructor(configFilePortFindingService, dockerService, analyticsService) {
158
+ super(configFilePortFindingService);
159
+ this.dockerService = dockerService;
160
+ this.analyticsService = analyticsService;
161
+ }
162
+ async run(tunnelOptions, creds, debugEnabled) {
163
+ await this.validateDockerVersion(creds, debugEnabled);
164
+ const dockerOptions = await this.getDockerOptions(tunnelOptions, debugEnabled, creds);
165
+ const port = await (0, portfinder_1.getPortPromise)();
166
+ const resourcePorts = await this.configFilePortFindingService.findPorts(port);
167
+ const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
168
+ const portOptions = this.getPortOptions(port, resourcePorts, cspReporterPort);
169
+ const interactiveOptions = this.getInteractiveOptions();
170
+ const volumeOptions = this.getVolumeOptions();
171
+ const envVariablesOptions = this.getUserEnvironmentVariablesOptions();
172
+ const resourcePortEnvVarOption = this.getResourcePortEnvVarOption(resourcePorts);
173
+ const docker = this.dockerService.runContainer([
174
+ ...interactiveOptions,
175
+ ...volumeOptions,
176
+ ...portOptions,
177
+ ...envVariablesOptions,
178
+ ...resourcePortEnvVarOption,
179
+ ...dockerOptions
180
+ ]);
181
+ docker.on('exit', () => this.analyticsService.reportTunnelClosed(creds));
182
+ this.dockerService.startCleanupWorker([docker.pid], exports.CONTAINER_NAME);
183
+ }
184
+ async bootstrapDocker() {
185
+ await this.dockerService.removeContainer(exports.CONTAINER_NAME);
186
+ return this.dockerService.downloadImage(exports.IMAGE_NAME);
187
+ }
188
+ async validateDockerVersion(creds, debugEnabled) {
189
+ const { major, minor, full } = await this.dockerService.getDockerVersion(debugEnabled);
190
+ this.analyticsService.reportDockerVersion(creds, full);
191
+ if (major < 17 || (major === 17 && minor < 3)) {
192
+ throw new HiddenDockerTunnelError();
193
+ }
194
+ }
195
+ }
196
+ exports.DockerTunnelService = DockerTunnelService;
@@ -0,0 +1,17 @@
1
+ import { AnalyticsMessage } from '../analytics-client/analytics-message-handler';
2
+ export interface Storage {
3
+ addAnalyticsEvent(message: AnalyticsMessage): void;
4
+ deleteAnalyticsEvent(file: string): Promise<void>;
5
+ getAnalytics(): string[];
6
+ getAnalyticsEvent(file: string): Promise<AnalyticsMessage | undefined>;
7
+ }
8
+ export declare class LocalFileStorage implements Storage {
9
+ private static STORAGE_PATHS;
10
+ private static FOLDER;
11
+ constructor();
12
+ addAnalyticsEvent(message: AnalyticsMessage): void;
13
+ getAnalyticsEvent(file: string): Promise<AnalyticsMessage | undefined>;
14
+ getAnalytics(): string[];
15
+ deleteAnalyticsEvent(file: string): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=local-file-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-file-storage.d.ts","sourceRoot":"","sources":["../../src/storage/local-file-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAMjF,MAAM,WAAW,OAAO;IACtB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CACxE;AAGD,qBAAa,gBAAiB,YAAW,OAAO;IAC9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAAyB;IACrD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuC;;IAQ5D,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAQ5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAgB5E,YAAY,IAAI,MAAM,EAAE;IASlB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOxD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalFileStorage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const path_1 = tslib_1.__importDefault(require("path"));
6
+ const fs = tslib_1.__importStar(require("fs"));
7
+ const env_paths_1 = tslib_1.__importDefault(require("env-paths"));
8
+ const mkdirp_1 = tslib_1.__importDefault(require("mkdirp"));
9
+ class LocalFileStorage {
10
+ constructor() {
11
+ if (!fs.existsSync(LocalFileStorage.FOLDER)) {
12
+ mkdirp_1.default.sync(LocalFileStorage.FOLDER);
13
+ }
14
+ }
15
+ addAnalyticsEvent(message) {
16
+ try {
17
+ fs.writeFileSync(path_1.default.join(LocalFileStorage.FOLDER, `${message.id}.json`), JSON.stringify(message));
18
+ }
19
+ catch (e) {
20
+ }
21
+ }
22
+ async getAnalyticsEvent(file) {
23
+ try {
24
+ const content = await fs.promises.readFile(path_1.default.join(LocalFileStorage.FOLDER, file), {
25
+ encoding: 'utf8'
26
+ });
27
+ const parsedContent = JSON.parse(content);
28
+ parsedContent.event.timestamp = new Date(parsedContent.event.timestamp);
29
+ return parsedContent;
30
+ }
31
+ catch (e) {
32
+ return undefined;
33
+ }
34
+ }
35
+ getAnalytics() {
36
+ try {
37
+ return fs.readdirSync(LocalFileStorage.FOLDER).filter((f) => f.endsWith('.json'));
38
+ }
39
+ catch (e) {
40
+ return [];
41
+ }
42
+ }
43
+ async deleteAnalyticsEvent(file) {
44
+ try {
45
+ await fs.promises.unlink(path_1.default.join(LocalFileStorage.FOLDER, file));
46
+ }
47
+ catch (e) {
48
+ }
49
+ }
50
+ }
51
+ exports.LocalFileStorage = LocalFileStorage;
52
+ LocalFileStorage.STORAGE_PATHS = (0, env_paths_1.default)('forge-cli');
53
+ LocalFileStorage.FOLDER = LocalFileStorage.STORAGE_PATHS.data;
@@ -0,0 +1,27 @@
1
+ import { AppConfigProvider } from '@forge/cli-shared';
2
+ import { AppEnvironmentClient } from '@forge/cli-shared';
3
+ import { Installation } from '../service/installation-service';
4
+ import { WebTriggerGraphQLClient } from './graphql-client';
5
+ export interface Context {
6
+ contextId: string;
7
+ environmentARI: string;
8
+ extensionKey: string;
9
+ }
10
+ export interface WebTriggerUrlDetails {
11
+ appId: string;
12
+ contextId: string;
13
+ environmentId: string;
14
+ triggerKey: string;
15
+ }
16
+ export interface WebTriggerClient {
17
+ getInstallation(appId: string, installationId: string): Promise<Installation>;
18
+ }
19
+ export declare class GetWebTriggerURLCommand {
20
+ private readonly getAppConfig;
21
+ private readonly webTriggerClient;
22
+ private readonly appEnvironmentClient;
23
+ private readonly webTriggerGraphqlClient;
24
+ constructor(getAppConfig: AppConfigProvider, webTriggerClient: WebTriggerClient, appEnvironmentClient: AppEnvironmentClient, webTriggerGraphqlClient: WebTriggerGraphQLClient);
25
+ execute(installationId: string, functionKey: string): Promise<string>;
26
+ }
27
+ //# sourceMappingURL=get-webtrigger-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-webtrigger-url.d.ts","sourceRoot":"","sources":["../../src/webtrigger/get-webtrigger-url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/E;AACD,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAHvB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,oBAAoB,EAC1C,uBAAuB,EAAE,uBAAuB;IAGtD,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAgBnF"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetWebTriggerURLCommand = void 0;
4
+ const cs_ari_1 = require("@forge/util/packages/cs-ari");
5
+ class GetWebTriggerURLCommand {
6
+ constructor(getAppConfig, webTriggerClient, appEnvironmentClient, webTriggerGraphqlClient) {
7
+ this.getAppConfig = getAppConfig;
8
+ this.webTriggerClient = webTriggerClient;
9
+ this.appEnvironmentClient = appEnvironmentClient;
10
+ this.webTriggerGraphqlClient = webTriggerGraphqlClient;
11
+ }
12
+ async execute(installationId, functionKey) {
13
+ const { id: appId } = await this.getAppConfig();
14
+ const { environmentKey, context } = await this.webTriggerClient.getInstallation(appId, installationId);
15
+ const environmentId = await this.appEnvironmentClient.getAppEnvironmentId(appId, environmentKey);
16
+ const ari = (0, cs_ari_1.parse)(appId);
17
+ const appAri = (0, cs_ari_1.parseAppAri)(ari);
18
+ return await this.webTriggerGraphqlClient.createWebTriggerUrl({
19
+ appId: appAri.appId,
20
+ contextId: context,
21
+ environmentId: environmentId,
22
+ triggerKey: functionKey
23
+ });
24
+ }
25
+ }
26
+ exports.GetWebTriggerURLCommand = GetWebTriggerURLCommand;
@@ -0,0 +1,14 @@
1
+ import { GraphQLClient, GraphQlMutationError } from '@forge/cli-shared';
2
+ import { WebTriggerUrlDetails } from './get-webtrigger-url';
3
+ export declare class WebTriggerCreationError extends GraphQlMutationError {
4
+ constructor(message: string, requestId: string | undefined, code: string | undefined);
5
+ }
6
+ export declare class MissingWebTriggerUrlError extends GraphQlMutationError {
7
+ constructor(requestId: string | undefined);
8
+ }
9
+ export declare class WebTriggerGraphQLClient {
10
+ private readonly graphQLClient;
11
+ constructor(graphQLClient: GraphQLClient);
12
+ createWebTriggerUrl({ appId, contextId, environmentId, triggerKey }: WebTriggerUrlDetails): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=graphql-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/webtrigger/graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAyC,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,qBAAa,uBAAwB,SAAQ,oBAAoB;gBACnD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;CAGrF;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;gBACrD,SAAS,EAAE,MAAM,GAAG,SAAS;CAQ1C;AAED,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE5C,mBAAmB,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACX,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoC1C"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebTriggerGraphQLClient = exports.MissingWebTriggerUrlError = exports.WebTriggerCreationError = void 0;
4
+ const cli_shared_1 = require("@forge/cli-shared");
5
+ class WebTriggerCreationError extends cli_shared_1.GraphQlMutationError {
6
+ constructor(message, requestId, code) {
7
+ super(cli_shared_1.Text.webtrigger.error.creationError(message), { requestId, code });
8
+ }
9
+ }
10
+ exports.WebTriggerCreationError = WebTriggerCreationError;
11
+ class MissingWebTriggerUrlError extends cli_shared_1.GraphQlMutationError {
12
+ constructor(requestId) {
13
+ super(cli_shared_1.Text.webtrigger.error.creationError(`Web Trigger URL not found after successful creation, requestId: ${requestId !== null && requestId !== void 0 ? requestId : 'N/A'}`), { requestId });
14
+ }
15
+ }
16
+ exports.MissingWebTriggerUrlError = MissingWebTriggerUrlError;
17
+ class WebTriggerGraphQLClient {
18
+ constructor(graphQLClient) {
19
+ this.graphQLClient = graphQLClient;
20
+ }
21
+ async createWebTriggerUrl({ appId, contextId, environmentId, triggerKey }) {
22
+ const query = `
23
+ mutation forge_cli_createWebTriggerUrl($input: WebTriggerUrlInput!) {
24
+ createWebTriggerUrl(input: $input) {
25
+ statusCode
26
+ success
27
+ message
28
+ url
29
+ }
30
+ }
31
+ `;
32
+ const variables = {
33
+ input: {
34
+ appId,
35
+ contextId,
36
+ envId: environmentId,
37
+ triggerKey
38
+ }
39
+ };
40
+ const { response: { createWebTriggerUrl: { success, statusCode, message, url } }, requestId } = await this.graphQLClient.mutate(query, variables);
41
+ if (!success) {
42
+ throw new WebTriggerCreationError(message, requestId, statusCode.toString());
43
+ }
44
+ else {
45
+ if (url) {
46
+ return url;
47
+ }
48
+ throw new MissingWebTriggerUrlError(requestId);
49
+ }
50
+ }
51
+ }
52
+ exports.WebTriggerGraphQLClient = WebTriggerGraphQLClient;
@@ -0,0 +1,12 @@
1
+ import { AnalyticsMessage, MessageHandler } from '../analytics-client/analytics-message-handler';
2
+ import { CachedConfigService } from '../service/cached-config-service';
3
+ import { Storage } from '../storage/local-file-storage';
4
+ import { Worker } from './worker';
5
+ export declare class AnalyticsMessageWorker implements Worker {
6
+ private readonly storage;
7
+ private readonly messageHandler;
8
+ private readonly cachedConfigService;
9
+ constructor(storage: Storage, messageHandler: MessageHandler<AnalyticsMessage | undefined>, cachedConfigService: CachedConfigService);
10
+ doWork(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=analytics-message-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-message-worker.d.ts","sourceRoot":"","sources":["../../src/workers/analytics-message-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,qBAAa,sBAAuB,YAAW,MAAM;IAEjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAFnB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAC5D,mBAAmB,EAAE,mBAAmB;IAGrD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB9B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyticsMessageWorker = void 0;
4
+ class AnalyticsMessageWorker {
5
+ constructor(storage, messageHandler, cachedConfigService) {
6
+ this.storage = storage;
7
+ this.messageHandler = messageHandler;
8
+ this.cachedConfigService = cachedConfigService;
9
+ }
10
+ async doWork() {
11
+ const analyticsSetting = this.cachedConfigService.getAnalyticsPreferences();
12
+ if (analyticsSetting === undefined) {
13
+ return;
14
+ }
15
+ try {
16
+ const events = this.storage.getAnalytics();
17
+ await Promise.all(events.map(async (event) => {
18
+ const payload = await this.storage.getAnalyticsEvent(event);
19
+ if (analyticsSetting) {
20
+ await this.messageHandler.handleMessage(payload);
21
+ }
22
+ await this.storage.deleteAnalyticsEvent(event);
23
+ }));
24
+ }
25
+ catch (e) {
26
+ }
27
+ }
28
+ }
29
+ exports.AnalyticsMessageWorker = AnalyticsMessageWorker;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=forge-cli-workers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-cli-workers.d.ts","sourceRoot":"","sources":["../../src/workers/forge-cli-workers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const analytics_message_handler_1 = require("../analytics-client/analytics-message-handler");
4
+ const local_file_storage_1 = require("../storage/local-file-storage");
5
+ const analytics_message_worker_1 = require("./analytics-message-worker");
6
+ const worker_1 = require("./worker");
7
+ const version_check_worker_1 = require("./version-check-worker");
8
+ const cached_config_service_1 = require("../service/cached-config-service");
9
+ const cli_shared_1 = require("@forge/cli-shared");
10
+ const unique_machine_id_1 = require("../command-line/unique-machine-id");
11
+ const workerInfo = JSON.parse(process.argv[2]);
12
+ const cachedConf = cli_shared_1.CachedConf.getCache(unique_machine_id_1.FORGE_CLI_PACKAGE);
13
+ const cachedConfigService = new cached_config_service_1.CachedConfigService(cachedConf);
14
+ const ALL_WORKERS = [
15
+ new analytics_message_worker_1.AnalyticsMessageWorker(new local_file_storage_1.LocalFileStorage(), new analytics_message_handler_1.AnalyticsMessageHandler(workerInfo ? workerInfo.environment : undefined), cachedConfigService),
16
+ new version_check_worker_1.VersionCheckWorker(workerInfo)
17
+ ];
18
+ const TIMEOUT = 10 * 1000;
19
+ (0, worker_1.handleWithTimeout)(() => Promise.all(ALL_WORKERS.map((worker) => worker.doWork())), TIMEOUT)
20
+ .finally(() => process.exit(0))
21
+ .catch((e) => process.exit(1));
@@ -0,0 +1,8 @@
1
+ export declare type TunnelCleanUpMessage = {
2
+ pids: number[];
3
+ containers: string[];
4
+ };
5
+ export declare class TunnelCleanUpWorker {
6
+ doWork(): void;
7
+ }
8
+ //# sourceMappingURL=tunnel-clean-up-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-clean-up-worker.d.ts","sourceRoot":"","sources":["../../src/workers/tunnel-clean-up-worker.ts"],"names":[],"mappings":"AAGA,oBAAY,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,qBAAa,mBAAmB;IACvB,MAAM,IAAI,IAAI;CAwBtB"}