@gitpod/gitpod-protocol 0.1.5-update-ovsx.0 → 0.1.5-update-yarnlock.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 +159 -25
- package/lib/accounting-protocol.d.ts +165 -0
- package/lib/accounting-protocol.d.ts.map +1 -0
- package/lib/accounting-protocol.js +120 -0
- package/lib/accounting-protocol.js.map +1 -0
- package/lib/admin-protocol.d.ts +51 -6
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +17 -2
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +44 -0
- package/lib/analytics.d.ts.map +1 -0
- package/lib/analytics.js +10 -0
- package/lib/analytics.js.map +1 -0
- package/lib/attribution.d.ts +25 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +58 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts +25 -0
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +16 -0
- package/lib/auth.js.map +1 -0
- 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 +30 -0
- package/lib/context-url.d.ts.map +1 -0
- package/lib/context-url.js +100 -0
- package/lib/context-url.js.map +1 -0
- package/lib/context-url.spec.d.ts +12 -0
- package/lib/context-url.spec.d.ts.map +1 -0
- package/lib/context-url.spec.js +81 -0
- package/lib/context-url.spec.js.map +1 -0
- package/lib/encryption/container-module.d.ts +2 -2
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +8 -6
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts +2 -2
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +28 -28
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts +3 -3
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +32 -39
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts +2 -2
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +33 -46
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts +3 -3
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +34 -40
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +2 -8
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +10 -29
- 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/frontend-dashboard-service.d.ts +99 -0
- package/lib/frontend-dashboard-service.d.ts.map +1 -0
- package/lib/frontend-dashboard-service.js +55 -0
- package/lib/frontend-dashboard-service.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts +2 -2
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +29 -44
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.d.ts +2 -2
- package/lib/gitpod-file-parser.spec.js +147 -144
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +290 -50
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +288 -123
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +11 -13
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +8 -9
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +26 -0
- package/lib/ide-frontend-service.d.ts.map +1 -0
- package/lib/ide-frontend-service.js +8 -0
- package/lib/ide-frontend-service.js.map +1 -0
- 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 +18 -12
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +28 -13
- 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 +9 -2
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js +3 -2
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +6 -4
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +188 -48
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +9 -4
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +48 -59
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +21 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +95 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/error.d.ts +18 -4
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +38 -7
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +2 -1
- package/lib/messaging/handler.js.map +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 +24 -59
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +3 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +76 -162
- 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 +18 -0
- package/lib/payment-protocol.d.ts.map +1 -0
- package/lib/payment-protocol.js +13 -0
- package/lib/payment-protocol.js.map +1 -0
- package/lib/permission.d.ts +26 -15
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +50 -36
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +213 -0
- package/lib/plans.d.ts.map +1 -0
- package/lib/plans.js +625 -0
- package/lib/plans.js.map +1 -0
- package/lib/protocol.d.ts +338 -111
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +422 -201
- 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 +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/lib/snapshot-url.spec.d.ts +7 -0
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +93 -0
- package/lib/team-subscription-protocol.d.ts.map +1 -0
- package/lib/team-subscription-protocol.js +82 -0
- package/lib/team-subscription-protocol.js.map +1 -0
- package/lib/teams-projects-protocol.d.ts +136 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +41 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/typings/globals.d.ts +8 -3
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/typings/globals.js +2 -2
- 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 +8 -0
- package/lib/util/analytics.d.ts.map +1 -0
- package/lib/util/analytics.js +88 -0
- package/lib/util/analytics.js.map +1 -0
- package/lib/util/async-iterator.d.ts +2 -2
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +60 -137
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.d.ts +2 -2
- package/lib/util/cancelable.js +20 -61
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.d.ts +2 -2
- package/lib/util/date-time.js +14 -13
- 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 +2 -2
- package/lib/util/deep-partial.js +2 -2
- package/lib/util/deferred.d.ts +2 -2
- package/lib/util/deferred.js +13 -14
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts +2 -2
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +28 -40
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +64 -77
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +3 -2
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +35 -49
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +9 -0
- package/lib/util/generate-workspace-id.d.ts.map +1 -0
- package/lib/util/generate-workspace-id.js +491 -0
- package/lib/util/generate-workspace-id.js.map +1 -0
- package/lib/util/generate-workspace-id.spec.d.ts +7 -0
- package/lib/util/generate-workspace-id.spec.d.ts.map +1 -0
- package/lib/util/generate-workspace-id.spec.js +98 -0
- package/lib/util/generate-workspace-id.spec.js.map +1 -0
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +41 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +20 -8
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +143 -85
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +16 -0
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -0
- package/lib/util/gitpod-host-url.spec.js +134 -0
- package/lib/util/gitpod-host-url.spec.js.map +1 -0
- package/lib/util/grpc.d.ts +35 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +90 -0
- package/lib/util/grpc.js.map +1 -0
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/util/jaeger-client-types.js +8 -0
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +58 -35
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +144 -129
- 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 +2 -2
- package/lib/util/make-link.js +8 -7
- 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 +15 -5
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +39 -9
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +10 -2
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +130 -49
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.d.ts +2 -2
- package/lib/util/queue.js +19 -57
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.d.ts +2 -2
- package/lib/util/queue.spec.js +149 -288
- 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 +2 -2
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +18 -48
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts +2 -2
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +9 -8
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +4 -2
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +43 -18
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +4 -2
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +57 -25
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +55 -8
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +210 -66
- 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 +9 -9
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +13 -14
- 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 +80 -0
- package/lib/workspace-cluster.d.ts.map +1 -0
- package/lib/workspace-cluster.js +36 -0
- package/lib/workspace-cluster.js.map +1 -0
- package/lib/workspace-instance.d.ts +51 -8
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/workspace-instance.js +2 -2
- package/lib/wsready.d.ts +8 -2
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +4 -3
- package/lib/wsready.js.map +1 -1
- package/package.json +42 -18
- package/pkg-yarn.lock +24 -10
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +253 -0
- package/src/admin-protocol.ts +96 -21
- package/src/analytics.ts +52 -0
- package/src/attribution.ts +67 -0
- package/src/auth.ts +27 -0
- package/src/billing-mode.ts +84 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +49 -0
- package/src/context-url.ts +107 -0
- package/src/encryption/container-module.ts +4 -5
- package/src/encryption/encryption-engine.spec.ts +11 -10
- package/src/encryption/encryption-engine.ts +22 -18
- package/src/encryption/encryption-service.ts +6 -7
- package/src/encryption/key-provider.ts +18 -21
- package/src/env.ts +3 -26
- 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/frontend-dashboard-service.ts +148 -0
- package/src/gitpod-file-parser.spec.ts +57 -63
- package/src/gitpod-file-parser.ts +18 -19
- package/src/gitpod-service.ts +602 -99
- package/src/headless-workspace-log.ts +14 -16
- package/src/ide-frontend-service.ts +28 -0
- package/src/ide-protocol.ts +147 -0
- package/src/index.ts +18 -12
- package/src/installation-admin-protocol.ts +45 -0
- package/src/license-protocol.ts +14 -8
- package/src/messaging/browser/connection.ts +202 -26
- package/src/messaging/browser/window-connection.ts +45 -29
- package/src/messaging/client-call-metrics.ts +94 -0
- package/src/messaging/error.ts +51 -10
- package/src/messaging/handler.ts +13 -1
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +35 -34
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +20 -0
- package/src/permission.ts +53 -40
- package/src/plans.ts +699 -0
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +790 -302
- package/src/snapshot-url.spec.ts +27 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +153 -0
- package/src/teams-projects-protocol.ts +180 -0
- package/src/typings/globals.ts +13 -5
- package/src/usage.ts +85 -0
- package/src/util/analytics.ts +109 -0
- package/src/util/async-iterator.ts +6 -7
- package/src/util/cancelable.ts +5 -5
- package/src/util/date-time.ts +10 -10
- package/src/util/debug-app.ts +81 -0
- package/src/util/deep-partial.ts +2 -2
- package/src/util/deferred.ts +8 -8
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +18 -10
- package/src/util/generate-workspace-id.spec.ts +58 -0
- package/src/util/generate-workspace-id.ts +481 -0
- package/src/util/gitpod-cookie.ts +38 -0
- package/src/util/gitpod-host-url.spec.ts +76 -0
- package/src/util/gitpod-host-url.ts +119 -40
- package/src/util/grpc.ts +107 -0
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +163 -73
- package/src/util/make-link.ts +8 -9
- package/src/util/nice-grpc.ts +96 -0
- package/src/util/parse-workspace-id.spec.ts +62 -12
- package/src/util/parse-workspace-id.ts +40 -10
- package/src/util/queue.spec.ts +30 -28
- package/src/util/queue.ts +2 -2
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +8 -10
- package/src/util/skip-if.ts +12 -9
- package/src/util/timeutil.spec.ts +42 -16
- package/src/util/timeutil.ts +33 -17
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +211 -33
- package/src/util/workspace-port-authentication.ts +12 -15
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +121 -0
- package/src/workspace-instance.ts +120 -36
- package/src/wsready.ts +11 -4
- package/data/builtin-theia-plugins.json +0 -362
- package/lib/email-protocol.d.ts +0 -49
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -27
- 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 -45
- 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 +0 -8
- 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 -117
- 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 -33
- package/lib/util/safe-promise.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js +0 -8
- package/lib/util/without.js.map +0 -1
- package/src/email-protocol.ts +0 -67
- 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/util/without.ts +0 -8
package/src/util/tracing.ts
CHANGED
|
@@ -1,51 +1,204 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2020
|
|
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
|
-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import { initGlobalTracer } from
|
|
11
|
-
import { injectable } from
|
|
7
|
+
import * as opentracing from "opentracing";
|
|
8
|
+
import { TracingConfig, initTracerFromEnv } from "jaeger-client";
|
|
9
|
+
import { Sampler, SamplingDecision } from "./jaeger-client-types";
|
|
10
|
+
import { initGlobalTracer } from "opentracing";
|
|
11
|
+
import { injectable } from "inversify";
|
|
12
|
+
import { ResponseError } from "vscode-jsonrpc";
|
|
13
|
+
import { log, LogContext } from "./logging";
|
|
12
14
|
|
|
13
15
|
export interface TraceContext {
|
|
14
|
-
span?: opentracing.Span
|
|
16
|
+
span?: opentracing.Span;
|
|
15
17
|
}
|
|
18
|
+
export type TraceContextWithSpan = TraceContext & {
|
|
19
|
+
span: opentracing.Span;
|
|
20
|
+
};
|
|
16
21
|
|
|
17
22
|
export namespace TraceContext {
|
|
18
|
-
export function startSpan(operation: string,
|
|
19
|
-
const options: opentracing.SpanOptions = {
|
|
20
|
-
|
|
23
|
+
export function startSpan(operation: string, parentCtx?: TraceContext): opentracing.Span {
|
|
24
|
+
const options: opentracing.SpanOptions = {};
|
|
25
|
+
|
|
26
|
+
// references should contain span id.
|
|
27
|
+
// cf. https://github.com/jaegertracing/jaeger-client-node/issues/432
|
|
28
|
+
if (!!parentCtx?.span) {
|
|
29
|
+
const ctx = parentCtx?.span?.context();
|
|
30
|
+
if (ctx && !!ctx.toTraceId() && !!ctx.toSpanId()) {
|
|
31
|
+
options.references = [opentracing.followsFrom(ctx)];
|
|
32
|
+
}
|
|
21
33
|
}
|
|
34
|
+
|
|
22
35
|
return opentracing.globalTracer().startSpan(operation, options);
|
|
23
36
|
}
|
|
24
37
|
|
|
25
|
-
export function
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
export function childContext(operation: string, parentCtx: TraceContext): TraceContextWithSpan {
|
|
39
|
+
const span = startSpan(operation, parentCtx);
|
|
40
|
+
return { span };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function withSpan(operation: string, callback: (ctx: TraceContext) => void, ctx?: TraceContext): void {
|
|
44
|
+
// if we don't have a parent span, don't create a trace here as those <trace-without-root-spans> are not useful.
|
|
45
|
+
if (!ctx || !ctx.span || !ctx.span.context()) {
|
|
46
|
+
callback({});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const span = TraceContext.startSpan(operation, ctx);
|
|
51
|
+
try {
|
|
52
|
+
callback({ span });
|
|
53
|
+
} catch (e) {
|
|
54
|
+
TraceContext.setError({ span }, e);
|
|
55
|
+
throw e;
|
|
56
|
+
} finally {
|
|
57
|
+
span.finish();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function setError(ctx: TraceContext, err: Error) {
|
|
62
|
+
if (!ctx.span) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
TraceContext.addNestedTags(ctx, {
|
|
67
|
+
error: {
|
|
68
|
+
message: err.message,
|
|
69
|
+
stacktrace: err.stack,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
ctx.span.setTag("error", true);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function setJsonRPCMetadata(ctx: TraceContext, method?: string) {
|
|
76
|
+
if (!ctx.span) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const tags: { [key: string]: any } = {
|
|
81
|
+
rpc: {
|
|
82
|
+
system: "jsonrpc",
|
|
83
|
+
// version,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
if (method) {
|
|
87
|
+
tags.rpc.method = method;
|
|
88
|
+
}
|
|
89
|
+
addNestedTags(ctx, tags);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function setJsonRPCError(
|
|
93
|
+
ctx: TraceContext,
|
|
94
|
+
method: string,
|
|
95
|
+
err: ResponseError<any>,
|
|
96
|
+
withStatusCode: boolean = false,
|
|
97
|
+
) {
|
|
98
|
+
if (!ctx.span) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// not use setError bc this is (most likely) a working operation
|
|
102
|
+
|
|
103
|
+
setJsonRPCMetadata(ctx, method);
|
|
104
|
+
// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md#json-rpc
|
|
105
|
+
addNestedTags(ctx, {
|
|
106
|
+
rpc: {
|
|
107
|
+
jsonrpc: {
|
|
108
|
+
error_code: err.code,
|
|
109
|
+
error_message: err.message,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// the field "status_code" is used by honeycomb to derive insights like success rate, etc. Defaults to "0".
|
|
115
|
+
if (withStatusCode) {
|
|
116
|
+
ctx.span.setTag("status_code", err.code);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function addJsonRPCParameters(ctx: TraceContext, params: { [key: string]: any }) {
|
|
121
|
+
if (!ctx.span) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
setJsonRPCMetadata(ctx);
|
|
126
|
+
addNestedTags(ctx, {
|
|
127
|
+
rpc: {
|
|
128
|
+
jsonrpc: {
|
|
129
|
+
parameters: params,
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Does what one would expect from `span.addTags`: Calls `span.addTag` for all keys in map, recursively for objects.
|
|
137
|
+
* Example:
|
|
138
|
+
* ```
|
|
139
|
+
* TraceContext.addNestedTags(ctx, {
|
|
140
|
+
* rpc: {
|
|
141
|
+
* system: "jsonrpc",
|
|
142
|
+
* jsonrpc: {
|
|
143
|
+
* version: "1.0",
|
|
144
|
+
* method: "test",
|
|
145
|
+
* parameters: ["abc", "def"],
|
|
146
|
+
* },
|
|
147
|
+
* },
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
* gives
|
|
151
|
+
* rpc.system = "jsonrpc"
|
|
152
|
+
* rpc.jsonrpc.version = "1.0"
|
|
153
|
+
* rpc.jsonrpc.method = "test"
|
|
154
|
+
* rpc.jsonrpc.parameters.0 = "abc"
|
|
155
|
+
* rpc.jsonrpc.parameters.1 = "def"
|
|
156
|
+
* @param ctx
|
|
157
|
+
* @param keyValueMap
|
|
158
|
+
* @returns
|
|
159
|
+
*/
|
|
160
|
+
export function addNestedTags(ctx: TraceContext, keyValueMap: { [key: string]: any }, _namespace?: string) {
|
|
161
|
+
if (!ctx.span) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const namespace = _namespace ? `${_namespace}.` : "";
|
|
165
|
+
|
|
166
|
+
try {
|
|
167
|
+
for (const k of Object.keys(keyValueMap)) {
|
|
168
|
+
const v = keyValueMap[k];
|
|
169
|
+
if (v instanceof Object) {
|
|
170
|
+
addNestedTags(ctx, v, `${namespace}${k}`);
|
|
171
|
+
} else {
|
|
172
|
+
ctx.span.setTag(`${namespace}${k}`, v);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
} catch (err) {
|
|
176
|
+
// general resilience against odd shapes/parameters
|
|
177
|
+
log.error("Tracing.addNestedTags", err, { namespace });
|
|
29
178
|
}
|
|
30
|
-
return opentracing.globalTracer().startSpan(operation, options);
|
|
31
179
|
}
|
|
32
180
|
|
|
33
|
-
export function
|
|
181
|
+
export function setOWI(ctx: TraceContext, owi: LogContext) {
|
|
34
182
|
if (!ctx.span) {
|
|
35
183
|
return;
|
|
36
184
|
}
|
|
185
|
+
addNestedTags(ctx, {
|
|
186
|
+
context: owi,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
37
189
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
190
|
+
export function finishOnce(span: opentracing.Span): () => void {
|
|
191
|
+
let done = false;
|
|
192
|
+
return () => {
|
|
193
|
+
if (done) return;
|
|
194
|
+
span.finish();
|
|
195
|
+
done = true;
|
|
196
|
+
};
|
|
43
197
|
}
|
|
44
198
|
}
|
|
45
199
|
|
|
46
200
|
@injectable()
|
|
47
201
|
export class TracingManager {
|
|
48
|
-
|
|
49
202
|
public setup(serviceName: string, opts?: CustomTracerOpts) {
|
|
50
203
|
initGlobalTracer(this.getTracerForService(serviceName, opts));
|
|
51
204
|
}
|
|
@@ -54,13 +207,18 @@ export class TracingManager {
|
|
|
54
207
|
const config: TracingConfig = {
|
|
55
208
|
disable: false,
|
|
56
209
|
reporter: {
|
|
57
|
-
logSpans: false
|
|
210
|
+
logSpans: false,
|
|
58
211
|
},
|
|
59
|
-
serviceName
|
|
60
|
-
}
|
|
212
|
+
serviceName,
|
|
213
|
+
};
|
|
61
214
|
const t = initTracerFromEnv(config, {
|
|
62
|
-
logger: console
|
|
215
|
+
logger: console,
|
|
216
|
+
tags: {
|
|
217
|
+
"service.build.commit": process.env.GITPOD_BUILD_GIT_COMMIT,
|
|
218
|
+
"service.build.version": process.env.GITPOD_BUILD_VERSION,
|
|
219
|
+
},
|
|
63
220
|
});
|
|
221
|
+
|
|
64
222
|
if (opts) {
|
|
65
223
|
if (opts.perOpSampling) {
|
|
66
224
|
(t as any)._sampler = new PerOperationSampler((t as any)._sampler, opts.perOpSampling);
|
|
@@ -68,24 +226,22 @@ export class TracingManager {
|
|
|
68
226
|
}
|
|
69
227
|
return t;
|
|
70
228
|
}
|
|
71
|
-
|
|
72
229
|
}
|
|
73
230
|
|
|
74
231
|
export interface CustomTracerOpts {
|
|
75
|
-
perOpSampling?: PerOperationSampling
|
|
232
|
+
perOpSampling?: PerOperationSampling;
|
|
76
233
|
}
|
|
77
234
|
|
|
78
|
-
|
|
79
235
|
// has to conform to https://github.com/jaegertracing/jaeger-client-node/blob/0042b1c0a0796bb655eb93e77ff76ab5e94c2bb6/src/_flow/sampler-thrift.js#L32
|
|
80
236
|
export interface PerOperationSampling {
|
|
81
|
-
[key: string]: boolean
|
|
237
|
+
[key: string]: boolean;
|
|
82
238
|
}
|
|
83
239
|
|
|
84
240
|
export class PerOperationSampler implements Sampler {
|
|
85
241
|
constructor(protected readonly fallback: Sampler, protected readonly strategies: PerOperationSampling) {}
|
|
86
242
|
|
|
87
243
|
name(): string {
|
|
88
|
-
return
|
|
244
|
+
return "PerOperationSampler";
|
|
89
245
|
}
|
|
90
246
|
|
|
91
247
|
toString(): string {
|
|
@@ -125,10 +281,32 @@ export class PerOperationSampler implements Sampler {
|
|
|
125
281
|
return false; // TODO equal should be removed
|
|
126
282
|
}
|
|
127
283
|
|
|
128
|
-
close(callback: ()=>void): void {
|
|
284
|
+
close(callback: () => void): void {
|
|
129
285
|
// all nested samplers are of simple types, so we do not need to Close them
|
|
130
286
|
if (callback) {
|
|
131
287
|
callback();
|
|
132
288
|
}
|
|
133
289
|
}
|
|
134
290
|
}
|
|
291
|
+
|
|
292
|
+
// Augment interfaces with an leading parameter "TraceContext" on every method
|
|
293
|
+
type IsValidArg<T> = T extends object ? (keyof T extends never ? false : true) : true;
|
|
294
|
+
type AddTraceContext<T> = T extends (a: infer A, b: infer B, c: infer C, d: infer D, e: infer E, f: infer F) => infer R
|
|
295
|
+
? IsValidArg<F> extends true
|
|
296
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D, e: E, f: F) => R
|
|
297
|
+
: IsValidArg<E> extends true
|
|
298
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D, e: E) => R
|
|
299
|
+
: IsValidArg<D> extends true
|
|
300
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D) => R
|
|
301
|
+
: IsValidArg<C> extends true
|
|
302
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C) => R
|
|
303
|
+
: IsValidArg<B> extends true
|
|
304
|
+
? (ctx: TraceContextWithSpan, a: A, b: B) => R
|
|
305
|
+
: IsValidArg<A> extends true
|
|
306
|
+
? (ctx: TraceContextWithSpan, a: A) => R
|
|
307
|
+
: (ctx: TraceContextWithSpan) => Promise<R>
|
|
308
|
+
: never;
|
|
309
|
+
|
|
310
|
+
export type InterfaceWithTraceContext<T> = {
|
|
311
|
+
[P in keyof T]: AddTraceContext<T[P]>;
|
|
312
|
+
};
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2020
|
|
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
|
/**
|
|
8
|
-
* These cookies are set in the Theia frontend. This pattern is relied upon in:
|
|
9
|
-
* - proxy:
|
|
10
|
-
* - to filter it out on port locations
|
|
11
|
-
* - to forward it to the server for authentication
|
|
12
|
-
* - server:
|
|
13
|
-
* - to authenticate access to port locations
|
|
14
|
-
*/
|
|
15
|
-
export const worspacePortAuthCookieName = function(host: string, workspaceId: string): string {
|
|
16
|
-
return host
|
|
17
|
-
|
|
18
|
-
.replace(/[\W_]+/g, "_")
|
|
19
|
-
+ `_ws_${workspaceId}_port_auth_`;
|
|
20
|
-
};
|
|
8
|
+
* These cookies are set in the Theia frontend. This pattern is relied upon in:
|
|
9
|
+
* - proxy:
|
|
10
|
+
* - to filter it out on port locations
|
|
11
|
+
* - to forward it to the server for authentication
|
|
12
|
+
* - server:
|
|
13
|
+
* - to authenticate access to port locations
|
|
14
|
+
*/
|
|
15
|
+
export const worspacePortAuthCookieName = function (host: string, workspaceId: string): string {
|
|
16
|
+
return host.replace(/https?/, "").replace(/[\W_]+/g, "_") + `_ws_${workspaceId}_port_auth_`;
|
|
17
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
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 WebhookEvent {
|
|
8
|
+
id: string;
|
|
9
|
+
creationTime: string;
|
|
10
|
+
type: "push" | string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Typically the webhook installer is referenced here.
|
|
14
|
+
*/
|
|
15
|
+
authorizedUserId?: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* webhook event's payload
|
|
19
|
+
*/
|
|
20
|
+
rawEvent: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The general status of the received webhook event.
|
|
24
|
+
*/
|
|
25
|
+
status: WebhookEvent.Status;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Optional message to help understand errors with handling events.
|
|
29
|
+
*/
|
|
30
|
+
message?: string;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* If the webhook event is considered to trigger a prebuild, the `prebuildStatus`
|
|
34
|
+
* contains a more specific status.
|
|
35
|
+
*/
|
|
36
|
+
prebuildStatus?: WebhookEvent.PrebuildStatus;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* If `prebuildStatus` is `prebuild_triggered` this points to a prebuild.
|
|
40
|
+
*/
|
|
41
|
+
prebuildId?: string;
|
|
42
|
+
|
|
43
|
+
projectId?: string;
|
|
44
|
+
|
|
45
|
+
cloneUrl?: string;
|
|
46
|
+
|
|
47
|
+
branch?: string;
|
|
48
|
+
|
|
49
|
+
commit?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export namespace WebhookEvent {
|
|
53
|
+
export type Status = "received" | "dismissed_unauthorized" | "ignored" | "processed";
|
|
54
|
+
export type PrebuildStatus = "ignored_unconfigured" | "prebuild_trigger_failed" | "prebuild_triggered";
|
|
55
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 SupportedWorkspaceClass {
|
|
8
|
+
id: string;
|
|
9
|
+
category: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
description: string;
|
|
12
|
+
powerups: number;
|
|
13
|
+
isDefault: boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020 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 * as fs from "fs";
|
|
8
|
+
import { filePathTelepresenceAware } from "./env";
|
|
9
|
+
import { DeepPartial } from "./util/deep-partial";
|
|
10
|
+
import { PermissionName } from "./permission";
|
|
11
|
+
|
|
12
|
+
const workspaceRegions = ["europe", "north-america", "south-america", "africa", "asia", ""] as const;
|
|
13
|
+
export type WorkspaceRegion = typeof workspaceRegions[number];
|
|
14
|
+
|
|
15
|
+
export function isWorkspaceRegion(s: string): s is WorkspaceRegion {
|
|
16
|
+
return workspaceRegions.indexOf(s as any) !== -1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface WorkspaceCluster {
|
|
20
|
+
// Name of the workspace cluster.
|
|
21
|
+
// This is the string set in each
|
|
22
|
+
// Must be identical to the installationShortname of the cluster it represents!
|
|
23
|
+
name: string;
|
|
24
|
+
|
|
25
|
+
// The name of the application cluster to which this cluster should be registered.
|
|
26
|
+
// The name can be at most 60 characters.
|
|
27
|
+
applicationCluster: string;
|
|
28
|
+
|
|
29
|
+
// The name of the region this cluster belongs to. E.g. europe or north-america
|
|
30
|
+
// The name can be at most 60 characters.
|
|
31
|
+
region: WorkspaceRegion;
|
|
32
|
+
|
|
33
|
+
// URL of the cluster's ws-manager API
|
|
34
|
+
url: string;
|
|
35
|
+
|
|
36
|
+
// TLS contains the keys and certificates necessary to use mTLS between server and clients
|
|
37
|
+
tls?: TLSConfig;
|
|
38
|
+
|
|
39
|
+
// Current state of the cluster
|
|
40
|
+
state: WorkspaceClusterState;
|
|
41
|
+
|
|
42
|
+
// Maximum value score can reach for this cluster
|
|
43
|
+
maxScore: number;
|
|
44
|
+
|
|
45
|
+
// Score used for cluster selection when starting workspace instances
|
|
46
|
+
score: number;
|
|
47
|
+
|
|
48
|
+
// True if this bridge should control this cluster
|
|
49
|
+
govern: boolean;
|
|
50
|
+
|
|
51
|
+
// An optional set of constraints that limit who can start workspaces on the cluster
|
|
52
|
+
admissionConstraints?: AdmissionConstraint[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type WorkspaceClusterState = "available" | "cordoned" | "draining";
|
|
56
|
+
export interface TLSConfig {
|
|
57
|
+
// the CA shared between client and server (base64 encoded)
|
|
58
|
+
ca: string;
|
|
59
|
+
// the private key (base64 encoded)
|
|
60
|
+
key: string;
|
|
61
|
+
// the certificate signed with the shared CA (base64 encoded)
|
|
62
|
+
crt: string;
|
|
63
|
+
}
|
|
64
|
+
export namespace TLSConfig {
|
|
65
|
+
export const loadFromBase64File = (path: string): string =>
|
|
66
|
+
fs.readFileSync(filePathTelepresenceAware(path)).toString("base64");
|
|
67
|
+
}
|
|
68
|
+
export type WorkspaceClusterWoTLS = Omit<WorkspaceCluster, "tls">;
|
|
69
|
+
export type WorkspaceManagerConnectionInfo = Pick<WorkspaceCluster, "name" | "url" | "tls">;
|
|
70
|
+
|
|
71
|
+
export type AdmissionConstraint =
|
|
72
|
+
| AdmissionConstraintFeaturePreview
|
|
73
|
+
| AdmissionConstraintHasPermission
|
|
74
|
+
| AdmissionConstraintHasClass;
|
|
75
|
+
export type AdmissionConstraintFeaturePreview = { type: "has-feature-preview" };
|
|
76
|
+
export type AdmissionConstraintHasPermission = { type: "has-permission"; permission: PermissionName };
|
|
77
|
+
export type AdmissionConstraintHasClass = { type: "has-class"; id: string; displayName: string };
|
|
78
|
+
|
|
79
|
+
export namespace AdmissionConstraint {
|
|
80
|
+
export function is(o: any): o is AdmissionConstraint {
|
|
81
|
+
return !!o && "type" in o;
|
|
82
|
+
}
|
|
83
|
+
export function isHasPermissionConstraint(o: any): o is AdmissionConstraintHasPermission {
|
|
84
|
+
return is(o) && o.type === "has-permission";
|
|
85
|
+
}
|
|
86
|
+
export function hasPermission(ac: AdmissionConstraint, permission: PermissionName): boolean {
|
|
87
|
+
return isHasPermissionConstraint(ac) && ac.permission === permission;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const WorkspaceClusterDB = Symbol("WorkspaceClusterDB");
|
|
92
|
+
export interface WorkspaceClusterDB {
|
|
93
|
+
/**
|
|
94
|
+
* Stores the given WorkspaceCluster to the cluster-local DB in a consistent manner.
|
|
95
|
+
* If there already is an entry with the same name it's merged and updated with the given state.
|
|
96
|
+
* @param cluster
|
|
97
|
+
*/
|
|
98
|
+
save(cluster: WorkspaceCluster): Promise<void>;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Deletes the cluster identified by this name, if any.
|
|
102
|
+
* @param name
|
|
103
|
+
*/
|
|
104
|
+
deleteByName(name: string, applicationCluster: string): Promise<void>;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Finds a WorkspaceCluster with the given name. If there is none, `undefined` is returned.
|
|
108
|
+
* @param name
|
|
109
|
+
*/
|
|
110
|
+
findByName(name: string, applicationCluster: string): Promise<WorkspaceCluster | undefined>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Lists all WorkspaceClusterWoTls for which the given predicate is true (does not return TLS for size/speed concerns)
|
|
114
|
+
* @param predicate
|
|
115
|
+
*/
|
|
116
|
+
findFiltered(predicate: WorkspaceClusterFilter): Promise<WorkspaceClusterWoTLS[]>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export type WorkspaceClusterFilter = Pick<WorkspaceCluster, "applicationCluster"> &
|
|
120
|
+
DeepPartial<Pick<WorkspaceCluster, "name" | "state" | "govern" | "url" | "region">> &
|
|
121
|
+
Partial<{ minScore: number }>;
|