@api-client/core 0.9.13 → 0.9.15

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.
@@ -1,3 +1,9 @@
1
+ import { IPatchRevision } from "../../events/BaseEvents.js";
2
+ import { IHttpHistory, Kind as HttpHistoryKind } from "../HttpHistory.js";
3
+ import { Kind as ProjectExecutionKind } from "../ProjectExecution.js";
4
+ import { IFile } from "./File.js";
5
+ import { IPermission } from "./Permission.js";
6
+ import { IRevision } from "./Revision.js";
1
7
  export type BackendMode = 'single-user' | 'multi-user';
2
8
  export interface IBackendInfo {
3
9
  /**
@@ -87,44 +93,93 @@ export interface IBackendCommand {
87
93
  */
88
94
  value?: unknown;
89
95
  }
90
- export interface IBackendMessage {
91
- /**
92
- * The message type. Usually it is an `event`, meaning, a data change notification.
93
- */
94
- type: 'event';
95
- /**
96
- * In most cases an event has data associated with it like the created object or
97
- * the patch that has been applied to the object.
98
- * Not set for events related to deleting an object.
99
- */
100
- data?: unknown;
96
+ export type AltType = 'media' | 'meta';
97
+ export declare enum BackendCommandType {
98
+ observe = 0,
99
+ unobserve = 1
101
100
  }
102
- export interface IBackendEvent extends IBackendMessage {
103
- /**
104
- * The operation that has been performed on the resource.
105
- *
106
- * Note, `updated` is when the entire object must be revalidated in the opposite
107
- * to `patch` where the patch should be applied to the object.
108
- *
109
- * - created - when an entity was created
110
- * - patch - when a patch operation was applied to an entity
111
- * - deleted - when an entity was deleted
112
- * - access-granted - when access to an entity was granted. This also includes when the access level change.
113
- * - access-removed - when access to an entity was removed.
114
- * - updated - used in special cases as most communication uses patch. Informs the whole object was updated.
115
- * - cleared - when the data store was cleared and all entities destroyed.
116
- */
117
- operation: 'created' | 'patch' | 'deleted' | 'access-granted' | 'access-removed' | 'updated' | 'cleared';
118
- /**
119
- * The kind of data that has been changed.
120
- */
101
+ export declare const BackendCommandKind = "Core#BackendCommand";
102
+ export interface IBackendCommand {
103
+ kind: typeof BackendCommandKind;
104
+ cmd: BackendCommandType;
105
+ }
106
+ export interface IBackendObserveCommand extends IBackendCommand {
107
+ path: string;
108
+ }
109
+ export interface BroadcastEvent {
110
+ type: 'event';
111
+ operation: string;
121
112
  kind: string;
122
- /**
123
- * For update events it is the key of the updated object.
124
- */
125
- id?: string;
126
- /**
127
- * When relevant, the parent of the changed object.
128
- */
113
+ key: string;
114
+ path: string;
115
+ space: string;
116
+ }
117
+ export interface BackendErrorEvent {
118
+ type: 'error';
119
+ cause: string;
120
+ time: number;
121
+ }
122
+ export interface BroadcastCreatedEvent extends BroadcastEvent {
123
+ operation: 'created';
124
+ data: unknown;
125
+ }
126
+ export interface FileCreatedBroadcastEvent extends BroadcastCreatedEvent {
127
+ parent?: string;
128
+ data: unknown;
129
+ alt: AltType;
130
+ }
131
+ export interface FileMetaCreatedBroadcastEvent extends FileCreatedBroadcastEvent {
132
+ data: IFile;
133
+ alt: 'meta';
134
+ }
135
+ export interface FileMediaCreatedBroadcastEvent extends FileCreatedBroadcastEvent {
136
+ alt: 'media';
137
+ }
138
+ export interface HistoryCreatedBroadcastEvent extends BroadcastCreatedEvent {
139
+ project: string;
140
+ request: string;
141
+ app: string;
142
+ kind: typeof HttpHistoryKind;
143
+ data: IHttpHistory;
144
+ }
145
+ export interface FileRevisionCreatedBroadcastEvent extends BroadcastCreatedEvent {
146
+ parent: string;
147
+ data: IRevision;
148
+ alt: AltType;
149
+ }
150
+ export interface ProjectExecutionCreatedBroadcastEvent extends BroadcastCreatedEvent {
151
+ project: string;
152
+ kind: typeof ProjectExecutionKind;
153
+ }
154
+ export interface BroadcastPatchEvent extends BroadcastEvent {
155
+ operation: 'patch';
156
+ data: IPatchRevision;
157
+ }
158
+ export interface FilePatchBroadcastEvent extends BroadcastPatchEvent {
129
159
  parent?: string;
160
+ alt: AltType;
161
+ }
162
+ export interface AccessBroadcastEvent extends BroadcastEvent {
163
+ operation: 'access-granted' | 'access-removed';
164
+ data?: IPermission;
165
+ }
166
+ export interface FileAccessBroadcastEvent extends AccessBroadcastEvent {
167
+ parent?: string;
168
+ }
169
+ export interface DeletedBroadcastEvent extends BroadcastEvent {
170
+ operation: 'deleted';
171
+ }
172
+ export interface FileDeletedBroadcastEvent extends DeletedBroadcastEvent {
173
+ parent?: string;
174
+ alt: AltType;
175
+ }
176
+ export interface ProjectExecutionDeleteBroadcastEvent extends DeletedBroadcastEvent {
177
+ project: string;
178
+ }
179
+ export interface HistoryDeletedBroadcastEvent extends DeletedBroadcastEvent {
180
+ project: string;
181
+ request: string;
182
+ }
183
+ export interface ClearedBroadcastEvent extends BroadcastEvent {
184
+ operation: 'cleared';
130
185
  }
@@ -1,2 +1,7 @@
1
- export {};
1
+ export var BackendCommandType;
2
+ (function (BackendCommandType) {
3
+ BackendCommandType[BackendCommandType["observe"] = 0] = "observe";
4
+ BackendCommandType[BackendCommandType["unobserve"] = 1] = "unobserve";
5
+ })(BackendCommandType || (BackendCommandType = {}));
6
+ export const BackendCommandKind = 'Core#BackendCommand';
2
7
  //# sourceMappingURL=Backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Backend.js","sourceRoot":"","sources":["../../../../src/models/store/Backend.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Backend.js","sourceRoot":"","sources":["../../../../src/models/store/Backend.ts"],"names":[],"mappings":"AAyGA,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,iEAAO,CAAA;IACP,qEAAS,CAAA;AACX,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import WebSocketNode from 'ws';
1
2
  import { SdkBase, ISdkRequestOptions } from './SdkBase.js';
2
3
  import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, IBulkOperationResult, IProjectExecutionListOptions } from '../../events/BaseEvents.js';
3
4
  import { IProjectExecution } from '../../models/ProjectExecution.js';
@@ -52,4 +53,10 @@ export declare class ProjectExecutionSdk extends SdkBase {
52
53
  * @param project The parent project key
53
54
  */
54
55
  clearParent(space: string, project: string, folder: string, request?: ISdkRequestOptions): Promise<void>;
56
+ /**
57
+ * Creates a WS client that listens to the certificate events.
58
+ * @param space The parent space.
59
+ * @param request Optional request options.
60
+ */
61
+ observe(space: string, request?: ISdkRequestOptions): Promise<WebSocketNode | WebSocket>;
55
62
  }
@@ -110,5 +110,16 @@ export class ProjectExecutionSdk extends SdkBase {
110
110
  url.searchParams.set('folder', folder);
111
111
  await this.genericDelete(url, request);
112
112
  }
113
+ /**
114
+ * Creates a WS client that listens to the certificate events.
115
+ * @param space The parent space.
116
+ * @param request Optional request options.
117
+ */
118
+ async observe(space, request = {}) {
119
+ const token = request.token || this.sdk.token;
120
+ const url = this.sdk.getUrl(RouteBuilder.projectExecutions());
121
+ url.searchParams.set('space', space);
122
+ return this.sdk.ws.createAndConnect(url.toString(), token);
123
+ }
113
124
  }
114
125
  //# sourceMappingURL=ProjectExecutionsSdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectExecutionsSdk.js","sourceRoot":"","sources":["../../../../src/runtime/store/ProjectExecutionsSdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAqB,IAAI,IAAI,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEnG,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAC9C;;;;;SAKK;IACL,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,KAAwB,EAAE,UAA8B,EAAE;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,+CAA+C,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAA2C,CAAC;QAC/F,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,GAAG,kBAAkB,GAAG,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,UAA8B,EAAE;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,6CAA6C,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAsB,CAAC;QAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,GAAG,kBAAkB,GAAG,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAAqC,EAAE,UAA8B,EAAE;QAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAClD;QACD,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1C;QACD,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5C;QACD,6DAA6D;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAyC,CAAC;QACrG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,UAA8B,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,IAAc,EAAE,UAA8B,EAAE;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,UAA8B,EAAE;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAe,EAAE,UAA8B,EAAE;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc,EAAE,UAA8B,EAAE;QAChG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"ProjectExecutionsSdk.js","sourceRoot":"","sources":["../../../../src/runtime/store/ProjectExecutionsSdk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@api-client/core",
3
3
  "description": "The API Client's core client library. Works in NodeJS and in a ES enabled browser.",
4
- "version": "0.9.13",
4
+ "version": "0.9.15",
5
5
  "license": "Apache-2.0",
6
6
  "main": "build/index.js",
7
7
  "module": "build/index.js",
@@ -1,3 +1,10 @@
1
+ import { IPatchRevision } from "../../events/BaseEvents.js";
2
+ import { IHttpHistory, Kind as HttpHistoryKind } from "../HttpHistory.js";
3
+ import { Kind as ProjectExecutionKind } from "../ProjectExecution.js";
4
+ import { IFile } from "./File.js";
5
+ import { IPermission } from "./Permission.js";
6
+ import { IRevision } from "./Revision.js";
7
+
1
8
  /* eslint-disable import/export */
2
9
  export type BackendMode = 'single-user' | 'multi-user';
3
10
 
@@ -94,45 +101,119 @@ export interface IBackendCommand {
94
101
  value?: unknown;
95
102
  }
96
103
 
97
- export interface IBackendMessage {
98
- /**
99
- * The message type. Usually it is an `event`, meaning, a data change notification.
100
- */
101
- type: 'event';
102
- /**
103
- * In most cases an event has data associated with it like the created object or
104
- * the patch that has been applied to the object.
105
- * Not set for events related to deleting an object.
106
- */
107
- data?: unknown;
104
+ export type AltType = 'media' | 'meta';
105
+
106
+ export enum BackendCommandType {
107
+ observe,
108
+ unobserve,
108
109
  }
109
110
 
110
- export interface IBackendEvent extends IBackendMessage {
111
- /**
112
- * The operation that has been performed on the resource.
113
- *
114
- * Note, `updated` is when the entire object must be revalidated in the opposite
115
- * to `patch` where the patch should be applied to the object.
116
- *
117
- * - created - when an entity was created
118
- * - patch - when a patch operation was applied to an entity
119
- * - deleted - when an entity was deleted
120
- * - access-granted - when access to an entity was granted. This also includes when the access level change.
121
- * - access-removed - when access to an entity was removed.
122
- * - updated - used in special cases as most communication uses patch. Informs the whole object was updated.
123
- * - cleared - when the data store was cleared and all entities destroyed.
124
- */
125
- operation: 'created' | 'patch' | 'deleted' | 'access-granted' | 'access-removed' | 'updated' | 'cleared';
126
- /**
127
- * The kind of data that has been changed.
128
- */
111
+ export const BackendCommandKind = 'Core#BackendCommand';
112
+
113
+ export interface IBackendCommand {
114
+ kind: typeof BackendCommandKind;
115
+ cmd: BackendCommandType;
116
+ }
117
+
118
+ export interface IBackendObserveCommand extends IBackendCommand {
119
+ path: string; // includes query parameters
120
+ }
121
+
122
+ export interface BroadcastEvent {
123
+ type: 'event';
124
+ operation: string;
129
125
  kind: string;
130
- /**
131
- * For update events it is the key of the updated object.
132
- */
133
- id?: string;
134
- /**
135
- * When relevant, the parent of the changed object.
136
- */
126
+ key: string;
127
+ path: string;
128
+ space: string; // empty string for `/spaces`
129
+ }
130
+
131
+ export interface BackendErrorEvent {
132
+ type: 'error';
133
+ cause: string;
134
+ time: number;
135
+ }
136
+
137
+ export interface BroadcastCreatedEvent extends BroadcastEvent {
138
+ operation: 'created';
139
+ data: unknown;
140
+ // path: string; -> /files, /certificates, /history, /project/executions, /spaces, /trash
141
+ }
142
+
143
+ export interface FileCreatedBroadcastEvent extends BroadcastCreatedEvent {
137
144
  parent?: string;
145
+ data: unknown;
146
+ alt: AltType;
147
+ }
148
+
149
+ export interface FileMetaCreatedBroadcastEvent extends FileCreatedBroadcastEvent {
150
+ data: IFile;
151
+ alt: 'meta';
152
+ }
153
+
154
+ export interface FileMediaCreatedBroadcastEvent extends FileCreatedBroadcastEvent {
155
+ alt: 'media';
156
+ }
157
+
158
+ export interface HistoryCreatedBroadcastEvent extends BroadcastCreatedEvent {
159
+ project: string;
160
+ request: string;
161
+ app: string;
162
+ kind: typeof HttpHistoryKind;
163
+ data: IHttpHistory;
164
+ }
165
+
166
+ export interface FileRevisionCreatedBroadcastEvent extends BroadcastCreatedEvent {
167
+ parent: string;
168
+ data: IRevision;
169
+ alt: AltType;
170
+ }
171
+
172
+ export interface ProjectExecutionCreatedBroadcastEvent extends BroadcastCreatedEvent {
173
+ project: string;
174
+ kind: typeof ProjectExecutionKind;
175
+ }
176
+
177
+ export interface BroadcastPatchEvent extends BroadcastEvent {
178
+ operation: 'patch';
179
+ data: IPatchRevision;
180
+ // path: string; -> /files, /spaces
181
+ }
182
+
183
+ export interface FilePatchBroadcastEvent extends BroadcastPatchEvent {
184
+ parent?: string;
185
+ alt: AltType;
186
+ }
187
+
188
+ export interface AccessBroadcastEvent extends BroadcastEvent {
189
+ operation: 'access-granted' | 'access-removed';
190
+ data?: IPermission;
191
+ // path: string; -> /files, /spaces, /spaces
192
+ }
193
+
194
+ export interface FileAccessBroadcastEvent extends AccessBroadcastEvent {
195
+ parent?: string;
196
+ }
197
+
198
+ export interface DeletedBroadcastEvent extends BroadcastEvent {
199
+ operation: 'deleted',
200
+ // path: string; -> /files, /certificates, /history, /project/executions, /spaces, /trash
201
+ }
202
+
203
+ export interface FileDeletedBroadcastEvent extends DeletedBroadcastEvent {
204
+ parent?: string;
205
+ alt: AltType;
206
+ }
207
+
208
+ export interface ProjectExecutionDeleteBroadcastEvent extends DeletedBroadcastEvent {
209
+ project: string;
210
+ }
211
+
212
+ export interface HistoryDeletedBroadcastEvent extends DeletedBroadcastEvent {
213
+ project: string;
214
+ request: string;
215
+ }
216
+
217
+ export interface ClearedBroadcastEvent extends BroadcastEvent {
218
+ operation: 'cleared';
138
219
  }
@@ -1,3 +1,4 @@
1
+ import WebSocketNode from 'ws';
1
2
  import { SdkBase, E_RESPONSE_UNKNOWN, ISdkRequestOptions } from './SdkBase.js';
2
3
  import { RouteBuilder } from './RouteBuilder.js';
3
4
  import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, IBulkOperationResult, IProjectExecutionListOptions } from '../../events/BaseEvents.js';
@@ -119,4 +120,16 @@ export class ProjectExecutionSdk extends SdkBase {
119
120
  url.searchParams.set('folder', folder);
120
121
  await this.genericDelete(url, request);
121
122
  }
123
+
124
+ /**
125
+ * Creates a WS client that listens to the certificate events.
126
+ * @param space The parent space.
127
+ * @param request Optional request options.
128
+ */
129
+ async observe(space: string, request: ISdkRequestOptions = {}): Promise<WebSocketNode | WebSocket> {
130
+ const token = request.token || this.sdk.token;
131
+ const url = this.sdk.getUrl(RouteBuilder.projectExecutions());
132
+ url.searchParams.set('space', space);
133
+ return this.sdk.ws.createAndConnect(url.toString(), token);
134
+ }
122
135
  }