@gitpod/gitpod-protocol 0.1.5-private-repos-after-cancellation.0 → 0.1.5-protected-secrets.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 (407) hide show
  1. package/data/gitpod-schema.json +145 -7
  2. package/lib/accounting-protocol.d.ts +18 -12
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +43 -42
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +28 -4
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +2 -13
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +12 -2
  11. package/lib/analytics.d.ts.map +1 -1
  12. package/lib/analytics.js.map +1 -1
  13. package/lib/attribution.d.ts +23 -0
  14. package/lib/attribution.d.ts.map +1 -0
  15. package/lib/attribution.js +50 -0
  16. package/lib/attribution.js.map +1 -0
  17. package/lib/auth.d.ts.map +1 -1
  18. package/lib/billing-mode.d.ts +43 -0
  19. package/lib/billing-mode.d.ts.map +1 -0
  20. package/lib/billing-mode.js +44 -0
  21. package/lib/billing-mode.js.map +1 -0
  22. package/lib/blocked-repositories-protocol.d.ts +13 -0
  23. package/lib/blocked-repositories-protocol.d.ts.map +1 -0
  24. package/lib/blocked-repositories-protocol.js +8 -0
  25. package/lib/blocked-repositories-protocol.js.map +1 -0
  26. package/lib/context-url.d.ts +18 -5
  27. package/lib/context-url.d.ts.map +1 -1
  28. package/lib/context-url.js +63 -10
  29. package/lib/context-url.js.map +1 -1
  30. package/lib/context-url.spec.d.ts +2 -0
  31. package/lib/context-url.spec.d.ts.map +1 -1
  32. package/lib/context-url.spec.js +81 -48
  33. package/lib/context-url.spec.js.map +1 -1
  34. package/lib/encryption/container-module.d.ts.map +1 -1
  35. package/lib/encryption/container-module.js +4 -4
  36. package/lib/encryption/container-module.js.map +1 -1
  37. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  38. package/lib/encryption/encryption-engine.js +25 -26
  39. package/lib/encryption/encryption-engine.js.map +1 -1
  40. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  41. package/lib/encryption/encryption-engine.spec.js +29 -37
  42. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  43. package/lib/encryption/encryption-service.d.ts.map +1 -1
  44. package/lib/encryption/encryption-service.js +30 -44
  45. package/lib/encryption/encryption-service.js.map +1 -1
  46. package/lib/encryption/key-provider.d.ts.map +1 -1
  47. package/lib/encryption/key-provider.js +31 -38
  48. package/lib/encryption/key-provider.js.map +1 -1
  49. package/lib/env.d.ts +0 -6
  50. package/lib/env.d.ts.map +1 -1
  51. package/lib/env.js +7 -27
  52. package/lib/env.js.map +1 -1
  53. package/lib/experiments/always-default.d.ts +8 -0
  54. package/lib/experiments/always-default.d.ts.map +1 -0
  55. package/lib/experiments/always-default.js +20 -0
  56. package/lib/experiments/always-default.js.map +1 -0
  57. package/lib/experiments/configcat-server.d.ts +10 -0
  58. package/lib/experiments/configcat-server.d.ts.map +1 -0
  59. package/lib/experiments/configcat-server.js +36 -0
  60. package/lib/experiments/configcat-server.js.map +1 -0
  61. package/lib/experiments/configcat.d.ts +21 -0
  62. package/lib/experiments/configcat.d.ts.map +1 -0
  63. package/lib/experiments/configcat.js +51 -0
  64. package/lib/experiments/configcat.js.map +1 -0
  65. package/lib/experiments/types.d.ts +22 -0
  66. package/lib/experiments/types.d.ts.map +1 -0
  67. package/lib/experiments/types.js +10 -0
  68. package/lib/experiments/types.js.map +1 -0
  69. package/lib/gitpod-file-parser.d.ts.map +1 -1
  70. package/lib/gitpod-file-parser.js +26 -42
  71. package/lib/gitpod-file-parser.js.map +1 -1
  72. package/lib/gitpod-file-parser.spec.js +145 -142
  73. package/lib/gitpod-file-parser.spec.js.map +1 -1
  74. package/lib/gitpod-service.d.ts +127 -52
  75. package/lib/gitpod-service.d.ts.map +1 -1
  76. package/lib/gitpod-service.js +190 -315
  77. package/lib/gitpod-service.js.map +1 -1
  78. package/lib/headless-workspace-log.d.ts +3 -13
  79. package/lib/headless-workspace-log.d.ts.map +1 -1
  80. package/lib/headless-workspace-log.js +3 -8
  81. package/lib/headless-workspace-log.js.map +1 -1
  82. package/lib/ide-frontend-service.d.ts +1 -1
  83. package/lib/ide-protocol.d.ts +113 -0
  84. package/lib/ide-protocol.d.ts.map +1 -0
  85. package/lib/{util/without.js → ide-protocol.js} +2 -2
  86. package/lib/ide-protocol.js.map +1 -0
  87. package/lib/index.d.ts +16 -12
  88. package/lib/index.d.ts.map +1 -1
  89. package/lib/index.js +5 -1
  90. package/lib/index.js.map +1 -1
  91. package/lib/installation-admin-protocol.d.ts +30 -0
  92. package/lib/installation-admin-protocol.d.ts.map +1 -0
  93. package/lib/installation-admin-protocol.js +31 -0
  94. package/lib/installation-admin-protocol.js.map +1 -0
  95. package/lib/license-protocol.d.ts +7 -0
  96. package/lib/license-protocol.d.ts.map +1 -1
  97. package/lib/license-protocol.js.map +1 -1
  98. package/lib/messaging/browser/connection.d.ts +3 -3
  99. package/lib/messaging/browser/connection.d.ts.map +1 -1
  100. package/lib/messaging/browser/connection.js +173 -36
  101. package/lib/messaging/browser/connection.js.map +1 -1
  102. package/lib/messaging/browser/window-connection.d.ts +4 -4
  103. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  104. package/lib/messaging/browser/window-connection.js +42 -59
  105. package/lib/messaging/browser/window-connection.js.map +1 -1
  106. package/lib/messaging/client-call-metrics.d.ts +19 -0
  107. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  108. package/lib/messaging/client-call-metrics.js +82 -0
  109. package/lib/messaging/client-call-metrics.js.map +1 -0
  110. package/lib/messaging/error.d.ts +10 -2
  111. package/lib/messaging/error.d.ts.map +1 -1
  112. package/lib/messaging/error.js +20 -4
  113. package/lib/messaging/error.js.map +1 -1
  114. package/lib/messaging/handler.d.ts +10 -0
  115. package/lib/messaging/handler.d.ts.map +1 -1
  116. package/lib/messaging/handler.js +1 -1
  117. package/lib/messaging/node/connection.d.ts +1 -17
  118. package/lib/messaging/node/connection.d.ts.map +1 -1
  119. package/lib/messaging/node/connection.js +24 -60
  120. package/lib/messaging/node/connection.js.map +1 -1
  121. package/lib/messaging/proxy-factory.d.ts +3 -1
  122. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  123. package/lib/messaging/proxy-factory.js +75 -162
  124. package/lib/messaging/proxy-factory.js.map +1 -1
  125. package/lib/oss-allowlist.d.ts +14 -0
  126. package/lib/oss-allowlist.d.ts.map +1 -0
  127. package/lib/oss-allowlist.js +8 -0
  128. package/lib/oss-allowlist.js.map +1 -0
  129. package/lib/payment-protocol.d.ts.map +1 -1
  130. package/lib/payment-protocol.js +1 -1
  131. package/lib/payment-protocol.js.map +1 -1
  132. package/lib/permission.d.ts +9 -4
  133. package/lib/permission.d.ts.map +1 -1
  134. package/lib/permission.js +39 -31
  135. package/lib/permission.js.map +1 -1
  136. package/lib/plans.d.ts +5 -4
  137. package/lib/plans.d.ts.map +1 -1
  138. package/lib/plans.js +229 -209
  139. package/lib/plans.js.map +1 -1
  140. package/lib/protocol.d.ts +234 -143
  141. package/lib/protocol.d.ts.map +1 -1
  142. package/lib/protocol.js +339 -193
  143. package/lib/protocol.js.map +1 -1
  144. package/{src/util/without.ts → lib/protocol.spec.d.ts} +2 -3
  145. package/lib/protocol.spec.d.ts.map +1 -0
  146. package/lib/protocol.spec.js +127 -0
  147. package/lib/protocol.spec.js.map +1 -0
  148. package/lib/snapshot-url.d.ts +14 -0
  149. package/lib/snapshot-url.d.ts.map +1 -0
  150. package/lib/snapshot-url.js +26 -0
  151. package/lib/snapshot-url.js.map +1 -0
  152. package/{src/theia-plugins.ts → lib/snapshot-url.spec.d.ts} +2 -6
  153. package/lib/snapshot-url.spec.d.ts.map +1 -0
  154. package/lib/snapshot-url.spec.js +41 -0
  155. package/lib/snapshot-url.spec.js.map +1 -0
  156. package/lib/team-subscription-protocol.d.ts +22 -4
  157. package/lib/team-subscription-protocol.d.ts.map +1 -1
  158. package/lib/team-subscription-protocol.js +33 -18
  159. package/lib/team-subscription-protocol.js.map +1 -1
  160. package/lib/teams-projects-protocol.d.ts +130 -0
  161. package/lib/teams-projects-protocol.d.ts.map +1 -0
  162. package/lib/teams-projects-protocol.js +30 -0
  163. package/lib/teams-projects-protocol.js.map +1 -0
  164. package/lib/typings/globals.d.ts +2 -2
  165. package/lib/typings/globals.d.ts.map +1 -1
  166. package/lib/usage.d.ts +61 -0
  167. package/lib/usage.d.ts.map +1 -0
  168. package/lib/usage.js +14 -0
  169. package/lib/usage.js.map +1 -0
  170. package/lib/util/analytics.d.ts.map +1 -1
  171. package/lib/util/analytics.js +44 -26
  172. package/lib/util/analytics.js.map +1 -1
  173. package/lib/util/async-iterator.d.ts.map +1 -1
  174. package/lib/util/async-iterator.js +57 -135
  175. package/lib/util/async-iterator.js.map +1 -1
  176. package/lib/util/cancelable.js +17 -59
  177. package/lib/util/cancelable.js.map +1 -1
  178. package/lib/util/date-time.js +11 -11
  179. package/lib/util/date-time.js.map +1 -1
  180. package/lib/util/debug-app.d.ts +25 -0
  181. package/lib/util/debug-app.d.ts.map +1 -0
  182. package/lib/util/debug-app.js +100 -0
  183. package/lib/util/debug-app.js.map +1 -0
  184. package/lib/util/deferred.js +10 -12
  185. package/lib/util/deferred.js.map +1 -1
  186. package/lib/util/disposable.d.ts.map +1 -1
  187. package/lib/util/disposable.js +27 -40
  188. package/lib/util/disposable.js.map +1 -1
  189. package/lib/util/event.d.ts.map +1 -1
  190. package/lib/util/event.js +63 -77
  191. package/lib/util/event.js.map +1 -1
  192. package/lib/util/garbage-collected-cache.d.ts +1 -0
  193. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  194. package/lib/util/garbage-collected-cache.js +32 -47
  195. package/lib/util/garbage-collected-cache.js.map +1 -1
  196. package/lib/util/generate-workspace-id.d.ts +6 -1
  197. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  198. package/lib/util/generate-workspace-id.js +469 -504
  199. package/lib/util/generate-workspace-id.js.map +1 -1
  200. package/lib/util/generate-workspace-id.spec.js +68 -78
  201. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  202. package/lib/util/gitpod-cookie.d.ts +20 -0
  203. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  204. package/lib/util/gitpod-cookie.js +41 -0
  205. package/lib/util/gitpod-cookie.js.map +1 -0
  206. package/lib/util/gitpod-host-url.d.ts +4 -1
  207. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  208. package/lib/util/gitpod-host-url.js +124 -114
  209. package/lib/util/gitpod-host-url.js.map +1 -1
  210. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  211. package/lib/util/gitpod-host-url.spec.js +97 -135
  212. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  213. package/lib/util/grpc.d.ts +34 -0
  214. package/lib/util/grpc.d.ts.map +1 -0
  215. package/lib/util/grpc.js +90 -0
  216. package/lib/util/grpc.js.map +1 -0
  217. package/lib/util/jaeger-client-types.d.ts +68 -0
  218. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  219. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
  220. package/lib/util/jaeger-client-types.js.map +1 -0
  221. package/lib/util/logging.d.ts +49 -33
  222. package/lib/util/logging.d.ts.map +1 -1
  223. package/lib/util/logging.js +132 -129
  224. package/lib/util/logging.js.map +1 -1
  225. package/lib/util/logging.spec.d.ts +7 -0
  226. package/lib/util/logging.spec.d.ts.map +1 -0
  227. package/lib/util/logging.spec.js +52 -0
  228. package/lib/util/logging.spec.js.map +1 -0
  229. package/lib/util/make-link.js +5 -5
  230. package/lib/util/make-link.js.map +1 -1
  231. package/lib/util/nice-grpc.d.ts +9 -0
  232. package/lib/util/nice-grpc.d.ts.map +1 -0
  233. package/lib/util/nice-grpc.js +119 -0
  234. package/lib/util/nice-grpc.js.map +1 -0
  235. package/lib/util/parse-workspace-id.d.ts +10 -0
  236. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  237. package/lib/util/parse-workspace-id.js +30 -7
  238. package/lib/util/parse-workspace-id.js.map +1 -1
  239. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  240. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  241. package/lib/util/parse-workspace-id.spec.js +123 -84
  242. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  243. package/lib/util/queue.js +16 -55
  244. package/lib/util/queue.js.map +1 -1
  245. package/lib/util/queue.spec.js +147 -288
  246. package/lib/util/queue.spec.js.map +1 -1
  247. package/lib/util/repeat.d.ts +15 -0
  248. package/lib/util/repeat.d.ts.map +1 -0
  249. package/lib/util/repeat.js +55 -0
  250. package/lib/util/repeat.js.map +1 -0
  251. package/lib/util/semaphore.d.ts.map +1 -1
  252. package/lib/util/semaphore.js +15 -46
  253. package/lib/util/semaphore.js.map +1 -1
  254. package/lib/util/skip-if.d.ts.map +1 -1
  255. package/lib/util/skip-if.js +6 -6
  256. package/lib/util/skip-if.js.map +1 -1
  257. package/lib/util/timeutil.d.ts +2 -0
  258. package/lib/util/timeutil.d.ts.map +1 -1
  259. package/lib/util/timeutil.js +29 -17
  260. package/lib/util/timeutil.js.map +1 -1
  261. package/lib/util/timeutil.spec.d.ts +2 -0
  262. package/lib/util/timeutil.spec.d.ts.map +1 -1
  263. package/lib/util/timeutil.spec.js +54 -23
  264. package/lib/util/timeutil.spec.js.map +1 -1
  265. package/lib/util/tracing.d.ts +52 -6
  266. package/lib/util/tracing.d.ts.map +1 -1
  267. package/lib/util/tracing.js +197 -64
  268. package/lib/util/tracing.js.map +1 -1
  269. package/lib/util/tracing.spec.d.ts +7 -0
  270. package/lib/util/tracing.spec.d.ts.map +1 -0
  271. package/lib/util/tracing.spec.js +121 -0
  272. package/lib/util/tracing.spec.js.map +1 -0
  273. package/lib/util/workspace-port-authentication.d.ts +7 -7
  274. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  275. package/lib/util/workspace-port-authentication.js +9 -12
  276. package/lib/util/workspace-port-authentication.js.map +1 -1
  277. package/lib/webhook-event.d.ts +44 -0
  278. package/lib/webhook-event.d.ts.map +1 -0
  279. package/lib/webhook-event.js +8 -0
  280. package/lib/webhook-event.js.map +1 -0
  281. package/lib/workspace-class.d.ts +14 -0
  282. package/lib/workspace-class.d.ts.map +1 -0
  283. package/lib/workspace-class.js +8 -0
  284. package/lib/workspace-class.js.map +1 -0
  285. package/lib/workspace-cluster.d.ts +15 -5
  286. package/lib/workspace-cluster.d.ts.map +1 -1
  287. package/lib/workspace-cluster.js +19 -4
  288. package/lib/workspace-cluster.js.map +1 -1
  289. package/lib/workspace-instance.d.ts +44 -5
  290. package/lib/workspace-instance.d.ts.map +1 -1
  291. package/lib/wsready.d.ts +1 -1
  292. package/lib/wsready.d.ts.map +1 -1
  293. package/lib/wsready.js +2 -2
  294. package/package.json +34 -15
  295. package/pkg-yarn.lock +21 -9
  296. package/provenance-bundle.jsonl +2 -0
  297. package/src/accounting-protocol.ts +66 -54
  298. package/src/admin-protocol.ts +53 -21
  299. package/src/analytics.ts +28 -16
  300. package/src/attribution.ts +59 -0
  301. package/src/auth.ts +2 -2
  302. package/src/billing-mode.ts +81 -0
  303. package/src/blocked-repositories-protocol.ts +13 -0
  304. package/src/context-url.spec.ts +37 -9
  305. package/src/context-url.ts +94 -36
  306. package/src/encryption/container-module.ts +2 -3
  307. package/src/encryption/encryption-engine.spec.ts +9 -8
  308. package/src/encryption/encryption-engine.ts +20 -16
  309. package/src/encryption/encryption-service.ts +4 -5
  310. package/src/encryption/key-provider.ts +16 -19
  311. package/src/env.ts +0 -22
  312. package/src/experiments/always-default.ts +24 -0
  313. package/src/experiments/configcat-server.ts +41 -0
  314. package/src/experiments/configcat.ts +56 -0
  315. package/src/experiments/types.ts +34 -0
  316. package/src/gitpod-file-parser.spec.ts +55 -61
  317. package/src/gitpod-file-parser.ts +16 -17
  318. package/src/gitpod-service.ts +286 -143
  319. package/src/headless-workspace-log.ts +8 -19
  320. package/src/ide-frontend-service.ts +2 -2
  321. package/src/ide-protocol.ts +129 -0
  322. package/src/index.ts +16 -12
  323. package/src/installation-admin-protocol.ts +45 -0
  324. package/src/license-protocol.ts +12 -6
  325. package/src/messaging/browser/connection.ts +185 -21
  326. package/src/messaging/browser/window-connection.ts +39 -29
  327. package/src/messaging/client-call-metrics.ts +77 -0
  328. package/src/messaging/error.ts +29 -7
  329. package/src/messaging/handler.ts +13 -1
  330. package/src/messaging/node/connection.ts +23 -70
  331. package/src/messaging/proxy-factory.ts +35 -34
  332. package/src/oss-allowlist.ts +15 -0
  333. package/src/payment-protocol.ts +2 -2
  334. package/src/permission.ts +40 -33
  335. package/src/plans.ts +240 -189
  336. package/src/protocol.spec.ts +97 -0
  337. package/src/protocol.ts +612 -340
  338. package/src/snapshot-url.spec.ts +27 -0
  339. package/src/snapshot-url.ts +27 -0
  340. package/src/team-subscription-protocol.ts +59 -23
  341. package/src/teams-projects-protocol.ts +166 -0
  342. package/src/typings/globals.ts +4 -4
  343. package/src/usage.ts +71 -0
  344. package/src/util/analytics.ts +56 -18
  345. package/src/util/async-iterator.ts +4 -5
  346. package/src/util/cancelable.ts +3 -3
  347. package/src/util/date-time.ts +8 -8
  348. package/src/util/debug-app.ts +81 -0
  349. package/src/util/deferred.ts +6 -6
  350. package/src/util/disposable.ts +3 -6
  351. package/src/util/event.ts +9 -11
  352. package/src/util/garbage-collected-cache.ts +14 -6
  353. package/src/util/generate-workspace-id.spec.ts +34 -7
  354. package/src/util/generate-workspace-id.ts +464 -440
  355. package/src/util/gitpod-cookie.ts +38 -0
  356. package/src/util/gitpod-host-url.spec.ts +40 -13
  357. package/src/util/gitpod-host-url.ts +61 -37
  358. package/src/util/grpc.ts +104 -0
  359. package/src/util/jaeger-client-types.ts +102 -0
  360. package/src/util/logging.spec.ts +23 -0
  361. package/src/util/logging.ts +156 -74
  362. package/src/util/make-link.ts +6 -7
  363. package/src/util/nice-grpc.ts +93 -0
  364. package/src/util/parse-workspace-id.spec.ts +37 -8
  365. package/src/util/parse-workspace-id.ts +32 -7
  366. package/src/util/queue.spec.ts +27 -25
  367. package/src/util/repeat.ts +45 -0
  368. package/src/util/semaphore.ts +4 -6
  369. package/src/util/skip-if.ts +9 -6
  370. package/src/util/timeutil.spec.ts +40 -14
  371. package/src/util/timeutil.ts +27 -11
  372. package/src/util/tracing.spec.ts +88 -0
  373. package/src/util/tracing.ts +200 -31
  374. package/src/util/workspace-port-authentication.ts +10 -13
  375. package/src/webhook-event.ts +55 -0
  376. package/src/workspace-class.ts +14 -0
  377. package/src/workspace-cluster.ts +29 -10
  378. package/src/workspace-instance.ts +89 -24
  379. package/src/wsready.ts +3 -3
  380. package/data/builtin-theia-plugins.json +0 -372
  381. package/lib/email-protocol.d.ts +0 -50
  382. package/lib/email-protocol.d.ts.map +0 -1
  383. package/lib/email-protocol.js +0 -28
  384. package/lib/email-protocol.js.map +0 -1
  385. package/lib/messaging/connection-error-handler.d.ts +0 -27
  386. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  387. package/lib/messaging/connection-error-handler.js +0 -46
  388. package/lib/messaging/connection-error-handler.js.map +0 -1
  389. package/lib/theia-plugins.d.ts +0 -11
  390. package/lib/theia-plugins.d.ts.map +0 -1
  391. package/lib/theia-plugins.js.map +0 -1
  392. package/lib/util/repeater.d.ts +0 -22
  393. package/lib/util/repeater.d.ts.map +0 -1
  394. package/lib/util/repeater.js +0 -118
  395. package/lib/util/repeater.js.map +0 -1
  396. package/lib/util/safe-promise.d.ts +0 -11
  397. package/lib/util/safe-promise.d.ts.map +0 -1
  398. package/lib/util/safe-promise.js +0 -34
  399. package/lib/util/safe-promise.js.map +0 -1
  400. package/lib/util/without.d.ts +0 -7
  401. package/lib/util/without.d.ts.map +0 -1
  402. package/lib/util/without.js.map +0 -1
  403. package/src/email-protocol.ts +0 -67
  404. package/src/messaging/connection-error-handler.ts +0 -62
  405. package/src/util/jaeger-client.d.ts +0 -105
  406. package/src/util/repeater.ts +0 -49
  407. package/src/util/safe-promise.ts +0 -26
@@ -4,10 +4,9 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- import * as uuidv4 from 'uuid/v4';
8
- import { Without } from "./util/without";
9
- import { User } from './protocol';
10
- import { oneMonthLater } from './util/timeutil';
7
+ import { v4 as uuidv4 } from "uuid";
8
+ import { User } from "./protocol";
9
+ import { oneMonthLater } from "./util/timeutil";
11
10
 
12
11
  /*
13
12
  * Subscription and acocunting data
@@ -34,7 +33,7 @@ export interface AccountEntry {
34
33
  /**
35
34
  * credit: end of validity
36
35
  */
37
- expiryDate?: string; // exclusive
36
+ expiryDate?: string; // exclusive
38
37
 
39
38
  kind: AccountEntryKind;
40
39
 
@@ -47,26 +46,26 @@ export interface AccountEntry {
47
46
  description?: object;
48
47
  }
49
48
  export namespace AccountEntry {
50
- export function create<T extends AccountEntry>(entry: Without<T, 'uid'>): T {
49
+ export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
51
50
  const result = entry as T;
52
51
  result.uid = uuidv4();
53
52
  return result;
54
- };
53
+ }
55
54
  }
56
55
 
57
- export type DebitAccountEntryKind = 'session' | 'expiry' | 'loss';
58
- export type AccountEntryKind = 'credit' | DebitAccountEntryKind | 'carry' | 'open';
56
+ export type DebitAccountEntryKind = "session" | "expiry" | "loss";
57
+ export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
59
58
 
60
59
  export interface Credit extends AccountEntry {
61
- kind: 'credit';
60
+ kind: "credit";
62
61
  expiryDate: string;
63
62
  }
64
63
  export type Debit = LossDebit | ExpiryDebit | SessionDebit;
65
64
  export interface LossDebit extends AccountEntry {
66
- kind: 'loss';
65
+ kind: "loss";
67
66
  }
68
67
  export interface ExpiryDebit extends AccountEntry {
69
- kind: 'expiry';
68
+ kind: "expiry";
70
69
  creditId: undefined;
71
70
  }
72
71
  export interface SessionDebit extends AccountEntry {
@@ -81,9 +80,7 @@ export interface CreditDescription {
81
80
  }
82
81
  export namespace CreditDescription {
83
82
  export function is(obj: any): obj is CreditDescription {
84
- return !!obj
85
- && obj.hasOwnProperty('subscriptionId')
86
- && obj.hasOwnProperty('planId');
83
+ return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
87
84
  }
88
85
  }
89
86
  export interface SessionDescription {
@@ -91,16 +88,16 @@ export interface SessionDescription {
91
88
  contextUrl: string;
92
89
  workspaceId: string;
93
90
  workspaceInstanceId: string;
94
- private: boolean;
95
91
  }
96
92
  export namespace SessionDescription {
97
93
  export function is(obj: any): obj is SessionDescription {
98
- return !!obj
99
- && obj.hasOwnProperty('contextTitle')
100
- && obj.hasOwnProperty('contextUrl')
101
- && obj.hasOwnProperty('workspaceId')
102
- && obj.hasOwnProperty('workspaceInstanceId')
103
- && obj.hasOwnProperty('private');
94
+ return (
95
+ !!obj &&
96
+ obj.hasOwnProperty("contextTitle") &&
97
+ obj.hasOwnProperty("contextUrl") &&
98
+ obj.hasOwnProperty("workspaceId") &&
99
+ obj.hasOwnProperty("workspaceInstanceId")
100
+ );
104
101
  }
105
102
  }
106
103
 
@@ -114,11 +111,11 @@ export namespace SessionDescription {
114
111
  export interface Subscription {
115
112
  uid: string;
116
113
  userId: string;
117
- startDate: string; // inclusive
114
+ startDate: string; // inclusive
118
115
  /** When the subscription will end (must be >= cancellationDate!) */
119
- endDate?: string; // exclusive
116
+ endDate?: string; // exclusive
120
117
  /** When the subscription was cancelled */
121
- cancellationDate?: string; // exclusive
118
+ cancellationDate?: string; // exclusive
122
119
  /** Number of granted hours */
123
120
  amount: number;
124
121
  /** Number of granted hours for the first month: If this is set, use this value for the first month */
@@ -127,6 +124,7 @@ export interface Subscription {
127
124
  paymentReference?: string;
128
125
  paymentData?: PaymentData;
129
126
  teamSubscriptionSlotId?: string;
127
+ teamMembershipId?: string;
130
128
  /** marks the subscription as deleted */
131
129
  deleted?: boolean;
132
130
  }
@@ -148,8 +146,7 @@ export interface UserPaidSubscription extends Subscription {
148
146
  }
149
147
  export namespace UserPaidSubscription {
150
148
  export function is(data: any): data is UserPaidSubscription {
151
- return !!data
152
- && data.hasOwnProperty('paymentReference');
149
+ return !!data && data.hasOwnProperty("paymentReference");
153
150
  }
154
151
  }
155
152
 
@@ -158,41 +155,56 @@ export interface AssignedTeamSubscription extends Subscription {
158
155
  }
159
156
  export namespace AssignedTeamSubscription {
160
157
  export function is(data: any): data is AssignedTeamSubscription {
161
- return !!data
162
- && data.hasOwnProperty('teamSubscriptionSlotId');
158
+ return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
159
+ }
160
+ }
161
+
162
+ export interface AssignedTeamSubscription2 extends Subscription {
163
+ teamMembershipId: string;
164
+ }
165
+ export namespace AssignedTeamSubscription2 {
166
+ export function is(data: any): data is AssignedTeamSubscription2 {
167
+ return typeof data === "object" && data.hasOwnProperty("teamMembershipId");
163
168
  }
164
169
  }
165
170
 
166
171
  export namespace Subscription {
167
- export function create(newSubscription: Without<Subscription, 'uid'>) {
172
+ export function create(newSubscription: Omit<Subscription, "uid">) {
168
173
  const subscription = newSubscription as Subscription;
169
174
  subscription.uid = uuidv4();
170
175
  return subscription;
171
- };
176
+ }
172
177
  export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
173
178
  s.endDate = endDate || cancellationDate;
174
179
  s.cancellationDate = cancellationDate;
175
- };
180
+ }
176
181
  export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
177
- return !!s1 && !!s2
178
- && s1.userId === s2.userId
179
- && s1.planId === s2.planId
180
- && s1.startDate === s2.startDate
181
- && s1.endDate === s2.endDate
182
- && s1.amount === s2.amount
183
- && s1.cancellationDate === s2.cancellationDate
184
- && s1.deleted === s2.deleted
185
- && ((s1.paymentData === undefined && s2.paymentData === undefined)
186
- || (!!s1.paymentData && !!s2.paymentData
187
- && s1.paymentData.downgradeDate === s2.paymentData.downgradeDate
188
- && s1.paymentData.newPlan === s2.paymentData.newPlan));
189
- };
182
+ return (
183
+ !!s1 &&
184
+ !!s2 &&
185
+ s1.userId === s2.userId &&
186
+ s1.planId === s2.planId &&
187
+ s1.startDate === s2.startDate &&
188
+ s1.endDate === s2.endDate &&
189
+ s1.amount === s2.amount &&
190
+ s1.cancellationDate === s2.cancellationDate &&
191
+ s1.deleted === s2.deleted &&
192
+ ((s1.paymentData === undefined && s2.paymentData === undefined) ||
193
+ (!!s1.paymentData &&
194
+ !!s2.paymentData &&
195
+ s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
196
+ s1.paymentData.newPlan === s2.paymentData.newPlan))
197
+ );
198
+ }
190
199
  export function isActive(s: Subscription, date: string): boolean {
191
200
  return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
192
- };
201
+ }
202
+ export function isCancelled(s: Subscription, date: string): boolean {
203
+ return (!!s.cancellationDate && s.cancellationDate < date) || (!!s.endDate && s.endDate < date); // This edge case is meant to handle bad data: If for whatever reason cancellationDate has not been set: treat endDate as such
204
+ }
193
205
  export function isDowngraded(s: Subscription) {
194
206
  return s.paymentData && s.paymentData.downgradeDate;
195
- };
207
+ }
196
208
  export function calculateCurrentPeriod(startDate: string, now: Date) {
197
209
  let nextStartDate = startDate;
198
210
  do {
@@ -200,19 +212,19 @@ export namespace Subscription {
200
212
  nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
201
213
  } while (nextStartDate < now.toISOString());
202
214
  return { startDate, endDate: nextStartDate };
203
- };
215
+ }
204
216
  }
205
217
 
206
218
  export type MaybeSubscription = Subscription | undefined;
207
219
 
208
220
  export interface Period {
209
- startDate: string; // inclusive
210
- endDate: string; // exclusive
221
+ startDate: string; // inclusive
222
+ endDate: string; // exclusive
211
223
  }
212
224
 
213
225
  export type MaybePeriod = Period | undefined;
214
226
 
215
- export type AccountEntryFixedPeriod = Without<AccountEntry, 'uid'> & { expiryDate: string };
227
+ export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
216
228
  export interface AccountStatement extends Period {
217
229
  userId: string;
218
230
  /**
@@ -224,9 +236,9 @@ export interface AccountStatement extends Period {
224
236
  /** Remaining valid hours (accumulated from credits) */
225
237
  remainingHours: RemainingHours;
226
238
  }
227
- export type RemainingHours = number | 'unlimited';
239
+ export type RemainingHours = number | "unlimited";
228
240
 
229
241
  export interface CreditAlert {
230
- userId: string,
231
- remainingUsageHours: number
242
+ userId: string;
243
+ remainingUsageHours: number;
232
244
  }
@@ -5,24 +5,44 @@
5
5
  */
6
6
 
7
7
  import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
8
- import { Without } from "./util/without";
8
+ import { BlockedRepository } from "./blocked-repositories-protocol";
9
+ import { FindPrebuildsParams } from "./gitpod-service";
10
+ import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol";
9
11
  import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
10
12
  import { RoleOrPermission } from "./permission";
11
13
  import { AccountStatement } from "./accounting-protocol";
14
+ import { InstallationAdminSettings } from "./installation-admin-protocol";
15
+ import { BillingMode } from "./billing-mode";
12
16
 
13
17
  export interface AdminServer {
14
18
  adminGetUsers(req: AdminGetListRequest<User>): Promise<AdminGetListResult<User>>;
15
19
  adminGetUser(id: string): Promise<User>;
16
20
  adminBlockUser(req: AdminBlockUserRequest): Promise<User>;
17
21
  adminDeleteUser(id: string): Promise<void>;
22
+ adminVerifyUser(id: string): Promise<User>;
18
23
  adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise<User>;
19
24
  adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise<User>;
20
25
 
26
+ adminCreateBlockedRepository(urlRegexp: string, blockUser: boolean): Promise<BlockedRepository>;
27
+ adminDeleteBlockedRepository(id: number): Promise<void>;
28
+ adminGetBlockedRepositories(
29
+ req: AdminGetListRequest<BlockedRepository>,
30
+ ): Promise<AdminGetListResult<BlockedRepository>>;
31
+
32
+ adminGetTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
33
+ adminGetTeams(req: AdminGetListRequest<Team>): Promise<AdminGetListResult<Team>>;
34
+ adminGetTeamById(id: string): Promise<Team | undefined>;
35
+ adminSetTeamMemberRole(teamId: string, userId: string, role: TeamMemberRole): Promise<void>;
36
+
21
37
  adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise<AdminGetListResult<WorkspaceAndInstance>>;
22
38
  adminGetWorkspace(id: string): Promise<WorkspaceAndInstance>;
23
39
  adminForceStopWorkspace(id: string): Promise<void>;
24
40
  adminRestoreSoftDeletedWorkspace(id: string): Promise<void>;
25
41
 
42
+ adminGetProjectsBySearchTerm(req: AdminGetListRequest<Project>): Promise<AdminGetListResult<Project>>;
43
+ adminGetProjectById(id: string): Promise<Project | undefined>;
44
+
45
+ adminFindPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
26
46
  adminSetLicense(key: string): Promise<void>;
27
47
 
28
48
  adminGetAccountStatement(userId: string): Promise<AccountStatement>;
@@ -30,43 +50,49 @@ export interface AdminServer {
30
50
  adminIsStudent(userId: string): Promise<boolean>;
31
51
  adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
32
52
  adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
53
+ adminGetBillingMode(attributionId: string): Promise<BillingMode>;
54
+
55
+ adminGetSettings(): Promise<InstallationAdminSettings>;
56
+ adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
33
57
  }
34
58
 
35
59
  export interface AdminGetListRequest<T> {
36
- offset: number
37
- limit: number
38
- orderBy: keyof T
39
- orderDir: "asc" | "desc"
60
+ offset: number;
61
+ limit: number;
62
+ orderBy: keyof T;
63
+ orderDir: "asc" | "desc";
40
64
  searchTerm?: string;
41
65
  }
42
66
 
43
67
  export interface AdminGetListResult<T> {
44
- total: number
45
- rows: T[]
68
+ total: number;
69
+ rows: T[];
46
70
  }
47
71
 
48
72
  export interface AdminBlockUserRequest {
49
- id: string
50
- blocked: boolean
73
+ id: string;
74
+ blocked: boolean;
51
75
  }
52
76
 
53
77
  export interface AdminModifyRoleOrPermissionRequest {
54
78
  id: string;
55
79
  rpp: {
56
- r: RoleOrPermission
57
- add: boolean
58
- }[]
80
+ r: RoleOrPermission;
81
+ add: boolean;
82
+ }[];
59
83
  }
60
84
 
61
85
  export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
62
86
  id: string;
63
87
  changes: {
64
- featureFlag: NamedWorkspaceFeatureFlag
65
- add: boolean
66
- }[]
88
+ featureFlag: NamedWorkspaceFeatureFlag;
89
+ add: boolean;
90
+ }[];
67
91
  }
68
92
 
69
- export interface WorkspaceAndInstance extends Without<Workspace, "id"|"creationTime">, Without<WorkspaceInstance, "id"|"creationTime"> {
93
+ export interface WorkspaceAndInstance
94
+ extends Omit<Workspace, "id" | "creationTime">,
95
+ Omit<WorkspaceInstance, "id" | "creationTime"> {
70
96
  workspaceId: string;
71
97
  workspaceCreationTime: string;
72
98
  instanceId: string;
@@ -79,7 +105,7 @@ export namespace WorkspaceAndInstance {
79
105
  return {
80
106
  id: wai.workspaceId,
81
107
  creationTime: wai.workspaceCreationTime,
82
- ... wai
108
+ ...wai,
83
109
  };
84
110
  }
85
111
 
@@ -90,11 +116,17 @@ export namespace WorkspaceAndInstance {
90
116
  return {
91
117
  id: wai.instanceId,
92
118
  creationTime: wai.instanceCreationTime,
93
- ... wai
119
+ ...wai,
94
120
  };
95
121
  }
96
122
  }
97
123
 
98
- export interface AdminGetWorkspacesRequest extends AdminGetListRequest<WorkspaceAndInstance> {
99
- ownerId?: string
100
- }
124
+ export type AdminGetWorkspacesRequest = AdminGetListRequest<WorkspaceAndInstance> & AdminGetWorkspacesQuery;
125
+ /** The fields are meant to be used either OR (not combined) */
126
+ export type AdminGetWorkspacesQuery = {
127
+ /** we use this field in case we have a UUIDv4 and don't know whether it's an (old) workspace or instance id */
128
+ instanceIdOrWorkspaceId?: string;
129
+ instanceId?: string;
130
+ workspaceId?: string;
131
+ ownerId?: string;
132
+ };
package/src/analytics.ts CHANGED
@@ -4,37 +4,49 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- import { Without } from "./util/without";
8
-
9
7
  export const IAnalyticsWriter = Symbol("IAnalyticsWriter");
10
8
 
11
9
  type Identity =
12
- | { userId: string | number }
10
+ | { userId: string | number; anonymousId?: string | number }
13
11
  | { userId?: string | number; anonymousId: string | number };
14
12
 
15
13
  interface Message {
16
14
  messageId?: string;
17
15
  }
18
16
 
19
- export type IdentifyMessage = Message & Identity & {
20
- traits?: any;
21
- timestamp?: Date;
22
- context?: any;
23
- };
24
-
25
- export type TrackMessage = Message & Identity & {
26
- event: string;
27
- properties?: any;
28
- timestamp?: Date;
29
- context?: any;
17
+ export type IdentifyMessage = Message &
18
+ Identity & {
19
+ traits?: any;
20
+ timestamp?: Date;
21
+ context?: any;
22
+ };
23
+
24
+ export type TrackMessage = Message &
25
+ Identity & {
26
+ event: string;
27
+ properties?: any;
28
+ timestamp?: Date;
29
+ context?: any;
30
+ };
31
+
32
+ export type PageMessage = Message &
33
+ Identity & {
34
+ properties?: any;
35
+ timestamp?: Date;
36
+ context?: any;
37
+ };
38
+
39
+ export type RemoteTrackMessage = Omit<TrackMessage, "timestamp" | "userId">;
40
+ export type RemotePageMessage = Omit<PageMessage, "timestamp" | "userId"> & {
41
+ includePII?: boolean;
30
42
  };
31
43
 
32
- export type RemoteTrackMessage = Without<TrackMessage, "timestamp" | "userId" | "anonymousId">;
44
+ export type RemoteIdentifyMessage = Omit<IdentifyMessage, "timestamp" | "userId">;
33
45
 
34
46
  export interface IAnalyticsWriter {
35
-
36
47
  identify(msg: IdentifyMessage): void;
37
48
 
38
49
  track(msg: TrackMessage): void;
39
50
 
51
+ page(msg: PageMessage): void;
40
52
  }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { User } from "./protocol";
8
+ import { Team } from "./teams-projects-protocol";
9
+
10
+ export type AttributionId = UserAttributionId | TeamAttributionId;
11
+ export type AttributionTarget = "user" | "team";
12
+
13
+ export interface UserAttributionId {
14
+ kind: "user";
15
+ userId: string;
16
+ }
17
+ export interface TeamAttributionId {
18
+ kind: "team";
19
+ teamId: string;
20
+ }
21
+
22
+ export namespace AttributionId {
23
+ const SEPARATOR = ":";
24
+
25
+ export function create(userOrTeam: User | Team): AttributionId {
26
+ if (User.is(userOrTeam)) {
27
+ return { kind: "user", userId: userOrTeam.id };
28
+ } else {
29
+ return { kind: "team", teamId: userOrTeam.id };
30
+ }
31
+ }
32
+
33
+ export function parse(s: string): UserAttributionId | TeamAttributionId | undefined {
34
+ if (!s) {
35
+ return undefined;
36
+ }
37
+ const parts = s.split(":");
38
+ if (parts.length !== 2) {
39
+ return undefined;
40
+ }
41
+ switch (parts[0]) {
42
+ case "user":
43
+ return { kind: "user", userId: parts[1] };
44
+ case "team":
45
+ return { kind: "team", teamId: parts[1] };
46
+ default:
47
+ return undefined;
48
+ }
49
+ }
50
+
51
+ export function render(id: AttributionId): string {
52
+ switch (id.kind) {
53
+ case "user":
54
+ return `user${SEPARATOR}${id.userId}`;
55
+ case "team":
56
+ return `team${SEPARATOR}${id.teamId}`;
57
+ }
58
+ }
59
+ }
package/src/auth.ts CHANGED
@@ -11,14 +11,14 @@ export interface SelectAccountPayload {
11
11
  authHost: string;
12
12
  authName: string;
13
13
  authProviderType: string;
14
- },
14
+ };
15
15
  otherUser: {
16
16
  name: string;
17
17
  avatarUrl: string;
18
18
  authHost: string;
19
19
  authName: string;
20
20
  authProviderType: string;
21
- }
21
+ };
22
22
  }
23
23
  export namespace SelectAccountPayload {
24
24
  export function is(data: any): data is SelectAccountPayload {
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ /**
8
+ * BillingMode is used to answer the following questions:
9
+ * - Should UI piece x be displayed for this user/team? (getBillingModeForUser/Team)
10
+ * - What model should be used to limit this workspace's capabilities (mayStartWorkspace, setTimeout, workspace class, etc...) (getBillingMode(workspaceInstance.attributionId))
11
+ * - How is a workspace session charged for? (getBillingMode(workspaceInstance.attributionId))
12
+ */
13
+ export type BillingMode = None | Chargebee | UsageBased;
14
+ export namespace BillingMode {
15
+ export const NONE: None = {
16
+ mode: "none",
17
+ };
18
+
19
+ /** Incl. upgrade and status */
20
+ export function showUsageBasedBilling(billingMode?: BillingMode): boolean {
21
+ if (!billingMode) {
22
+ return false;
23
+ }
24
+ return (
25
+ billingMode.mode === "usage-based" || (billingMode.mode === "chargebee" && !!billingMode.canUpgradeToUBB)
26
+ );
27
+ }
28
+
29
+ export function showTeamSubscriptionUI(billingMode?: BillingMode): boolean {
30
+ if (!billingMode) {
31
+ return false;
32
+ }
33
+ return (
34
+ billingMode.mode === "chargebee" ||
35
+ (billingMode.mode === "usage-based" && !!billingMode.hasChargebeeTeamSubscription)
36
+ );
37
+ }
38
+
39
+ export function canSetWorkspaceClass(billingMode?: BillingMode): boolean {
40
+ if (!billingMode) {
41
+ return false;
42
+ }
43
+
44
+ // if has any Stripe subscription, either directly or per team
45
+ return billingMode.mode === "usage-based";
46
+ }
47
+
48
+ export function canSetCostCenter(billingMode: BillingMode): boolean {
49
+ // if has any Stripe Subscription, either directly or per team
50
+ return billingMode.mode === "usage-based";
51
+ }
52
+ }
53
+
54
+ /** Payment is disabled */
55
+ interface None {
56
+ mode: "none";
57
+ }
58
+
59
+ /** Sessions is handled with old subscription logic based on Chargebee */
60
+ interface Chargebee {
61
+ mode: "chargebee";
62
+
63
+ /** True iff this is a team, and is based on a paid plan. Currently only set for teams! */
64
+ paid?: boolean;
65
+
66
+ canUpgradeToUBB?: boolean;
67
+ }
68
+
69
+ /** Session is handld with new usage-based logic */
70
+ interface UsageBased {
71
+ mode: "usage-based";
72
+
73
+ /** True iff this is a team, and is based on a paid plan. Currently only set for teams! */
74
+ paid?: boolean;
75
+
76
+ /** User is already converted, but is member with at least one Chargebee-based "Team Plan" */
77
+ hasChargebeeTeamPlan?: boolean;
78
+
79
+ /** User is already converted, but is member or owner in at least one Chargebee-based "Team Subscription" */
80
+ hasChargebeeTeamSubscription?: boolean;
81
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ export interface BlockedRepository {
8
+ id: number;
9
+ urlRegexp: string;
10
+ blockUser: boolean;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }