@aperture-browser/api-client 0.0.0-init.0 → 0.0.0-nightly.82.2e4f6368108f
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/README.md +108 -10
- package/dist/index.d.ts +386 -392
- package/dist/index.js +367 -30
- package/dist/index.js.map +1 -1
- package/dist/passkeys.d.ts +30 -0
- package/dist/passkeys.js +54 -0
- package/dist/passkeys.js.map +1 -0
- package/dist/service-DhkerN7u.d.ts +296 -0
- package/dist/service-riqZPQHq.js +8 -0
- package/dist/service-riqZPQHq.js.map +1 -0
- package/package.json +13 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { $ as Tenant, A as ProxyRule, B as SessionFileEntry, C as CursorVisibility, D as PageMeta, E as IceServer, F as Scope, G as SessionStatus, H as SessionMutationResponse, I as Session, J as SetViewportInput, K as SessionsBulkResponse, L as SessionDirectory, M as ResourceEvent, N as ResourceGrant, O as PromoteSessionResponse, P as ResourceMode, Q as TargetViewport, R as SessionFile, S as CreateTokenResponse, T as Health, U as SessionProxy, V as SessionMedia, W as SessionRecording, X as SnapshotMutationResponse, Y as Snapshot, Z as SnapshotsPage, _ as AuthMeResponse, _t as LiveSessionErrorBody, a as PasskeyLoginOptions, at as User, b as BrowserChannelsResponse, c as Passkeys, ct as ApiAuthorization, d as SecurityStatus, dt as TENANT_HEADER, et as TenantMembership, f as TOTPEnrollment, ft as TenantHeaderMode, g as AuthMePrincipal, gt as ApiRequestError, h as AuditEventsPage, ht as ApiErrorBody, i as Passkey, it as UpdateProxyConfig, j as ProxyUpstream, k as ProxyConfig, l as PasswordLoginResponse, lt as ApiCredentials, m as AuditEvent, mt as webSessionCredentials, n as PasskeyCredentialJSON, nt as TenantsPage, o as PasskeyMutation, ot as UserInvitation, p as ApiToken, pt as resolveTenantHeader, q as SessionsPage, r as LoginMethods, rt as TokensPage, s as PasskeyRegistrationOptions, st as UsersPage, t as AuthApi, tt as TenantScope, u as RecoveryCodes, ut as Authorization, v as AuthMeTenant, vt as toApiRequestError, w as EventsPage, x as CreateSessionResponse, y as BrowserChannel, z as SessionFileDownloadURL } from "./service-DhkerN7u.js";
|
|
1
2
|
import * as Effect from "effect/Effect";
|
|
2
3
|
import * as Layer from "effect/Layer";
|
|
3
4
|
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
@@ -5,260 +6,9 @@ import * as Api from "@aperture-browser/api-schema";
|
|
|
5
6
|
import * as Context from "effect/Context";
|
|
6
7
|
import * as Schema from "effect/Schema";
|
|
7
8
|
import * as Stream from "effect/Stream";
|
|
9
|
+
import * as Option from "effect/Option";
|
|
8
10
|
import * as HttpClientError from "effect/unstable/http/HttpClientError";
|
|
9
|
-
import { AuthenticationResponseJSON, RegistrationResponseJSON } from "@simplewebauthn/browser";
|
|
10
11
|
|
|
11
|
-
//#region src/errors.d.ts
|
|
12
|
-
declare const ApiErrorBody: Schema.Struct<{
|
|
13
|
-
readonly error: Schema.Struct<{
|
|
14
|
-
readonly code: Schema.String;
|
|
15
|
-
readonly message: Schema.String;
|
|
16
|
-
}>;
|
|
17
|
-
}>;
|
|
18
|
-
type ApiErrorBody = typeof ApiErrorBody.Type;
|
|
19
|
-
declare const ApiRequestError_base: Schema.Class<ApiRequestError, Schema.TaggedStruct<"ApiRequestError", {
|
|
20
|
-
readonly code: Schema.String;
|
|
21
|
-
readonly message: Schema.String;
|
|
22
|
-
readonly status: Schema.Number;
|
|
23
|
-
}>, import("effect/Cause").YieldableError>;
|
|
24
|
-
/**
|
|
25
|
-
* A failed API request. `code` and `message` come from the server's error body when it
|
|
26
|
-
* sent one; `status` is 0 when no HTTP status applies.
|
|
27
|
-
*/
|
|
28
|
-
declare class ApiRequestError extends ApiRequestError_base {}
|
|
29
|
-
/**
|
|
30
|
-
* Maps HTTP and decoding failures to ApiRequestError. Error responses keep the code and
|
|
31
|
-
* message of the server's error body.
|
|
32
|
-
*/
|
|
33
|
-
declare const toApiRequestError: <A, R>(self: Effect.Effect<A, HttpClientError.HttpClientError | Schema.SchemaError, R>) => Effect.Effect<A, ApiRequestError, R>;
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/authorization/service.d.ts
|
|
36
|
-
declare const TENANT_HEADER = "X-Aperture-Tenant-Id";
|
|
37
|
-
interface CredentialContext {
|
|
38
|
-
authorityType: "system_admin" | "tenant" | null;
|
|
39
|
-
tenantId: string | null;
|
|
40
|
-
selectedTenantId: string | null;
|
|
41
|
-
}
|
|
42
|
-
type ApiCredentials = (CredentialContext & {
|
|
43
|
-
kind: "bearer";
|
|
44
|
-
token: string;
|
|
45
|
-
}) | (CredentialContext & {
|
|
46
|
-
kind: "session";
|
|
47
|
-
});
|
|
48
|
-
/** The browser's own login session, sent as a cookie. */
|
|
49
|
-
declare const webSessionCredentials: ApiCredentials;
|
|
50
|
-
type TenantHeaderMode = "none" | "optional" | "tenant-scoped";
|
|
51
|
-
/** Which tenant, if any, a request acts for under the given credentials. */
|
|
52
|
-
declare function resolveTenantHeader(credentials: ApiCredentials, mode: TenantHeaderMode): string | undefined;
|
|
53
|
-
/** How a request authenticates, and which tenant it acts for. */
|
|
54
|
-
interface Authorization {
|
|
55
|
-
readonly credentials?: ApiCredentials;
|
|
56
|
-
readonly bearerToken?: string;
|
|
57
|
-
readonly tenantHeader?: TenantHeaderMode;
|
|
58
|
-
}
|
|
59
|
-
declare const Authorization: {
|
|
60
|
-
anonymous: Authorization;
|
|
61
|
-
webSession: Authorization;
|
|
62
|
-
of: (credentials: ApiCredentials) => Authorization;
|
|
63
|
-
tenantScoped: (credentials: ApiCredentials) => Authorization;
|
|
64
|
-
};
|
|
65
|
-
declare const ApiAuthorization_base: Context.ServiceClass<ApiAuthorization, "@aperture-browser/api-client/ApiAuthorization", {
|
|
66
|
-
/** Runs a call with the given authorization and maps its failures to ApiRequestError. */readonly authorize: (authorization: Authorization) => <A, R>(self: Effect.Effect<A, HttpClientError.HttpClientError | Schema.SchemaError, R>) => Effect.Effect<A, ApiRequestError, R>; /** Emits whenever the web session is found to be missing, expired or revoked. */
|
|
67
|
-
readonly sessionAuthenticationFailures: Stream.Stream<void>;
|
|
68
|
-
}>;
|
|
69
|
-
/**
|
|
70
|
-
* Authenticates API calls. Inside `authorize`, every request sent through the HttpClient
|
|
71
|
-
* that `authorizedHttpClientLayer` provides carries that call's credentials and tenant, so
|
|
72
|
-
* callers never touch headers.
|
|
73
|
-
*/
|
|
74
|
-
declare class ApiAuthorization extends ApiAuthorization_base {}
|
|
75
|
-
//#endregion
|
|
76
|
-
//#region src/schemas.d.ts
|
|
77
|
-
type PageMeta = Api.PageMeta;
|
|
78
|
-
type Tenant = Api.Tenant;
|
|
79
|
-
type User = Api.User;
|
|
80
|
-
type UserInvitation = Api.UserInvitation;
|
|
81
|
-
type TenantMembership = Api.TenantMembership;
|
|
82
|
-
type AuthMeResponse = Api.AuthMe;
|
|
83
|
-
type AuthMePrincipal = Api.Principal;
|
|
84
|
-
type AuthMeTenant = Api.Tenant;
|
|
85
|
-
type ResourceMode = Api.ResourceMode;
|
|
86
|
-
type ResourceGrant = Api.ResourceGrant;
|
|
87
|
-
type Scope = Api.Scope;
|
|
88
|
-
type TenantScope = Api.TenantScope;
|
|
89
|
-
type Session = Api.Session;
|
|
90
|
-
type SessionMedia = Api.SessionMedia;
|
|
91
|
-
type IceServer = Api.IceServer;
|
|
92
|
-
declare const SessionStatus: import("effect/Schema").Literals<readonly ["creating", "running", "suspended", "deleted", "expired", "failed"]>;
|
|
93
|
-
type SessionStatus = Api.SessionStatus;
|
|
94
|
-
type Snapshot = Api.Snapshot;
|
|
95
|
-
type ApiToken = Api.Token;
|
|
96
|
-
type TenantsPage = Api.TenantPage;
|
|
97
|
-
type UsersPage = Api.UserPage;
|
|
98
|
-
type SessionsPage = Api.SessionPage;
|
|
99
|
-
type SessionsBulkResponse = Api.SessionBulkResponse;
|
|
100
|
-
type SnapshotsPage = Api.SnapshotPage;
|
|
101
|
-
type TokensPage = Api.TokenPage;
|
|
102
|
-
type BrowserChannel = Api.BrowserChannel;
|
|
103
|
-
type BrowserChannelsResponse = Api.BrowserChannels;
|
|
104
|
-
type ResourceEvent = Api.Event;
|
|
105
|
-
type EventsPage = Api.EventPage;
|
|
106
|
-
type CreateSessionResponse = Api.CreateSessionResult;
|
|
107
|
-
type SessionMutationResponse = Api.SessionMutation;
|
|
108
|
-
type SnapshotMutationResponse = Api.SnapshotMutation;
|
|
109
|
-
type PromoteSessionResponse = Api.SnapshotMutation;
|
|
110
|
-
type CreateTokenResponse = Api.CreateTokenResponse;
|
|
111
|
-
//#endregion
|
|
112
|
-
//#region src/auth/schemas.d.ts
|
|
113
|
-
declare const LoginMethods: Schema.Struct<{
|
|
114
|
-
readonly methods: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
115
|
-
readonly type: Schema.Literal<"password">;
|
|
116
|
-
}>, Schema.Struct<{
|
|
117
|
-
readonly type: Schema.Literal<"api_token">;
|
|
118
|
-
}>, Schema.Struct<{
|
|
119
|
-
readonly type: Schema.Literal<"passkey">;
|
|
120
|
-
}>, Schema.Struct<{
|
|
121
|
-
readonly type: Schema.Literal<"oidc">;
|
|
122
|
-
readonly id: Schema.String;
|
|
123
|
-
readonly name: Schema.String;
|
|
124
|
-
readonly loginUrl: Schema.String;
|
|
125
|
-
}>]>>;
|
|
126
|
-
}>;
|
|
127
|
-
declare const PasskeyLoginOptions: Schema.Struct<{
|
|
128
|
-
readonly publicKey: Schema.Struct<{
|
|
129
|
-
readonly challenge: Schema.String;
|
|
130
|
-
readonly timeout: Schema.optionalKey<Schema.Number>;
|
|
131
|
-
readonly rpId: Schema.optionalKey<Schema.String>;
|
|
132
|
-
readonly allowCredentials: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Struct<{
|
|
133
|
-
readonly id: Schema.String;
|
|
134
|
-
readonly type: Schema.Literal<"public-key">;
|
|
135
|
-
readonly transports: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Literals<readonly ["ble", "cable", "hybrid", "internal", "nfc", "smart-card", "usb"]>>>>;
|
|
136
|
-
}>>>>;
|
|
137
|
-
readonly userVerification: Schema.optionalKey<Schema.Literals<readonly ["discouraged", "preferred", "required"]>>;
|
|
138
|
-
readonly hints: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Literals<readonly ["hybrid", "security-key", "client-device"]>>>>;
|
|
139
|
-
readonly extensions: Schema.optionalKey<Schema.Struct<{
|
|
140
|
-
readonly appid: Schema.optionalKey<Schema.String>;
|
|
141
|
-
readonly credProps: Schema.optionalKey<Schema.Boolean>;
|
|
142
|
-
readonly hmacCreateSecret: Schema.optionalKey<Schema.Boolean>;
|
|
143
|
-
readonly minPinLength: Schema.optionalKey<Schema.Boolean>;
|
|
144
|
-
}>>;
|
|
145
|
-
}>;
|
|
146
|
-
}>;
|
|
147
|
-
declare const PasskeyRegistrationOptions: Schema.Struct<{
|
|
148
|
-
readonly publicKey: Schema.Struct<{
|
|
149
|
-
readonly rp: Schema.Struct<{
|
|
150
|
-
readonly id: Schema.optionalKey<Schema.String>;
|
|
151
|
-
readonly name: Schema.String;
|
|
152
|
-
}>;
|
|
153
|
-
readonly user: Schema.Struct<{
|
|
154
|
-
readonly id: Schema.String;
|
|
155
|
-
readonly name: Schema.String;
|
|
156
|
-
readonly displayName: Schema.String;
|
|
157
|
-
}>;
|
|
158
|
-
readonly challenge: Schema.String;
|
|
159
|
-
readonly pubKeyCredParams: Schema.mutable<Schema.$Array<Schema.Struct<{
|
|
160
|
-
readonly alg: Schema.Literals<readonly [-7, -8, -35, -36, -37, -38, -39, -257, -258, -259]>;
|
|
161
|
-
readonly type: Schema.Literal<"public-key">;
|
|
162
|
-
}>>>;
|
|
163
|
-
readonly timeout: Schema.optionalKey<Schema.Number>;
|
|
164
|
-
readonly excludeCredentials: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Struct<{
|
|
165
|
-
readonly id: Schema.String;
|
|
166
|
-
readonly type: Schema.Literal<"public-key">;
|
|
167
|
-
readonly transports: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Literals<readonly ["ble", "cable", "hybrid", "internal", "nfc", "smart-card", "usb"]>>>>;
|
|
168
|
-
}>>>>;
|
|
169
|
-
readonly authenticatorSelection: Schema.optionalKey<Schema.Struct<{
|
|
170
|
-
readonly authenticatorAttachment: Schema.optionalKey<Schema.Literals<readonly ["platform", "cross-platform"]>>;
|
|
171
|
-
readonly requireResidentKey: Schema.optionalKey<Schema.Boolean>;
|
|
172
|
-
readonly residentKey: Schema.optionalKey<Schema.Literals<readonly ["discouraged", "preferred", "required"]>>;
|
|
173
|
-
readonly userVerification: Schema.optionalKey<Schema.Literals<readonly ["discouraged", "preferred", "required"]>>;
|
|
174
|
-
}>>;
|
|
175
|
-
readonly hints: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Literals<readonly ["hybrid", "security-key", "client-device"]>>>>;
|
|
176
|
-
readonly attestation: Schema.optionalKey<Schema.Literals<readonly ["direct", "enterprise", "indirect", "none"]>>;
|
|
177
|
-
readonly attestationFormats: Schema.optionalKey<Schema.mutable<Schema.$Array<Schema.Literals<readonly ["fido-u2f", "packed", "android-safetynet", "android-key", "tpm", "apple", "none"]>>>>;
|
|
178
|
-
readonly extensions: Schema.optionalKey<Schema.Struct<{
|
|
179
|
-
readonly appid: Schema.optionalKey<Schema.String>;
|
|
180
|
-
readonly credProps: Schema.optionalKey<Schema.Boolean>;
|
|
181
|
-
readonly hmacCreateSecret: Schema.optionalKey<Schema.Boolean>;
|
|
182
|
-
readonly minPinLength: Schema.optionalKey<Schema.Boolean>;
|
|
183
|
-
}>>;
|
|
184
|
-
}>;
|
|
185
|
-
}>;
|
|
186
|
-
declare const Passkey: Schema.Struct<{
|
|
187
|
-
readonly id: Schema.String;
|
|
188
|
-
readonly name: Schema.String;
|
|
189
|
-
readonly createdAt: Schema.String;
|
|
190
|
-
readonly lastUsedAt: Schema.NullOr<Schema.String>;
|
|
191
|
-
}>;
|
|
192
|
-
declare const Passkeys: Schema.Struct<{
|
|
193
|
-
readonly passkeys: Schema.$Array<Schema.Struct<{
|
|
194
|
-
readonly id: Schema.String;
|
|
195
|
-
readonly name: Schema.String;
|
|
196
|
-
readonly createdAt: Schema.String;
|
|
197
|
-
readonly lastUsedAt: Schema.NullOr<Schema.String>;
|
|
198
|
-
}>>;
|
|
199
|
-
}>;
|
|
200
|
-
declare const PasskeyMutation: Schema.Struct<{
|
|
201
|
-
readonly passkey: Schema.Struct<{
|
|
202
|
-
readonly id: Schema.String;
|
|
203
|
-
readonly name: Schema.String;
|
|
204
|
-
readonly createdAt: Schema.String;
|
|
205
|
-
readonly lastUsedAt: Schema.NullOr<Schema.String>;
|
|
206
|
-
}>;
|
|
207
|
-
}>;
|
|
208
|
-
declare const PasswordLoginResponse: Schema.Struct<{
|
|
209
|
-
readonly mfaRequired: Schema.Boolean;
|
|
210
|
-
}>;
|
|
211
|
-
declare const SecurityStatus: Schema.Struct<{
|
|
212
|
-
readonly hasPassword: Schema.Boolean;
|
|
213
|
-
readonly totpEnabled: Schema.Boolean;
|
|
214
|
-
readonly recoveryCodesRemaining: Schema.Number;
|
|
215
|
-
}>;
|
|
216
|
-
declare const TOTPEnrollment: Schema.Struct<{
|
|
217
|
-
readonly secret: Schema.String;
|
|
218
|
-
readonly otpauthUrl: Schema.String;
|
|
219
|
-
readonly qrCodeDataUrl: Schema.String;
|
|
220
|
-
}>;
|
|
221
|
-
declare const RecoveryCodes: Schema.Struct<{
|
|
222
|
-
readonly recoveryCodes: Schema.$Array<Schema.String>;
|
|
223
|
-
}>;
|
|
224
|
-
type LoginMethods = typeof LoginMethods.Type;
|
|
225
|
-
type PasskeyLoginOptions = typeof PasskeyLoginOptions.Type;
|
|
226
|
-
type PasskeyRegistrationOptions = typeof PasskeyRegistrationOptions.Type;
|
|
227
|
-
type Passkey = typeof Passkey.Type;
|
|
228
|
-
type Passkeys = typeof Passkeys.Type;
|
|
229
|
-
type PasskeyMutation = typeof PasskeyMutation.Type;
|
|
230
|
-
type PasswordLoginResponse = typeof PasswordLoginResponse.Type;
|
|
231
|
-
type RecoveryCodes = typeof RecoveryCodes.Type;
|
|
232
|
-
type SecurityStatus = typeof SecurityStatus.Type;
|
|
233
|
-
type TOTPEnrollment = typeof TOTPEnrollment.Type;
|
|
234
|
-
//#endregion
|
|
235
|
-
//#region src/auth/service.d.ts
|
|
236
|
-
type Call$5<A> = Effect.Effect<A, ApiRequestError>;
|
|
237
|
-
declare const AuthApi_base: Context.ServiceClass<AuthApi, "@aperture-browser/api-client/AuthApi", {
|
|
238
|
-
readonly listLoginMethods: () => Call$5<LoginMethods>;
|
|
239
|
-
readonly loginWithPassword: (email: string, password: string) => Call$5<PasswordLoginResponse>;
|
|
240
|
-
readonly completePasswordMFA: (code: string) => Call$5<void>;
|
|
241
|
-
readonly loginWithAPIToken: (token: string) => Call$5<void>;
|
|
242
|
-
readonly beginPasskeyLogin: () => Call$5<PasskeyLoginOptions>;
|
|
243
|
-
readonly finishPasskeyLogin: (credential: AuthenticationResponseJSON) => Call$5<void>;
|
|
244
|
-
readonly acceptUserInvitation: (token: string, password: string) => Call$5<void>;
|
|
245
|
-
readonly logoutWebSession: () => Call$5<void>;
|
|
246
|
-
readonly getAuthMe: (selectedTenantId?: string | null, credentials?: ApiCredentials) => Call$5<AuthMeResponse>;
|
|
247
|
-
readonly getSecurityStatus: () => Call$5<SecurityStatus>;
|
|
248
|
-
readonly setPassword: (currentPassword: string, newPassword: string) => Call$5<void>;
|
|
249
|
-
readonly listPasskeys: () => Call$5<Passkeys>;
|
|
250
|
-
readonly beginPasskeyRegistration: (name: string) => Call$5<PasskeyRegistrationOptions>;
|
|
251
|
-
readonly finishPasskeyRegistration: (credential: RegistrationResponseJSON) => Call$5<PasskeyMutation>;
|
|
252
|
-
readonly renamePasskey: (passkeyId: string, name: string) => Call$5<PasskeyMutation>;
|
|
253
|
-
readonly deletePasskey: (passkeyId: string) => Call$5<void>;
|
|
254
|
-
readonly beginTOTPEnrollment: () => Call$5<TOTPEnrollment>;
|
|
255
|
-
readonly completeTOTPEnrollment: (code: string) => Call$5<RecoveryCodes>;
|
|
256
|
-
readonly regenerateRecoveryCodes: (code: string) => Call$5<RecoveryCodes>;
|
|
257
|
-
readonly disableTOTP: (code: string) => Call$5<void>;
|
|
258
|
-
}>;
|
|
259
|
-
/** Browser login, account security, and the current principal. */
|
|
260
|
-
declare class AuthApi extends AuthApi_base {}
|
|
261
|
-
//#endregion
|
|
262
12
|
//#region src/auth/layer.d.ts
|
|
263
13
|
declare const makeAuthApi: Effect.Effect<{
|
|
264
14
|
readonly listLoginMethods: () => Effect.Effect<{
|
|
@@ -300,7 +50,7 @@ declare const makeAuthApi: Effect.Effect<{
|
|
|
300
50
|
} | undefined;
|
|
301
51
|
};
|
|
302
52
|
}, ApiRequestError, never>;
|
|
303
|
-
readonly finishPasskeyLogin: (credential:
|
|
53
|
+
readonly finishPasskeyLogin: (credential: PasskeyCredentialJSON) => Effect.Effect<void, ApiRequestError, never>;
|
|
304
54
|
readonly acceptUserInvitation: (token: string, password: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
305
55
|
readonly logoutWebSession: () => Effect.Effect<void, ApiRequestError, never>;
|
|
306
56
|
readonly getAuthMe: (selectedTenantId?: string | null, credentials?: ApiCredentials) => Effect.Effect<Api.AuthMe, ApiRequestError, never>;
|
|
@@ -357,7 +107,7 @@ declare const makeAuthApi: Effect.Effect<{
|
|
|
357
107
|
readonly attestationFormats?: ("none" | "fido-u2f" | "packed" | "android-safetynet" | "android-key" | "tpm" | "apple")[] | undefined;
|
|
358
108
|
};
|
|
359
109
|
}, ApiRequestError, never>;
|
|
360
|
-
readonly finishPasskeyRegistration: (credential:
|
|
110
|
+
readonly finishPasskeyRegistration: (credential: PasskeyCredentialJSON) => Effect.Effect<{
|
|
361
111
|
readonly passkey: {
|
|
362
112
|
readonly id: string;
|
|
363
113
|
readonly name: string;
|
|
@@ -386,8 +136,8 @@ declare const makeAuthApi: Effect.Effect<{
|
|
|
386
136
|
readonly recoveryCodes: readonly string[];
|
|
387
137
|
}, ApiRequestError, never>;
|
|
388
138
|
readonly disableTOTP: (code: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
389
|
-
}, never, HttpClient.HttpClient
|
|
390
|
-
declare const authApiLayer: Layer.Layer<AuthApi, never, HttpClient.HttpClient
|
|
139
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
140
|
+
declare const authApiLayer: Layer.Layer<AuthApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
391
141
|
//#endregion
|
|
392
142
|
//#region src/authorization/layer.d.ts
|
|
393
143
|
/**
|
|
@@ -401,50 +151,74 @@ declare const makeApiAuthorization: Effect.Effect<{
|
|
|
401
151
|
}, never, never>;
|
|
402
152
|
declare const apiAuthorizationLayer: Layer.Layer<ApiAuthorization, never, never>;
|
|
403
153
|
//#endregion
|
|
404
|
-
//#region src/events/service.d.ts
|
|
405
|
-
interface EventsListParams {
|
|
406
|
-
limit?: number;
|
|
407
|
-
cursor?: string;
|
|
408
|
-
resourceType?: string;
|
|
409
|
-
resourceId?: string;
|
|
410
|
-
}
|
|
411
|
-
declare const EventsApi_base: Context.ServiceClass<EventsApi, "@aperture-browser/api-client/EventsApi", {
|
|
412
|
-
readonly listEvents: (credentials: ApiCredentials, params?: EventsListParams) => Effect.Effect<EventsPage, ApiRequestError>;
|
|
413
|
-
}>;
|
|
414
|
-
/** The tenant's resource event log. */
|
|
415
|
-
declare class EventsApi extends EventsApi_base {}
|
|
416
|
-
//#endregion
|
|
417
|
-
//#region src/events/layer.d.ts
|
|
418
|
-
declare const makeEventsApi: Effect.Effect<{
|
|
419
|
-
readonly listEvents: (credentials: ApiCredentials, params?: EventsListParams) => Effect.Effect<EventsPage, ApiRequestError>;
|
|
420
|
-
}, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
421
|
-
declare const eventsApiLayer: Layer.Layer<EventsApi, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
422
|
-
//#endregion
|
|
423
|
-
//#region src/layer.d.ts
|
|
424
|
-
/**
|
|
425
|
-
* Every API service, sharing one ApiAuthorization. The services send requests through the
|
|
426
|
-
* HttpClient the app provides, decorated with each call's authorization.
|
|
427
|
-
*/
|
|
428
|
-
declare const apiClientLayer: Layer.Layer<AuthApi | ApiAuthorization | EventsApi | TenantsApi | UsersApi | SessionsApi | SnapshotsApi | TokensApi, never, HttpClient.HttpClient>;
|
|
429
|
-
type ApiServices = Layer.Success<typeof apiClientLayer>;
|
|
430
|
-
declare const baseUrlLayer: (baseUrl: string) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
|
|
431
|
-
//#endregion
|
|
432
154
|
//#region src/pagination.d.ts
|
|
433
155
|
interface PaginatedResponse<T> {
|
|
434
156
|
readonly data: ReadonlyArray<T>;
|
|
435
157
|
readonly meta: PageMeta;
|
|
436
158
|
}
|
|
437
|
-
|
|
438
|
-
|
|
159
|
+
/** The opaque `nextCursor` of the previous page, sent along with the same filter. */
|
|
160
|
+
interface PageCursor {
|
|
439
161
|
cursor?: string;
|
|
440
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* The calls every cursor-paginated list exposes. The filter's `limit` is the page size.
|
|
165
|
+
* `list` fetches one page; `stream` fetches pages only as the stream is pulled; `listAll`
|
|
166
|
+
* collects every page.
|
|
167
|
+
*/
|
|
168
|
+
interface PaginatedList<Filter, T> {
|
|
169
|
+
readonly list: (credentials: ApiCredentials, params?: Filter & PageCursor) => Effect.Effect<PaginatedResponse<T>, ApiRequestError>;
|
|
170
|
+
readonly stream: (credentials: ApiCredentials, filter?: Filter) => Stream.Stream<T, ApiRequestError>;
|
|
171
|
+
readonly listAll: (credentials: ApiCredentials, filter?: Filter) => Effect.Effect<ReadonlyArray<T>, ApiRequestError>;
|
|
172
|
+
}
|
|
441
173
|
declare function getNextPageParam<T>(page: PaginatedResponse<T>): string | undefined;
|
|
442
174
|
declare function flattenInfinitePages<T>(pages: PaginatedResponse<T>[] | undefined): T[];
|
|
175
|
+
/**
|
|
176
|
+
* Derives `stream` and `listAll` from the call that fetches one page. That call must also
|
|
177
|
+
* accept a bare cursor, which every filter allows because all its fields are optional.
|
|
178
|
+
*/
|
|
179
|
+
declare function paginated<Filter, T>(list: (credentials: ApiCredentials, params?: (Filter & PageCursor) | PageCursor) => Effect.Effect<PaginatedResponse<T>, ApiRequestError>): PaginatedList<Filter, T>;
|
|
443
180
|
declare const defaultListLimit = 50;
|
|
444
181
|
declare const listQueryDefaults: {
|
|
445
182
|
readonly refetchOnWindowFocus: true;
|
|
446
183
|
};
|
|
447
184
|
//#endregion
|
|
185
|
+
//#region src/events/service.d.ts
|
|
186
|
+
interface EventsFilter {
|
|
187
|
+
limit?: number;
|
|
188
|
+
resourceType?: string;
|
|
189
|
+
resourceId?: string;
|
|
190
|
+
}
|
|
191
|
+
type EventsListParams = EventsFilter & PageCursor;
|
|
192
|
+
type EventsList = PaginatedList<EventsFilter, ResourceEvent>;
|
|
193
|
+
interface AuditEventsFilter {
|
|
194
|
+
limit?: number;
|
|
195
|
+
tenantId?: string;
|
|
196
|
+
actorType?: Api.PrincipalType;
|
|
197
|
+
actorId?: string;
|
|
198
|
+
action?: string;
|
|
199
|
+
resourceType?: string;
|
|
200
|
+
resourceId?: string;
|
|
201
|
+
}
|
|
202
|
+
type AuditEventsListParams = AuditEventsFilter & PageCursor;
|
|
203
|
+
type AuditEventsList = PaginatedList<AuditEventsFilter, AuditEvent>;
|
|
204
|
+
declare const EventsApi_base: Context.ServiceClass<EventsApi, "@aperture-browser/api-client/EventsApi", {
|
|
205
|
+
readonly listEvents: EventsList["list"];
|
|
206
|
+
readonly streamEvents: EventsList["stream"];
|
|
207
|
+
readonly listAllEvents: EventsList["listAll"];
|
|
208
|
+
readonly listAuditEvents: AuditEventsList["list"];
|
|
209
|
+
readonly streamAuditEvents: AuditEventsList["stream"];
|
|
210
|
+
readonly listAllAuditEvents: AuditEventsList["listAll"];
|
|
211
|
+
}>;
|
|
212
|
+
/** The tenant's resource event log, and the deployment-wide audit log. */
|
|
213
|
+
declare class EventsApi extends EventsApi_base {}
|
|
214
|
+
//#endregion
|
|
215
|
+
//#region src/health/service.d.ts
|
|
216
|
+
declare const HealthApi_base: Context.ServiceClass<HealthApi, "@aperture-browser/api-client/HealthApi", {
|
|
217
|
+
readonly getHealth: () => Effect.Effect<Health, ApiRequestError>;
|
|
218
|
+
}>;
|
|
219
|
+
/** The instance's unauthenticated health check. */
|
|
220
|
+
declare class HealthApi extends HealthApi_base {}
|
|
221
|
+
//#endregion
|
|
448
222
|
//#region src/query.d.ts
|
|
449
223
|
type TagFilterValue = Array<{
|
|
450
224
|
key: string;
|
|
@@ -490,34 +264,56 @@ declare const BrowserStatus: Schema.Struct<{
|
|
|
490
264
|
}>;
|
|
491
265
|
}>>, never>;
|
|
492
266
|
}>;
|
|
493
|
-
/**
|
|
494
|
-
|
|
267
|
+
/**
|
|
268
|
+
* A recording as the live session reports it. Sessions that are still running an
|
|
269
|
+
* older wrapper send only `path`, which decoding carries over into `relativePath`.
|
|
270
|
+
*/
|
|
271
|
+
declare const Recording: Schema.decodeTo<Schema.Struct<{
|
|
272
|
+
readonly relativePath: Schema.String;
|
|
495
273
|
readonly recordingId: Schema.String;
|
|
496
274
|
readonly mode: Schema.Literals<readonly ["tab", "viewer"]>;
|
|
497
275
|
readonly targetId: Schema.String;
|
|
498
276
|
readonly captureGeneration: Schema.Number;
|
|
499
277
|
readonly status: Schema.Literals<readonly ["starting", "running", "stopped", "failed"]>;
|
|
500
278
|
readonly stopReason: Schema.optionalKey<Schema.String>;
|
|
501
|
-
readonly
|
|
279
|
+
readonly sandboxPath: Schema.optionalKey<Schema.String>;
|
|
280
|
+
readonly path: Schema.optionalKey<Schema.String>;
|
|
502
281
|
readonly startedAt: Schema.String;
|
|
503
282
|
readonly stoppedAt: Schema.optionalKey<Schema.String>;
|
|
504
283
|
readonly sizeBytes: Schema.optionalKey<Schema.Number>;
|
|
505
284
|
readonly fps: Schema.Number;
|
|
506
285
|
readonly bitrateKbps: Schema.Number;
|
|
507
286
|
readonly codec: Schema.String;
|
|
508
|
-
}
|
|
287
|
+
}>, Schema.Struct<{
|
|
288
|
+
readonly relativePath: Schema.optionalKey<Schema.String>;
|
|
289
|
+
readonly recordingId: Schema.String;
|
|
290
|
+
readonly mode: Schema.Literals<readonly ["tab", "viewer"]>;
|
|
291
|
+
readonly targetId: Schema.String;
|
|
292
|
+
readonly captureGeneration: Schema.Number;
|
|
293
|
+
readonly status: Schema.Literals<readonly ["starting", "running", "stopped", "failed"]>;
|
|
294
|
+
readonly stopReason: Schema.optionalKey<Schema.String>;
|
|
295
|
+
readonly sandboxPath: Schema.optionalKey<Schema.String>;
|
|
296
|
+
readonly path: Schema.optionalKey<Schema.String>;
|
|
297
|
+
readonly startedAt: Schema.String;
|
|
298
|
+
readonly stoppedAt: Schema.optionalKey<Schema.String>;
|
|
299
|
+
readonly sizeBytes: Schema.optionalKey<Schema.Number>;
|
|
300
|
+
readonly fps: Schema.Number;
|
|
301
|
+
readonly bitrateKbps: Schema.Number;
|
|
302
|
+
readonly codec: Schema.String;
|
|
303
|
+
}>, never, never>;
|
|
509
304
|
type BrowserStatus = typeof BrowserStatus.Type;
|
|
510
305
|
type Recording = typeof Recording.Type;
|
|
511
306
|
//#endregion
|
|
512
307
|
//#region src/sessions/service.d.ts
|
|
513
308
|
type Call$4<A> = Effect.Effect<A, ApiRequestError>;
|
|
514
|
-
interface
|
|
309
|
+
interface SessionsFilter {
|
|
515
310
|
limit?: number;
|
|
516
|
-
cursor?: string;
|
|
517
311
|
includeDeleted?: boolean;
|
|
518
312
|
status?: Api.SessionStatus;
|
|
519
313
|
tags?: TagFilterValue;
|
|
520
314
|
}
|
|
315
|
+
type SessionsListParams = SessionsFilter & PageCursor;
|
|
316
|
+
type SessionsList = PaginatedList<SessionsFilter, Session>;
|
|
521
317
|
type InitialBrowserTarget = Api.InitialBrowserTarget;
|
|
522
318
|
type InitialBrowserStorageState = Api.InitialBrowserStorageState;
|
|
523
319
|
interface CreateSessionInput {
|
|
@@ -530,6 +326,7 @@ interface CreateSessionInput {
|
|
|
530
326
|
initialTargets?: readonly InitialBrowserTarget[];
|
|
531
327
|
storageState?: InitialBrowserStorageState;
|
|
532
328
|
tags?: Record<string, string>;
|
|
329
|
+
proxy?: ProxyConfig;
|
|
533
330
|
}
|
|
534
331
|
interface CreateSessionOptions {
|
|
535
332
|
waitForReady?: boolean;
|
|
@@ -540,12 +337,34 @@ interface PromoteSessionInput {
|
|
|
540
337
|
force?: boolean;
|
|
541
338
|
tags?: Record<string, string>;
|
|
542
339
|
}
|
|
340
|
+
type CreateSessionRecordingInput = Api.CreateSessionRecordingInput;
|
|
341
|
+
type SessionFileDownloadURLInput = Api.SessionFileDownloadURLInput;
|
|
543
342
|
interface DownloadedFile {
|
|
544
343
|
blob: Blob;
|
|
545
344
|
filename: string | null;
|
|
546
345
|
}
|
|
346
|
+
/**
|
|
347
|
+
* One file to upload. Blob and Uint8Array contents are sent as FormData. Any stream content
|
|
348
|
+
* makes the whole body a streamed request, which browsers other than Chromium cannot send;
|
|
349
|
+
* a stream failure aborts the upload and surfaces as a `network_error`.
|
|
350
|
+
*/
|
|
351
|
+
interface SessionUploadFile {
|
|
352
|
+
name: string;
|
|
353
|
+
content: Blob | Uint8Array | Stream.Stream<Uint8Array, unknown>;
|
|
354
|
+
}
|
|
355
|
+
interface UploadSessionFilesOptions {
|
|
356
|
+
/** Directory below the session files root; `uploads` when omitted. */
|
|
357
|
+
directory?: string;
|
|
358
|
+
}
|
|
359
|
+
type MoveSessionFileInput = Api.MoveSessionFileInput;
|
|
360
|
+
interface DeleteSessionFileOptions {
|
|
361
|
+
/** Delete a directory together with everything below it. */
|
|
362
|
+
recursive?: boolean;
|
|
363
|
+
}
|
|
547
364
|
declare const SessionsApi_base: Context.ServiceClass<SessionsApi, "@aperture-browser/api-client/SessionsApi", {
|
|
548
|
-
readonly listSessions:
|
|
365
|
+
readonly listSessions: SessionsList["list"];
|
|
366
|
+
readonly streamSessions: SessionsList["stream"];
|
|
367
|
+
readonly listAllSessions: SessionsList["listAll"];
|
|
549
368
|
readonly getSession: (credentials: ApiCredentials, sessionId: string) => Call$4<Session>;
|
|
550
369
|
readonly getSessionsBulk: (credentials: ApiCredentials, sessionIds: readonly string[]) => Call$4<SessionsBulkResponse>;
|
|
551
370
|
readonly createSession: (credentials: ApiCredentials, input: CreateSessionInput, options?: CreateSessionOptions) => Call$4<CreateSessionResponse>;
|
|
@@ -554,77 +373,67 @@ declare const SessionsApi_base: Context.ServiceClass<SessionsApi, "@aperture-bro
|
|
|
554
373
|
readonly suspendSession: (credentials: ApiCredentials, sessionId: string) => Call$4<SessionMutationResponse>;
|
|
555
374
|
readonly rotateSessionToken: (credentials: ApiCredentials, sessionId: string) => Call$4<SessionMutationResponse>;
|
|
556
375
|
readonly rotateCollaborationCapability: (credentials: ApiCredentials, sessionId: string, role: "editor" | "viewer") => Call$4<SessionMutationResponse>;
|
|
557
|
-
readonly replaceSessionTags: (credentials: ApiCredentials, sessionId: string, tags: Record<string, string>) => Call$4<SessionMutationResponse>;
|
|
376
|
+
readonly replaceSessionTags: (credentials: ApiCredentials, sessionId: string, tags: Record<string, string>) => Call$4<SessionMutationResponse>; /** Replaces the session's egress proxy; new connections use it immediately. */
|
|
377
|
+
readonly updateSessionProxy: (credentials: ApiCredentials, sessionId: string, proxy: UpdateProxyConfig) => Call$4<SessionMutationResponse>;
|
|
558
378
|
readonly promoteSession: (credentials: ApiCredentials, sessionId: string, input: PromoteSessionInput) => Call$4<PromoteSessionResponse>;
|
|
379
|
+
readonly getSessionCursor: (credentials: ApiCredentials, sessionId: string) => Call$4<CursorVisibility>;
|
|
380
|
+
readonly setSessionCursor: (credentials: ApiCredentials, sessionId: string, visible: boolean) => Call$4<CursorVisibility>;
|
|
381
|
+
readonly listSessionRecordings: (credentials: ApiCredentials, sessionId: string) => Call$4<ReadonlyArray<SessionRecording>>;
|
|
382
|
+
readonly createSessionRecording: (credentials: ApiCredentials, sessionId: string, input: CreateSessionRecordingInput) => Call$4<SessionRecording>;
|
|
383
|
+
readonly getSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string) => Call$4<SessionRecording>; /** Moves a running tab recording to another ready target. */
|
|
384
|
+
readonly retargetSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, targetId: string) => Call$4<SessionRecording>; /** Stops a recording and returns the session file it was saved to. */
|
|
385
|
+
readonly stopSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string) => Call$4<SessionFile>;
|
|
386
|
+
/**
|
|
387
|
+
* Every file and directory of the session, also while it is not running. See
|
|
388
|
+
* `sessionFileTree`.
|
|
389
|
+
*/
|
|
390
|
+
readonly listSessionFiles: (credentials: ApiCredentials, sessionId: string) => Call$4<ReadonlyArray<SessionFileEntry>>;
|
|
391
|
+
/**
|
|
392
|
+
* Stores files in a directory of the session's files, `uploads` by default, in any
|
|
393
|
+
* retained state. Contents are sent as described for `SessionUploadFile`.
|
|
394
|
+
*/
|
|
395
|
+
readonly uploadSessionFiles: (credentials: ApiCredentials, sessionId: string, files: ReadonlyArray<SessionUploadFile>, options?: UploadSessionFilesOptions) => Call$4<ReadonlyArray<SessionFile>>; /** Deletes one file, or a directory; a directory with entries needs `recursive`. */
|
|
396
|
+
readonly deleteSessionFile: (credentials: ApiCredentials, sessionId: string, relativePath: string, options?: DeleteSessionFileOptions) => Call$4<void>; /** Moves or renames one file or directory. It never replaces an existing entry. */
|
|
397
|
+
readonly moveSessionFile: (credentials: ApiCredentials, sessionId: string, input: MoveSessionFileInput) => Call$4<SessionFileEntry>; /** Creates a directory, with any missing parents. */
|
|
398
|
+
readonly createSessionDirectory: (credentials: ApiCredentials, sessionId: string, relativePath: string) => Call$4<SessionDirectory>;
|
|
399
|
+
/**
|
|
400
|
+
* A signed URL that serves one session file without credentials until it expires.
|
|
401
|
+
* `disposition: "inline"` makes it usable as an `<img>` or `<video>` source.
|
|
402
|
+
*/
|
|
403
|
+
readonly createSessionFileDownloadURL: (credentials: ApiCredentials, sessionId: string, input: SessionFileDownloadURLInput) => Call$4<SessionFileDownloadURL>;
|
|
559
404
|
readonly getBrowserChannels: (credentials: ApiCredentials) => Call$4<BrowserChannelsResponse>;
|
|
560
405
|
readonly getBrowserStatus: (credentials: ApiCredentials, sessionId: string, sessionToken?: string) => Call$4<BrowserStatus>;
|
|
561
|
-
readonly downloadSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Call$4<DownloadedFile>;
|
|
406
|
+
readonly downloadSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Call$4<DownloadedFile>; /** The recording's bytes as they arrive, for files too large to hold in memory. */
|
|
407
|
+
readonly streamSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Stream.Stream<Uint8Array, ApiRequestError>;
|
|
408
|
+
/**
|
|
409
|
+
* Stores files in the running session's `uploads` directory through the session itself,
|
|
410
|
+
* which also accepts its `sessionToken`.
|
|
411
|
+
*/
|
|
412
|
+
readonly uploadLiveSessionFiles: (credentials: ApiCredentials, sessionId: string, files: ReadonlyArray<SessionUploadFile>, sessionToken?: string) => Call$4<ReadonlyArray<SessionFile>>; /** Resizes a top-level target of the running session and returns the applied viewport. */
|
|
413
|
+
readonly setSessionViewport: (credentials: ApiCredentials, sessionId: string, input: SetViewportInput, sessionToken?: string) => Call$4<TargetViewport>;
|
|
562
414
|
}>;
|
|
563
415
|
/** Browser sessions, their live browser, and their recordings. */
|
|
564
416
|
declare class SessionsApi extends SessionsApi_base {}
|
|
565
417
|
//#endregion
|
|
566
|
-
//#region src/sessions/layer.d.ts
|
|
567
|
-
declare const makeSessionsApi: Effect.Effect<{
|
|
568
|
-
readonly listSessions: (credentials: ApiCredentials, params?: SessionsListParams) => Effect.Effect<Api.SessionPage, ApiRequestError, never>;
|
|
569
|
-
readonly getSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.Session, ApiRequestError, never>;
|
|
570
|
-
readonly getSessionsBulk: (credentials: ApiCredentials, sessionIds: readonly string[]) => Effect.Effect<Api.SessionBulkResponse, ApiRequestError, never>;
|
|
571
|
-
readonly createSession: (credentials: ApiCredentials, input: CreateSessionInput, options?: CreateSessionOptions) => Effect.Effect<Api.CreateSessionResult, ApiRequestError, never>;
|
|
572
|
-
readonly deleteSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
573
|
-
readonly reopenSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
574
|
-
readonly suspendSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
575
|
-
readonly rotateSessionToken: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
576
|
-
readonly rotateCollaborationCapability: (credentials: ApiCredentials, sessionId: string, role: "editor" | "viewer") => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
577
|
-
readonly replaceSessionTags: (credentials: ApiCredentials, sessionId: string, tags: Record<string, string>) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
578
|
-
readonly promoteSession: (credentials: ApiCredentials, sessionId: string, input: PromoteSessionInput) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
579
|
-
readonly getBrowserChannels: (credentials: ApiCredentials) => Effect.Effect<Api.BrowserChannels, ApiRequestError, never>;
|
|
580
|
-
readonly getBrowserStatus: (credentials: ApiCredentials, sessionId: string, sessionToken?: string) => Effect.Effect<{
|
|
581
|
-
readonly sessionId: string;
|
|
582
|
-
readonly cdpUrl: string;
|
|
583
|
-
readonly media: {
|
|
584
|
-
readonly mode: "auto" | "cdp";
|
|
585
|
-
readonly webrtcProducer: boolean;
|
|
586
|
-
readonly iceServers?: readonly {
|
|
587
|
-
readonly urls: readonly string[];
|
|
588
|
-
readonly username?: string | undefined;
|
|
589
|
-
readonly credential?: string | undefined;
|
|
590
|
-
}[] | undefined;
|
|
591
|
-
};
|
|
592
|
-
readonly targets: readonly {
|
|
593
|
-
readonly targetId: string;
|
|
594
|
-
readonly generation: number;
|
|
595
|
-
readonly state: "pending" | "ready" | "unavailable" | "closed";
|
|
596
|
-
readonly title: string;
|
|
597
|
-
readonly url: string;
|
|
598
|
-
readonly viewport: {
|
|
599
|
-
readonly width: number;
|
|
600
|
-
readonly height: number;
|
|
601
|
-
readonly deviceScaleFactor: number;
|
|
602
|
-
readonly contentWidth: number;
|
|
603
|
-
readonly contentHeight: number;
|
|
604
|
-
readonly canvasWidth: number;
|
|
605
|
-
readonly canvasHeight: number;
|
|
606
|
-
};
|
|
607
|
-
}[];
|
|
608
|
-
}, ApiRequestError, never>;
|
|
609
|
-
readonly downloadSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Effect.Effect<DownloadedFile, ApiRequestError, never>;
|
|
610
|
-
}, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
611
|
-
declare const sessionsApiLayer: Layer.Layer<SessionsApi, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
612
|
-
//#endregion
|
|
613
418
|
//#region src/snapshots/service.d.ts
|
|
614
419
|
type Call$3<A> = Effect.Effect<A, ApiRequestError>;
|
|
615
|
-
interface
|
|
420
|
+
interface SnapshotsFilter {
|
|
616
421
|
limit?: number;
|
|
617
|
-
cursor?: string;
|
|
618
422
|
includeDeleted?: boolean;
|
|
619
423
|
deleted?: "active" | "deleted" | "all";
|
|
620
424
|
name?: string;
|
|
621
425
|
tags?: TagFilterValue;
|
|
622
426
|
}
|
|
427
|
+
type SnapshotsListParams = SnapshotsFilter & PageCursor;
|
|
428
|
+
type SnapshotsList = PaginatedList<SnapshotsFilter, Snapshot>;
|
|
623
429
|
interface UpdateSnapshotInput {
|
|
624
430
|
description: string | null;
|
|
625
431
|
}
|
|
626
432
|
declare const SnapshotsApi_base: Context.ServiceClass<SnapshotsApi, "@aperture-browser/api-client/SnapshotsApi", {
|
|
627
|
-
readonly listSnapshots:
|
|
433
|
+
readonly listSnapshots: SnapshotsList["list"];
|
|
434
|
+
readonly streamSnapshots: SnapshotsList["stream"];
|
|
435
|
+
readonly listAllSnapshots: SnapshotsList["listAll"]; /** The active snapshot with exactly this name, if there is one. */
|
|
436
|
+
readonly getSnapshotByName: (credentials: ApiCredentials, name: string) => Call$3<Option.Option<Snapshot>>;
|
|
628
437
|
readonly updateSnapshot: (credentials: ApiCredentials, name: string, input: UpdateSnapshotInput) => Call$3<SnapshotMutationResponse>;
|
|
629
438
|
readonly replaceSnapshotTags: (credentials: ApiCredentials, name: string, tags: Record<string, string>) => Call$3<SnapshotMutationResponse>;
|
|
630
439
|
readonly deleteSnapshot: (credentials: ApiCredentials, name: string) => Call$3<SnapshotMutationResponse>;
|
|
@@ -633,55 +442,41 @@ declare const SnapshotsApi_base: Context.ServiceClass<SnapshotsApi, "@aperture-b
|
|
|
633
442
|
/** Retained snapshots that new sessions start from. */
|
|
634
443
|
declare class SnapshotsApi extends SnapshotsApi_base {}
|
|
635
444
|
//#endregion
|
|
636
|
-
//#region src/snapshots/layer.d.ts
|
|
637
|
-
declare const makeSnapshotsApi: Effect.Effect<{
|
|
638
|
-
readonly listSnapshots: (credentials: ApiCredentials, params?: SnapshotsListParams) => Effect.Effect<Api.SnapshotPage, ApiRequestError, never>;
|
|
639
|
-
readonly updateSnapshot: (credentials: ApiCredentials, name: string, input: UpdateSnapshotInput) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
640
|
-
readonly replaceSnapshotTags: (credentials: ApiCredentials, name: string, tags: Record<string, string>) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
641
|
-
readonly deleteSnapshot: (credentials: ApiCredentials, name: string) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
642
|
-
readonly restoreSnapshot: (credentials: ApiCredentials, name: string) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
643
|
-
}, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
644
|
-
declare const snapshotsApiLayer: Layer.Layer<SnapshotsApi, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
645
|
-
//#endregion
|
|
646
445
|
//#region src/tenants/service.d.ts
|
|
647
446
|
type Call$2<A> = Effect.Effect<A, ApiRequestError>;
|
|
648
|
-
interface
|
|
447
|
+
interface TenantsFilter {
|
|
649
448
|
limit?: number;
|
|
650
|
-
cursor?: string;
|
|
651
449
|
includeDeleted?: boolean;
|
|
652
450
|
deleted?: "active" | "deleted" | "all";
|
|
653
451
|
}
|
|
452
|
+
type TenantsListParams = TenantsFilter & PageCursor;
|
|
453
|
+
type TenantsList = PaginatedList<TenantsFilter, Tenant>;
|
|
654
454
|
declare const TenantsApi_base: Context.ServiceClass<TenantsApi, "@aperture-browser/api-client/TenantsApi", {
|
|
655
|
-
readonly listTenants:
|
|
455
|
+
readonly listTenants: TenantsList["list"];
|
|
456
|
+
readonly streamTenants: TenantsList["stream"];
|
|
457
|
+
readonly listAllTenants: TenantsList["listAll"];
|
|
656
458
|
readonly createTenant: (credentials: ApiCredentials, input: Api.TenantInput) => Call$2<Tenant>;
|
|
657
459
|
readonly updateTenant: (credentials: ApiCredentials, tenantId: string, input: Api.TenantInput) => Call$2<Tenant>;
|
|
658
460
|
readonly deleteTenant: (credentials: ApiCredentials, tenantId: string) => Call$2<Tenant>;
|
|
659
|
-
readonly restoreTenant: (credentials: ApiCredentials, tenantId: string) => Call$2<Tenant>;
|
|
461
|
+
readonly restoreTenant: (credentials: ApiCredentials, tenantId: string) => Call$2<Tenant>; /** The tenant of a tenant token. */
|
|
462
|
+
readonly getCurrentTenant: (credentials: ApiCredentials) => Call$2<Tenant>;
|
|
463
|
+
readonly updateCurrentTenant: (credentials: ApiCredentials, input: Api.TenantInput) => Call$2<Tenant>;
|
|
660
464
|
}>;
|
|
661
|
-
/** Tenant administration. */
|
|
465
|
+
/** Tenant administration, and the tenant a tenant token belongs to. */
|
|
662
466
|
declare class TenantsApi extends TenantsApi_base {}
|
|
663
467
|
//#endregion
|
|
664
|
-
//#region src/tenants/layer.d.ts
|
|
665
|
-
declare const makeTenantsApi: Effect.Effect<{
|
|
666
|
-
readonly listTenants: (credentials: ApiCredentials, params?: TenantsListParams) => Effect.Effect<Api.TenantPage, ApiRequestError, never>;
|
|
667
|
-
readonly createTenant: (credentials: ApiCredentials, input: Api.TenantInput) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
668
|
-
readonly updateTenant: (credentials: ApiCredentials, tenantId: string, input: Api.TenantInput) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
669
|
-
readonly deleteTenant: (credentials: ApiCredentials, tenantId: string) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
670
|
-
readonly restoreTenant: (credentials: ApiCredentials, tenantId: string) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
671
|
-
}, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
672
|
-
declare const tenantsApiLayer: Layer.Layer<TenantsApi, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
673
|
-
//#endregion
|
|
674
468
|
//#region src/tokens/service.d.ts
|
|
675
469
|
type Call$1<A> = Effect.Effect<A, ApiRequestError>;
|
|
676
|
-
interface
|
|
470
|
+
interface TokensFilter {
|
|
677
471
|
limit?: number;
|
|
678
|
-
cursor?: string;
|
|
679
472
|
tenantId?: string;
|
|
680
473
|
name?: string;
|
|
681
474
|
authorityType?: "system_admin" | "tenant";
|
|
682
475
|
revoked?: "all" | "active" | "revoked";
|
|
683
476
|
scope?: string;
|
|
684
477
|
}
|
|
478
|
+
type TokensListParams = TokensFilter & PageCursor;
|
|
479
|
+
type TokensList = PaginatedList<TokensFilter, ApiToken>;
|
|
685
480
|
interface CreateAdminTokenInput {
|
|
686
481
|
name: string;
|
|
687
482
|
authorityType: "system_admin" | "tenant";
|
|
@@ -699,42 +494,38 @@ interface CreateTenantTokenInput {
|
|
|
699
494
|
expiresAt?: string | null;
|
|
700
495
|
}
|
|
701
496
|
declare const TokensApi_base: Context.ServiceClass<TokensApi, "@aperture-browser/api-client/TokensApi", {
|
|
702
|
-
readonly listAdminTokens:
|
|
497
|
+
readonly listAdminTokens: TokensList["list"];
|
|
498
|
+
readonly streamAdminTokens: TokensList["stream"];
|
|
499
|
+
readonly listAllAdminTokens: TokensList["listAll"];
|
|
703
500
|
readonly createAdminToken: (credentials: ApiCredentials, input: CreateAdminTokenInput) => Call$1<CreateTokenResponse>;
|
|
704
501
|
readonly revokeAdminToken: (credentials: ApiCredentials, tokenId: string) => Call$1<void>;
|
|
705
|
-
readonly listTenantTokens:
|
|
502
|
+
readonly listTenantTokens: TokensList["list"];
|
|
503
|
+
readonly streamTenantTokens: TokensList["stream"];
|
|
504
|
+
readonly listAllTenantTokens: TokensList["listAll"];
|
|
706
505
|
readonly createTenantToken: (credentials: ApiCredentials, input: CreateTenantTokenInput) => Call$1<CreateTokenResponse>;
|
|
707
506
|
readonly revokeTenantToken: (credentials: ApiCredentials, tokenId: string) => Call$1<void>;
|
|
708
507
|
}>;
|
|
709
508
|
/** API tokens, issued either deployment-wide or within the current tenant. */
|
|
710
509
|
declare class TokensApi extends TokensApi_base {}
|
|
711
510
|
//#endregion
|
|
712
|
-
//#region src/tokens/layer.d.ts
|
|
713
|
-
declare const makeTokensApi: Effect.Effect<{
|
|
714
|
-
readonly listAdminTokens: (credentials: ApiCredentials, params?: TokensListParams) => Effect.Effect<Api.TokenPage, ApiRequestError, never>;
|
|
715
|
-
readonly createAdminToken: (credentials: ApiCredentials, input: CreateAdminTokenInput) => Effect.Effect<Api.CreateTokenResponse, ApiRequestError, never>;
|
|
716
|
-
readonly revokeAdminToken: (credentials: ApiCredentials, tokenId: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
717
|
-
readonly listTenantTokens: (credentials: ApiCredentials, params?: TokensListParams) => Effect.Effect<Api.TokenPage, ApiRequestError, never>;
|
|
718
|
-
readonly createTenantToken: (credentials: ApiCredentials, input: CreateTenantTokenInput) => Effect.Effect<Api.CreateTokenResponse, ApiRequestError, never>;
|
|
719
|
-
readonly revokeTenantToken: (credentials: ApiCredentials, tokenId: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
720
|
-
}, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
721
|
-
declare const tokensApiLayer: Layer.Layer<TokensApi, never, HttpClient.HttpClient | ApiAuthorization>;
|
|
722
|
-
//#endregion
|
|
723
511
|
//#region src/users/service.d.ts
|
|
724
512
|
type Call<A> = Effect.Effect<A, ApiRequestError>;
|
|
725
|
-
interface
|
|
513
|
+
interface UsersFilter {
|
|
726
514
|
limit?: number;
|
|
727
|
-
cursor?: string;
|
|
728
515
|
query?: string;
|
|
729
516
|
disabled?: "active" | "disabled" | "all";
|
|
730
517
|
}
|
|
518
|
+
type UsersListParams = UsersFilter & PageCursor;
|
|
519
|
+
type UsersList = PaginatedList<UsersFilter, User>;
|
|
731
520
|
interface UserInput {
|
|
732
521
|
email: string | null;
|
|
733
522
|
displayName: string;
|
|
734
523
|
isSystemAdmin: boolean;
|
|
735
524
|
}
|
|
736
525
|
declare const UsersApi_base: Context.ServiceClass<UsersApi, "@aperture-browser/api-client/UsersApi", {
|
|
737
|
-
readonly listUsers:
|
|
526
|
+
readonly listUsers: UsersList["list"];
|
|
527
|
+
readonly streamUsers: UsersList["stream"];
|
|
528
|
+
readonly listAllUsers: UsersList["listAll"];
|
|
738
529
|
readonly createUser: (credentials: ApiCredentials, input: UserInput) => Call<User>;
|
|
739
530
|
readonly getUser: (credentials: ApiCredentials, userId: string) => Call<User>;
|
|
740
531
|
readonly updateUser: (credentials: ApiCredentials, userId: string, input: UserInput) => Call<User>;
|
|
@@ -742,15 +533,217 @@ declare const UsersApi_base: Context.ServiceClass<UsersApi, "@aperture-browser/a
|
|
|
742
533
|
readonly disableUser: (credentials: ApiCredentials, userId: string) => Call<User>;
|
|
743
534
|
readonly restoreUser: (credentials: ApiCredentials, userId: string) => Call<User>;
|
|
744
535
|
readonly listUserMemberships: (credentials: ApiCredentials, userId: string) => Call<ReadonlyArray<TenantMembership>>;
|
|
536
|
+
readonly listTenantMemberships: (credentials: ApiCredentials, tenantId: string) => Call<ReadonlyArray<TenantMembership>>;
|
|
745
537
|
readonly upsertTenantMembership: (credentials: ApiCredentials, tenantId: string, userId: string, scopes: readonly string[]) => Call<TenantMembership>;
|
|
746
538
|
readonly deleteTenantMembership: (credentials: ApiCredentials, tenantId: string, userId: string) => Call<void>;
|
|
747
539
|
}>;
|
|
748
540
|
/** User administration and tenant memberships. */
|
|
749
541
|
declare class UsersApi extends UsersApi_base {}
|
|
750
542
|
//#endregion
|
|
543
|
+
//#region src/client.d.ts
|
|
544
|
+
type CredentialedMethod = (credentials: ApiCredentials, ...args: never[]) => unknown;
|
|
545
|
+
/** A service whose methods have their leading credentials argument already applied. */
|
|
546
|
+
type WithCredentials<S> = { readonly [K in keyof S]: S[K] extends ((credentials: ApiCredentials, ...args: infer Args) => infer Result) ? (...args: Args) => Result : never };
|
|
547
|
+
/** Binds `credentials` as the first argument of every method of `service`. */
|
|
548
|
+
declare function withCredentials<S extends { readonly [K in keyof S]: CredentialedMethod }>(service: S, credentials: ApiCredentials): WithCredentials<S>;
|
|
549
|
+
declare const ApertureClient_base: Context.ServiceClass<ApertureClient, "@aperture-browser/api-client/ApertureClient", {
|
|
550
|
+
readonly sessions: WithCredentials<SessionsApi["Service"]>;
|
|
551
|
+
readonly snapshots: WithCredentials<SnapshotsApi["Service"]>;
|
|
552
|
+
readonly tenants: WithCredentials<TenantsApi["Service"]>;
|
|
553
|
+
readonly users: WithCredentials<UsersApi["Service"]>;
|
|
554
|
+
readonly tokens: WithCredentials<TokensApi["Service"]>;
|
|
555
|
+
readonly events: WithCredentials<EventsApi["Service"]>; /** The calls of AuthApi that work with API credentials rather than a browser login. */
|
|
556
|
+
readonly auth: {
|
|
557
|
+
readonly getAuthMe: () => Effect.Effect<AuthMeResponse, ApiRequestError>;
|
|
558
|
+
};
|
|
559
|
+
readonly health: HealthApi["Service"];
|
|
560
|
+
}>;
|
|
561
|
+
/**
|
|
562
|
+
* The credentialed API services with one set of credentials bound, for callers that always
|
|
563
|
+
* act as the same principal, such as a server holding one API token.
|
|
564
|
+
*/
|
|
565
|
+
declare class ApertureClient extends ApertureClient_base {}
|
|
566
|
+
declare const makeApertureClient: (credentials: ApiCredentials) => Effect.Effect<{
|
|
567
|
+
readonly sessions: WithCredentials<SessionsApi["Service"]>;
|
|
568
|
+
readonly snapshots: WithCredentials<SnapshotsApi["Service"]>;
|
|
569
|
+
readonly tenants: WithCredentials<TenantsApi["Service"]>;
|
|
570
|
+
readonly users: WithCredentials<UsersApi["Service"]>;
|
|
571
|
+
readonly tokens: WithCredentials<TokensApi["Service"]>;
|
|
572
|
+
readonly events: WithCredentials<EventsApi["Service"]>; /** The calls of AuthApi that work with API credentials rather than a browser login. */
|
|
573
|
+
readonly auth: {
|
|
574
|
+
readonly getAuthMe: () => Effect.Effect<AuthMeResponse, ApiRequestError>;
|
|
575
|
+
};
|
|
576
|
+
readonly health: HealthApi["Service"];
|
|
577
|
+
}, never, AuthApi | EventsApi | UsersApi | HealthApi | SessionsApi | SnapshotsApi | TenantsApi | TokensApi>;
|
|
578
|
+
/** ApertureClient acting with `credentials`, over the HttpClient the app provides. */
|
|
579
|
+
declare const apertureClientLayer: (credentials: ApiCredentials) => Layer.Layer<ApertureClient, never, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
580
|
+
//#endregion
|
|
581
|
+
//#region src/events/layer.d.ts
|
|
582
|
+
declare const makeEventsApi: Effect.Effect<{
|
|
583
|
+
readonly listEvents: (credentials: ApiCredentials, params?: (EventsFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Event>, ApiRequestError, never>;
|
|
584
|
+
readonly streamEvents: (credentials: ApiCredentials, filter?: EventsFilter | undefined) => import("effect/Stream").Stream<Api.Event, ApiRequestError, never>;
|
|
585
|
+
readonly listAllEvents: (credentials: ApiCredentials, filter?: EventsFilter | undefined) => Effect.Effect<readonly Api.Event[], ApiRequestError, never>;
|
|
586
|
+
readonly listAuditEvents: (credentials: ApiCredentials, params?: (AuditEventsFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.AuditEvent>, ApiRequestError, never>;
|
|
587
|
+
readonly streamAuditEvents: (credentials: ApiCredentials, filter?: AuditEventsFilter | undefined) => import("effect/Stream").Stream<Api.AuditEvent, ApiRequestError, never>;
|
|
588
|
+
readonly listAllAuditEvents: (credentials: ApiCredentials, filter?: AuditEventsFilter | undefined) => Effect.Effect<readonly Api.AuditEvent[], ApiRequestError, never>;
|
|
589
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
590
|
+
declare const eventsApiLayer: Layer.Layer<EventsApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
591
|
+
//#endregion
|
|
592
|
+
//#region src/health/layer.d.ts
|
|
593
|
+
declare const makeHealthApi: Effect.Effect<{
|
|
594
|
+
readonly getHealth: () => Effect.Effect<Health, ApiRequestError>;
|
|
595
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
596
|
+
declare const healthApiLayer: Layer.Layer<HealthApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
597
|
+
//#endregion
|
|
598
|
+
//#region src/layer.d.ts
|
|
599
|
+
/**
|
|
600
|
+
* Every API service, sharing one ApiAuthorization. The services send requests through the
|
|
601
|
+
* HttpClient the app provides, decorated with each call's authorization.
|
|
602
|
+
*/
|
|
603
|
+
declare const apiClientLayer: Layer.Layer<AuthApi | ApiAuthorization | EventsApi | UsersApi | HealthApi | SessionsApi | SnapshotsApi | TenantsApi | TokensApi, never, HttpClient.HttpClient>;
|
|
604
|
+
type ApiServices = Layer.Success<typeof apiClientLayer>;
|
|
605
|
+
declare const baseUrlLayer: (baseUrl: string) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
|
|
606
|
+
//#endregion
|
|
607
|
+
//#region src/sessions/layer.d.ts
|
|
608
|
+
declare const makeSessionsApi: Effect.Effect<{
|
|
609
|
+
readonly listSessions: (credentials: ApiCredentials, params?: (SessionsFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Session>, ApiRequestError, never>;
|
|
610
|
+
readonly streamSessions: (credentials: ApiCredentials, filter?: SessionsFilter | undefined) => Stream.Stream<Api.Session, ApiRequestError, never>;
|
|
611
|
+
readonly listAllSessions: (credentials: ApiCredentials, filter?: SessionsFilter | undefined) => Effect.Effect<readonly Api.Session[], ApiRequestError, never>;
|
|
612
|
+
readonly getSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.Session, ApiRequestError, never>;
|
|
613
|
+
readonly getSessionsBulk: (credentials: ApiCredentials, sessionIds: readonly string[]) => Effect.Effect<Api.SessionBulkResponse, ApiRequestError, never>;
|
|
614
|
+
readonly createSession: (credentials: ApiCredentials, input: CreateSessionInput, options?: CreateSessionOptions) => Effect.Effect<Api.CreateSessionResult, ApiRequestError, never>;
|
|
615
|
+
readonly deleteSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
616
|
+
readonly reopenSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
617
|
+
readonly suspendSession: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
618
|
+
readonly rotateSessionToken: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
619
|
+
readonly rotateCollaborationCapability: (credentials: ApiCredentials, sessionId: string, role: "editor" | "viewer") => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
620
|
+
readonly replaceSessionTags: (credentials: ApiCredentials, sessionId: string, tags: Record<string, string>) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
621
|
+
readonly updateSessionProxy: (credentials: ApiCredentials, sessionId: string, proxy: UpdateProxyConfig) => Effect.Effect<Api.SessionMutation, ApiRequestError, never>;
|
|
622
|
+
readonly promoteSession: (credentials: ApiCredentials, sessionId: string, input: PromoteSessionInput) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
623
|
+
readonly getSessionCursor: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<Api.CursorVisibility, ApiRequestError, never>;
|
|
624
|
+
readonly setSessionCursor: (credentials: ApiCredentials, sessionId: string, visible: boolean) => Effect.Effect<Api.CursorVisibility, ApiRequestError, never>;
|
|
625
|
+
readonly listSessionRecordings: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<readonly Api.Recording[], ApiRequestError, never>;
|
|
626
|
+
readonly createSessionRecording: (credentials: ApiCredentials, sessionId: string, input: CreateSessionRecordingInput) => Effect.Effect<Api.Recording, ApiRequestError, never>;
|
|
627
|
+
readonly getSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string) => Effect.Effect<Api.Recording, ApiRequestError, never>;
|
|
628
|
+
readonly retargetSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, targetId: string) => Effect.Effect<Api.Recording, ApiRequestError, never>;
|
|
629
|
+
readonly stopSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string) => Effect.Effect<Api.SessionFile, ApiRequestError, never>;
|
|
630
|
+
readonly listSessionFiles: (credentials: ApiCredentials, sessionId: string) => Effect.Effect<readonly Api.SessionFileEntry[], ApiRequestError, never>;
|
|
631
|
+
readonly uploadSessionFiles: (credentials: ApiCredentials, sessionId: string, files: ReadonlyArray<SessionUploadFile>, options?: UploadSessionFilesOptions) => Effect.Effect<readonly Api.SessionFile[], ApiRequestError, never>;
|
|
632
|
+
readonly deleteSessionFile: (credentials: ApiCredentials, sessionId: string, relativePath: string, options?: DeleteSessionFileOptions) => Effect.Effect<void, ApiRequestError, never>;
|
|
633
|
+
readonly moveSessionFile: (credentials: ApiCredentials, sessionId: string, input: MoveSessionFileInput) => Effect.Effect<Api.SessionFileEntry, ApiRequestError, never>;
|
|
634
|
+
readonly createSessionDirectory: (credentials: ApiCredentials, sessionId: string, relativePath: string) => Effect.Effect<Api.SessionDirectory, ApiRequestError, never>;
|
|
635
|
+
readonly createSessionFileDownloadURL: (credentials: ApiCredentials, sessionId: string, input: SessionFileDownloadURLInput) => Effect.Effect<Api.SessionFileDownloadURL, ApiRequestError, never>;
|
|
636
|
+
readonly getBrowserChannels: (credentials: ApiCredentials) => Effect.Effect<Api.BrowserChannels, ApiRequestError, never>;
|
|
637
|
+
readonly getBrowserStatus: (credentials: ApiCredentials, sessionId: string, sessionToken?: string) => Effect.Effect<{
|
|
638
|
+
readonly sessionId: string;
|
|
639
|
+
readonly cdpUrl: string;
|
|
640
|
+
readonly media: {
|
|
641
|
+
readonly mode: "auto" | "cdp";
|
|
642
|
+
readonly webrtcProducer: boolean;
|
|
643
|
+
readonly iceServers?: readonly {
|
|
644
|
+
readonly urls: readonly string[];
|
|
645
|
+
readonly username?: string | undefined;
|
|
646
|
+
readonly credential?: string | undefined;
|
|
647
|
+
}[] | undefined;
|
|
648
|
+
};
|
|
649
|
+
readonly targets: readonly {
|
|
650
|
+
readonly targetId: string;
|
|
651
|
+
readonly generation: number;
|
|
652
|
+
readonly state: "pending" | "ready" | "unavailable" | "closed";
|
|
653
|
+
readonly title: string;
|
|
654
|
+
readonly url: string;
|
|
655
|
+
readonly viewport: {
|
|
656
|
+
readonly width: number;
|
|
657
|
+
readonly height: number;
|
|
658
|
+
readonly deviceScaleFactor: number;
|
|
659
|
+
readonly contentWidth: number;
|
|
660
|
+
readonly contentHeight: number;
|
|
661
|
+
readonly canvasWidth: number;
|
|
662
|
+
readonly canvasHeight: number;
|
|
663
|
+
};
|
|
664
|
+
}[];
|
|
665
|
+
}, ApiRequestError, never>;
|
|
666
|
+
readonly downloadSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Effect.Effect<DownloadedFile, ApiRequestError, never>;
|
|
667
|
+
readonly streamSessionRecording: (credentials: ApiCredentials, sessionId: string, recordingId: string, sessionToken?: string) => Stream.Stream<Uint8Array, ApiRequestError>;
|
|
668
|
+
readonly uploadLiveSessionFiles: (credentials: ApiCredentials, sessionId: string, files: ReadonlyArray<SessionUploadFile>, sessionToken?: string) => Effect.Effect<readonly Api.SessionFile[], ApiRequestError, never>;
|
|
669
|
+
readonly setSessionViewport: (credentials: ApiCredentials, sessionId: string, input: SetViewportInput, sessionToken?: string) => Effect.Effect<Api.TargetViewport, ApiRequestError, never>;
|
|
670
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
671
|
+
declare const sessionsApiLayer: Layer.Layer<SessionsApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
672
|
+
//#endregion
|
|
673
|
+
//#region src/sessions/tree.d.ts
|
|
674
|
+
/**
|
|
675
|
+
* The top-level directories the session writes into. They always exist and cannot be
|
|
676
|
+
* deleted, moved or renamed.
|
|
677
|
+
*/
|
|
678
|
+
declare const sessionFileRootDirectories: readonly ["downloads", "recordings", "uploads", "outputs"];
|
|
679
|
+
interface SessionFileDirectoryNode {
|
|
680
|
+
readonly kind: "directory";
|
|
681
|
+
readonly name: string;
|
|
682
|
+
readonly relativePath: string;
|
|
683
|
+
/** Absent for a directory known only from the paths of legacy files. */
|
|
684
|
+
readonly directory: SessionDirectory | undefined;
|
|
685
|
+
readonly children: ReadonlyArray<SessionFileTreeNode>;
|
|
686
|
+
}
|
|
687
|
+
interface SessionFileNode {
|
|
688
|
+
readonly kind: "file";
|
|
689
|
+
readonly name: string;
|
|
690
|
+
readonly relativePath: string;
|
|
691
|
+
readonly file: SessionFile;
|
|
692
|
+
}
|
|
693
|
+
type SessionFileTreeNode = SessionFileDirectoryNode | SessionFileNode;
|
|
694
|
+
/**
|
|
695
|
+
* Arranges `listSessionFiles` results into a tree: directories first, then files, each
|
|
696
|
+
* sorted by name. Empty directories appear because the listing includes them.
|
|
697
|
+
*/
|
|
698
|
+
declare function sessionFileTree(entries: ReadonlyArray<SessionFileEntry>): ReadonlyArray<SessionFileTreeNode>;
|
|
699
|
+
//#endregion
|
|
700
|
+
//#region src/snapshots/layer.d.ts
|
|
701
|
+
declare const makeSnapshotsApi: Effect.Effect<{
|
|
702
|
+
readonly listSnapshots: (credentials: ApiCredentials, params?: (SnapshotsFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Snapshot>, ApiRequestError, never>;
|
|
703
|
+
readonly streamSnapshots: (credentials: ApiCredentials, filter?: SnapshotsFilter | undefined) => Stream.Stream<Api.Snapshot, ApiRequestError, never>;
|
|
704
|
+
readonly listAllSnapshots: (credentials: ApiCredentials, filter?: SnapshotsFilter | undefined) => Effect.Effect<readonly Api.Snapshot[], ApiRequestError, never>;
|
|
705
|
+
readonly getSnapshotByName: (credentials: ApiCredentials, name: string) => Effect.Effect<import("effect/Option").Option<Api.Snapshot>, ApiRequestError, never>;
|
|
706
|
+
readonly updateSnapshot: (credentials: ApiCredentials, name: string, input: UpdateSnapshotInput) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
707
|
+
readonly replaceSnapshotTags: (credentials: ApiCredentials, name: string, tags: Record<string, string>) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
708
|
+
readonly deleteSnapshot: (credentials: ApiCredentials, name: string) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
709
|
+
readonly restoreSnapshot: (credentials: ApiCredentials, name: string) => Effect.Effect<Api.SnapshotMutation, ApiRequestError, never>;
|
|
710
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
711
|
+
declare const snapshotsApiLayer: Layer.Layer<SnapshotsApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
712
|
+
//#endregion
|
|
713
|
+
//#region src/tenants/layer.d.ts
|
|
714
|
+
declare const makeTenantsApi: Effect.Effect<{
|
|
715
|
+
readonly listTenants: (credentials: ApiCredentials, params?: (TenantsFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Tenant>, ApiRequestError, never>;
|
|
716
|
+
readonly streamTenants: (credentials: ApiCredentials, filter?: TenantsFilter | undefined) => import("effect/Stream").Stream<Api.Tenant, ApiRequestError, never>;
|
|
717
|
+
readonly listAllTenants: (credentials: ApiCredentials, filter?: TenantsFilter | undefined) => Effect.Effect<readonly Api.Tenant[], ApiRequestError, never>;
|
|
718
|
+
readonly createTenant: (credentials: ApiCredentials, input: Api.TenantInput) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
719
|
+
readonly updateTenant: (credentials: ApiCredentials, tenantId: string, input: Api.TenantInput) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
720
|
+
readonly deleteTenant: (credentials: ApiCredentials, tenantId: string) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
721
|
+
readonly restoreTenant: (credentials: ApiCredentials, tenantId: string) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
722
|
+
readonly getCurrentTenant: (credentials: ApiCredentials) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
723
|
+
readonly updateCurrentTenant: (credentials: ApiCredentials, input: Api.TenantInput) => Effect.Effect<Api.Tenant, ApiRequestError, never>;
|
|
724
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
725
|
+
declare const tenantsApiLayer: Layer.Layer<TenantsApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
726
|
+
//#endregion
|
|
727
|
+
//#region src/tokens/layer.d.ts
|
|
728
|
+
declare const makeTokensApi: Effect.Effect<{
|
|
729
|
+
readonly listAdminTokens: (credentials: ApiCredentials, params?: (TokensFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Token>, ApiRequestError, never>;
|
|
730
|
+
readonly streamAdminTokens: (credentials: ApiCredentials, filter?: TokensFilter | undefined) => import("effect/Stream").Stream<Api.Token, ApiRequestError, never>;
|
|
731
|
+
readonly listAllAdminTokens: (credentials: ApiCredentials, filter?: TokensFilter | undefined) => Effect.Effect<readonly Api.Token[], ApiRequestError, never>;
|
|
732
|
+
readonly createAdminToken: (credentials: ApiCredentials, input: CreateAdminTokenInput) => Effect.Effect<Api.CreateTokenResponse, ApiRequestError, never>;
|
|
733
|
+
readonly revokeAdminToken: (credentials: ApiCredentials, tokenId: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
734
|
+
readonly listTenantTokens: (credentials: ApiCredentials, params?: (TokensFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.Token>, ApiRequestError, never>;
|
|
735
|
+
readonly streamTenantTokens: (credentials: ApiCredentials, filter?: TokensFilter | undefined) => import("effect/Stream").Stream<Api.Token, ApiRequestError, never>;
|
|
736
|
+
readonly listAllTenantTokens: (credentials: ApiCredentials, filter?: TokensFilter | undefined) => Effect.Effect<readonly Api.Token[], ApiRequestError, never>;
|
|
737
|
+
readonly createTenantToken: (credentials: ApiCredentials, input: CreateTenantTokenInput) => Effect.Effect<Api.CreateTokenResponse, ApiRequestError, never>;
|
|
738
|
+
readonly revokeTenantToken: (credentials: ApiCredentials, tokenId: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
739
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
740
|
+
declare const tokensApiLayer: Layer.Layer<TokensApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
741
|
+
//#endregion
|
|
751
742
|
//#region src/users/layer.d.ts
|
|
752
743
|
declare const makeUsersApi: Effect.Effect<{
|
|
753
|
-
readonly listUsers: (credentials: ApiCredentials, params?:
|
|
744
|
+
readonly listUsers: (credentials: ApiCredentials, params?: (UsersFilter & PageCursor) | undefined) => Effect.Effect<PaginatedResponse<Api.User>, ApiRequestError, never>;
|
|
745
|
+
readonly streamUsers: (credentials: ApiCredentials, filter?: UsersFilter | undefined) => import("effect/Stream").Stream<Api.User, ApiRequestError, never>;
|
|
746
|
+
readonly listAllUsers: (credentials: ApiCredentials, filter?: UsersFilter | undefined) => Effect.Effect<readonly Api.User[], ApiRequestError, never>;
|
|
754
747
|
readonly createUser: (credentials: ApiCredentials, input: UserInput) => Effect.Effect<Api.User, ApiRequestError, never>;
|
|
755
748
|
readonly getUser: (credentials: ApiCredentials, userId: string) => Effect.Effect<Api.User, ApiRequestError, never>;
|
|
756
749
|
readonly updateUser: (credentials: ApiCredentials, userId: string, input: UserInput) => Effect.Effect<Api.User, ApiRequestError, never>;
|
|
@@ -758,10 +751,11 @@ declare const makeUsersApi: Effect.Effect<{
|
|
|
758
751
|
readonly disableUser: (credentials: ApiCredentials, userId: string) => Effect.Effect<Api.User, ApiRequestError, never>;
|
|
759
752
|
readonly restoreUser: (credentials: ApiCredentials, userId: string) => Effect.Effect<Api.User, ApiRequestError, never>;
|
|
760
753
|
readonly listUserMemberships: (credentials: ApiCredentials, userId: string) => Effect.Effect<readonly Api.TenantMembership[], ApiRequestError, never>;
|
|
754
|
+
readonly listTenantMemberships: (credentials: ApiCredentials, tenantId: string) => Effect.Effect<readonly Api.TenantMembership[], ApiRequestError, never>;
|
|
761
755
|
readonly upsertTenantMembership: (credentials: ApiCredentials, tenantId: string, userId: string, scopes: readonly string[]) => Effect.Effect<Api.TenantMembership, ApiRequestError, never>;
|
|
762
756
|
readonly deleteTenantMembership: (credentials: ApiCredentials, tenantId: string, userId: string) => Effect.Effect<void, ApiRequestError, never>;
|
|
763
|
-
}, never, HttpClient.HttpClient
|
|
764
|
-
declare const usersApiLayer: Layer.Layer<UsersApi, never, HttpClient.HttpClient
|
|
757
|
+
}, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
758
|
+
declare const usersApiLayer: Layer.Layer<UsersApi, never, ApiAuthorization | HttpClient.HttpClient>;
|
|
765
759
|
//#endregion
|
|
766
|
-
export { ApiAuthorization, ApiCredentials, ApiErrorBody, ApiRequestError, ApiServices, ApiToken, AuthApi, AuthMePrincipal, AuthMeResponse, AuthMeTenant, Authorization, BrowserChannel, BrowserChannelsResponse, BrowserStatus, CreateAdminTokenInput, CreateSessionInput, CreateSessionOptions, CreateSessionResponse, CreateTenantTokenInput, CreateTokenResponse, DownloadedFile, EventsApi, EventsListParams, EventsPage, IceServer, InitialBrowserStorageState, InitialBrowserTarget,
|
|
760
|
+
export { ApertureClient, ApiAuthorization, ApiCredentials, ApiErrorBody, ApiRequestError, ApiServices, ApiToken, AuditEvent, AuditEventsFilter, AuditEventsListParams, AuditEventsPage, AuthApi, AuthMePrincipal, AuthMeResponse, AuthMeTenant, Authorization, BrowserChannel, BrowserChannelsResponse, BrowserStatus, CreateAdminTokenInput, CreateSessionInput, CreateSessionOptions, CreateSessionRecordingInput, CreateSessionResponse, CreateTenantTokenInput, CreateTokenResponse, CursorVisibility, DeleteSessionFileOptions, DownloadedFile, EventsApi, EventsFilter, EventsListParams, EventsPage, Health, HealthApi, IceServer, InitialBrowserStorageState, InitialBrowserTarget, LiveSessionErrorBody, LoginMethods, MoveSessionFileInput, PageCursor, PageMeta, PaginatedList, PaginatedResponse, Passkey, PasskeyCredentialJSON, PasskeyLoginOptions, PasskeyMutation, PasskeyRegistrationOptions, Passkeys, PasswordLoginResponse, PromoteSessionInput, PromoteSessionResponse, ProxyConfig, ProxyRule, ProxyUpstream, Recording, RecoveryCodes, ResourceEvent, ResourceGrant, ResourceMode, Scope, SecurityStatus, Session, SessionDirectory, SessionFile, SessionFileDirectoryNode, SessionFileDownloadURL, SessionFileDownloadURLInput, SessionFileEntry, SessionFileNode, SessionFileTreeNode, SessionMedia, SessionMutationResponse, SessionProxy, SessionRecording, SessionStatus, SessionUploadFile, SessionsApi, SessionsBulkResponse, SessionsFilter, SessionsListParams, SessionsPage, SetViewportInput, Snapshot, SnapshotMutationResponse, SnapshotsApi, SnapshotsFilter, SnapshotsListParams, SnapshotsPage, TENANT_HEADER, TOTPEnrollment, TagFilterValue, TargetViewport, Tenant, TenantHeaderMode, TenantMembership, TenantScope, TenantsApi, TenantsFilter, TenantsListParams, TenantsPage, TokensApi, TokensFilter, TokensListParams, TokensPage, UpdateProxyConfig, UpdateSnapshotInput, UploadSessionFilesOptions, User, UserInput, UserInvitation, UsersApi, UsersFilter, UsersListParams, UsersPage, WithCredentials, apertureClientLayer, apiAuthorizationLayer, apiClientLayer, authApiLayer, authorizedHttpClientLayer, baseUrlLayer, compactQuery, defaultListLimit, eventsApiLayer, flattenInfinitePages, getNextPageParam, healthApiLayer, listQueryDefaults, makeApertureClient, makeApiAuthorization, makeAuthApi, makeEventsApi, makeHealthApi, makeSessionsApi, makeSnapshotsApi, makeTenantsApi, makeTokensApi, makeUsersApi, paginated, resolveTenantHeader, sessionFileRootDirectories, sessionFileTree, sessionsApiLayer, snapshotsApiLayer, tagQuery, tenantsApiLayer, toApiRequestError, tokensApiLayer, usersApiLayer, webSessionCredentials, withCredentials };
|
|
767
761
|
//# sourceMappingURL=index.d.ts.map
|