gitpod/components/gitpod-protocol/src/headless-workspace-log.ts
2022-12-08 13:05:19 -03:00

41 lines
1.3 KiB
TypeScript

/**
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
* Licensed under the GNU Affero General Public License (AGPL).
* See License.AGPL.txt in the project root for license information.
*/
export enum HeadlessWorkspaceEventType {
LogOutput = "log-output",
FinishedSuccessfully = "finish-success",
FinishedButFailed = "finish-fail",
AbortedTimedOut = "aborted-timeout",
Aborted = "aborted",
Failed = "failed",
Started = "started",
}
export namespace HeadlessWorkspaceEventType {
export function isRunning(t: HeadlessWorkspaceEventType) {
return t === HeadlessWorkspaceEventType.LogOutput;
}
export function didFinish(t: HeadlessWorkspaceEventType) {
return (
t === HeadlessWorkspaceEventType.FinishedButFailed || t === HeadlessWorkspaceEventType.FinishedSuccessfully
);
}
}
export interface HeadlessWorkspaceEvent {
workspaceID: string;
text: string;
type: HeadlessWorkspaceEventType;
}
export interface HeadlessLogUrls {
// A map of id to URL
streams: { [streamID: string]: string };
}
/** cmp. @const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX */
export const HEADLESS_LOG_STREAM_STATUS_CODE = "X-LogStream-StatusCode";
export const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX = /X-LogStream-StatusCode: ([0-9]{3})/;