@rool-dev/sdk 0.12.4 → 2.0.0-dev.4adc2c2
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 +436 -761
- package/dist/agents.d.ts +130 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +348 -0
- package/dist/agents.js.map +1 -0
- package/dist/auth-base.d.ts +43 -88
- package/dist/auth-base.d.ts.map +1 -1
- package/dist/auth-base.js +178 -298
- package/dist/auth-base.js.map +1 -1
- package/dist/auth-browser.d.ts +7 -25
- package/dist/auth-browser.d.ts.map +1 -1
- package/dist/auth-browser.js +45 -82
- package/dist/auth-browser.js.map +1 -1
- package/dist/auth-native.d.ts +9 -56
- package/dist/auth-native.d.ts.map +1 -1
- package/dist/auth-native.js +88 -177
- package/dist/auth-native.js.map +1 -1
- package/dist/auth-node.d.ts +32 -32
- package/dist/auth-node.d.ts.map +1 -1
- package/dist/auth-node.js +339 -255
- package/dist/auth-node.js.map +1 -1
- package/dist/auth-url.d.ts +6 -0
- package/dist/auth-url.d.ts.map +1 -0
- package/dist/auth-url.js +30 -0
- package/dist/auth-url.js.map +1 -0
- package/dist/client.d.ts +35 -277
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +275 -620
- package/dist/client.js.map +1 -1
- package/dist/events.d.ts +40 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +175 -0
- package/dist/events.js.map +1 -0
- package/dist/files.d.ts +170 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +846 -0
- package/dist/files.js.map +1 -0
- package/dist/index.d.ts +16 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -19
- package/dist/index.js.map +1 -1
- package/dist/machine.d.ts +49 -0
- package/dist/machine.d.ts.map +1 -0
- package/dist/machine.js +142 -0
- package/dist/machine.js.map +1 -0
- package/dist/problem.d.ts +11 -0
- package/dist/problem.d.ts.map +1 -0
- package/dist/problem.js +20 -0
- package/dist/problem.js.map +1 -0
- package/dist/structured.d.ts +84 -0
- package/dist/structured.d.ts.map +1 -0
- package/dist/structured.js +405 -0
- package/dist/structured.js.map +1 -0
- package/dist/types.d.ts +119 -520
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -16
- package/dist/auth.d.ts +0 -85
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -181
- package/dist/auth.js.map +0 -1
- package/dist/client-info.d.ts +0 -18
- package/dist/client-info.d.ts.map +0 -1
- package/dist/client-info.js +0 -25
- package/dist/client-info.js.map +0 -1
- package/dist/event-emitter.d.ts +0 -45
- package/dist/event-emitter.d.ts.map +0 -1
- package/dist/event-emitter.js +0 -86
- package/dist/event-emitter.js.map +0 -1
- package/dist/graphql.d.ts +0 -90
- package/dist/graphql.d.ts.map +0 -1
- package/dist/graphql.js +0 -463
- package/dist/graphql.js.map +0 -1
- package/dist/logger.d.ts +0 -13
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -17
- package/dist/logger.js.map +0 -1
- package/dist/path.d.ts +0 -6
- package/dist/path.d.ts.map +0 -1
- package/dist/path.js +0 -47
- package/dist/path.js.map +0 -1
- package/dist/reroute.d.ts +0 -22
- package/dist/reroute.d.ts.map +0 -1
- package/dist/reroute.js +0 -70
- package/dist/reroute.js.map +0 -1
- package/dist/rest.d.ts +0 -54
- package/dist/rest.d.ts.map +0 -1
- package/dist/rest.js +0 -171
- package/dist/rest.js.map +0 -1
- package/dist/router.d.ts +0 -20
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -54
- package/dist/router.js.map +0 -1
- package/dist/space-session.d.ts +0 -30
- package/dist/space-session.d.ts.map +0 -1
- package/dist/space-session.js +0 -83
- package/dist/space-session.js.map +0 -1
- package/dist/space.d.ts +0 -161
- package/dist/space.d.ts.map +0 -1
- package/dist/space.js +0 -618
- package/dist/space.js.map +0 -1
- package/dist/subscription.d.ts +0 -36
- package/dist/subscription.d.ts.map +0 -1
- package/dist/subscription.js +0 -419
- package/dist/subscription.js.map +0 -1
- package/dist/webdav.d.ts +0 -171
- package/dist/webdav.d.ts.map +0 -1
- package/dist/webdav.js +0 -481
- package/dist/webdav.js.map +0 -1
package/dist/path.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAEtD,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAA4B,EAAE;IACvE,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,OAAO;QAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAEvC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACpE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACzE,KAAK,GAAG,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO;YACpB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YACzB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,gBAAgB,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/reroute.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare function isThrowRetryable(method?: string): boolean;
|
|
2
|
-
export interface RerouteOptions {
|
|
3
|
-
/** Issue the request against the current (possibly just-rerouted) node. */
|
|
4
|
-
send: () => Promise<Response>;
|
|
5
|
-
/** Re-resolve the owning node and update client URL state. Throws if it fails. */
|
|
6
|
-
reroute?: () => Promise<void>;
|
|
7
|
-
/**
|
|
8
|
-
* Whether the request may be re-sent after a thrown fetch (opaque network/CORS
|
|
9
|
-
* failure). Only true for idempotent requests — see THROW_RETRYABLE.
|
|
10
|
-
*/
|
|
11
|
-
retryOnThrow: boolean;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Fetch with shard-reroute retries. A node being drained returns a readable
|
|
15
|
-
* 421/503: re-resolve the owner and retry. A node that has fully rolled away no
|
|
16
|
-
* longer answers, so the LB's CORS-less 5xx makes fetch reject opaquely (no
|
|
17
|
-
* status to inspect); for idempotent requests we treat that throw as the same
|
|
18
|
-
* reroute signal, since otherwise the request keeps targeting a dead node and
|
|
19
|
-
* surfaces only as an opaque CORS error.
|
|
20
|
-
*/
|
|
21
|
-
export declare function fetchWithReroute(opts: RerouteOptions): Promise<Response>;
|
|
22
|
-
//# sourceMappingURL=reroute.d.ts.map
|
package/dist/reroute.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reroute.d.ts","sourceRoot":"","sources":["../src/reroute.ts"],"names":[],"mappings":"AAgBA,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+C9E"}
|
package/dist/reroute.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
const REQUEST_MAX_RETRIES = 6;
|
|
2
|
-
const RETRY_BASE_MS = 150;
|
|
3
|
-
const RETRY_MAX_MS = 5_000;
|
|
4
|
-
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
5
|
-
function retryBackoffMs(attempt) {
|
|
6
|
-
const ceil = Math.min(RETRY_BASE_MS * 2 ** attempt, RETRY_MAX_MS);
|
|
7
|
-
return ceil / 2 + Math.random() * (ceil / 2);
|
|
8
|
-
}
|
|
9
|
-
// Methods safe to re-send after a thrown fetch: reads, plus the idempotent
|
|
10
|
-
// writes. A node that has fully rolled away makes fetch reject opaquely instead
|
|
11
|
-
// of returning a readable 503, and we can't prove the request didn't execute, so
|
|
12
|
-
// we only re-send when re-sending is harmless. POST/MKCOL/MOVE/COPY/LOCK are not.
|
|
13
|
-
const THROW_RETRYABLE = new Set(['GET', 'HEAD', 'OPTIONS', 'PROPFIND', 'REPORT', 'PUT', 'DELETE']);
|
|
14
|
-
export function isThrowRetryable(method) {
|
|
15
|
-
return method ? THROW_RETRYABLE.has(method.toUpperCase()) : false;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Fetch with shard-reroute retries. A node being drained returns a readable
|
|
19
|
-
* 421/503: re-resolve the owner and retry. A node that has fully rolled away no
|
|
20
|
-
* longer answers, so the LB's CORS-less 5xx makes fetch reject opaquely (no
|
|
21
|
-
* status to inspect); for idempotent requests we treat that throw as the same
|
|
22
|
-
* reroute signal, since otherwise the request keeps targeting a dead node and
|
|
23
|
-
* surfaces only as an opaque CORS error.
|
|
24
|
-
*/
|
|
25
|
-
export async function fetchWithReroute(opts) {
|
|
26
|
-
const { send, reroute, retryOnThrow } = opts;
|
|
27
|
-
let response = null;
|
|
28
|
-
let thrown;
|
|
29
|
-
try {
|
|
30
|
-
response = await send();
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (!reroute || !retryOnThrow)
|
|
34
|
-
throw error;
|
|
35
|
-
thrown = error;
|
|
36
|
-
}
|
|
37
|
-
for (let attempt = 0; reroute && attempt < REQUEST_MAX_RETRIES &&
|
|
38
|
-
(response === null || response.status === 421 || response.status === 503); attempt++) {
|
|
39
|
-
await delay(retryBackoffMs(attempt));
|
|
40
|
-
try {
|
|
41
|
-
await reroute();
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
continue; // reroute itself failed (e.g. /route exhausted its own retries); keep backing off
|
|
45
|
-
}
|
|
46
|
-
try {
|
|
47
|
-
response = await send();
|
|
48
|
-
thrown = undefined;
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
if (!retryOnThrow)
|
|
52
|
-
throw error;
|
|
53
|
-
response = null;
|
|
54
|
-
thrown = error;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (response === null)
|
|
58
|
-
throw thrown;
|
|
59
|
-
// A suspended account is rejected on every authenticated request with 403 +
|
|
60
|
-
// { code: 'SUSPENDED', error }. Surface the server's message so callers'
|
|
61
|
-
// error toasts read well.
|
|
62
|
-
if (response.status === 403) {
|
|
63
|
-
const body = (await response.clone().json().catch(() => null));
|
|
64
|
-
if (body?.code === 'SUSPENDED') {
|
|
65
|
-
throw new Error(body.error ?? 'Your account has been suspended.');
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return response;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=reroute.js.map
|
package/dist/reroute.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reroute.js","sourceRoot":"","sources":["../src/reroute.ts"],"names":[],"mappings":"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"}
|
package/dist/rest.d.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { AuthManager } from './auth.js';
|
|
2
|
-
import type { GetObjectsResult, Gift, GiftClaimResult, GiftList, GiftPreview, GiftUpdate, InvitePreview, InviteRedeemResult } from './types.js';
|
|
3
|
-
import { type RoolClientInfo } from './client-info.js';
|
|
4
|
-
export type InviteErrorCode = 'INVITE_INVALID' | 'INVITE_EXPIRED' | 'INVITE_REVOKED' | 'INVITE_EXHAUSTED' | 'INVITE_EMAIL_MISMATCH';
|
|
5
|
-
export declare class InviteError extends Error {
|
|
6
|
-
readonly code: InviteErrorCode;
|
|
7
|
-
constructor(code: InviteErrorCode, message: string);
|
|
8
|
-
}
|
|
9
|
-
export type GiftErrorCode = 'gift_invalid' | 'gift_claimed';
|
|
10
|
-
export declare class GiftError extends Error {
|
|
11
|
-
readonly code: GiftErrorCode;
|
|
12
|
-
constructor(code: GiftErrorCode, message: string);
|
|
13
|
-
}
|
|
14
|
-
export interface RestClientConfig {
|
|
15
|
-
apiUrl: string;
|
|
16
|
-
authManager: AuthManager;
|
|
17
|
-
clientInfo?: RoolClientInfo;
|
|
18
|
-
/** Called on shard refusal/drain (421/503). Return the new API base URL. */
|
|
19
|
-
onRefused?: () => Promise<string>;
|
|
20
|
-
}
|
|
21
|
-
export declare class RestClient {
|
|
22
|
-
private apiUrl;
|
|
23
|
-
private authManager;
|
|
24
|
-
private onRefused?;
|
|
25
|
-
private clientInfo;
|
|
26
|
-
constructor(config: RestClientConfig);
|
|
27
|
-
/** Update the API base URL (used after shard rerouting). */
|
|
28
|
-
setApiUrl(apiUrl: string): void;
|
|
29
|
-
/** Wire the shard-reroute callback (used after shard rerouting). */
|
|
30
|
-
setOnRefused(onRefused: () => Promise<string>): void;
|
|
31
|
-
proxyFetch(spaceId: string, url: string, init?: {
|
|
32
|
-
method?: string;
|
|
33
|
-
headers?: Record<string, string>;
|
|
34
|
-
body?: unknown;
|
|
35
|
-
}): Promise<Response>;
|
|
36
|
-
getObjects(spaceId: string, paths: string[]): Promise<GetObjectsResult>;
|
|
37
|
-
importArchive(name: string, archive: Blob): Promise<string>;
|
|
38
|
-
/** Look up an invite by token. Works without authentication (join page before sign-in). */
|
|
39
|
-
previewInvite(token: string): Promise<InvitePreview>;
|
|
40
|
-
/** Redeem an invite for the authenticated user, joining (or upgrading in) the space. */
|
|
41
|
-
redeemInvite(token: string): Promise<InviteRedeemResult>;
|
|
42
|
-
/** Look up a gift by its code. Works without authentication (claim page before sign-up). */
|
|
43
|
-
previewGift(code: string): Promise<GiftPreview>;
|
|
44
|
-
/** Claim a gift for the authenticated user, granting what it holds. */
|
|
45
|
-
claimGift(code: string): Promise<GiftClaimResult>;
|
|
46
|
-
/** The authenticated user's gifts, spent and unspent. */
|
|
47
|
-
listGifts(): Promise<GiftList>;
|
|
48
|
-
/** Mint a new code for a gift; the old code and link stop working. */
|
|
49
|
-
rotateGiftCode(giftId: string): Promise<Gift>;
|
|
50
|
-
/** Update a gift's note and/or archived state. Returns the updated gift. */
|
|
51
|
-
updateGift(giftId: string, changes: GiftUpdate): Promise<Gift>;
|
|
52
|
-
private authenticatedFetch;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=rest.d.ts.map
|
package/dist/rest.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhG,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,CAAC;AAE5B,qBAAa,WAAY,SAAQ,KAAK;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;CAI5D;AAQD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5D,qBAAa,SAAU,SAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa;gBAAnB,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;CAI1D;AAWD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAiB;gBAEvB,MAAM,EAAE,gBAAgB;IAOpC,4DAA4D;IAC5D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,oEAAoE;IACpE,YAAY,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAI9C,UAAU,CACd,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3E,OAAO,CAAC,QAAQ,CAAC;IAed,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBvE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBjE,2FAA2F;IACrF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAM1D,wFAAwF;IAClF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ9D,4FAA4F;IACtF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMrD,uEAAuE;IACjE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQvD,yDAAyD;IACnD,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMpC,sEAAsE;IAChE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,4EAA4E;IACtE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAUtD,kBAAkB;CAgBjC"}
|
package/dist/rest.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { fetchWithReroute, isThrowRetryable } from './reroute.js';
|
|
2
|
-
import { addClientInfoHeaders, resolveClientInfo } from './client-info.js';
|
|
3
|
-
export class InviteError extends Error {
|
|
4
|
-
code;
|
|
5
|
-
constructor(code, message) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.code = code;
|
|
8
|
-
this.name = 'InviteError';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
async function throwInviteError(response) {
|
|
12
|
-
const body = await response.json().catch(() => null);
|
|
13
|
-
if (body?.code)
|
|
14
|
-
throw new InviteError(body.code, body.error ?? body.code);
|
|
15
|
-
throw new Error(`Invite request failed: ${response.status}`);
|
|
16
|
-
}
|
|
17
|
-
export class GiftError extends Error {
|
|
18
|
-
code;
|
|
19
|
-
constructor(code, message) {
|
|
20
|
-
super(message);
|
|
21
|
-
this.code = code;
|
|
22
|
-
this.name = 'GiftError';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
// Gift endpoints are v2: errors arrive as application/problem+json.
|
|
26
|
-
async function throwGiftError(response) {
|
|
27
|
-
const body = await response.json().catch(() => null);
|
|
28
|
-
if (body?.code?.startsWith('gift_')) {
|
|
29
|
-
throw new GiftError(body.code, body.detail ?? body.code);
|
|
30
|
-
}
|
|
31
|
-
throw new Error(`Gift request failed: ${response.status}${body?.detail ? ` ${body.detail}` : ''}`);
|
|
32
|
-
}
|
|
33
|
-
export class RestClient {
|
|
34
|
-
apiUrl;
|
|
35
|
-
authManager;
|
|
36
|
-
onRefused;
|
|
37
|
-
clientInfo;
|
|
38
|
-
constructor(config) {
|
|
39
|
-
this.apiUrl = config.apiUrl.replace(/\/+$/, '');
|
|
40
|
-
this.authManager = config.authManager;
|
|
41
|
-
this.onRefused = config.onRefused;
|
|
42
|
-
this.clientInfo = config.clientInfo ?? resolveClientInfo();
|
|
43
|
-
}
|
|
44
|
-
/** Update the API base URL (used after shard rerouting). */
|
|
45
|
-
setApiUrl(apiUrl) {
|
|
46
|
-
this.apiUrl = apiUrl.replace(/\/+$/, '');
|
|
47
|
-
}
|
|
48
|
-
/** Wire the shard-reroute callback (used after shard rerouting). */
|
|
49
|
-
setOnRefused(onRefused) {
|
|
50
|
-
this.onRefused = onRefused;
|
|
51
|
-
}
|
|
52
|
-
async proxyFetch(spaceId, url, init) {
|
|
53
|
-
const response = await this.authenticatedFetch(`/fetch/${encodeURIComponent(spaceId)}`, {
|
|
54
|
-
method: 'POST',
|
|
55
|
-
headers: { 'Content-Type': 'application/json' },
|
|
56
|
-
body: JSON.stringify({
|
|
57
|
-
url,
|
|
58
|
-
method: init?.method,
|
|
59
|
-
headers: init?.headers,
|
|
60
|
-
body: init?.body,
|
|
61
|
-
}),
|
|
62
|
-
});
|
|
63
|
-
return response;
|
|
64
|
-
}
|
|
65
|
-
async getObjects(spaceId, paths) {
|
|
66
|
-
const response = await this.authenticatedFetch(`/spaces/${encodeURIComponent(spaceId)}/getObjects`, {
|
|
67
|
-
method: 'POST',
|
|
68
|
-
headers: { 'Content-Type': 'application/json' },
|
|
69
|
-
body: JSON.stringify({ paths }),
|
|
70
|
-
});
|
|
71
|
-
if (!response.ok) {
|
|
72
|
-
const errorText = await response.text().catch(() => response.statusText);
|
|
73
|
-
throw new Error(`Failed to get objects: ${response.status} ${errorText}`);
|
|
74
|
-
}
|
|
75
|
-
const result = await response.json();
|
|
76
|
-
return {
|
|
77
|
-
objects: result.objects.map((object) => ({ path: object.path, body: object.body })),
|
|
78
|
-
missing: result.missing,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
async importArchive(name, archive) {
|
|
82
|
-
const formData = new FormData();
|
|
83
|
-
formData.append('name', name);
|
|
84
|
-
formData.append('archive', archive, 'archive.zip');
|
|
85
|
-
const response = await this.authenticatedFetch('/spaces/import', {
|
|
86
|
-
method: 'POST',
|
|
87
|
-
body: formData,
|
|
88
|
-
});
|
|
89
|
-
if (!response.ok) {
|
|
90
|
-
const errorText = await response.text().catch(() => response.statusText);
|
|
91
|
-
throw new Error(`Failed to import space: ${response.status} ${errorText}`);
|
|
92
|
-
}
|
|
93
|
-
const result = await response.json();
|
|
94
|
-
return result.spaceId;
|
|
95
|
-
}
|
|
96
|
-
/** Look up an invite by token. Works without authentication (join page before sign-in). */
|
|
97
|
-
async previewInvite(token) {
|
|
98
|
-
const response = await fetch(`${this.apiUrl}/invites/${encodeURIComponent(token)}`);
|
|
99
|
-
if (!response.ok)
|
|
100
|
-
await throwInviteError(response);
|
|
101
|
-
return await response.json();
|
|
102
|
-
}
|
|
103
|
-
/** Redeem an invite for the authenticated user, joining (or upgrading in) the space. */
|
|
104
|
-
async redeemInvite(token) {
|
|
105
|
-
const response = await this.authenticatedFetch(`/invites/${encodeURIComponent(token)}/redeem`, {
|
|
106
|
-
method: 'POST',
|
|
107
|
-
});
|
|
108
|
-
if (!response.ok)
|
|
109
|
-
await throwInviteError(response);
|
|
110
|
-
return await response.json();
|
|
111
|
-
}
|
|
112
|
-
/** Look up a gift by its code. Works without authentication (claim page before sign-up). */
|
|
113
|
-
async previewGift(code) {
|
|
114
|
-
const response = await fetch(`${this.apiUrl}/v2/gifts/${encodeURIComponent(code)}`);
|
|
115
|
-
if (!response.ok)
|
|
116
|
-
await throwGiftError(response);
|
|
117
|
-
return await response.json();
|
|
118
|
-
}
|
|
119
|
-
/** Claim a gift for the authenticated user, granting what it holds. */
|
|
120
|
-
async claimGift(code) {
|
|
121
|
-
const response = await this.authenticatedFetch(`/v2/gifts/${encodeURIComponent(code)}/claim`, {
|
|
122
|
-
method: 'POST',
|
|
123
|
-
});
|
|
124
|
-
if (!response.ok)
|
|
125
|
-
await throwGiftError(response);
|
|
126
|
-
return await response.json();
|
|
127
|
-
}
|
|
128
|
-
/** The authenticated user's gifts, spent and unspent. */
|
|
129
|
-
async listGifts() {
|
|
130
|
-
const response = await this.authenticatedFetch('/v2/me/gifts', { method: 'GET' });
|
|
131
|
-
if (!response.ok)
|
|
132
|
-
await throwGiftError(response);
|
|
133
|
-
return await response.json();
|
|
134
|
-
}
|
|
135
|
-
/** Mint a new code for a gift; the old code and link stop working. */
|
|
136
|
-
async rotateGiftCode(giftId) {
|
|
137
|
-
const response = await this.authenticatedFetch(`/v2/me/gifts/${encodeURIComponent(giftId)}/code`, {
|
|
138
|
-
method: 'POST',
|
|
139
|
-
});
|
|
140
|
-
if (!response.ok)
|
|
141
|
-
await throwGiftError(response);
|
|
142
|
-
return await response.json();
|
|
143
|
-
}
|
|
144
|
-
/** Update a gift's note and/or archived state. Returns the updated gift. */
|
|
145
|
-
async updateGift(giftId, changes) {
|
|
146
|
-
const response = await this.authenticatedFetch(`/v2/me/gifts/${encodeURIComponent(giftId)}`, {
|
|
147
|
-
method: 'PATCH',
|
|
148
|
-
headers: { 'Content-Type': 'application/json' },
|
|
149
|
-
body: JSON.stringify(changes),
|
|
150
|
-
});
|
|
151
|
-
if (!response.ok)
|
|
152
|
-
await throwGiftError(response);
|
|
153
|
-
return await response.json();
|
|
154
|
-
}
|
|
155
|
-
async authenticatedFetch(path, init) {
|
|
156
|
-
const tokens = await this.authManager.getTokens();
|
|
157
|
-
if (!tokens)
|
|
158
|
-
throw new Error('Not authenticated');
|
|
159
|
-
const headers = new Headers(init.headers);
|
|
160
|
-
headers.set('Authorization', `Bearer ${tokens.accessToken}`);
|
|
161
|
-
headers.set('X-Rool-Token', tokens.roolToken);
|
|
162
|
-
addClientInfoHeaders(headers, this.clientInfo);
|
|
163
|
-
const onRefused = this.onRefused;
|
|
164
|
-
return fetchWithReroute({
|
|
165
|
-
send: () => fetch(`${this.apiUrl}${path}`, { ...init, headers }),
|
|
166
|
-
reroute: onRefused ? async () => this.setApiUrl(await onRefused()) : undefined,
|
|
167
|
-
retryOnThrow: isThrowRetryable(init.method),
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=rest.js.map
|
package/dist/rest.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAuB,MAAM,kBAAkB,CAAC;AAShG,MAAM,OAAO,WAAY,SAAQ,KAAK;IACf;IAArB,YAAqB,IAAqB,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAAiB;QAExC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAsD,CAAC;IAC1G,IAAI,IAAI,EAAE,IAAI;QAAE,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAID,MAAM,OAAO,SAAU,SAAQ,KAAK;IACb;IAArB,YAAqB,IAAmB,EAAE,OAAe;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAAe;QAEtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,oEAAoE;AACpE,KAAK,UAAU,cAAc,CAAC,QAAkB;IAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAA8C,CAAC;IAClG,IAAI,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAqB,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrG,CAAC;AAUD,MAAM,OAAO,UAAU;IACb,MAAM,CAAS;IACf,WAAW,CAAc;IACzB,SAAS,CAAyB;IAClC,UAAU,CAAiB;IAEnC,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IAED,4DAA4D;IAC5D,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,oEAAoE;IACpE,YAAY,CAAC,SAAgC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CACd,OAAe,EACf,GAAW,EACX,IAA4E;QAE5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE;YACtF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG;gBACH,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,OAAO,EAAE,IAAI,EAAE,OAAO;gBACtB,IAAI,EAAE,IAAI,EAAE,IAAI;aACjB,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,KAAe;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE;YAClG,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAGjC,CAAC;QACF,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACnF,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAa;QAC7C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAuC,CAAC;QAC1E,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAmB,CAAC;IAChD,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE;YAC7F,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;IACrD,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAiB,CAAC;IAC9C,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5F,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAqB,CAAC;IAClD,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAc,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE;YAChG,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAU,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAmB;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;YAC3F,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAU,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,IAAiB;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO,gBAAgB,CAAC;YACtB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;YAChE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9E,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/router.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { AuthManager } from './auth.js';
|
|
2
|
-
import { type RoolClientInfo } from './client-info.js';
|
|
3
|
-
export interface RouteInfo {
|
|
4
|
-
server: string;
|
|
5
|
-
}
|
|
6
|
-
export interface SpaceRouterConfig {
|
|
7
|
-
apiUrl: string;
|
|
8
|
-
authManager: AuthManager;
|
|
9
|
-
clientInfo?: RoolClientInfo;
|
|
10
|
-
}
|
|
11
|
-
export declare class SpaceRouter {
|
|
12
|
-
private apiUrl;
|
|
13
|
-
private authManager;
|
|
14
|
-
private clientInfo;
|
|
15
|
-
private inflight;
|
|
16
|
-
constructor(config: SpaceRouterConfig);
|
|
17
|
-
resolve(spaceId: string): Promise<RouteInfo>;
|
|
18
|
-
private fetchRoute;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=router.d.ts.map
|
package/dist/router.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWhG,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,MAAM,EAAE,iBAAiB;IAMrC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAW9B,UAAU;CAwBzB"}
|
package/dist/router.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { addClientInfoHeaders, resolveClientInfo } from './client-info.js';
|
|
2
|
-
const ROUTE_MAX_RETRIES = 6;
|
|
3
|
-
const ROUTE_RETRY_BASE_MS = 150;
|
|
4
|
-
const ROUTE_RETRY_MAX_MS = 2_000;
|
|
5
|
-
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
6
|
-
function routeBackoffMs(attempt) {
|
|
7
|
-
const ceil = Math.min(ROUTE_RETRY_BASE_MS * 2 ** attempt, ROUTE_RETRY_MAX_MS);
|
|
8
|
-
return ceil / 2 + Math.random() * (ceil / 2);
|
|
9
|
-
}
|
|
10
|
-
export class SpaceRouter {
|
|
11
|
-
apiUrl;
|
|
12
|
-
authManager;
|
|
13
|
-
clientInfo;
|
|
14
|
-
inflight = new Map();
|
|
15
|
-
constructor(config) {
|
|
16
|
-
this.apiUrl = config.apiUrl.replace(/\/+$/, '');
|
|
17
|
-
this.authManager = config.authManager;
|
|
18
|
-
this.clientInfo = config.clientInfo ?? resolveClientInfo();
|
|
19
|
-
}
|
|
20
|
-
resolve(spaceId) {
|
|
21
|
-
const existing = this.inflight.get(spaceId);
|
|
22
|
-
if (existing)
|
|
23
|
-
return existing;
|
|
24
|
-
const promise = this.fetchRoute(spaceId).finally(() => {
|
|
25
|
-
this.inflight.delete(spaceId);
|
|
26
|
-
});
|
|
27
|
-
this.inflight.set(spaceId, promise);
|
|
28
|
-
return promise;
|
|
29
|
-
}
|
|
30
|
-
async fetchRoute(spaceId) {
|
|
31
|
-
const tokens = await this.authManager.getTokens();
|
|
32
|
-
if (!tokens)
|
|
33
|
-
throw new Error('Not authenticated');
|
|
34
|
-
// A draining shard 503s /route (it must not re-claim the lease for a dying
|
|
35
|
-
// instance). /route is any-shard, so retry until a live shard answers.
|
|
36
|
-
for (let attempt = 0;; attempt++) {
|
|
37
|
-
const headers = new Headers({
|
|
38
|
-
Authorization: `Bearer ${tokens.accessToken}`,
|
|
39
|
-
'X-Rool-Token': tokens.roolToken,
|
|
40
|
-
});
|
|
41
|
-
addClientInfoHeaders(headers, this.clientInfo);
|
|
42
|
-
const response = await fetch(`${this.apiUrl}/route/${encodeURIComponent(spaceId)}`, { headers });
|
|
43
|
-
if (response.ok) {
|
|
44
|
-
const data = await response.json();
|
|
45
|
-
return { server: data.server };
|
|
46
|
-
}
|
|
47
|
-
if (response.status !== 503 || attempt >= ROUTE_MAX_RETRIES) {
|
|
48
|
-
throw new Error(`Route resolution failed: ${response.status} ${response.statusText}`);
|
|
49
|
-
}
|
|
50
|
-
await delay(routeBackoffMs(attempt));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=router.js.map
|
package/dist/router.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/space-session.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { RoolSpace } from './space.js';
|
|
2
|
-
import type { Conversation, Interaction, PromptOptions, RoolObject } from './types.js';
|
|
3
|
-
export declare function generateEntityId(): string;
|
|
4
|
-
/** Find the most recently updated leaf in a conversation tree. */
|
|
5
|
-
export declare function defaultConversationLeaf(conversation: Conversation | null): string | undefined;
|
|
6
|
-
/** Return one conversation branch in root-to-leaf order. */
|
|
7
|
-
export declare function conversationBranch(conversation: Conversation | null, leafId?: string | undefined): Interaction[];
|
|
8
|
-
/** An imperative API scoped to one conversation. It retains no conversation state. */
|
|
9
|
-
export declare class ConversationHandle {
|
|
10
|
-
private space;
|
|
11
|
-
readonly conversationId: string;
|
|
12
|
-
constructor(space: RoolSpace, conversationId: string);
|
|
13
|
-
/** Fetch the current conversation contents. */
|
|
14
|
-
get(): Promise<Conversation | null>;
|
|
15
|
-
/** Set the conversation system instruction. Pass null to clear it. */
|
|
16
|
-
setSystemInstruction(instruction: string | null): Promise<void>;
|
|
17
|
-
rename(name: string): Promise<void>;
|
|
18
|
-
delete(): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Prompt this conversation. With no explicit parent, continue from the
|
|
21
|
-
* current default leaf without retaining a client-side cursor.
|
|
22
|
-
*/
|
|
23
|
-
prompt(text: string, options?: PromptOptions): Promise<{
|
|
24
|
-
message: string;
|
|
25
|
-
objects: RoolObject[];
|
|
26
|
-
creditsUsed: number;
|
|
27
|
-
}>;
|
|
28
|
-
stop(): Promise<boolean>;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=space-session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"space-session.d.ts","sourceRoot":"","sources":["../src/space-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIvF,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAc7F;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,MAAM,qBAAwC,GAC7C,WAAW,EAAE,CAYf;AAED,sFAAsF;AACtF,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,KAAK;IACb,QAAQ,CAAC,cAAc,EAAE,MAAM;gBADvB,KAAK,EAAE,SAAS,EACf,cAAc,EAAE,MAAM;IAGjC,+CAA+C;IACzC,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIzC,sEAAsE;IAChE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAarE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAG/B"}
|
package/dist/space-session.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const ENTITY_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
2
|
-
export function generateEntityId() {
|
|
3
|
-
let result = '';
|
|
4
|
-
for (let i = 0; i < 6; i++) {
|
|
5
|
-
result += ENTITY_CHARS[Math.floor(Math.random() * ENTITY_CHARS.length)];
|
|
6
|
-
}
|
|
7
|
-
return result;
|
|
8
|
-
}
|
|
9
|
-
/** Find the most recently updated leaf in a conversation tree. */
|
|
10
|
-
export function defaultConversationLeaf(conversation) {
|
|
11
|
-
if (!conversation)
|
|
12
|
-
return undefined;
|
|
13
|
-
const parents = new Set();
|
|
14
|
-
for (const interaction of Object.values(conversation.interactions)) {
|
|
15
|
-
if (interaction.parentId)
|
|
16
|
-
parents.add(interaction.parentId);
|
|
17
|
-
}
|
|
18
|
-
let leaf;
|
|
19
|
-
for (const interaction of Object.values(conversation.interactions)) {
|
|
20
|
-
if (parents.has(interaction.id))
|
|
21
|
-
continue;
|
|
22
|
-
if (!leaf || interaction.timestamp > leaf.timestamp)
|
|
23
|
-
leaf = interaction;
|
|
24
|
-
}
|
|
25
|
-
return leaf?.id;
|
|
26
|
-
}
|
|
27
|
-
/** Return one conversation branch in root-to-leaf order. */
|
|
28
|
-
export function conversationBranch(conversation, leafId = defaultConversationLeaf(conversation)) {
|
|
29
|
-
if (!conversation || !leafId)
|
|
30
|
-
return [];
|
|
31
|
-
const branch = [];
|
|
32
|
-
let currentId = leafId;
|
|
33
|
-
while (currentId) {
|
|
34
|
-
const interaction = conversation.interactions[currentId];
|
|
35
|
-
if (!interaction)
|
|
36
|
-
break;
|
|
37
|
-
branch.push(interaction);
|
|
38
|
-
currentId = interaction.parentId;
|
|
39
|
-
}
|
|
40
|
-
return branch.reverse();
|
|
41
|
-
}
|
|
42
|
-
/** An imperative API scoped to one conversation. It retains no conversation state. */
|
|
43
|
-
export class ConversationHandle {
|
|
44
|
-
space;
|
|
45
|
-
conversationId;
|
|
46
|
-
constructor(space, conversationId) {
|
|
47
|
-
this.space = space;
|
|
48
|
-
this.conversationId = conversationId;
|
|
49
|
-
}
|
|
50
|
-
/** Fetch the current conversation contents. */
|
|
51
|
-
async get() {
|
|
52
|
-
return this.space.getConversation(this.conversationId);
|
|
53
|
-
}
|
|
54
|
-
/** Set the conversation system instruction. Pass null to clear it. */
|
|
55
|
-
async setSystemInstruction(instruction) {
|
|
56
|
-
await this.space._updateConversation(this.conversationId, { systemInstruction: instruction });
|
|
57
|
-
}
|
|
58
|
-
async rename(name) {
|
|
59
|
-
await this.space._updateConversation(this.conversationId, { name });
|
|
60
|
-
}
|
|
61
|
-
async delete() {
|
|
62
|
-
await this.space.deleteConversation(this.conversationId);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Prompt this conversation. With no explicit parent, continue from the
|
|
66
|
-
* current default leaf without retaining a client-side cursor.
|
|
67
|
-
*/
|
|
68
|
-
async prompt(text, options) {
|
|
69
|
-
const interactionId = options?.interactionId ?? generateEntityId();
|
|
70
|
-
const parentInteractionId = options?.parentInteractionId === undefined
|
|
71
|
-
? defaultConversationLeaf(await this.get()) ?? null
|
|
72
|
-
: options.parentInteractionId;
|
|
73
|
-
return this.space._prompt(text, this.conversationId, {
|
|
74
|
-
...options,
|
|
75
|
-
interactionId,
|
|
76
|
-
parentInteractionId,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
async stop() {
|
|
80
|
-
return this.space.stopConversation(this.conversationId);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=space-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"space-session.js","sourceRoot":"","sources":["../src/space-session.ts"],"names":[],"mappings":"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"}
|