@gitpod/gitpod-protocol 0.1.5-wth-test.41 → 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.
- package/data/gitpod-schema.json +150 -8
- package/lib/accounting-protocol.d.ts +19 -11
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +35 -33
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +29 -1
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +5 -6
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/attribution.d.ts +24 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +54 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts +1 -1
- package/lib/auth.d.ts.map +1 -1
- package/lib/auth.js +1 -1
- package/lib/billing-mode.d.ts +45 -0
- package/lib/billing-mode.d.ts.map +1 -0
- package/lib/billing-mode.js +44 -0
- package/lib/billing-mode.js.map +1 -0
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +19 -7
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +60 -9
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +3 -3
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +20 -12
- package/lib/context-url.spec.js.map +1 -1
- package/lib/encryption/container-module.d.ts +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +2 -2
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +10 -10
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +3 -4
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +2 -2
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +8 -10
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +1 -6
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +2 -21
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +8 -0
- package/lib/experiments/always-default.d.ts.map +1 -0
- package/lib/experiments/always-default.js +20 -0
- package/lib/experiments/always-default.js.map +1 -0
- package/lib/experiments/configcat-server.d.ts +10 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +37 -0
- package/lib/experiments/configcat-server.js.map +1 -0
- package/lib/experiments/configcat.d.ts +21 -0
- package/lib/experiments/configcat.d.ts.map +1 -0
- package/lib/experiments/configcat.js +51 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +22 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/experiments/types.js +10 -0
- package/lib/experiments/types.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts +1 -1
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +7 -7
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.d.ts +1 -1
- package/lib/gitpod-file-parser.spec.js +43 -40
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +93 -48
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +57 -36
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +2 -1
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +3 -2
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +2 -2
- package/lib/ide-frontend-service.js +1 -1
- package/lib/ide-protocol.d.ts +126 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/ide-protocol.js +18 -0
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +17 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +30 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +31 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts +8 -1
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +1 -1
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +19 -19
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +5 -5
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +10 -7
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +5 -19
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +35 -23
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +11 -2
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +22 -4
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +23 -59
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +1 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +7 -9
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/payment-protocol.d.ts +1 -1
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +2 -2
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +10 -4
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +35 -26
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +5 -4
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +211 -172
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +192 -99
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +293 -105
- package/lib/protocol.js.map +1 -1
- package/lib/protocol.spec.d.ts +7 -0
- package/lib/protocol.spec.d.ts.map +1 -0
- package/lib/protocol.spec.js +127 -0
- package/lib/protocol.spec.js.map +1 -0
- package/lib/snapshot-url.d.ts +1 -1
- package/lib/snapshot-url.js +1 -1
- package/lib/snapshot-url.spec.d.ts +1 -1
- package/lib/snapshot-url.spec.js +1 -1
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +23 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +21 -6
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +35 -5
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +9 -2
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +3 -3
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/typings/globals.js +1 -1
- package/lib/usage.d.ts +73 -0
- package/lib/usage.d.ts.map +1 -0
- package/lib/usage.js +20 -0
- package/lib/usage.js.map +1 -0
- package/lib/util/analytics.d.ts +1 -1
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +13 -4
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +4 -4
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.d.ts +1 -1
- package/lib/util/cancelable.js +1 -1
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.d.ts +1 -1
- package/lib/util/date-time.js +7 -7
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deep-partial.d.ts +1 -1
- package/lib/util/deep-partial.js +1 -1
- package/lib/util/deferred.d.ts +1 -1
- package/lib/util/deferred.js +1 -1
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +2 -2
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +5 -3
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +2 -1
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +12 -3
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +6 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +461 -440
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.d.ts +1 -1
- package/lib/util/generate-workspace-id.spec.js +37 -2
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +2 -2
- package/lib/util/gitpod-cookie.d.ts.map +1 -1
- package/lib/util/gitpod-cookie.js +1 -4
- package/lib/util/gitpod-cookie.js.map +1 -1
- package/lib/util/gitpod-host-url.d.ts +6 -2
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +61 -37
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +16 -6
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +21 -1
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js +74 -2
- package/lib/util/grpc.js.map +1 -1
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +2 -2
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +2 -2
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +32 -26
- package/lib/util/logging.js.map +1 -1
- package/lib/util/logging.spec.d.ts +7 -0
- package/lib/util/logging.spec.d.ts.map +1 -0
- package/lib/util/logging.spec.js +52 -0
- package/lib/util/logging.spec.js.map +1 -0
- package/lib/util/make-link.d.ts +1 -1
- package/lib/util/make-link.js +6 -6
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/nice-grpc.d.ts +9 -0
- package/lib/util/nice-grpc.d.ts.map +1 -0
- package/lib/util/nice-grpc.js +121 -0
- package/lib/util/nice-grpc.js.map +1 -0
- package/lib/util/parse-workspace-id.d.ts +1 -1
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +3 -4
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +1 -1
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.d.ts +1 -1
- package/lib/util/queue.js +1 -1
- package/lib/util/queue.spec.d.ts +1 -1
- package/lib/util/queue.spec.js +10 -7
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.d.ts +1 -1
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +1 -1
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +1 -1
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +3 -1
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +16 -4
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +3 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +35 -1
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +53 -7
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +157 -20
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.d.ts +8 -8
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +9 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/webhook-event.d.ts +44 -0
- package/lib/webhook-event.d.ts.map +1 -0
- package/lib/webhook-event.js +8 -0
- package/lib/webhook-event.js.map +1 -0
- package/lib/workspace-class.d.ts +14 -0
- package/lib/workspace-class.d.ts.map +1 -0
- package/lib/workspace-class.js +8 -0
- package/lib/workspace-class.js.map +1 -0
- package/lib/workspace-cluster.d.ts +19 -18
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +17 -2
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +41 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/workspace-instance.js +1 -1
- package/lib/wsready.d.ts +8 -2
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +3 -3
- package/package.json +18 -8
- package/pkg-yarn.lock +11 -6
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +67 -52
- package/src/admin-protocol.ts +59 -19
- package/src/analytics.ts +27 -29
- package/src/attribution.ts +63 -0
- package/src/auth.ts +3 -3
- package/src/billing-mode.ts +84 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +25 -15
- package/src/context-url.ts +93 -37
- package/src/encryption/container-module.ts +3 -4
- package/src/encryption/encryption-engine.spec.ts +10 -9
- package/src/encryption/encryption-engine.ts +21 -17
- package/src/encryption/encryption-service.ts +5 -6
- package/src/encryption/key-provider.ts +17 -20
- package/src/env.ts +2 -25
- package/src/experiments/always-default.ts +24 -0
- package/src/experiments/configcat-server.ts +42 -0
- package/src/experiments/configcat.ts +56 -0
- package/src/experiments/types.ts +34 -0
- package/src/gitpod-file-parser.spec.ts +56 -62
- package/src/gitpod-file-parser.ts +17 -18
- package/src/gitpod-service.ts +241 -134
- package/src/headless-workspace-log.ts +7 -5
- package/src/ide-frontend-service.ts +3 -3
- package/src/ide-protocol.ts +147 -0
- package/src/index.ts +17 -15
- package/src/installation-admin-protocol.ts +45 -0
- package/src/license-protocol.ts +13 -7
- package/src/messaging/browser/connection.ts +45 -47
- package/src/messaging/browser/window-connection.ts +40 -30
- package/src/messaging/client-call-metrics.ts +79 -82
- package/src/messaging/error.ts +33 -8
- package/src/messaging/handler.ts +6 -6
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +23 -30
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +3 -3
- package/src/permission.ts +41 -33
- package/src/plans.ts +241 -190
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +557 -297
- package/src/snapshot-url.spec.ts +10 -8
- package/src/snapshot-url.ts +1 -1
- package/src/team-subscription-protocol.ts +60 -23
- package/src/teams-projects-protocol.ts +51 -12
- package/src/typings/globals.ts +5 -5
- package/src/usage.ts +85 -0
- package/src/util/analytics.ts +47 -25
- package/src/util/async-iterator.ts +5 -6
- package/src/util/cancelable.ts +4 -4
- package/src/util/date-time.ts +9 -9
- package/src/util/debug-app.ts +81 -0
- package/src/util/deep-partial.ts +1 -1
- package/src/util/deferred.ts +7 -7
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +15 -7
- package/src/util/generate-workspace-id.spec.ts +35 -8
- package/src/util/generate-workspace-id.ts +465 -441
- package/src/util/gitpod-cookie.ts +9 -10
- package/src/util/gitpod-host-url.spec.ts +41 -14
- package/src/util/gitpod-host-url.ts +70 -42
- package/src/util/grpc.ts +94 -2
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +61 -43
- package/src/util/make-link.ts +7 -8
- package/src/util/nice-grpc.ts +96 -0
- package/src/util/parse-workspace-id.spec.ts +18 -9
- package/src/util/parse-workspace-id.ts +7 -8
- package/src/util/queue.spec.ts +28 -26
- package/src/util/queue.ts +1 -1
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +5 -7
- package/src/util/skip-if.ts +10 -7
- package/src/util/timeutil.spec.ts +41 -15
- package/src/util/timeutil.ts +28 -12
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +201 -32
- package/src/util/workspace-port-authentication.ts +11 -14
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +35 -21
- package/src/workspace-instance.ts +83 -21
- package/src/wsready.ts +11 -4
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/email-protocol.d.ts +0 -49
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -28
- package/lib/email-protocol.js.map +0 -1
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -34
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -65
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -31
- package/lib/util/safe-promise.js.map +0 -1
- package/src/email-protocol.ts +0 -66
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
package/src/gitpod-service.ts
CHANGED
|
@@ -1,34 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
-
User,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
User,
|
|
9
|
+
WorkspaceInfo,
|
|
10
|
+
WorkspaceCreationResult,
|
|
11
|
+
WorkspaceInstanceUser,
|
|
12
|
+
WhitelistedRepository,
|
|
13
|
+
WorkspaceImageBuild,
|
|
14
|
+
AuthProviderInfo,
|
|
15
|
+
Token,
|
|
16
|
+
UserEnvVarValue,
|
|
17
|
+
Terms,
|
|
18
|
+
Configuration,
|
|
19
|
+
UserInfo,
|
|
20
|
+
GitpodTokenType,
|
|
21
|
+
GitpodToken,
|
|
22
|
+
AuthProviderEntry,
|
|
23
|
+
GuessGitTokenScopesParams,
|
|
24
|
+
GuessedGitTokenScopes,
|
|
25
|
+
ProjectEnvVar,
|
|
26
|
+
PrebuiltWorkspace,
|
|
27
|
+
UserSSHPublicKeyValue,
|
|
28
|
+
SSHPublicKeyValue,
|
|
29
|
+
IDESettings,
|
|
30
|
+
} from "./protocol";
|
|
14
31
|
import {
|
|
15
|
-
Team,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
+
Team,
|
|
33
|
+
TeamMemberInfo,
|
|
34
|
+
TeamMembershipInvite,
|
|
35
|
+
Project,
|
|
36
|
+
TeamMemberRole,
|
|
37
|
+
PrebuildWithStatus,
|
|
38
|
+
StartPrebuildResult,
|
|
39
|
+
PartialProject,
|
|
40
|
+
PrebuildEvent,
|
|
41
|
+
} from "./teams-projects-protocol";
|
|
42
|
+
import { JsonRpcProxy, JsonRpcServer } from "./messaging/proxy-factory";
|
|
43
|
+
import { Disposable, CancellationTokenSource } from "vscode-jsonrpc";
|
|
44
|
+
import { HeadlessLogUrls } from "./headless-workspace-log";
|
|
45
|
+
import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from "./workspace-instance";
|
|
46
|
+
import { AdminServer } from "./admin-protocol";
|
|
47
|
+
import { GitpodHostUrl } from "./util/gitpod-host-url";
|
|
48
|
+
import { WebSocketConnectionProvider } from "./messaging/browser/connection";
|
|
49
|
+
import { PermissionName } from "./permission";
|
|
50
|
+
import { LicenseService } from "./license-protocol";
|
|
51
|
+
import { Emitter } from "./util/event";
|
|
52
|
+
import { AccountStatement, CreditAlert } from "./accounting-protocol";
|
|
53
|
+
import { GithubUpgradeURL, PlanCoupon } from "./payment-protocol";
|
|
54
|
+
import {
|
|
55
|
+
TeamSubscription,
|
|
56
|
+
TeamSubscription2,
|
|
57
|
+
TeamSubscriptionSlot,
|
|
58
|
+
TeamSubscriptionSlotResolved,
|
|
59
|
+
} from "./team-subscription-protocol";
|
|
60
|
+
import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
|
|
61
|
+
import { IDEServer } from "./ide-protocol";
|
|
62
|
+
import { ListUsageRequest, ListUsageResponse, CostCenterJSON } from "./usage";
|
|
63
|
+
import { SupportedWorkspaceClass } from "./workspace-class";
|
|
64
|
+
import { BillingMode } from "./billing-mode";
|
|
32
65
|
|
|
33
66
|
export interface GitpodClient {
|
|
34
67
|
onInstanceUpdate(instance: WorkspaceInstance): void;
|
|
@@ -36,6 +69,8 @@ export interface GitpodClient {
|
|
|
36
69
|
|
|
37
70
|
onPrebuildUpdate(update: PrebuildWithStatus): void;
|
|
38
71
|
|
|
72
|
+
onNotificationUpdated(): void;
|
|
73
|
+
|
|
39
74
|
onCreditAlert(creditAlert: CreditAlert): void;
|
|
40
75
|
|
|
41
76
|
//#region propagating reconnection to iframe
|
|
@@ -44,17 +79,18 @@ export interface GitpodClient {
|
|
|
44
79
|
//#endregion
|
|
45
80
|
}
|
|
46
81
|
|
|
47
|
-
export const GitpodServer = Symbol(
|
|
48
|
-
export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService {
|
|
82
|
+
export const GitpodServer = Symbol("GitpodServer");
|
|
83
|
+
export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService, IDEServer {
|
|
49
84
|
// User related API
|
|
50
85
|
getLoggedInUser(): Promise<User>;
|
|
51
86
|
getTerms(): Promise<Terms>;
|
|
52
87
|
updateLoggedInUser(user: Partial<User>): Promise<User>;
|
|
88
|
+
sendPhoneNumberVerificationToken(phoneNumber: string): Promise<void>;
|
|
89
|
+
verifyPhoneNumberVerificationToken(phoneNumber: string, token: string): Promise<boolean>;
|
|
53
90
|
getAuthProviders(): Promise<AuthProviderInfo[]>;
|
|
54
91
|
getOwnAuthProviders(): Promise<AuthProviderEntry[]>;
|
|
55
92
|
updateOwnAuthProvider(params: GitpodServer.UpdateOwnAuthProviderParams): Promise<AuthProviderEntry>;
|
|
56
93
|
deleteOwnAuthProvider(params: GitpodServer.DeleteOwnAuthProviderParams): Promise<void>;
|
|
57
|
-
getBranding(): Promise<Branding>;
|
|
58
94
|
getConfiguration(): Promise<Configuration>;
|
|
59
95
|
getToken(query: GitpodServer.GetTokenSearchOptions): Promise<Token | undefined>;
|
|
60
96
|
getGitpodTokenScopes(tokenHash: string): Promise<string[]>;
|
|
@@ -71,8 +107,15 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
71
107
|
getWorkspaceOwner(workspaceId: string): Promise<UserInfo | undefined>;
|
|
72
108
|
getWorkspaceUsers(workspaceId: string): Promise<WorkspaceInstanceUser[]>;
|
|
73
109
|
getFeaturedRepositories(): Promise<WhitelistedRepository[]>;
|
|
110
|
+
getSuggestedContextURLs(): Promise<string[]>;
|
|
111
|
+
/**
|
|
112
|
+
* **Security:**
|
|
113
|
+
* Sensitive information like an owner token is erased, since it allows access for all team members.
|
|
114
|
+
* If you need to access an owner token use `getOwnerToken` instead.
|
|
115
|
+
*/
|
|
74
116
|
getWorkspace(id: string): Promise<WorkspaceInfo>;
|
|
75
117
|
isWorkspaceOwner(workspaceId: string): Promise<boolean>;
|
|
118
|
+
getOwnerToken(workspaceId: string): Promise<string>;
|
|
76
119
|
|
|
77
120
|
/**
|
|
78
121
|
* Creates and starts a workspace for the given context URL.
|
|
@@ -114,7 +157,14 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
114
157
|
setEnvVar(variable: UserEnvVarValue): Promise<void>;
|
|
115
158
|
deleteEnvVar(variable: UserEnvVarValue): Promise<void>;
|
|
116
159
|
|
|
160
|
+
// User SSH Keys
|
|
161
|
+
hasSSHPublicKey(): Promise<boolean>;
|
|
162
|
+
getSSHPublicKeys(): Promise<UserSSHPublicKeyValue[]>;
|
|
163
|
+
addSSHPublicKey(value: SSHPublicKeyValue): Promise<UserSSHPublicKeyValue>;
|
|
164
|
+
deleteSSHPublicKey(id: string): Promise<void>;
|
|
165
|
+
|
|
117
166
|
// Teams
|
|
167
|
+
getTeam(teamId: string): Promise<Team>;
|
|
118
168
|
getTeams(): Promise<Team[]>;
|
|
119
169
|
getTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
|
|
120
170
|
createTeam(name: string): Promise<Team>;
|
|
@@ -123,7 +173,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
123
173
|
removeTeamMember(teamId: string, userId: string): Promise<void>;
|
|
124
174
|
getGenericInvite(teamId: string): Promise<TeamMembershipInvite>;
|
|
125
175
|
resetGenericInvite(inviteId: string): Promise<TeamMembershipInvite>;
|
|
126
|
-
deleteTeam(teamId: string
|
|
176
|
+
deleteTeam(teamId: string): Promise<void>;
|
|
127
177
|
|
|
128
178
|
// Projects
|
|
129
179
|
getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
|
|
@@ -132,16 +182,20 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
132
182
|
getTeamProjects(teamId: string): Promise<Project[]>;
|
|
133
183
|
getUserProjects(): Promise<Project[]>;
|
|
134
184
|
getProjectOverview(projectId: string): Promise<Project.Overview | undefined>;
|
|
185
|
+
getPrebuildEvents(projectId: string): Promise<PrebuildEvent[]>;
|
|
135
186
|
findPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
|
|
187
|
+
findPrebuildByWorkspaceID(workspaceId: string): Promise<PrebuiltWorkspace | undefined>;
|
|
188
|
+
getPrebuild(prebuildId: string): Promise<PrebuildWithStatus | undefined>;
|
|
136
189
|
triggerPrebuild(projectId: string, branchName: string | null): Promise<StartPrebuildResult>;
|
|
137
190
|
cancelPrebuild(projectId: string, prebuildId: string): Promise<void>;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
191
|
+
updateProjectPartial(partialProject: PartialProject): Promise<void>;
|
|
192
|
+
setProjectEnvironmentVariable(projectId: string, name: string, value: string, censored: boolean): Promise<void>;
|
|
193
|
+
getProjectEnvironmentVariables(projectId: string): Promise<ProjectEnvVar[]>;
|
|
194
|
+
deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
|
|
141
195
|
|
|
142
196
|
// content service
|
|
143
|
-
getContentBlobUploadUrl(name: string): Promise<string
|
|
144
|
-
getContentBlobDownloadUrl(name: string): Promise<string
|
|
197
|
+
getContentBlobUploadUrl(name: string): Promise<string>;
|
|
198
|
+
getContentBlobDownloadUrl(name: string): Promise<string>;
|
|
145
199
|
|
|
146
200
|
// Gitpod token
|
|
147
201
|
getGitpodTokens(): Promise<GitpodToken[]>;
|
|
@@ -149,7 +203,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
149
203
|
deleteGitpodToken(tokenHash: string): Promise<void>;
|
|
150
204
|
|
|
151
205
|
// misc
|
|
152
|
-
|
|
206
|
+
isGitHubAppEnabled(): Promise<boolean>;
|
|
153
207
|
registerGithubApp(installationId: string): Promise<void>;
|
|
154
208
|
|
|
155
209
|
/**
|
|
@@ -168,25 +222,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
168
222
|
*/
|
|
169
223
|
getSnapshots(workspaceID: string): Promise<string[]>;
|
|
170
224
|
|
|
171
|
-
/**
|
|
172
|
-
* stores/updates layout information for the given workspace
|
|
173
|
-
*/
|
|
174
|
-
storeLayout(workspaceId: string, layoutData: string): Promise<void>;
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* retrieves layout information for the given workspace
|
|
178
|
-
*/
|
|
179
|
-
getLayout(workspaceId: string): Promise<string | undefined>;
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* @param params
|
|
183
|
-
* @returns promise resolves to an URL to be used for the upload
|
|
184
|
-
*/
|
|
185
|
-
preparePluginUpload(params: PreparePluginUploadParams): Promise<string>
|
|
186
|
-
resolvePlugins(workspaceId: string, params: ResolvePluginsParams): Promise<ResolvedPlugins>;
|
|
187
|
-
installUserPlugins(params: InstallPluginsParams): Promise<boolean>;
|
|
188
|
-
uninstallUserPlugin(params: UninstallPluginParams): Promise<boolean>;
|
|
189
|
-
|
|
190
225
|
guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
|
|
191
226
|
|
|
192
227
|
/**
|
|
@@ -204,7 +239,9 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
204
239
|
*/
|
|
205
240
|
getChargebeeSiteId(): Promise<string>;
|
|
206
241
|
createPortalSession(): Promise<{}>;
|
|
242
|
+
createTeamPortalSession(teamId: string): Promise<{}>;
|
|
207
243
|
checkout(planId: string, planQuantity?: number): Promise<{}>;
|
|
244
|
+
teamCheckout(teamId: string, planId: string): Promise<{}>;
|
|
208
245
|
getAvailableCoupons(): Promise<PlanCoupon[]>;
|
|
209
246
|
getAppliedCoupons(): Promise<PlanCoupon[]>;
|
|
210
247
|
|
|
@@ -216,30 +253,68 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
216
253
|
subscriptionCancel(subscriptionId: string): Promise<void>;
|
|
217
254
|
subscriptionCancelDowngrade(subscriptionId: string): Promise<void>;
|
|
218
255
|
|
|
256
|
+
getTeamSubscription(teamId: string): Promise<TeamSubscription2 | undefined>;
|
|
219
257
|
tsGet(): Promise<TeamSubscription[]>;
|
|
220
258
|
tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
|
|
221
|
-
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined
|
|
259
|
+
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
|
|
222
260
|
tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
|
|
223
|
-
tsAssignSlot(
|
|
261
|
+
tsAssignSlot(
|
|
262
|
+
teamSubscriptionId: string,
|
|
263
|
+
teamSubscriptionSlotId: string,
|
|
264
|
+
identityStr: string | undefined,
|
|
265
|
+
): Promise<void>;
|
|
224
266
|
tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
|
|
225
267
|
tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
226
268
|
tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
227
269
|
|
|
228
270
|
getGithubUpgradeUrls(): Promise<GithubUpgradeURL[]>;
|
|
229
271
|
|
|
272
|
+
getStripePublishableKey(): Promise<string>;
|
|
273
|
+
getStripeSetupIntentClientSecret(): Promise<string>;
|
|
274
|
+
findStripeSubscriptionId(attributionId: string): Promise<string | undefined>;
|
|
275
|
+
createStripeCustomerIfNeeded(attributionId: string, currency: string): Promise<void>;
|
|
276
|
+
subscribeToStripe(attributionId: string, setupIntentId: string, usageLimit: number): Promise<number | undefined>;
|
|
277
|
+
getStripePortalUrl(attributionId: string): Promise<string>;
|
|
278
|
+
getCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
|
|
279
|
+
setUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
|
|
280
|
+
getUsageBalance(attributionId: string): Promise<number>;
|
|
281
|
+
|
|
282
|
+
listUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
|
|
283
|
+
|
|
284
|
+
setUsageAttribution(usageAttribution: string): Promise<void>;
|
|
285
|
+
listAvailableUsageAttributionIds(): Promise<string[]>;
|
|
286
|
+
|
|
287
|
+
getBillingModeForUser(): Promise<BillingMode>;
|
|
288
|
+
getBillingModeForTeam(teamId: string): Promise<BillingMode>;
|
|
289
|
+
|
|
230
290
|
/**
|
|
231
291
|
* Analytics
|
|
232
292
|
*/
|
|
233
293
|
trackEvent(event: RemoteTrackMessage): Promise<void>;
|
|
234
294
|
trackLocation(event: RemotePageMessage): Promise<void>;
|
|
235
295
|
identifyUser(event: RemoteIdentifyMessage): Promise<void>;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Frontend notifications
|
|
299
|
+
*/
|
|
300
|
+
getNotifications(): Promise<string[]>;
|
|
301
|
+
|
|
302
|
+
getSupportedWorkspaceClasses(): Promise<SupportedWorkspaceClass[]>;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
export interface RateLimiterError {
|
|
306
|
+
method?: string;
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Retry after this many seconds, earliest.
|
|
310
|
+
* cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
|
|
311
|
+
*/
|
|
312
|
+
retryAfter: number;
|
|
236
313
|
}
|
|
237
314
|
|
|
238
315
|
export interface CreateProjectParams {
|
|
239
316
|
name: string;
|
|
240
|
-
slug
|
|
241
|
-
account: string;
|
|
242
|
-
provider: string;
|
|
317
|
+
slug: string;
|
|
243
318
|
cloneUrl: string;
|
|
244
319
|
teamId?: string;
|
|
245
320
|
userId?: string;
|
|
@@ -263,11 +338,11 @@ export interface ProviderRepository {
|
|
|
263
338
|
account: string;
|
|
264
339
|
accountAvatarUrl: string;
|
|
265
340
|
cloneUrl: string;
|
|
266
|
-
updatedAt
|
|
341
|
+
updatedAt?: string;
|
|
267
342
|
installationId?: number;
|
|
268
343
|
installationUpdatedAt?: string;
|
|
269
344
|
|
|
270
|
-
inUse?:
|
|
345
|
+
inUse?: { userName: string };
|
|
271
346
|
}
|
|
272
347
|
|
|
273
348
|
export interface ClientHeaderFields {
|
|
@@ -277,42 +352,56 @@ export interface ClientHeaderFields {
|
|
|
277
352
|
clientRegion?: string;
|
|
278
353
|
}
|
|
279
354
|
|
|
280
|
-
export const
|
|
281
|
-
|
|
282
|
-
export const
|
|
355
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_SHORT = "short";
|
|
356
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_LONG = "long";
|
|
357
|
+
export const WORKSPACE_TIMEOUT_EXTENDED = "extended";
|
|
358
|
+
export const WORKSPACE_TIMEOUT_EXTENDED_ALT = "180m"; // for backwards compatibility since the IDE uses this
|
|
359
|
+
export const WorkspaceTimeoutValues = [
|
|
360
|
+
WORKSPACE_TIMEOUT_DEFAULT_SHORT,
|
|
361
|
+
WORKSPACE_TIMEOUT_DEFAULT_LONG,
|
|
362
|
+
WORKSPACE_TIMEOUT_EXTENDED,
|
|
363
|
+
WORKSPACE_TIMEOUT_EXTENDED_ALT,
|
|
364
|
+
] as const;
|
|
365
|
+
|
|
366
|
+
export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
367
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
368
|
+
): GitpodServiceImpl<C, S> {
|
|
283
369
|
return new GitpodServiceImpl<C, S>(createServerMock(methods));
|
|
284
|
-
}
|
|
370
|
+
};
|
|
285
371
|
|
|
286
|
-
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
287
|
-
methods
|
|
288
|
-
|
|
372
|
+
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
373
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
374
|
+
): JsonRpcProxy<S> {
|
|
375
|
+
methods.setClient = methods.setClient || (() => {});
|
|
376
|
+
methods.dispose = methods.dispose || (() => {});
|
|
289
377
|
return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
|
|
290
378
|
// @ts-ignore
|
|
291
379
|
get: (target: S, property: keyof S) => {
|
|
292
380
|
const result = target[property];
|
|
293
381
|
if (!result) {
|
|
294
|
-
throw new Error(`Method ${property} not implemented`);
|
|
382
|
+
throw new Error(`Method ${String(property)} not implemented`);
|
|
295
383
|
}
|
|
296
384
|
return result;
|
|
297
|
-
}
|
|
385
|
+
},
|
|
298
386
|
});
|
|
299
|
-
}
|
|
387
|
+
};
|
|
300
388
|
|
|
301
389
|
type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
|
|
302
390
|
export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
|
|
303
391
|
|
|
304
392
|
export interface SetWorkspaceTimeoutResult {
|
|
305
|
-
resetTimeoutOnWorkspaces: string[]
|
|
393
|
+
resetTimeoutOnWorkspaces: string[];
|
|
306
394
|
}
|
|
307
395
|
|
|
308
396
|
export interface GetWorkspaceTimeoutResult {
|
|
309
|
-
duration: WorkspaceTimeoutDuration
|
|
310
|
-
|
|
397
|
+
duration: WorkspaceTimeoutDuration;
|
|
398
|
+
durationRaw: string;
|
|
399
|
+
canChange: boolean;
|
|
311
400
|
}
|
|
312
401
|
|
|
313
402
|
export interface StartWorkspaceResult {
|
|
314
|
-
instanceID: string
|
|
315
|
-
workspaceURL?: string
|
|
403
|
+
instanceID: string;
|
|
404
|
+
workspaceURL?: string;
|
|
316
405
|
}
|
|
317
406
|
|
|
318
407
|
export namespace GitpodServer {
|
|
@@ -326,17 +415,23 @@ export namespace GitpodServer {
|
|
|
326
415
|
export interface GetAccountStatementOptions {
|
|
327
416
|
date?: string;
|
|
328
417
|
}
|
|
329
|
-
export interface CreateWorkspaceOptions {
|
|
418
|
+
export interface CreateWorkspaceOptions extends StartWorkspaceOptions {
|
|
330
419
|
contextUrl: string;
|
|
331
|
-
|
|
420
|
+
|
|
421
|
+
// whether running workspaces on the same context should be ignored. If false (default) users will be asked.
|
|
422
|
+
ignoreRunningWorkspaceOnSameCommit?: boolean;
|
|
423
|
+
ignoreRunningPrebuild?: boolean;
|
|
424
|
+
allowUsingPreviousPrebuilds?: boolean;
|
|
332
425
|
forceDefaultConfig?: boolean;
|
|
333
426
|
}
|
|
427
|
+
|
|
334
428
|
export interface StartWorkspaceOptions {
|
|
335
|
-
forceDefaultImage
|
|
429
|
+
forceDefaultImage?: boolean;
|
|
430
|
+
workspaceClass?: string;
|
|
431
|
+
ideSettings?: IDESettings;
|
|
336
432
|
}
|
|
337
433
|
export interface TakeSnapshotOptions {
|
|
338
434
|
workspaceId: string;
|
|
339
|
-
layoutData?: string;
|
|
340
435
|
/* this is here to enable backwards-compatibility and untangling rollout between workspace, IDE and meta */
|
|
341
436
|
dontWait?: boolean;
|
|
342
437
|
}
|
|
@@ -356,23 +451,23 @@ export namespace GitpodServer {
|
|
|
356
451
|
readonly roundTripTime?: number;
|
|
357
452
|
}
|
|
358
453
|
export interface UpdateOwnAuthProviderParams {
|
|
359
|
-
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
|
|
454
|
+
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
|
|
360
455
|
}
|
|
361
456
|
export interface DeleteOwnAuthProviderParams {
|
|
362
|
-
readonly id: string
|
|
457
|
+
readonly id: string;
|
|
363
458
|
}
|
|
364
459
|
export type AdmissionLevel = "owner" | "everyone";
|
|
365
460
|
export type PinAction = "pin" | "unpin" | "toggle";
|
|
366
461
|
export interface GenerateNewGitpodTokenOptions {
|
|
367
|
-
name?: string
|
|
368
|
-
type: GitpodTokenType
|
|
369
|
-
scopes?: string[]
|
|
462
|
+
name?: string;
|
|
463
|
+
type: GitpodTokenType;
|
|
464
|
+
scopes?: string[];
|
|
370
465
|
}
|
|
371
466
|
}
|
|
372
467
|
|
|
373
|
-
export const GitpodServerPath =
|
|
468
|
+
export const GitpodServerPath = "/gitpod";
|
|
374
469
|
|
|
375
|
-
export const GitpodServerProxy = Symbol(
|
|
470
|
+
export const GitpodServerProxy = Symbol("GitpodServerProxy");
|
|
376
471
|
export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
|
|
377
472
|
|
|
378
473
|
export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
|
|
@@ -380,12 +475,14 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
380
475
|
|
|
381
476
|
public registerClient(client: Partial<Client>): Disposable {
|
|
382
477
|
this.clients.push(client);
|
|
383
|
-
const index = this.clients.length;
|
|
384
478
|
return {
|
|
385
479
|
dispose: () => {
|
|
386
|
-
this.clients.
|
|
387
|
-
|
|
388
|
-
|
|
480
|
+
const index = this.clients.indexOf(client);
|
|
481
|
+
if (index > -1) {
|
|
482
|
+
this.clients.splice(index, 1);
|
|
483
|
+
}
|
|
484
|
+
},
|
|
485
|
+
};
|
|
389
486
|
}
|
|
390
487
|
|
|
391
488
|
onInstanceUpdate(instance: WorkspaceInstance): void {
|
|
@@ -394,7 +491,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
394
491
|
try {
|
|
395
492
|
client.onInstanceUpdate(instance);
|
|
396
493
|
} catch (error) {
|
|
397
|
-
console.error(error)
|
|
494
|
+
console.error(error);
|
|
398
495
|
}
|
|
399
496
|
}
|
|
400
497
|
}
|
|
@@ -406,19 +503,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
406
503
|
try {
|
|
407
504
|
client.onPrebuildUpdate(update);
|
|
408
505
|
} catch (error) {
|
|
409
|
-
console.error(error)
|
|
506
|
+
console.error(error);
|
|
410
507
|
}
|
|
411
508
|
}
|
|
412
509
|
}
|
|
413
510
|
}
|
|
414
511
|
|
|
415
|
-
onWorkspaceImageBuildLogs(
|
|
512
|
+
onWorkspaceImageBuildLogs(
|
|
513
|
+
info: WorkspaceImageBuild.StateInfo,
|
|
514
|
+
content: WorkspaceImageBuild.LogContent | undefined,
|
|
515
|
+
): void {
|
|
416
516
|
for (const client of this.clients) {
|
|
417
517
|
if (client.onWorkspaceImageBuildLogs) {
|
|
418
518
|
try {
|
|
419
519
|
client.onWorkspaceImageBuildLogs(info, content);
|
|
420
520
|
} catch (error) {
|
|
421
|
-
console.error(error)
|
|
521
|
+
console.error(error);
|
|
422
522
|
}
|
|
423
523
|
}
|
|
424
524
|
}
|
|
@@ -430,7 +530,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
430
530
|
try {
|
|
431
531
|
client.notifyDidOpenConnection();
|
|
432
532
|
} catch (error) {
|
|
433
|
-
console.error(error)
|
|
533
|
+
console.error(error);
|
|
434
534
|
}
|
|
435
535
|
}
|
|
436
536
|
}
|
|
@@ -442,7 +542,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
442
542
|
try {
|
|
443
543
|
client.notifyDidCloseConnection();
|
|
444
544
|
} catch (error) {
|
|
445
|
-
console.error(error)
|
|
545
|
+
console.error(error);
|
|
446
546
|
}
|
|
447
547
|
}
|
|
448
548
|
}
|
|
@@ -454,64 +554,73 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
454
554
|
try {
|
|
455
555
|
client.onCreditAlert(creditAlert);
|
|
456
556
|
} catch (error) {
|
|
457
|
-
console.error(error)
|
|
557
|
+
console.error(error);
|
|
458
558
|
}
|
|
459
559
|
}
|
|
460
560
|
}
|
|
461
561
|
}
|
|
462
562
|
|
|
563
|
+
onNotificationUpdated(): void {
|
|
564
|
+
for (const client of this.clients) {
|
|
565
|
+
if (client.onNotificationUpdated) {
|
|
566
|
+
try {
|
|
567
|
+
client.onNotificationUpdated();
|
|
568
|
+
} catch (error) {
|
|
569
|
+
console.error(error);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
463
574
|
}
|
|
464
575
|
|
|
465
576
|
export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
|
|
466
577
|
|
|
467
|
-
const hasWindow =
|
|
578
|
+
const hasWindow = typeof window !== "undefined";
|
|
468
579
|
const phasesOrder: Record<WorkspaceInstancePhase, number> = {
|
|
469
580
|
unknown: 0,
|
|
470
581
|
preparing: 1,
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
582
|
+
building: 2,
|
|
583
|
+
pending: 3,
|
|
584
|
+
creating: 4,
|
|
585
|
+
initializing: 5,
|
|
586
|
+
running: 6,
|
|
587
|
+
interrupted: 7,
|
|
588
|
+
stopping: 8,
|
|
589
|
+
stopped: 9,
|
|
478
590
|
};
|
|
479
591
|
export class WorkspaceInstanceUpdateListener {
|
|
480
592
|
private readonly onDidChangeEmitter = new Emitter<void>();
|
|
481
593
|
readonly onDidChange = this.onDidChangeEmitter.event;
|
|
482
594
|
|
|
483
|
-
private source:
|
|
595
|
+
private source: "sync" | "update" = "sync";
|
|
484
596
|
|
|
485
597
|
get info(): WorkspaceInfo {
|
|
486
598
|
return this._info;
|
|
487
599
|
}
|
|
488
600
|
|
|
489
|
-
constructor(
|
|
490
|
-
private readonly service: GitpodService,
|
|
491
|
-
private _info: WorkspaceInfo
|
|
492
|
-
) {
|
|
601
|
+
constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
|
|
493
602
|
service.registerClient({
|
|
494
|
-
onInstanceUpdate: instance => {
|
|
603
|
+
onInstanceUpdate: (instance) => {
|
|
495
604
|
if (this.isOutOfOrder(instance)) {
|
|
496
605
|
return;
|
|
497
606
|
}
|
|
498
607
|
this.cancelSync();
|
|
499
608
|
this._info.latestInstance = instance;
|
|
500
|
-
this.source =
|
|
609
|
+
this.source = "update";
|
|
501
610
|
this.onDidChangeEmitter.fire(undefined);
|
|
502
611
|
},
|
|
503
612
|
notifyDidOpenConnection: () => {
|
|
504
613
|
this.sync();
|
|
505
|
-
}
|
|
614
|
+
},
|
|
506
615
|
});
|
|
507
616
|
if (hasWindow) {
|
|
508
617
|
// learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
|
|
509
|
-
window.document.addEventListener(
|
|
510
|
-
if (window.document.visibilityState ===
|
|
618
|
+
window.document.addEventListener("visibilitychange", async () => {
|
|
619
|
+
if (window.document.visibilityState === "visible") {
|
|
511
620
|
this.sync();
|
|
512
621
|
}
|
|
513
622
|
});
|
|
514
|
-
window.addEventListener(
|
|
623
|
+
window.addEventListener("pageshow", (e) => {
|
|
515
624
|
if (e.persisted) {
|
|
516
625
|
this.sync();
|
|
517
626
|
}
|
|
@@ -539,12 +648,12 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
539
648
|
return;
|
|
540
649
|
}
|
|
541
650
|
this._info = info;
|
|
542
|
-
this.source =
|
|
651
|
+
this.source = "sync";
|
|
543
652
|
this.onDidChangeEmitter.fire(undefined);
|
|
544
653
|
} catch (e) {
|
|
545
|
-
console.error(
|
|
654
|
+
console.error("failed to sync workspace instance:", e);
|
|
546
655
|
}
|
|
547
|
-
})
|
|
656
|
+
});
|
|
548
657
|
}
|
|
549
658
|
private cancelSync(): void {
|
|
550
659
|
if (this.syncTokenSource) {
|
|
@@ -561,7 +670,7 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
561
670
|
if (instance.workspaceId !== this._info.workspace.id) {
|
|
562
671
|
return true;
|
|
563
672
|
}
|
|
564
|
-
if (this.source ===
|
|
673
|
+
if (this.source === "update") {
|
|
565
674
|
return false;
|
|
566
675
|
}
|
|
567
676
|
if (instance.id !== this.info.latestInstance?.id) {
|
|
@@ -569,15 +678,13 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
569
678
|
}
|
|
570
679
|
return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
|
|
571
680
|
}
|
|
572
|
-
|
|
573
681
|
}
|
|
574
682
|
|
|
575
683
|
export interface GitpodServiceOptions {
|
|
576
|
-
onReconnect?: () =>
|
|
684
|
+
onReconnect?: () => void | Promise<void>;
|
|
577
685
|
}
|
|
578
686
|
|
|
579
687
|
export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
|
|
580
|
-
|
|
581
688
|
private readonly compositeClient = new GitpodCompositeClient<Client>();
|
|
582
689
|
|
|
583
690
|
constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
|
|
@@ -592,7 +699,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
592
699
|
|
|
593
700
|
private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
|
|
594
701
|
listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
|
|
595
|
-
const listener =
|
|
702
|
+
const listener =
|
|
703
|
+
this.instanceListeners.get(workspaceId) ||
|
|
596
704
|
(async () => {
|
|
597
705
|
const info = await this.server.getWorkspace(workspaceId);
|
|
598
706
|
return new WorkspaceInstanceUpdateListener(this, info);
|
|
@@ -608,26 +716,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
608
716
|
}
|
|
609
717
|
}
|
|
610
718
|
|
|
611
|
-
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
719
|
+
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
720
|
+
serverUrl: string | Promise<string>,
|
|
721
|
+
) {
|
|
612
722
|
const toWsUrl = (serverUrl: string) => {
|
|
613
|
-
return new GitpodHostUrl(serverUrl)
|
|
614
|
-
.asWebsocket()
|
|
615
|
-
.withApi({ pathname: GitpodServerPath })
|
|
616
|
-
.toString();
|
|
723
|
+
return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
|
|
617
724
|
};
|
|
618
725
|
let url: string | Promise<string>;
|
|
619
726
|
if (typeof serverUrl === "string") {
|
|
620
727
|
url = toWsUrl(serverUrl);
|
|
621
728
|
} else {
|
|
622
|
-
url = serverUrl.then(url => toWsUrl(url));
|
|
729
|
+
url = serverUrl.then((url) => toWsUrl(url));
|
|
623
730
|
}
|
|
624
731
|
|
|
625
732
|
const connectionProvider = new WebSocketConnectionProvider();
|
|
626
|
-
let onReconnect = () => {
|
|
733
|
+
let onReconnect = () => {};
|
|
627
734
|
const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
|
|
628
|
-
onListening: socket => {
|
|
735
|
+
onListening: (socket) => {
|
|
629
736
|
onReconnect = () => socket.reconnect();
|
|
630
|
-
}
|
|
737
|
+
},
|
|
631
738
|
});
|
|
632
739
|
return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
|
|
633
|
-
}
|
|
740
|
+
}
|