@hexclave/next 1.0.29 → 1.0.32
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/dist/components-page/oauth-callback.d.ts.map +1 -1
- package/dist/components-page/oauth-callback.js +2 -0
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/oauth-callback.test.js +3 -1
- package/dist/components-page/oauth-callback.test.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.d.ts.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +2 -0
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.test.js +3 -1
- package/dist/esm/components-page/oauth-callback.test.js.map +1 -1
- package/dist/esm/generated/quetzal-translations.d.ts +2 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -8
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +15 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +30 -15
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +8 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -0
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +13 -0
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.d.ts +4 -0
- package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -1
- package/dist/generated/quetzal-translations.d.ts +2 -2
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -0
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -8
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/common.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +15 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +30 -15
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js +8 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -0
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +13 -0
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/lib/hexclave-app/teams/index.d.ts +4 -0
- package/dist/lib/hexclave-app/teams/index.d.ts.map +1 -1
- package/dist/lib/hexclave-app/teams/index.js.map +1 -1
- package/package.json +4 -4
- package/src/components-page/oauth-callback.test.tsx +4 -0
- package/src/components-page/oauth-callback.tsx +6 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +3 -5
- package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +35 -19
- package/src/lib/hexclave-app/apps/implementations/session-replay.ts +16 -1
- package/src/lib/hexclave-app/apps/interfaces/client-app.ts +1 -0
- package/src/lib/hexclave-app/apps/interfaces/server-app.ts +5 -0
- package/src/lib/hexclave-app/teams/index.ts +4 -0
|
@@ -114,6 +114,9 @@ const MAX_APPROX_BYTES_PER_BATCH = 512_000;
|
|
|
114
114
|
// envelope overhead (browser_session_id, timestamps, wrapper keys, etc.).
|
|
115
115
|
const MAX_FLUSH_PAYLOAD_BYTES = 900_000;
|
|
116
116
|
|
|
117
|
+
// Reused across the emit hot path to avoid per-event allocation.
|
|
118
|
+
const textEncoder = new TextEncoder();
|
|
119
|
+
|
|
117
120
|
export type StoredSession = {
|
|
118
121
|
session_id: string,
|
|
119
122
|
created_at_ms: number,
|
|
@@ -290,6 +293,17 @@ export class SessionRecorder {
|
|
|
290
293
|
// When _flushInProgress blocked earlier flushes, events can accumulate
|
|
291
294
|
// well past MAX_APPROX_BYTES_PER_BATCH; sending them all at once would
|
|
292
295
|
// exceed the server's 1MB body limit (413).
|
|
296
|
+
// A single event over the limit can't be sent (rrweb events aren't splittable); drop it and move on.
|
|
297
|
+
const firstSize = allSizes[offset] ?? throwErr("_eventSizes out of sync with _events — this should never happen");
|
|
298
|
+
if (firstSize > MAX_FLUSH_PAYLOAD_BYTES) {
|
|
299
|
+
captureWarning(
|
|
300
|
+
"SessionRecorder.flush",
|
|
301
|
+
new Error(`Dropping oversized session replay event (${firstSize} bytes > ${MAX_FLUSH_PAYLOAD_BYTES} byte limit); it cannot be sent without a 413.`),
|
|
302
|
+
);
|
|
303
|
+
offset += 1;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
|
|
293
307
|
let batchBytes = 0;
|
|
294
308
|
let batchEnd = offset;
|
|
295
309
|
for (let i = offset; i < allEvents.length; i++) {
|
|
@@ -388,7 +402,8 @@ export class SessionRecorder {
|
|
|
388
402
|
}
|
|
389
403
|
}
|
|
390
404
|
|
|
391
|
-
|
|
405
|
+
// Measure UTF-8 byte length to match the server's byte limit (.length counts UTF-16 units, undercounting multibyte content).
|
|
406
|
+
const eventSize = textEncoder.encode(JSON.stringify(event)).byteLength;
|
|
392
407
|
this._events.push(event);
|
|
393
408
|
this._eventSizes.push(eventSize);
|
|
394
409
|
this._approxBytes += eventSize;
|
|
@@ -136,6 +136,7 @@ export type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId ex
|
|
|
136
136
|
redirectToUrl(url: string | URL, options?: { replace?: boolean }): Promise<void>,
|
|
137
137
|
redirectToHandler(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<void>,
|
|
138
138
|
signInWithTokens(tokens: { accessToken: string, refreshToken: string }): Promise<void>,
|
|
139
|
+
awaitPendingAuthResolutions(): Promise<void>,
|
|
139
140
|
},
|
|
140
141
|
}
|
|
141
142
|
& AsyncStoreProperty<"project", [], Project, false>
|
|
@@ -35,6 +35,11 @@ export type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId ex
|
|
|
35
35
|
({ productId: string } | { product: InlineProduct }) &
|
|
36
36
|
{ quantity?: number }
|
|
37
37
|
)): Promise<void>,
|
|
38
|
+
createCheckoutUrl(options: (
|
|
39
|
+
({ userId: string } | { teamId: string } | { customCustomerId: string }) &
|
|
40
|
+
({ productId: string } | { product: InlineProduct }) &
|
|
41
|
+
{ returnUrl?: string }
|
|
42
|
+
)): Promise<string>,
|
|
38
43
|
|
|
39
44
|
useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): ProjectCurrentServerUser<ProjectId>,
|
|
40
45
|
useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): ProjectCurrentServerUser<ProjectId>,
|
|
@@ -139,6 +139,10 @@ type ServerListUsersOptionsBase = {
|
|
|
139
139
|
* Free-text search. Matches user ID (exact UUID), display name, and contact channels (e.g. primary email).
|
|
140
140
|
*/
|
|
141
141
|
query?: string,
|
|
142
|
+
/**
|
|
143
|
+
* Exclude users whose primary email domain matches one of these exact domains.
|
|
144
|
+
*/
|
|
145
|
+
excludedEmailDomains?: string[],
|
|
142
146
|
/**
|
|
143
147
|
* Only return users who are members of the given team.
|
|
144
148
|
*/
|