@gitpod/gitpod-protocol 0.1.5-wth-test.80 → 0.1.5-wv-add-image-builds-to-dashboard.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/data/gitpod-schema.json +132 -5
  2. package/lib/accounting-protocol.d.ts +19 -11
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +35 -33
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +19 -2
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +1 -1
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +1 -1
  11. package/lib/analytics.d.ts.map +1 -1
  12. package/lib/analytics.js +1 -1
  13. package/lib/analytics.js.map +1 -1
  14. package/lib/attribution.d.ts +24 -0
  15. package/lib/attribution.d.ts.map +1 -0
  16. package/lib/attribution.js +54 -0
  17. package/lib/attribution.js.map +1 -0
  18. package/lib/auth.d.ts +1 -1
  19. package/lib/auth.d.ts.map +1 -1
  20. package/lib/auth.js +1 -1
  21. package/lib/billing-mode.d.ts +45 -0
  22. package/lib/billing-mode.d.ts.map +1 -0
  23. package/lib/billing-mode.js +44 -0
  24. package/lib/billing-mode.js.map +1 -0
  25. package/lib/blocked-repositories-protocol.d.ts +13 -0
  26. package/lib/blocked-repositories-protocol.d.ts.map +1 -0
  27. package/lib/blocked-repositories-protocol.js +8 -0
  28. package/lib/blocked-repositories-protocol.js.map +1 -0
  29. package/lib/context-url.d.ts +1 -2
  30. package/lib/context-url.d.ts.map +1 -1
  31. package/lib/context-url.js +5 -7
  32. package/lib/context-url.js.map +1 -1
  33. package/lib/context-url.spec.d.ts +1 -3
  34. package/lib/context-url.spec.d.ts.map +1 -1
  35. package/lib/context-url.spec.js +13 -26
  36. package/lib/context-url.spec.js.map +1 -1
  37. package/lib/encryption/container-module.d.ts +1 -1
  38. package/lib/encryption/container-module.d.ts.map +1 -1
  39. package/lib/encryption/container-module.js +2 -2
  40. package/lib/encryption/container-module.js.map +1 -1
  41. package/lib/encryption/encryption-engine.d.ts +1 -1
  42. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  43. package/lib/encryption/encryption-engine.js +10 -10
  44. package/lib/encryption/encryption-engine.js.map +1 -1
  45. package/lib/encryption/encryption-engine.spec.d.ts +1 -1
  46. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  47. package/lib/encryption/encryption-engine.spec.js +3 -4
  48. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  49. package/lib/encryption/encryption-service.d.ts +1 -1
  50. package/lib/encryption/encryption-service.d.ts.map +1 -1
  51. package/lib/encryption/encryption-service.js +2 -2
  52. package/lib/encryption/encryption-service.js.map +1 -1
  53. package/lib/encryption/key-provider.d.ts +1 -1
  54. package/lib/encryption/key-provider.d.ts.map +1 -1
  55. package/lib/encryption/key-provider.js +8 -10
  56. package/lib/encryption/key-provider.js.map +1 -1
  57. package/lib/env.d.ts +1 -6
  58. package/lib/env.d.ts.map +1 -1
  59. package/lib/env.js +2 -21
  60. package/lib/env.js.map +1 -1
  61. package/lib/experiments/always-default.d.ts +8 -0
  62. package/lib/experiments/always-default.d.ts.map +1 -0
  63. package/lib/experiments/always-default.js +20 -0
  64. package/lib/experiments/always-default.js.map +1 -0
  65. package/lib/experiments/configcat-server.d.ts +10 -0
  66. package/lib/experiments/configcat-server.d.ts.map +1 -0
  67. package/lib/experiments/configcat-server.js +37 -0
  68. package/lib/experiments/configcat-server.js.map +1 -0
  69. package/lib/experiments/configcat.d.ts +21 -0
  70. package/lib/experiments/configcat.d.ts.map +1 -0
  71. package/lib/experiments/configcat.js +51 -0
  72. package/lib/experiments/configcat.js.map +1 -0
  73. package/lib/experiments/types.d.ts +22 -0
  74. package/lib/experiments/types.d.ts.map +1 -0
  75. package/lib/experiments/types.js +10 -0
  76. package/lib/experiments/types.js.map +1 -0
  77. package/lib/gitpod-file-parser.d.ts +1 -1
  78. package/lib/gitpod-file-parser.d.ts.map +1 -1
  79. package/lib/gitpod-file-parser.js +7 -7
  80. package/lib/gitpod-file-parser.js.map +1 -1
  81. package/lib/gitpod-file-parser.spec.d.ts +1 -1
  82. package/lib/gitpod-file-parser.spec.js +43 -40
  83. package/lib/gitpod-file-parser.spec.js.map +1 -1
  84. package/lib/gitpod-service.d.ts +70 -52
  85. package/lib/gitpod-service.d.ts.map +1 -1
  86. package/lib/gitpod-service.js +53 -34
  87. package/lib/gitpod-service.js.map +1 -1
  88. package/lib/headless-workspace-log.d.ts +2 -1
  89. package/lib/headless-workspace-log.d.ts.map +1 -1
  90. package/lib/headless-workspace-log.js +3 -2
  91. package/lib/headless-workspace-log.js.map +1 -1
  92. package/lib/ide-frontend-service.d.ts +2 -2
  93. package/lib/ide-frontend-service.js +1 -1
  94. package/lib/ide-protocol.d.ts +29 -8
  95. package/lib/ide-protocol.d.ts.map +1 -1
  96. package/lib/ide-protocol.js +11 -1
  97. package/lib/ide-protocol.js.map +1 -1
  98. package/lib/index.d.ts +17 -17
  99. package/lib/index.d.ts.map +1 -1
  100. package/lib/index.js +2 -2
  101. package/lib/index.js.map +1 -1
  102. package/lib/installation-admin-protocol.d.ts +4 -1
  103. package/lib/installation-admin-protocol.d.ts.map +1 -1
  104. package/lib/installation-admin-protocol.js +4 -3
  105. package/lib/installation-admin-protocol.js.map +1 -1
  106. package/lib/license-protocol.d.ts +8 -1
  107. package/lib/license-protocol.d.ts.map +1 -1
  108. package/lib/license-protocol.js +1 -1
  109. package/lib/license-protocol.js.map +1 -1
  110. package/lib/messaging/browser/connection.d.ts +1 -1
  111. package/lib/messaging/browser/connection.d.ts.map +1 -1
  112. package/lib/messaging/browser/connection.js +19 -19
  113. package/lib/messaging/browser/connection.js.map +1 -1
  114. package/lib/messaging/browser/window-connection.d.ts +5 -5
  115. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  116. package/lib/messaging/browser/window-connection.js +10 -7
  117. package/lib/messaging/browser/window-connection.js.map +1 -1
  118. package/lib/messaging/client-call-metrics.d.ts +5 -19
  119. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  120. package/lib/messaging/client-call-metrics.js +35 -23
  121. package/lib/messaging/client-call-metrics.js.map +1 -1
  122. package/lib/messaging/error.d.ts +10 -2
  123. package/lib/messaging/error.d.ts.map +1 -1
  124. package/lib/messaging/error.js +20 -4
  125. package/lib/messaging/error.js.map +1 -1
  126. package/lib/messaging/handler.d.ts.map +1 -1
  127. package/lib/messaging/handler.js +1 -1
  128. package/lib/messaging/node/connection.js +8 -8
  129. package/lib/messaging/node/connection.js.map +1 -1
  130. package/lib/messaging/proxy-factory.d.ts +1 -1
  131. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  132. package/lib/messaging/proxy-factory.js +7 -9
  133. package/lib/messaging/proxy-factory.js.map +1 -1
  134. package/lib/oss-allowlist.d.ts +1 -1
  135. package/lib/oss-allowlist.js +1 -1
  136. package/lib/payment-protocol.d.ts +1 -1
  137. package/lib/payment-protocol.d.ts.map +1 -1
  138. package/lib/payment-protocol.js +2 -2
  139. package/lib/payment-protocol.js.map +1 -1
  140. package/lib/permission.d.ts +3 -3
  141. package/lib/permission.d.ts.map +1 -1
  142. package/lib/permission.js +13 -24
  143. package/lib/permission.js.map +1 -1
  144. package/lib/plans.d.ts +5 -4
  145. package/lib/plans.d.ts.map +1 -1
  146. package/lib/plans.js +211 -172
  147. package/lib/plans.js.map +1 -1
  148. package/lib/protocol.d.ts +166 -61
  149. package/lib/protocol.d.ts.map +1 -1
  150. package/lib/protocol.js +282 -106
  151. package/lib/protocol.js.map +1 -1
  152. package/lib/protocol.spec.d.ts +7 -0
  153. package/lib/protocol.spec.d.ts.map +1 -0
  154. package/lib/protocol.spec.js +127 -0
  155. package/lib/protocol.spec.js.map +1 -0
  156. package/lib/snapshot-url.d.ts +1 -1
  157. package/lib/snapshot-url.js +1 -1
  158. package/lib/snapshot-url.spec.d.ts +1 -1
  159. package/lib/snapshot-url.spec.js +1 -1
  160. package/lib/snapshot-url.spec.js.map +1 -1
  161. package/lib/team-subscription-protocol.d.ts +23 -4
  162. package/lib/team-subscription-protocol.d.ts.map +1 -1
  163. package/lib/team-subscription-protocol.js +21 -6
  164. package/lib/team-subscription-protocol.js.map +1 -1
  165. package/lib/teams-projects-protocol.d.ts +26 -6
  166. package/lib/teams-projects-protocol.d.ts.map +1 -1
  167. package/lib/teams-projects-protocol.js +2 -2
  168. package/lib/teams-projects-protocol.js.map +1 -1
  169. package/lib/typings/globals.d.ts +3 -3
  170. package/lib/typings/globals.d.ts.map +1 -1
  171. package/lib/typings/globals.js +1 -1
  172. package/lib/usage.d.ts +73 -0
  173. package/lib/usage.d.ts.map +1 -0
  174. package/lib/usage.js +20 -0
  175. package/lib/usage.js.map +1 -0
  176. package/lib/util/analytics.d.ts +1 -1
  177. package/lib/util/analytics.d.ts.map +1 -1
  178. package/lib/util/analytics.js +7 -7
  179. package/lib/util/analytics.js.map +1 -1
  180. package/lib/util/async-iterator.d.ts +1 -1
  181. package/lib/util/async-iterator.d.ts.map +1 -1
  182. package/lib/util/async-iterator.js +4 -4
  183. package/lib/util/async-iterator.js.map +1 -1
  184. package/lib/util/cancelable.d.ts +1 -1
  185. package/lib/util/cancelable.js +1 -1
  186. package/lib/util/cancelable.js.map +1 -1
  187. package/lib/util/date-time.d.ts +1 -1
  188. package/lib/util/date-time.js +7 -7
  189. package/lib/util/date-time.js.map +1 -1
  190. package/lib/util/debug-app.d.ts +25 -0
  191. package/lib/util/debug-app.d.ts.map +1 -0
  192. package/lib/util/debug-app.js +100 -0
  193. package/lib/util/debug-app.js.map +1 -0
  194. package/lib/util/deep-partial.d.ts +1 -1
  195. package/lib/util/deep-partial.js +1 -1
  196. package/lib/util/deferred.d.ts +1 -1
  197. package/lib/util/deferred.js +1 -1
  198. package/lib/util/deferred.js.map +1 -1
  199. package/lib/util/disposable.d.ts.map +1 -1
  200. package/lib/util/disposable.js +2 -2
  201. package/lib/util/disposable.js.map +1 -1
  202. package/lib/util/event.d.ts.map +1 -1
  203. package/lib/util/event.js +5 -3
  204. package/lib/util/event.js.map +1 -1
  205. package/lib/util/garbage-collected-cache.d.ts +1 -1
  206. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  207. package/lib/util/garbage-collected-cache.js +7 -2
  208. package/lib/util/garbage-collected-cache.js.map +1 -1
  209. package/lib/util/generate-workspace-id.d.ts +5 -0
  210. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  211. package/lib/util/generate-workspace-id.js +446 -442
  212. package/lib/util/generate-workspace-id.js.map +1 -1
  213. package/lib/util/generate-workspace-id.spec.d.ts +1 -1
  214. package/lib/util/generate-workspace-id.spec.js +19 -8
  215. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  216. package/lib/util/gitpod-cookie.d.ts +2 -2
  217. package/lib/util/gitpod-cookie.d.ts.map +1 -1
  218. package/lib/util/gitpod-cookie.js +1 -4
  219. package/lib/util/gitpod-cookie.js.map +1 -1
  220. package/lib/util/gitpod-host-url.d.ts +6 -1
  221. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  222. package/lib/util/gitpod-host-url.js +60 -33
  223. package/lib/util/gitpod-host-url.js.map +1 -1
  224. package/lib/util/gitpod-host-url.spec.d.ts +1 -1
  225. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  226. package/lib/util/gitpod-host-url.spec.js +16 -6
  227. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  228. package/lib/util/grpc.d.ts +21 -1
  229. package/lib/util/grpc.d.ts.map +1 -1
  230. package/lib/util/grpc.js +74 -2
  231. package/lib/util/grpc.js.map +1 -1
  232. package/lib/util/jaeger-client-types.d.ts +1 -1
  233. package/lib/util/jaeger-client-types.d.ts.map +1 -1
  234. package/lib/util/jaeger-client-types.js +1 -1
  235. package/lib/util/logging.d.ts +2 -2
  236. package/lib/util/logging.d.ts.map +1 -1
  237. package/lib/util/logging.js +32 -26
  238. package/lib/util/logging.js.map +1 -1
  239. package/lib/util/logging.spec.d.ts +7 -0
  240. package/lib/util/logging.spec.d.ts.map +1 -0
  241. package/lib/util/logging.spec.js +52 -0
  242. package/lib/util/logging.spec.js.map +1 -0
  243. package/lib/util/make-link.d.ts +1 -1
  244. package/lib/util/make-link.js +6 -6
  245. package/lib/util/make-link.js.map +1 -1
  246. package/lib/util/nice-grpc.d.ts +9 -0
  247. package/lib/util/nice-grpc.d.ts.map +1 -0
  248. package/lib/util/nice-grpc.js +121 -0
  249. package/lib/util/nice-grpc.js.map +1 -0
  250. package/lib/util/parse-workspace-id.d.ts +1 -1
  251. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  252. package/lib/util/parse-workspace-id.js +2 -3
  253. package/lib/util/parse-workspace-id.js.map +1 -1
  254. package/lib/util/parse-workspace-id.spec.d.ts +1 -1
  255. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  256. package/lib/util/parse-workspace-id.spec.js +1 -1
  257. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  258. package/lib/util/queue.d.ts +1 -1
  259. package/lib/util/queue.js +1 -1
  260. package/lib/util/queue.spec.d.ts +1 -1
  261. package/lib/util/queue.spec.js +10 -7
  262. package/lib/util/queue.spec.js.map +1 -1
  263. package/lib/util/repeat.d.ts +1 -1
  264. package/lib/util/repeat.js +1 -1
  265. package/lib/util/semaphore.d.ts +1 -1
  266. package/lib/util/semaphore.d.ts.map +1 -1
  267. package/lib/util/semaphore.js +1 -1
  268. package/lib/util/semaphore.js.map +1 -1
  269. package/lib/util/skip-if.d.ts +1 -1
  270. package/lib/util/skip-if.d.ts.map +1 -1
  271. package/lib/util/skip-if.js +1 -1
  272. package/lib/util/skip-if.js.map +1 -1
  273. package/lib/util/timeutil.d.ts +3 -1
  274. package/lib/util/timeutil.d.ts.map +1 -1
  275. package/lib/util/timeutil.js +16 -4
  276. package/lib/util/timeutil.js.map +1 -1
  277. package/lib/util/timeutil.spec.d.ts +3 -1
  278. package/lib/util/timeutil.spec.d.ts.map +1 -1
  279. package/lib/util/timeutil.spec.js +35 -1
  280. package/lib/util/timeutil.spec.js.map +1 -1
  281. package/lib/util/tracing.d.ts +7 -7
  282. package/lib/util/tracing.d.ts.map +1 -1
  283. package/lib/util/tracing.js +15 -17
  284. package/lib/util/tracing.js.map +1 -1
  285. package/lib/util/tracing.spec.d.ts +1 -1
  286. package/lib/util/tracing.spec.js +4 -4
  287. package/lib/util/tracing.spec.js.map +1 -1
  288. package/lib/util/workspace-port-authentication.d.ts +8 -8
  289. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  290. package/lib/util/workspace-port-authentication.js +9 -12
  291. package/lib/util/workspace-port-authentication.js.map +1 -1
  292. package/lib/webhook-event.d.ts +44 -0
  293. package/lib/webhook-event.d.ts.map +1 -0
  294. package/lib/webhook-event.js +8 -0
  295. package/lib/webhook-event.js.map +1 -0
  296. package/lib/workspace-class.d.ts +14 -0
  297. package/lib/workspace-class.d.ts.map +1 -0
  298. package/lib/workspace-class.js +8 -0
  299. package/lib/workspace-class.js.map +1 -0
  300. package/lib/workspace-cluster.d.ts +13 -14
  301. package/lib/workspace-cluster.d.ts.map +1 -1
  302. package/lib/workspace-cluster.js +3 -5
  303. package/lib/workspace-cluster.js.map +1 -1
  304. package/lib/workspace-instance.d.ts +22 -4
  305. package/lib/workspace-instance.d.ts.map +1 -1
  306. package/lib/workspace-instance.js +1 -1
  307. package/lib/wsready.d.ts +8 -2
  308. package/lib/wsready.d.ts.map +1 -1
  309. package/lib/wsready.js +3 -3
  310. package/package.json +14 -6
  311. package/pkg-yarn.lock +10 -5
  312. package/provenance-bundle.jsonl +1 -1
  313. package/src/accounting-protocol.ts +67 -52
  314. package/src/admin-protocol.ts +48 -22
  315. package/src/analytics.ts +22 -22
  316. package/src/attribution.ts +63 -0
  317. package/src/auth.ts +3 -3
  318. package/src/billing-mode.ts +84 -0
  319. package/src/blocked-repositories-protocol.ts +13 -0
  320. package/src/context-url.spec.ts +18 -22
  321. package/src/context-url.ts +79 -79
  322. package/src/encryption/container-module.ts +3 -4
  323. package/src/encryption/encryption-engine.spec.ts +10 -9
  324. package/src/encryption/encryption-engine.ts +21 -17
  325. package/src/encryption/encryption-service.ts +5 -6
  326. package/src/encryption/key-provider.ts +17 -20
  327. package/src/env.ts +2 -25
  328. package/src/experiments/always-default.ts +24 -0
  329. package/src/experiments/configcat-server.ts +42 -0
  330. package/src/experiments/configcat.ts +56 -0
  331. package/src/experiments/types.ts +34 -0
  332. package/src/gitpod-file-parser.spec.ts +56 -62
  333. package/src/gitpod-file-parser.ts +17 -18
  334. package/src/gitpod-service.ts +216 -140
  335. package/src/headless-workspace-log.ts +7 -5
  336. package/src/ide-frontend-service.ts +3 -3
  337. package/src/ide-protocol.ts +38 -10
  338. package/src/index.ts +17 -17
  339. package/src/installation-admin-protocol.ts +12 -9
  340. package/src/license-protocol.ts +13 -7
  341. package/src/messaging/browser/connection.ts +45 -47
  342. package/src/messaging/browser/window-connection.ts +40 -30
  343. package/src/messaging/client-call-metrics.ts +79 -82
  344. package/src/messaging/error.ts +30 -8
  345. package/src/messaging/handler.ts +6 -6
  346. package/src/messaging/node/connection.ts +8 -8
  347. package/src/messaging/proxy-factory.ts +23 -30
  348. package/src/oss-allowlist.ts +4 -4
  349. package/src/payment-protocol.ts +3 -3
  350. package/src/permission.ts +21 -32
  351. package/src/plans.ts +241 -190
  352. package/src/protocol.spec.ts +97 -0
  353. package/src/protocol.ts +524 -265
  354. package/src/snapshot-url.spec.ts +10 -8
  355. package/src/snapshot-url.ts +1 -1
  356. package/src/team-subscription-protocol.ts +60 -23
  357. package/src/teams-projects-protocol.ts +36 -12
  358. package/src/typings/globals.ts +5 -5
  359. package/src/usage.ts +85 -0
  360. package/src/util/analytics.ts +47 -43
  361. package/src/util/async-iterator.ts +5 -6
  362. package/src/util/cancelable.ts +4 -4
  363. package/src/util/date-time.ts +9 -9
  364. package/src/util/debug-app.ts +81 -0
  365. package/src/util/deep-partial.ts +1 -1
  366. package/src/util/deferred.ts +7 -7
  367. package/src/util/disposable.ts +3 -6
  368. package/src/util/event.ts +9 -11
  369. package/src/util/garbage-collected-cache.ts +9 -7
  370. package/src/util/generate-workspace-id.spec.ts +27 -17
  371. package/src/util/generate-workspace-id.ts +461 -455
  372. package/src/util/gitpod-cookie.ts +9 -10
  373. package/src/util/gitpod-host-url.spec.ts +41 -14
  374. package/src/util/gitpod-host-url.ts +69 -37
  375. package/src/util/grpc.ts +94 -2
  376. package/src/util/jaeger-client-types.ts +3 -3
  377. package/src/util/logging.spec.ts +23 -0
  378. package/src/util/logging.ts +61 -43
  379. package/src/util/make-link.ts +7 -8
  380. package/src/util/nice-grpc.ts +96 -0
  381. package/src/util/parse-workspace-id.spec.ts +18 -9
  382. package/src/util/parse-workspace-id.ts +6 -7
  383. package/src/util/queue.spec.ts +28 -26
  384. package/src/util/queue.ts +1 -1
  385. package/src/util/repeat.ts +2 -2
  386. package/src/util/semaphore.ts +5 -7
  387. package/src/util/skip-if.ts +10 -7
  388. package/src/util/timeutil.spec.ts +41 -15
  389. package/src/util/timeutil.ts +28 -12
  390. package/src/util/tracing.spec.ts +29 -24
  391. package/src/util/tracing.ts +55 -52
  392. package/src/util/workspace-port-authentication.ts +11 -14
  393. package/src/webhook-event.ts +55 -0
  394. package/src/workspace-class.ts +14 -0
  395. package/src/workspace-cluster.ts +25 -19
  396. package/src/workspace-instance.ts +67 -25
  397. package/src/wsready.ts +11 -4
  398. package/data/builtin-theia-plugins.json +0 -372
  399. package/lib/email-protocol.d.ts +0 -49
  400. package/lib/email-protocol.d.ts.map +0 -1
  401. package/lib/email-protocol.js +0 -28
  402. package/lib/email-protocol.js.map +0 -1
  403. package/lib/theia-plugins.d.ts +0 -11
  404. package/lib/theia-plugins.d.ts.map +0 -1
  405. package/lib/theia-plugins.js +0 -8
  406. package/lib/theia-plugins.js.map +0 -1
  407. package/src/email-protocol.ts +0 -66
  408. package/src/theia-plugins.ts +0 -11
package/lib/protocol.js CHANGED
@@ -2,42 +2,50 @@
2
2
  /**
3
3
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
4
4
  * Licensed under the GNU Affero General Public License (AGPL).
5
- * See License-AGPL.txt in the project root for license information.
5
+ * See License.AGPL.txt in the project root for license information.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.TheiaPlugin = exports.AuthProviderEntry = exports.WorkspaceCreationResult = exports.CreateWorkspaceMode = exports.WorkspaceInfo = exports.WorkspaceInstancePortsChangedEvent = exports.Repository = exports.NavigatorContext = exports.IssueContext = exports.PullRequestContext = exports.CommitContext = exports.AdditionalContentContext = exports.RefType = exports.WorkspaceProbeContext = exports.WithEnvvarsContext = exports.WithReferrerContext = exports.PrebuiltWorkspaceContext = exports.StartPrebuildContext = exports.SnapshotContext = exports.WithDefaultConfig = exports.WithPrebuild = exports.WithSnapshot = exports.WorkspaceContext = exports.ExternalImageConfigFile = exports.ImageConfigFile = exports.ImageConfigString = exports.WorkspaceImageBuild = exports.TaskConfig = exports.PortRangeConfig = exports.PortConfig = exports.PrebuiltWorkspace = exports.WorkspaceImageSourceReference = exports.WorkspaceImageSourceDocker = exports.GithubAppPrebuildConfig = exports.Workspace = exports.Identity = exports.GitpodTokenType = exports.UserEnvVar = exports.WorkspaceFeatureFlags = exports.User = void 0;
8
+ exports.TheiaPlugin = exports.AuthProviderEntry = exports.WorkspaceCreationResult = exports.WorkspaceInfo = exports.WorkspaceInstancePortsChangedEvent = exports.Repository = exports.NavigatorContext = exports.IssueContext = exports.PullRequestContext = exports.CommitContext = exports.OpenPrebuildContext = exports.AdditionalContentContext = exports.RefType = exports.WithEnvvarsContext = exports.WithReferrerContext = exports.PrebuiltWorkspaceContext = exports.StartPrebuildContext = exports.SnapshotContext = exports.WithDefaultConfig = exports.WithPrebuild = exports.WithSnapshot = exports.WorkspaceContext = exports.ExternalImageConfigFile = exports.ImageConfigFile = exports.ImageConfigString = exports.WorkspaceImageBuild = exports.TaskConfig = exports.PortRangeConfig = exports.PortConfig = exports.PrebuiltWorkspace = exports.WorkspaceImageSourceReference = exports.WorkspaceImageSourceDocker = exports.GithubAppPrebuildConfig = exports.Workspace = exports.Identity = exports.GitpodTokenType = exports.SSHPublicKeyValue = exports.UserEnvVar = exports.NamedWorkspaceFeatureFlag = exports.WorkspaceFeatureFlags = exports.AdditionalUserData = exports.User = void 0;
9
+ const crypto_1 = require("crypto");
9
10
  var User;
10
11
  (function (User) {
11
12
  function is(data) {
12
- return data
13
- && data.hasOwnProperty('id')
14
- && data.hasOwnProperty('identities');
13
+ return data && data.hasOwnProperty("id") && data.hasOwnProperty("identities");
15
14
  }
16
15
  User.is = is;
17
16
  function getIdentity(user, authProviderId) {
18
- return user.identities.find(id => id.authProviderId === authProviderId);
17
+ return user.identities.find((id) => id.authProviderId === authProviderId);
19
18
  }
20
19
  User.getIdentity = getIdentity;
21
20
  function censor(user) {
22
21
  const res = Object.assign({}, user);
23
- delete (res.additionalData);
24
- res.identities = res.identities.map(i => {
25
- delete (i.tokens);
22
+ delete res.additionalData;
23
+ res.identities = res.identities.map((i) => {
24
+ delete i.tokens;
26
25
  // The user field is not in the Identity shape, but actually exists on DBIdentity.
27
26
  // Trying to push this object out via JSON RPC will fail because of the cyclic nature
28
27
  // of this field.
29
- delete (i.user);
28
+ delete i.user;
30
29
  return i;
31
30
  });
32
31
  return res;
33
32
  }
34
33
  User.censor = censor;
34
+ /**
35
+ * Returns the stored email or if it doesn't exist returns the primaryEmail of the first identity this user signed up with.
36
+ * @param user
37
+ * @returns A primaryEmail, or undefined if there is none.
38
+ */
35
39
  function getPrimaryEmail(user) {
36
- const identities = user.identities.filter(i => !!i.primaryEmail);
40
+ var _a, _b, _c, _d;
41
+ if ((_b = (_a = user.additionalData) === null || _a === void 0 ? void 0 : _a.profile) === null || _b === void 0 ? void 0 : _b.emailAddress) {
42
+ return (_d = (_c = user.additionalData) === null || _c === void 0 ? void 0 : _c.profile) === null || _d === void 0 ? void 0 : _d.emailAddress;
43
+ }
44
+ const identities = user.identities.filter((i) => !!i.primaryEmail);
37
45
  if (identities.length <= 0) {
38
- throw new Error(`No identity with primary email for user: ${user.id}!`);
46
+ return undefined;
39
47
  }
40
- return identities[0].primaryEmail;
48
+ return identities[0].primaryEmail || undefined;
41
49
  }
42
50
  User.getPrimaryEmail = getPrimaryEmail;
43
51
  function getName(user) {
@@ -53,14 +61,156 @@ var User;
53
61
  return undefined;
54
62
  }
55
63
  User.getName = getName;
64
+ function hasPreferredIde(user) {
65
+ var _a, _b, _c, _d;
66
+ return (typeof ((_b = (_a = user === null || user === void 0 ? void 0 : user.additionalData) === null || _a === void 0 ? void 0 : _a.ideSettings) === null || _b === void 0 ? void 0 : _b.defaultIde) !== "undefined" ||
67
+ typeof ((_d = (_c = user === null || user === void 0 ? void 0 : user.additionalData) === null || _c === void 0 ? void 0 : _c.ideSettings) === null || _d === void 0 ? void 0 : _d.useLatestVersion) !== "undefined");
68
+ }
69
+ User.hasPreferredIde = hasPreferredIde;
70
+ function isOnboardingUser(user) {
71
+ return !hasPreferredIde(user);
72
+ }
73
+ User.isOnboardingUser = isOnboardingUser;
74
+ function migrationIDESettings(user) {
75
+ var _a;
76
+ if (!((_a = user === null || user === void 0 ? void 0 : user.additionalData) === null || _a === void 0 ? void 0 : _a.ideSettings) ||
77
+ Object.keys(user.additionalData.ideSettings).length === 0 ||
78
+ user.additionalData.ideSettings.settingVersion === "2.0") {
79
+ return;
80
+ }
81
+ const newIDESettings = {
82
+ settingVersion: "2.0",
83
+ };
84
+ const ideSettings = user.additionalData.ideSettings;
85
+ if (ideSettings.useDesktopIde) {
86
+ if (ideSettings.defaultDesktopIde === "code-desktop") {
87
+ newIDESettings.defaultIde = "code-desktop";
88
+ }
89
+ else if (ideSettings.defaultDesktopIde === "code-desktop-insiders") {
90
+ newIDESettings.defaultIde = "code-desktop";
91
+ newIDESettings.useLatestVersion = true;
92
+ }
93
+ else {
94
+ newIDESettings.defaultIde = ideSettings.defaultDesktopIde;
95
+ newIDESettings.useLatestVersion = ideSettings.useLatestVersion;
96
+ }
97
+ }
98
+ else {
99
+ const useLatest = ideSettings.defaultIde === "code-latest";
100
+ newIDESettings.defaultIde = "code";
101
+ newIDESettings.useLatestVersion = useLatest;
102
+ }
103
+ user.additionalData.ideSettings = newIDESettings;
104
+ }
105
+ User.migrationIDESettings = migrationIDESettings;
106
+ function getProfile(user) {
107
+ var _a, _b;
108
+ return {
109
+ name: User.getName(user) || "",
110
+ email: User.getPrimaryEmail(user) || "",
111
+ company: (_b = (_a = user === null || user === void 0 ? void 0 : user.additionalData) === null || _a === void 0 ? void 0 : _a.profile) === null || _b === void 0 ? void 0 : _b.companyName,
112
+ avatarURL: user === null || user === void 0 ? void 0 : user.avatarUrl,
113
+ };
114
+ }
115
+ User.getProfile = getProfile;
116
+ function setProfile(user, profile) {
117
+ user.fullName = profile.name;
118
+ user.avatarUrl = profile.avatarURL;
119
+ if (!user.additionalData) {
120
+ user.additionalData = {};
121
+ }
122
+ if (!user.additionalData.profile) {
123
+ user.additionalData.profile = {};
124
+ }
125
+ user.additionalData.profile.emailAddress = profile.email;
126
+ user.additionalData.profile.companyName = profile.company;
127
+ user.additionalData.profile.lastUpdatedDetailsNudge = new Date().toISOString();
128
+ return user;
129
+ }
130
+ User.setProfile = setProfile;
131
+ let Profile;
132
+ (function (Profile) {
133
+ function hasChanges(before, after) {
134
+ return (before.name !== after.name ||
135
+ before.email !== after.email ||
136
+ before.company !== after.company ||
137
+ before.avatarURL !== after.avatarURL);
138
+ }
139
+ Profile.hasChanges = hasChanges;
140
+ })(Profile = User.Profile || (User.Profile = {}));
56
141
  })(User = exports.User || (exports.User = {}));
142
+ var AdditionalUserData;
143
+ (function (AdditionalUserData) {
144
+ function set(user, partialData) {
145
+ if (!user.additionalData) {
146
+ user.additionalData = Object.assign({}, partialData);
147
+ }
148
+ else {
149
+ user.additionalData = Object.assign(Object.assign({}, user.additionalData), partialData);
150
+ }
151
+ return user;
152
+ }
153
+ AdditionalUserData.set = set;
154
+ })(AdditionalUserData = exports.AdditionalUserData || (exports.AdditionalUserData = {}));
57
155
  /**
58
156
  * The values of this type MUST MATCH enum values in WorkspaceFeatureFlag from ws-manager/client/core_pb.d.ts
59
157
  * If they don't we'll break things during workspace startup.
60
158
  */
61
- exports.WorkspaceFeatureFlags = { "full_workspace_backup": undefined, "fixed_resources": undefined };
159
+ exports.WorkspaceFeatureFlags = {
160
+ full_workspace_backup: undefined,
161
+ workspace_class_limiting: undefined,
162
+ workspace_connection_limiting: undefined,
163
+ workspace_psi: undefined,
164
+ };
165
+ var NamedWorkspaceFeatureFlag;
166
+ (function (NamedWorkspaceFeatureFlag) {
167
+ NamedWorkspaceFeatureFlag.WORKSPACE_PERSISTED_FEATTURE_FLAGS = ["full_workspace_backup"];
168
+ function isWorkspacePersisted(ff) {
169
+ return NamedWorkspaceFeatureFlag.WORKSPACE_PERSISTED_FEATTURE_FLAGS.includes(ff);
170
+ }
171
+ NamedWorkspaceFeatureFlag.isWorkspacePersisted = isWorkspacePersisted;
172
+ })(NamedWorkspaceFeatureFlag = exports.NamedWorkspaceFeatureFlag || (exports.NamedWorkspaceFeatureFlag = {}));
62
173
  var UserEnvVar;
63
174
  (function (UserEnvVar) {
175
+ /**
176
+ * @param variable
177
+ * @returns Either a string containing an error message or undefined.
178
+ */
179
+ function validate(variable) {
180
+ const name = variable.name;
181
+ const pattern = variable.repositoryPattern;
182
+ if (name.trim() === "") {
183
+ return "Name must not be empty.";
184
+ }
185
+ if (name.length > 255) {
186
+ return "Name too long. Maximum name length is 255 characters.";
187
+ }
188
+ if (!/^[a-zA-Z_]+[a-zA-Z0-9_]*$/.test(name)) {
189
+ return "Name must match /^[a-zA-Z_]+[a-zA-Z0-9_]*$/.";
190
+ }
191
+ if (variable.value.trim() === "") {
192
+ return "Value must not be empty.";
193
+ }
194
+ if (variable.value.length > 32767) {
195
+ return "Value too long. Maximum value length is 32767 characters.";
196
+ }
197
+ if (pattern.trim() === "") {
198
+ return "Scope must not be empty.";
199
+ }
200
+ const split = pattern.split("/");
201
+ if (split.length < 2) {
202
+ return "A scope must use the form 'organization/repo'.";
203
+ }
204
+ for (const name of split) {
205
+ if (name !== "*") {
206
+ if (!/^[a-zA-Z0-9_\-.\*]+$/.test(name)) {
207
+ return "Invalid scope segment. Only ASCII characters, numbers, -, _, . or * are allowed.";
208
+ }
209
+ }
210
+ }
211
+ return undefined;
212
+ }
213
+ UserEnvVar.validate = validate;
64
214
  // DEPRECATED: Use ProjectEnvVar instead of repositoryPattern - https://github.com/gitpod-com/gitpod/issues/5322
65
215
  function normalizeRepoPattern(pattern) {
66
216
  return pattern.toLocaleLowerCase();
@@ -80,7 +230,7 @@ var UserEnvVar;
80
230
  if (repoPattern == "*") {
81
231
  score += 1;
82
232
  }
83
- if (ownerPattern == '*') {
233
+ if (ownerPattern == "*") {
84
234
  score += 2;
85
235
  }
86
236
  if (ownerPattern == "#" || repoPattern == "#") {
@@ -91,19 +241,19 @@ var UserEnvVar;
91
241
  UserEnvVar.score = score;
92
242
  // DEPRECATED: Use ProjectEnvVar instead of repositoryPattern - https://github.com/gitpod-com/gitpod/issues/5322
93
243
  function filter(vars, owner, repo) {
94
- let result = vars.filter(e => {
244
+ let result = vars.filter((e) => {
95
245
  const [ownerPattern, repoPattern] = splitRepositoryPattern(e.repositoryPattern);
96
- if (ownerPattern !== '*' && ownerPattern !== '#' && (!!owner && ownerPattern !== owner.toLocaleLowerCase())) {
246
+ if (ownerPattern !== "*" && ownerPattern !== "#" && !!owner && ownerPattern !== owner.toLocaleLowerCase()) {
97
247
  return false;
98
248
  }
99
- if (repoPattern !== '*' && repoPattern !== '#' && (!!repo && repoPattern !== repo.toLocaleLowerCase())) {
249
+ if (repoPattern !== "*" && repoPattern !== "#" && !!repo && repoPattern !== repo.toLocaleLowerCase()) {
100
250
  return false;
101
251
  }
102
252
  return true;
103
253
  });
104
254
  const resmap = new Map();
105
- result.forEach(e => {
106
- const l = (resmap.get(e.name) || []);
255
+ result.forEach((e) => {
256
+ const l = resmap.get(e.name) || [];
107
257
  l.push(e);
108
258
  resmap.set(e.name, l);
109
259
  });
@@ -134,13 +284,61 @@ var UserEnvVar;
134
284
  UserEnvVar.filter = filter;
135
285
  // DEPRECATED: Use ProjectEnvVar instead of repositoryPattern - https://github.com/gitpod-com/gitpod/issues/5322
136
286
  function splitRepositoryPattern(repositoryPattern) {
137
- const patterns = repositoryPattern.split('/');
138
- const repoPattern = patterns.slice(1).join('/');
287
+ const patterns = repositoryPattern.split("/");
288
+ const repoPattern = patterns.slice(1).join("/");
139
289
  const ownerPattern = patterns[0];
140
290
  return [ownerPattern, repoPattern];
141
291
  }
142
292
  UserEnvVar.splitRepositoryPattern = splitRepositoryPattern;
143
293
  })(UserEnvVar = exports.UserEnvVar || (exports.UserEnvVar = {}));
294
+ var SSHPublicKeyValue;
295
+ (function (SSHPublicKeyValue) {
296
+ function validate(value) {
297
+ if (value.name.length === 0) {
298
+ return "Title must not be empty.";
299
+ }
300
+ if (value.name.length > 255) {
301
+ return "Title too long. Maximum value length is 255 characters.";
302
+ }
303
+ if (value.key.length === 0) {
304
+ return "Key must not be empty.";
305
+ }
306
+ try {
307
+ getData(value);
308
+ }
309
+ catch (e) {
310
+ return "Key is invalid. You must supply a key in OpenSSH public key format.";
311
+ }
312
+ return;
313
+ }
314
+ SSHPublicKeyValue.validate = validate;
315
+ function getData(value) {
316
+ var _a, _b, _c;
317
+ // Begins with 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'ssh-ed25519', 'sk-ecdsa-sha2-nistp256@openssh.com', or 'sk-ssh-ed25519@openssh.com'.
318
+ const regex = /^(?<type>ssh-rsa|ecdsa-sha2-nistp256|ecdsa-sha2-nistp384|ecdsa-sha2-nistp521|ssh-ed25519|sk-ecdsa-sha2-nistp256@openssh\.com|sk-ssh-ed25519@openssh\.com) (?<key>.*?)( (?<email>.*?))?$/;
319
+ const resultGroup = regex.exec(value.key.trim());
320
+ if (!resultGroup) {
321
+ throw new Error("Key is invalid.");
322
+ }
323
+ return {
324
+ type: (_a = resultGroup.groups) === null || _a === void 0 ? void 0 : _a["type"],
325
+ key: (_b = resultGroup.groups) === null || _b === void 0 ? void 0 : _b["key"],
326
+ email: ((_c = resultGroup.groups) === null || _c === void 0 ? void 0 : _c["email"]) || undefined,
327
+ };
328
+ }
329
+ SSHPublicKeyValue.getData = getData;
330
+ function getFingerprint(value) {
331
+ const data = getData(value);
332
+ let buf = Buffer.from(data.key, "base64");
333
+ // gitlab style
334
+ // const hash = createHash("md5").update(buf).digest("hex");
335
+ // github style
336
+ const hash = (0, crypto_1.createHash)("sha256").update(buf).digest("base64");
337
+ return hash;
338
+ }
339
+ SSHPublicKeyValue.getFingerprint = getFingerprint;
340
+ SSHPublicKeyValue.MAXIMUM_KEY_LENGTH = 5;
341
+ })(SSHPublicKeyValue = exports.SSHPublicKeyValue || (exports.SSHPublicKeyValue = {}));
144
342
  var GitpodTokenType;
145
343
  (function (GitpodTokenType) {
146
344
  GitpodTokenType[GitpodTokenType["API_AUTH_TOKEN"] = 0] = "API_AUTH_TOKEN";
@@ -149,14 +347,11 @@ var GitpodTokenType;
149
347
  var Identity;
150
348
  (function (Identity) {
151
349
  function is(data) {
152
- return data.hasOwnProperty('authProviderId')
153
- && data.hasOwnProperty('authId')
154
- && data.hasOwnProperty('authName');
350
+ return (data.hasOwnProperty("authProviderId") && data.hasOwnProperty("authId") && data.hasOwnProperty("authName"));
155
351
  }
156
352
  Identity.is = is;
157
353
  function equals(id1, id2) {
158
- return id1.authProviderId === id2.authProviderId
159
- && id1.authId === id2.authId;
354
+ return id1.authProviderId === id2.authProviderId && id1.authId === id2.authId;
160
355
  }
161
356
  Identity.equals = equals;
162
357
  })(Identity = exports.Identity || (exports.Identity = {}));
@@ -164,7 +359,7 @@ var Workspace;
164
359
  (function (Workspace) {
165
360
  function getFullRepositoryName(ws) {
166
361
  if (CommitContext.is(ws.context)) {
167
- return ws.context.repository.owner + '/' + ws.context.repository.name;
362
+ return ws.context.repository.owner + "/" + ws.context.repository.name;
168
363
  }
169
364
  return undefined;
170
365
  }
@@ -208,29 +403,28 @@ var Workspace;
208
403
  var GithubAppPrebuildConfig;
209
404
  (function (GithubAppPrebuildConfig) {
210
405
  function is(obj) {
211
- return !(typeof obj === 'boolean');
406
+ return !(typeof obj === "boolean");
212
407
  }
213
408
  GithubAppPrebuildConfig.is = is;
214
409
  })(GithubAppPrebuildConfig = exports.GithubAppPrebuildConfig || (exports.GithubAppPrebuildConfig = {}));
215
410
  var WorkspaceImageSourceDocker;
216
411
  (function (WorkspaceImageSourceDocker) {
217
412
  function is(obj) {
218
- return 'dockerFileHash' in obj
219
- && 'dockerFilePath' in obj;
413
+ return "dockerFileHash" in obj && "dockerFilePath" in obj;
220
414
  }
221
415
  WorkspaceImageSourceDocker.is = is;
222
416
  })(WorkspaceImageSourceDocker = exports.WorkspaceImageSourceDocker || (exports.WorkspaceImageSourceDocker = {}));
223
417
  var WorkspaceImageSourceReference;
224
418
  (function (WorkspaceImageSourceReference) {
225
419
  function is(obj) {
226
- return 'baseImageResolved' in obj;
420
+ return "baseImageResolved" in obj;
227
421
  }
228
422
  WorkspaceImageSourceReference.is = is;
229
423
  })(WorkspaceImageSourceReference = exports.WorkspaceImageSourceReference || (exports.WorkspaceImageSourceReference = {}));
230
424
  var PrebuiltWorkspace;
231
425
  (function (PrebuiltWorkspace) {
232
426
  function isDone(pws) {
233
- return pws.state === "available" || pws.state === "timeout" || pws.state === 'aborted';
427
+ return (pws.state === "available" || pws.state === "timeout" || pws.state === "aborted" || pws.state === "failed");
234
428
  }
235
429
  PrebuiltWorkspace.isDone = isDone;
236
430
  function isAvailable(pws) {
@@ -245,22 +439,21 @@ var PrebuiltWorkspace;
245
439
  var PortConfig;
246
440
  (function (PortConfig) {
247
441
  function is(config) {
248
- return config && ('port' in config) && (typeof config.port === 'number');
442
+ return config && "port" in config && typeof config.port === "number";
249
443
  }
250
444
  PortConfig.is = is;
251
445
  })(PortConfig = exports.PortConfig || (exports.PortConfig = {}));
252
446
  var PortRangeConfig;
253
447
  (function (PortRangeConfig) {
254
448
  function is(config) {
255
- return config && ('port' in config) && (typeof config.port === 'string' || config.port instanceof String);
449
+ return config && "port" in config && (typeof config.port === "string" || config.port instanceof String);
256
450
  }
257
451
  PortRangeConfig.is = is;
258
452
  })(PortRangeConfig = exports.PortRangeConfig || (exports.PortRangeConfig = {}));
259
453
  var TaskConfig;
260
454
  (function (TaskConfig) {
261
455
  function is(config) {
262
- return config
263
- && ('command' in config || 'init' in config || 'before' in config);
456
+ return config && ("command" in config || "init" in config || "before" in config);
264
457
  }
265
458
  TaskConfig.is = is;
266
459
  })(TaskConfig = exports.TaskConfig || (exports.TaskConfig = {}));
@@ -268,66 +461,56 @@ var WorkspaceImageBuild;
268
461
  (function (WorkspaceImageBuild) {
269
462
  let LogLine;
270
463
  (function (LogLine) {
271
- LogLine.DELIMITER = '\r\n';
464
+ LogLine.DELIMITER = "\r\n";
272
465
  LogLine.DELIMITER_REGEX = /\r?\n/;
273
466
  })(LogLine = WorkspaceImageBuild.LogLine || (WorkspaceImageBuild.LogLine = {}));
274
467
  })(WorkspaceImageBuild = exports.WorkspaceImageBuild || (exports.WorkspaceImageBuild = {}));
275
468
  var ImageConfigString;
276
469
  (function (ImageConfigString) {
277
470
  function is(config) {
278
- return typeof config === 'string';
471
+ return typeof config === "string";
279
472
  }
280
473
  ImageConfigString.is = is;
281
474
  })(ImageConfigString = exports.ImageConfigString || (exports.ImageConfigString = {}));
282
475
  var ImageConfigFile;
283
476
  (function (ImageConfigFile) {
284
477
  function is(config) {
285
- return typeof config === 'object'
286
- && 'file' in config;
478
+ return typeof config === "object" && "file" in config;
287
479
  }
288
480
  ImageConfigFile.is = is;
289
481
  })(ImageConfigFile = exports.ImageConfigFile || (exports.ImageConfigFile = {}));
290
482
  var ExternalImageConfigFile;
291
483
  (function (ExternalImageConfigFile) {
292
484
  function is(config) {
293
- return typeof config === 'object'
294
- && 'file' in config
295
- && 'externalSource' in config;
485
+ return typeof config === "object" && "file" in config && "externalSource" in config;
296
486
  }
297
487
  ExternalImageConfigFile.is = is;
298
488
  })(ExternalImageConfigFile = exports.ExternalImageConfigFile || (exports.ExternalImageConfigFile = {}));
299
489
  var WorkspaceContext;
300
490
  (function (WorkspaceContext) {
301
491
  function is(context) {
302
- return context
303
- && 'title' in context;
492
+ return context && "title" in context;
304
493
  }
305
494
  WorkspaceContext.is = is;
306
495
  })(WorkspaceContext = exports.WorkspaceContext || (exports.WorkspaceContext = {}));
307
496
  var WithSnapshot;
308
497
  (function (WithSnapshot) {
309
498
  function is(context) {
310
- return context
311
- && 'snapshotBucketId' in context;
499
+ return context && "snapshotBucketId" in context;
312
500
  }
313
501
  WithSnapshot.is = is;
314
502
  })(WithSnapshot = exports.WithSnapshot || (exports.WithSnapshot = {}));
315
503
  var WithPrebuild;
316
504
  (function (WithPrebuild) {
317
505
  function is(context) {
318
- return context
319
- && WithSnapshot.is(context)
320
- && 'prebuildWorkspaceId' in context
321
- && 'wasPrebuilt' in context;
506
+ return context && WithSnapshot.is(context) && "prebuildWorkspaceId" in context && "wasPrebuilt" in context;
322
507
  }
323
508
  WithPrebuild.is = is;
324
509
  })(WithPrebuild = exports.WithPrebuild || (exports.WithPrebuild = {}));
325
510
  var WithDefaultConfig;
326
511
  (function (WithDefaultConfig) {
327
512
  function is(context) {
328
- return context
329
- && 'withDefaultConfig' in context
330
- && context.withDefaultConfig;
513
+ return context && "withDefaultConfig" in context && context.withDefaultConfig;
331
514
  }
332
515
  WithDefaultConfig.is = is;
333
516
  function mark(ctx) {
@@ -338,54 +521,38 @@ var WithDefaultConfig;
338
521
  var SnapshotContext;
339
522
  (function (SnapshotContext) {
340
523
  function is(context) {
341
- return context
342
- && WithSnapshot.is(context)
343
- && 'snapshotId' in context;
524
+ return context && WithSnapshot.is(context) && "snapshotId" in context;
344
525
  }
345
526
  SnapshotContext.is = is;
346
527
  })(SnapshotContext = exports.SnapshotContext || (exports.SnapshotContext = {}));
347
528
  var StartPrebuildContext;
348
529
  (function (StartPrebuildContext) {
349
530
  function is(context) {
350
- return context
351
- && 'actual' in context;
531
+ return context && "actual" in context;
352
532
  }
353
533
  StartPrebuildContext.is = is;
354
534
  })(StartPrebuildContext = exports.StartPrebuildContext || (exports.StartPrebuildContext = {}));
355
535
  var PrebuiltWorkspaceContext;
356
536
  (function (PrebuiltWorkspaceContext) {
357
537
  function is(context) {
358
- return context
359
- && 'originalContext' in context
360
- && 'prebuiltWorkspace' in context;
538
+ return context && "originalContext" in context && "prebuiltWorkspace" in context;
361
539
  }
362
540
  PrebuiltWorkspaceContext.is = is;
363
541
  })(PrebuiltWorkspaceContext = exports.PrebuiltWorkspaceContext || (exports.PrebuiltWorkspaceContext = {}));
364
542
  var WithReferrerContext;
365
543
  (function (WithReferrerContext) {
366
544
  function is(context) {
367
- return context
368
- && 'referrer' in context;
545
+ return context && "referrer" in context;
369
546
  }
370
547
  WithReferrerContext.is = is;
371
548
  })(WithReferrerContext = exports.WithReferrerContext || (exports.WithReferrerContext = {}));
372
549
  var WithEnvvarsContext;
373
550
  (function (WithEnvvarsContext) {
374
551
  function is(context) {
375
- return context
376
- && 'envvars' in context;
552
+ return context && "envvars" in context;
377
553
  }
378
554
  WithEnvvarsContext.is = is;
379
555
  })(WithEnvvarsContext = exports.WithEnvvarsContext || (exports.WithEnvvarsContext = {}));
380
- var WorkspaceProbeContext;
381
- (function (WorkspaceProbeContext) {
382
- function is(context) {
383
- return context
384
- && 'responseURL' in context
385
- && 'responseToken' in context;
386
- }
387
- WorkspaceProbeContext.is = is;
388
- })(WorkspaceProbeContext = exports.WorkspaceProbeContext || (exports.WorkspaceProbeContext = {}));
389
556
  var RefType;
390
557
  (function (RefType) {
391
558
  RefType.getRefType = (commit) => {
@@ -399,7 +566,7 @@ var RefType;
399
566
  var AdditionalContentContext;
400
567
  (function (AdditionalContentContext) {
401
568
  function is(ctx) {
402
- return 'additionalFiles' in ctx;
569
+ return "additionalFiles" in ctx;
403
570
  }
404
571
  AdditionalContentContext.is = is;
405
572
  function hasDockerConfig(ctx, config) {
@@ -407,41 +574,60 @@ var AdditionalContentContext;
407
574
  }
408
575
  AdditionalContentContext.hasDockerConfig = hasDockerConfig;
409
576
  })(AdditionalContentContext = exports.AdditionalContentContext || (exports.AdditionalContentContext = {}));
577
+ var OpenPrebuildContext;
578
+ (function (OpenPrebuildContext) {
579
+ function is(ctx) {
580
+ return "openPrebuildID" in ctx;
581
+ }
582
+ OpenPrebuildContext.is = is;
583
+ })(OpenPrebuildContext = exports.OpenPrebuildContext || (exports.OpenPrebuildContext = {}));
410
584
  var CommitContext;
585
+ (function (CommitContext) {
586
+ /**
587
+ * Creates a hash for all the commits of the CommitContext and all sub-repo commit infos.
588
+ * The hash is max 255 chars long.
589
+ * @param commitContext
590
+ * @returns hash for commitcontext
591
+ */
592
+ function computeHash(commitContext) {
593
+ // for single commits we use the revision to be backward compatible.
594
+ if (!commitContext.additionalRepositoryCheckoutInfo ||
595
+ commitContext.additionalRepositoryCheckoutInfo.length === 0) {
596
+ return commitContext.revision;
597
+ }
598
+ const hasher = (0, crypto_1.createHash)("sha256");
599
+ hasher.update(commitContext.revision);
600
+ for (const info of commitContext.additionalRepositoryCheckoutInfo) {
601
+ hasher.update(info.revision);
602
+ }
603
+ return hasher.digest("hex");
604
+ }
605
+ CommitContext.computeHash = computeHash;
606
+ })(CommitContext = exports.CommitContext || (exports.CommitContext = {}));
411
607
  (function (CommitContext) {
412
608
  function is(commit) {
413
- return WorkspaceContext.is(commit)
414
- && 'repository' in commit
415
- && 'revision' in commit;
609
+ return WorkspaceContext.is(commit) && "repository" in commit && "revision" in commit;
416
610
  }
417
611
  CommitContext.is = is;
418
612
  })(CommitContext = exports.CommitContext || (exports.CommitContext = {}));
419
613
  var PullRequestContext;
420
614
  (function (PullRequestContext) {
421
615
  function is(ctx) {
422
- return CommitContext.is(ctx)
423
- && 'nr' in ctx
424
- && 'ref' in ctx
425
- && 'base' in ctx;
616
+ return CommitContext.is(ctx) && "nr" in ctx && "ref" in ctx && "base" in ctx;
426
617
  }
427
618
  PullRequestContext.is = is;
428
619
  })(PullRequestContext = exports.PullRequestContext || (exports.PullRequestContext = {}));
429
620
  var IssueContext;
430
621
  (function (IssueContext) {
431
622
  function is(ctx) {
432
- return CommitContext.is(ctx)
433
- && 'nr' in ctx
434
- && 'ref' in ctx
435
- && 'localBranch' in ctx;
623
+ return CommitContext.is(ctx) && "nr" in ctx && "ref" in ctx && "localBranch" in ctx;
436
624
  }
437
625
  IssueContext.is = is;
438
626
  })(IssueContext = exports.IssueContext || (exports.IssueContext = {}));
439
627
  var NavigatorContext;
440
628
  (function (NavigatorContext) {
441
629
  function is(ctx) {
442
- return CommitContext.is(ctx)
443
- && 'path' in ctx
444
- && 'isFile' in ctx;
630
+ return CommitContext.is(ctx) && "path" in ctx && "isFile" in ctx;
445
631
  }
446
632
  NavigatorContext.is = is;
447
633
  })(NavigatorContext = exports.NavigatorContext || (exports.NavigatorContext = {}));
@@ -467,24 +653,14 @@ var WorkspaceInfo;
467
653
  }
468
654
  WorkspaceInfo.lastActiveISODate = lastActiveISODate;
469
655
  })(WorkspaceInfo = exports.WorkspaceInfo || (exports.WorkspaceInfo = {}));
470
- var CreateWorkspaceMode;
471
- (function (CreateWorkspaceMode) {
472
- // Default returns a running prebuild if there is any, otherwise creates a new workspace (using a prebuild if one is available)
473
- CreateWorkspaceMode["Default"] = "default";
474
- // ForceNew creates a new workspace irrespective of any running prebuilds. This mode is guaranteed to actually create a workspace - but may degrade user experience as currently runnig prebuilds are ignored.
475
- CreateWorkspaceMode["ForceNew"] = "force-new";
476
- // UsePrebuild polls the database waiting for a currently running prebuild to become available. This mode exists to handle the db-sync delay.
477
- CreateWorkspaceMode["UsePrebuild"] = "use-prebuild";
478
- // SelectIfRunning returns a list of currently running workspaces for the context URL if there are any, otherwise falls back to Default mode
479
- CreateWorkspaceMode["SelectIfRunning"] = "select-if-running";
480
- })(CreateWorkspaceMode = exports.CreateWorkspaceMode || (exports.CreateWorkspaceMode = {}));
481
656
  var WorkspaceCreationResult;
482
657
  (function (WorkspaceCreationResult) {
483
658
  function is(data) {
484
- return data && ('createdWorkspaceId' in data
485
- || 'existingWorkspaces' in data
486
- || 'runningWorkspacePrebuild' in data
487
- || 'runningPrebuildWorkspaceID' in data);
659
+ return (data &&
660
+ ("createdWorkspaceId" in data ||
661
+ "existingWorkspaces" in data ||
662
+ "runningWorkspacePrebuild" in data ||
663
+ "runningPrebuildWorkspaceID" in data));
488
664
  }
489
665
  WorkspaceCreationResult.is = is;
490
666
  })(WorkspaceCreationResult = exports.WorkspaceCreationResult || (exports.WorkspaceCreationResult = {}));