@calimero-network/mero-js 1.0.2 → 1.2.0
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/admin-api/admin-client.d.ts +29 -27
- package/dist/admin-api/admin-client.d.ts.map +1 -1
- package/dist/admin-api/admin-client.js +70 -58
- package/dist/admin-api/admin-client.js.map +1 -1
- package/dist/admin-api/admin-types.d.ts +57 -159
- package/dist/admin-api/admin-types.d.ts.map +1 -1
- package/dist/admin-api/admin-types.js +1 -1
- package/dist/admin-api/admin-types.js.map +1 -1
- package/dist/auth/index.d.ts +26 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +51 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/sse.d.ts +41 -0
- package/dist/events/sse.d.ts.map +1 -0
- package/dist/events/sse.js +237 -0
- package/dist/events/sse.js.map +1 -0
- package/dist/events/ws.d.ts +42 -0
- package/dist/events/ws.d.ts.map +1 -0
- package/dist/events/ws.js +178 -0
- package/dist/events/ws.js.map +1 -0
- package/dist/http-client/http-factory.d.ts +18 -0
- package/dist/http-client/http-factory.d.ts.map +1 -1
- package/dist/http-client/http-factory.js +2 -0
- package/dist/http-client/http-factory.js.map +1 -1
- package/dist/http-client/http-types.d.ts +6 -0
- package/dist/http-client/http-types.d.ts.map +1 -1
- package/dist/http-client/web-client.d.ts +2 -0
- package/dist/http-client/web-client.d.ts.map +1 -1
- package/dist/http-client/web-client.js +129 -58
- package/dist/http-client/web-client.js.map +1 -1
- package/dist/index.browser.mjs +2 -1
- package/dist/index.browser.mjs.map +4 -4
- package/dist/index.cjs +784 -148
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +784 -148
- package/dist/index.mjs.map +4 -4
- package/dist/mero-js.d.ts +47 -1
- package/dist/mero-js.d.ts.map +1 -1
- package/dist/mero-js.js +132 -16
- package/dist/mero-js.js.map +1 -1
- package/dist/rpc/index.d.ts +21 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +39 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/token-store/index.d.ts +20 -0
- package/dist/token-store/index.d.ts.map +1 -0
- package/dist/token-store/index.js +62 -0
- package/dist/token-store/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ export function createBrowserHttpClient(options) {
|
|
|
12
12
|
baseUrl: options.baseUrl,
|
|
13
13
|
getAuthToken: options.getAuthToken,
|
|
14
14
|
onTokenRefresh: options.onTokenRefresh,
|
|
15
|
+
refreshToken: options.refreshToken,
|
|
15
16
|
defaultHeaders: options.defaultHeaders,
|
|
16
17
|
timeoutMs: options.timeoutMs,
|
|
17
18
|
credentials: options.credentials,
|
|
@@ -41,6 +42,7 @@ export function createNodeHttpClient(options) {
|
|
|
41
42
|
baseUrl: options.baseUrl,
|
|
42
43
|
getAuthToken: options.getAuthToken,
|
|
43
44
|
onTokenRefresh: options.onTokenRefresh,
|
|
45
|
+
refreshToken: options.refreshToken,
|
|
44
46
|
defaultHeaders: options.defaultHeaders,
|
|
45
47
|
timeoutMs: options.timeoutMs,
|
|
46
48
|
credentials: options.credentials,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-factory.js","sourceRoot":"","sources":["../../src/http-client/http-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"http-factory.js","sourceRoot":"","sources":["../../src/http-client/http-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,uBAAuB,CAAC,OAcvC;IACC,MAAM,SAAS,GAAc;QAC3B,qEAAqE;QACrE,iEAAiE;QACjE,KAAK,EAAE,CAAC,GAAsB,EAAE,IAAkB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;QAClF,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC;IAEF,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,oBAAoB,CAAC,OAepC;IACC,2DAA2D;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAEpD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,yEAAyE,CAC5E,CAAC;KACH;IAED,wEAAwE;IACxE,uFAAuF;IACvF,sFAAsF;IACtF,MAAM,cAAc,GAAG,SAAS,KAAK,UAAU,CAAC,KAAK,CAAC;IAEtD,MAAM,SAAS,GAAc;QAC3B,qEAAqE;QACrE,oEAAoE;QACpE,mEAAmE;QACnE,KAAK,EAAE,cAAc;YACnB,CAAC,CAAC,CAAC,GAAsB,EAAE,IAAkB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;YAC7E,CAAC,CAAC,CAAC,GAAsB,EAAE,IAAkB,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;QACxE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC;IAEF,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,yBAAyB,CAAC,OAezC;IACC,wDAAwD;IACxD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,sBAAsB;QACtB,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;KACzC;SAAM;QACL,sBAAsB;QACtB,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;KACtC;AACH,CAAC"}
|
|
@@ -5,6 +5,12 @@ export interface Transport {
|
|
|
5
5
|
defaultHeaders?: Record<string, string>;
|
|
6
6
|
getAuthToken?: () => Promise<string | undefined>;
|
|
7
7
|
onTokenRefresh?: (newToken: string) => Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Callback to refresh the access token when a 401 error with 'token_expired' is detected.
|
|
10
|
+
* Should return the new access token, or throw an error if refresh fails.
|
|
11
|
+
* If provided, the client will automatically retry the request after a successful refresh.
|
|
12
|
+
*/
|
|
13
|
+
refreshToken?: () => Promise<string>;
|
|
8
14
|
timeoutMs?: number;
|
|
9
15
|
credentials?: RequestCredentials;
|
|
10
16
|
defaultAbortSignal?: AbortSignal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-types.d.ts","sourceRoot":"","sources":["../../src/http-client/http-types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,kBAAkB,CAAC,EAAE,WAAW,CAAC;CAClC;AAGD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,MAAM,GACN,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;AAGD,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CAChD"}
|
|
1
|
+
{"version":3,"file":"http-types.d.ts","sourceRoot":"","sources":["../../src/http-client/http-types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,kBAAkB,CAAC,EAAE,WAAW,CAAC;CAClC;AAGD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,MAAM,GACN,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;AAGD,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CAChD"}
|
|
@@ -17,6 +17,8 @@ export declare class HTTPError extends Error {
|
|
|
17
17
|
}
|
|
18
18
|
export declare class WebHttpClient implements HttpClient {
|
|
19
19
|
private transport;
|
|
20
|
+
private refreshTokenPromise;
|
|
21
|
+
private onTokenRefreshPromise;
|
|
20
22
|
constructor(transport: Transport);
|
|
21
23
|
get<T>(path: string, init?: RequestOptions): Promise<T>;
|
|
22
24
|
post<T>(path: string, body?: unknown, init?: RequestOptions): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-client.d.ts","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EAEf,MAAM,cAAc,CAAC;AAItB,qBAAa,SAAU,SAAQ,KAAK;IAIzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,CAAC,EAAE,MAAM;IAP1B,IAAI,cAAwB;gBAGnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM;IAK1B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CASF;AAYD,qBAAa,aAAc,YAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"web-client.d.ts","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EAEf,MAAM,cAAc,CAAC;AAItB,qBAAa,SAAU,SAAQ,KAAK;IAIzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,CAAC,EAAE,MAAM;IAP1B,IAAI,cAAwB;gBAGnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM;IAK1B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CASF;AAYD,qBAAa,aAAc,YAAW,UAAU;IAMlC,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO,CAAC,qBAAqB,CAA8B;gBAEvC,SAAS,EAAE,SAAS;IAElC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvD,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAYzD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAInD,WAAW;IA4NzB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,iBAAiB;YAmBX,YAAY;YAqCZ,aAAa;YAmBb,WAAW;CAQ1B"}
|
|
@@ -32,6 +32,10 @@ function headersToRecord(headers) {
|
|
|
32
32
|
export class WebHttpClient {
|
|
33
33
|
constructor(transport) {
|
|
34
34
|
this.transport = transport;
|
|
35
|
+
// Cache for concurrent refresh token calls to prevent race conditions
|
|
36
|
+
this.refreshTokenPromise = null;
|
|
37
|
+
// Cache for concurrent onTokenRefresh calls to prevent duplicate callbacks
|
|
38
|
+
this.onTokenRefreshPromise = null;
|
|
35
39
|
}
|
|
36
40
|
async get(path, init) {
|
|
37
41
|
return this.request(path, { ...init, method: 'GET' });
|
|
@@ -86,56 +90,15 @@ export class WebHttpClient {
|
|
|
86
90
|
async request(path, init) {
|
|
87
91
|
return this.makeRequest(path, init);
|
|
88
92
|
}
|
|
89
|
-
async makeRequest(path, init) {
|
|
93
|
+
async makeRequest(path, init, retryCount = 0, requestStartTime) {
|
|
94
|
+
// Maximum retry attempts to prevent infinite loops
|
|
95
|
+
const MAX_RETRY_ATTEMPTS = 1;
|
|
90
96
|
const url = this.buildUrl(path);
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// In Tauri, use absolute minimal RequestInit - just like a direct fetch call
|
|
97
|
-
if (isTauri) {
|
|
98
|
-
const headers = await this.buildHeaders(init?.headers);
|
|
99
|
-
let headersObj;
|
|
100
|
-
if (headers instanceof Headers) {
|
|
101
|
-
headersObj = {};
|
|
102
|
-
headers.forEach((value, key) => {
|
|
103
|
-
headersObj[key] = value;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
headersObj = headers;
|
|
108
|
-
}
|
|
109
|
-
// Build minimal RequestInit - only what's absolutely necessary
|
|
110
|
-
const requestInit = {};
|
|
111
|
-
if (init?.method && init.method !== 'GET') {
|
|
112
|
-
requestInit.method = init.method;
|
|
113
|
-
}
|
|
114
|
-
if (headersObj && Object.keys(headersObj).length > 0) {
|
|
115
|
-
requestInit.headers = headersObj;
|
|
116
|
-
}
|
|
117
|
-
if (init?.body !== undefined && init.body !== null) {
|
|
118
|
-
requestInit.body = init.body;
|
|
119
|
-
}
|
|
120
|
-
if (this.transport.credentials !== undefined) {
|
|
121
|
-
requestInit.credentials = this.transport.credentials;
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
const response = await globalThis.fetch(url, requestInit);
|
|
125
|
-
if (!response.ok) {
|
|
126
|
-
const bodyText = await this.getBodyText(response);
|
|
127
|
-
throw new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
|
|
128
|
-
}
|
|
129
|
-
return this.parseResponse(response, init?.parse);
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
if (error instanceof HTTPError) {
|
|
133
|
-
throw error;
|
|
134
|
-
}
|
|
135
|
-
throw new HTTPError(0, 'Network Error', url, new Headers(), error instanceof Error ? error.message : 'Unknown error');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// Non-Tauri: use full implementation with signals, etc.
|
|
97
|
+
// Track request start time for timeout calculation (only on first attempt)
|
|
98
|
+
// Use per-request start time to avoid corruption from concurrent requests
|
|
99
|
+
const startTime = requestStartTime ?? Date.now();
|
|
100
|
+
// Note: Tauri proxy script now handles AbortSignal, so we can use full RequestInit
|
|
101
|
+
// Removed Tauri-specific minimal path - proxy script handles AbortSignal properly
|
|
139
102
|
const signal = this.createAbortSignal(init);
|
|
140
103
|
const headers = await this.buildHeaders(init?.headers);
|
|
141
104
|
let headersObj;
|
|
@@ -152,11 +115,41 @@ export class WebHttpClient {
|
|
|
152
115
|
method: init?.method || 'GET',
|
|
153
116
|
headers: headersObj,
|
|
154
117
|
};
|
|
155
|
-
if
|
|
118
|
+
// Check if body is a stream (ReadableStream) that can't be reused
|
|
119
|
+
// Note: Blob is reusable, so it's not included here
|
|
120
|
+
const isStreamBody = init?.body instanceof ReadableStream ||
|
|
121
|
+
(typeof init?.body === 'object' && init?.body !== null && 'getReader' in init.body && !(init.body instanceof Blob));
|
|
122
|
+
if (init?.body !== undefined && !isStreamBody) {
|
|
156
123
|
requestInit.body = init.body;
|
|
157
124
|
}
|
|
158
|
-
if (
|
|
159
|
-
|
|
125
|
+
else if (init?.body !== undefined && isStreamBody && retryCount === 0) {
|
|
126
|
+
// Only include stream body on first attempt - can't retry with streams
|
|
127
|
+
requestInit.body = init.body;
|
|
128
|
+
}
|
|
129
|
+
// For retries, calculate remaining timeout to prevent timeout reset
|
|
130
|
+
// Track elapsed time and use remaining timeout for retry
|
|
131
|
+
// Note: This is calculated before the request, so it doesn't include token refresh time
|
|
132
|
+
// The actual remaining timeout check happens after token refresh completes
|
|
133
|
+
let retrySignal;
|
|
134
|
+
if (retryCount > 0 && requestStartTime !== undefined) {
|
|
135
|
+
const timeoutMs = init?.timeoutMs || this.transport.timeoutMs;
|
|
136
|
+
if (timeoutMs) {
|
|
137
|
+
// Calculate elapsed time (will be recalculated after token refresh if needed)
|
|
138
|
+
const elapsed = Date.now() - startTime;
|
|
139
|
+
const remaining = Math.max(0, timeoutMs - elapsed);
|
|
140
|
+
// Create signal with remaining timeout, preserving user's signal
|
|
141
|
+
retrySignal = this.createAbortSignal({ ...init, timeoutMs: remaining });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// No timeout, just preserve user's signal
|
|
145
|
+
retrySignal = this.createAbortSignal(init);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
retrySignal = signal;
|
|
150
|
+
}
|
|
151
|
+
if (retrySignal) {
|
|
152
|
+
requestInit.signal = retrySignal;
|
|
160
153
|
}
|
|
161
154
|
if (this.transport.credentials !== undefined) {
|
|
162
155
|
requestInit.credentials = this.transport.credentials;
|
|
@@ -186,7 +179,86 @@ export class WebHttpClient {
|
|
|
186
179
|
const response = await this.transport.fetch(url, requestInit);
|
|
187
180
|
if (!response.ok) {
|
|
188
181
|
const bodyText = await this.getBodyText(response);
|
|
189
|
-
|
|
182
|
+
const httpError = new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
|
|
183
|
+
// Handle 401 with token_expired - attempt automatic token refresh
|
|
184
|
+
const userAborted = init?.signal?.aborted === true;
|
|
185
|
+
if (response.status === 401 &&
|
|
186
|
+
this.transport.refreshToken &&
|
|
187
|
+
response.headers.get('x-auth-error') === 'token_expired' &&
|
|
188
|
+
retryCount < MAX_RETRY_ATTEMPTS &&
|
|
189
|
+
!isStreamBody &&
|
|
190
|
+
!userAborted) {
|
|
191
|
+
try {
|
|
192
|
+
// Use cached refresh promise if one is in progress (prevents race conditions)
|
|
193
|
+
let refreshPromise = this.refreshTokenPromise;
|
|
194
|
+
if (!refreshPromise) {
|
|
195
|
+
refreshPromise = this.transport.refreshToken();
|
|
196
|
+
this.refreshTokenPromise = refreshPromise;
|
|
197
|
+
}
|
|
198
|
+
// Attempt to refresh the token
|
|
199
|
+
const newToken = await refreshPromise;
|
|
200
|
+
// Validate token - must be non-empty
|
|
201
|
+
if (!newToken || newToken.trim() === '') {
|
|
202
|
+
// Clear caches on error
|
|
203
|
+
this.refreshTokenPromise = null;
|
|
204
|
+
this.onTokenRefreshPromise = null;
|
|
205
|
+
throw new Error('Refresh token returned empty token');
|
|
206
|
+
}
|
|
207
|
+
// onTokenRefresh is required when refreshToken is provided
|
|
208
|
+
// Without it, the new token cannot be stored and getAuthToken() will return the old token
|
|
209
|
+
if (!this.transport.onTokenRefresh) {
|
|
210
|
+
// Clear caches on error
|
|
211
|
+
this.refreshTokenPromise = null;
|
|
212
|
+
this.onTokenRefreshPromise = null;
|
|
213
|
+
throw new Error('onTokenRefresh callback is required when refreshToken is provided. ' +
|
|
214
|
+
'The callback must update the token storage so getAuthToken() returns the new token.');
|
|
215
|
+
}
|
|
216
|
+
// Use cached onTokenRefresh promise if one is in progress (prevents duplicate callbacks)
|
|
217
|
+
// This ensures onTokenRefresh is only called once per token refresh, even with concurrent requests
|
|
218
|
+
let onTokenRefreshPromise = this.onTokenRefreshPromise;
|
|
219
|
+
if (!onTokenRefreshPromise) {
|
|
220
|
+
onTokenRefreshPromise = this.transport.onTokenRefresh(newToken);
|
|
221
|
+
this.onTokenRefreshPromise = onTokenRefreshPromise;
|
|
222
|
+
}
|
|
223
|
+
// Update token via callback (only called once per refresh, even with concurrent requests)
|
|
224
|
+
// Errors from onTokenRefresh callback should be preserved (don't mask as 401)
|
|
225
|
+
// This helps developers debug token storage issues
|
|
226
|
+
await onTokenRefreshPromise;
|
|
227
|
+
// Clear caches after both refresh and callback complete
|
|
228
|
+
this.refreshTokenPromise = null;
|
|
229
|
+
this.onTokenRefreshPromise = null;
|
|
230
|
+
// Check if timeout has expired during token refresh
|
|
231
|
+
// If so, throw the original 401 error instead of retrying with 0ms timeout
|
|
232
|
+
// This prevents timeout/abort errors that obscure the root cause (expired token)
|
|
233
|
+
const timeoutMs = init?.timeoutMs || this.transport.timeoutMs;
|
|
234
|
+
if (timeoutMs && requestStartTime !== undefined) {
|
|
235
|
+
const elapsed = Date.now() - startTime;
|
|
236
|
+
const remaining = timeoutMs - elapsed;
|
|
237
|
+
if (remaining <= 0) {
|
|
238
|
+
// Timeout expired during token refresh - throw original 401 error
|
|
239
|
+
// This is better than retrying with 0ms timeout which would cause confusing timeout errors
|
|
240
|
+
throw httpError;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Retry the request with the new token (increment retry count)
|
|
244
|
+
// Preserve user's abort signal and start time in retry
|
|
245
|
+
return this.makeRequest(path, init, retryCount + 1, startTime);
|
|
246
|
+
}
|
|
247
|
+
catch (refreshError) {
|
|
248
|
+
// Clear caches on error
|
|
249
|
+
this.refreshTokenPromise = null;
|
|
250
|
+
this.onTokenRefreshPromise = null;
|
|
251
|
+
// Configuration errors (missing onTokenRefresh) should be thrown as-is
|
|
252
|
+
if (refreshError instanceof Error && refreshError.message.includes('onTokenRefresh')) {
|
|
253
|
+
throw refreshError;
|
|
254
|
+
}
|
|
255
|
+
// Errors from onTokenRefresh callback are already thrown above, so if we get here,
|
|
256
|
+
// it's either a refreshToken() failure or empty token - throw original 401
|
|
257
|
+
// This matches the PR description: "If refresh fails, throws the original 401 error"
|
|
258
|
+
throw httpError;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
throw httpError;
|
|
190
262
|
}
|
|
191
263
|
return this.parseResponse(response, init?.parse);
|
|
192
264
|
}
|
|
@@ -194,6 +266,10 @@ export class WebHttpClient {
|
|
|
194
266
|
if (error instanceof HTTPError) {
|
|
195
267
|
throw error;
|
|
196
268
|
}
|
|
269
|
+
// Preserve configuration errors (like missing onTokenRefresh)
|
|
270
|
+
if (error instanceof Error && error.message.includes('onTokenRefresh')) {
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
197
273
|
throw new HTTPError(0, 'Network Error', url, new Headers(), error instanceof Error ? error.message : 'Unknown error');
|
|
198
274
|
}
|
|
199
275
|
}
|
|
@@ -216,11 +292,6 @@ export class WebHttpClient {
|
|
|
216
292
|
}
|
|
217
293
|
}
|
|
218
294
|
createAbortSignal(init) {
|
|
219
|
-
// Skip AbortSignal in Tauri - it causes HTTP 0 Network Error
|
|
220
|
-
const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
|
|
221
|
-
if (isTauri) {
|
|
222
|
-
return undefined;
|
|
223
|
-
}
|
|
224
295
|
const signals = [];
|
|
225
296
|
if (this.transport.defaultAbortSignal) {
|
|
226
297
|
signals.push(this.transport.defaultAbortSignal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-client.js","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-client.js","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.browser.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
function b(n){let e=n.filter(Boolean);if(e.length===0)return;let t=AbortSignal;if(typeof t.any=="function")try{return t.any(e)}catch{}let s=new AbortController,r=o=>{s.abort(o.target.reason);for(let u of e)u.removeEventListener("abort",r)};for(let o of e){if(o.aborted)return AbortSignal.abort(o.reason);o.addEventListener("abort",r,{once:!0})}return s.signal}function P(n){if(typeof AbortSignal.timeout=="function")return AbortSignal.timeout(n);let e=new AbortController;return setTimeout(()=>{e.abort(new DOMException("Timeout","TimeoutError"))},n),e.signal}var c=class extends Error{constructor(t,s,r,o,u){super(`HTTP ${t} ${s}`);this.status=t;this.statusText=s;this.url=r;this.headers=o;this.bodyText=u;this.name="HTTPError"}toJSON(){return{status:this.status,statusText:this.statusText,url:this.url,headers:x(this.headers),bodyText:this.bodyText}}};function x(n){let e={};return n.forEach((t,s)=>{e[s]=t}),e}var g=class{constructor(e){this.transport=e}async get(e,t){return this.request(e,{...t,method:"GET"})}async post(e,t,s){return this.request(e,{...s,method:"POST",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async put(e,t,s){return this.request(e,{...s,method:"PUT",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async delete(e,t){return this.request(e,{...t,method:"DELETE"})}async patch(e,t,s){return this.request(e,{...s,method:"PATCH",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async head(e,t){let s=await this.makeRequest(e,{...t,method:"HEAD",parse:"response"});return{headers:x(s.headers),status:s.status}}async request(e,t){return this.makeRequest(e,t)}async makeRequest(e,t){let s=this.buildUrl(e),r=typeof window<"u"&&"__TAURI_INTERNALS__"in window,o=typeof window<"u"&&"__TAURI__"in window;if(r||o||this.transport.credentials==="omit"){let i=await this.buildHeaders(t?.headers),p;i instanceof Headers?(p={},i.forEach((l,k)=>{p[k]=l})):p=i;let f={};t?.method&&t.method!=="GET"&&(f.method=t.method),p&&Object.keys(p).length>0&&(f.headers=p),t?.body!==void 0&&t.body!==null&&(f.body=t.body),this.transport.credentials!==void 0&&(f.credentials=this.transport.credentials);try{let l=await globalThis.fetch(s,f);if(!l.ok){let k=await this.getBodyText(l);throw new c(l.status,l.statusText,s,l.headers,k)}return this.parseResponse(l,t?.parse)}catch(l){throw l instanceof c?l:new c(0,"Network Error",s,new Headers,l instanceof Error?l.message:"Unknown error")}}let w=this.createAbortSignal(t),C=await this.buildHeaders(t?.headers),h;C instanceof Headers?(h={},C.forEach((i,p)=>{h[p]=i})):h=C;let a={method:t?.method||"GET",headers:h};t?.body!==void 0&&(a.body=t.body),w&&(a.signal=w),this.transport.credentials!==void 0&&(a.credentials=this.transport.credentials),t?.mode!==void 0&&(a.mode=t.mode),t?.cache!==void 0&&(a.cache=t.cache),t?.redirect!==void 0&&(a.redirect=t.redirect),t?.referrer!==void 0&&(a.referrer=t.referrer),t?.referrerPolicy!==void 0&&(a.referrerPolicy=t.referrerPolicy),t?.integrity!==void 0&&(a.integrity=t.integrity),t?.keepalive!==void 0&&(a.keepalive=t.keepalive);try{let i=await this.transport.fetch(s,a);if(!i.ok){let p=await this.getBodyText(i);throw new c(i.status,i.statusText,s,i.headers,p)}return this.parseResponse(i,t?.parse)}catch(i){throw i instanceof c?i:new c(0,"Network Error",s,new Headers,i instanceof Error?i.message:"Unknown error")}}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;let t=this.transport.baseUrl;return e.startsWith("/")?`${t.endsWith("/")?t.slice(0,-1):t}${e}`:`${t.endsWith("/")?t:`${t}/`}${e}`}createAbortSignal(e){if(typeof window<"u"&&"__TAURI_INTERNALS__"in window)return;let s=[];this.transport.defaultAbortSignal&&s.push(this.transport.defaultAbortSignal),e?.signal&&s.push(e.signal);let r=e?.timeoutMs||this.transport.timeoutMs;return r&&s.push(P(r)),s.length>0?b(s):void 0}async buildHeaders(e){let t={...this.transport.defaultHeaders};if(this.transport.getAuthToken)try{let s=await this.transport.getAuthToken();s&&s.trim()!==""&&(t.Authorization=`Bearer ${s}`)}catch{}return e&&(e instanceof Headers?e.forEach((s,r)=>{t[r]=s}):Array.isArray(e)?e.forEach(([s,r])=>{t[s]=r}):Object.assign(t,e)),t}async parseResponse(e,t){switch(t){case"text":return await e.text();case"blob":return await e.blob();case"arrayBuffer":return await e.arrayBuffer();case"response":return e;case"json":default:return await e.json()}}async getBodyText(e){try{let t=await e.text();return t.length>65536?t.slice(0,65536)+"...":t}catch{return""}}};function H(n){return new g(n)}function y(n){let e={fetch:(t,s)=>globalThis.fetch(t,s),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return H(e)}function S(n){let e=n.fetch??globalThis.fetch;if(!e)throw new Error("No fetch implementation available. Please provide a fetch implementation (e.g., undici.fetch) or use Node.js 18+ which has native fetch support.");let s={fetch:e===globalThis.fetch?(r,o)=>globalThis.fetch(r,o):(r,o)=>e(r,o),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return H(s)}function D(n){return typeof window<"u"?y(n):S(n)}function _(n,e){if(e<=0)return!1;let s=n?.name;if(s==="TimeoutError")return!0;if(s==="AbortError")return!1;let r=n;if("status"in r&&typeof r.status=="number"){let o=r.status;return o>=500||o===429}return s==="TypeError"}function N(n){let t=250*Math.pow(2,n-1),s=(Math.random()-.5)*.4*t;return Math.max(0,t+s)}async function E(n,e={}){let{attempts:t=3}=e,s;for(let r=1;r<=t;r++)try{return await n(r)}catch(o){if(s=o,!_(s,t-r))throw s;let u=N(r),h=s.headers?.get?.("Retry-After");if(h){let a=parseInt(h,10);if(!isNaN(a))u=Math.max(u,a*1e3);else{let i=new Date(h);if(!isNaN(i.getTime())){let p=Math.max(0,i.getTime()-Date.now());u=Math.max(u,Math.min(p,6e4))}}}await new Promise(a=>setTimeout(a,u))}throw s||new Error("Retry failed without error")}function U(n,e={}){return async(...t)=>E(()=>n(...t),e)}var d=class{constructor(e){this.httpClient=e}async getHealth(){let e=await this.httpClient.get("/auth/health");if(!e.data)throw new Error("Health response data is null");return e.data}async getIdentity(){let e=await this.httpClient.get("/admin/identity");if(!e.data)throw new Error("Identity response data is null");return e.data}async getProviders(){let e=await this.httpClient.get("/auth/providers");if(!e.data)throw new Error("Providers response data is null");return e.data}async getLoginPage(){return this.httpClient.get("/auth/login",{parse:"text"})}async generateTokens(e){return this.httpClient.post("/auth/token",e)}async refreshToken(e){return this.httpClient.post("/auth/refresh",e)}async generateMockTokens(e){return this.httpClient.post("/auth/mock-token",e)}async getChallenge(){return this.httpClient.get("/auth/challenge")}async validateToken(e){try{let t=await this.validateTokenGet(e);return{valid:t.status===200,headers:t.headers,status:t.status}}catch{return{valid:!1,headers:{},status:401}}}async validateTokenGet(e){let t=await this.httpClient.head("/auth/validate",{headers:{Authorization:`Bearer ${e}`}});return{status:t.status,headers:t.headers}}async isAuthed(){return this.httpClient.get("/auth/is-authed")}async revokeTokens(e){return this.httpClient.post("/admin/revoke",e)}async listRootKeys(){let e=await this.httpClient.get("/admin/keys");if(!e.data)throw new Error("Root keys response data is null");return e.data}async createRootKey(e){return this.httpClient.post("/admin/keys",e)}async deleteRootKey(e){return this.httpClient.delete(`/admin/keys/${e}`)}async listClientKeys(){let e=await this.httpClient.get("/admin/keys/clients");if(!e.data)throw new Error("Client keys response data is null");return e.data}async generateClientKey(e){return this.httpClient.post("/admin/client-key",e)}async deleteClientKey(e,t){return this.httpClient.delete(`/admin/keys/${e}/clients/${t}`)}async getKeyPermissions(e){return this.httpClient.get(`/admin/keys/${e}/permissions`)}async updateKeyPermissions(e,t){return this.httpClient.put(`/admin/keys/${e}/permissions`,{permissions:t})}};var T=class{async get(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}};function Y(n){let e=new T;return new d(e)}function Z(n){let e=new T;return new d(e)}function ee(n){let e=new T;return new d(e)}function q(n,e){return new d(n)}var m=class{constructor(e){this.httpClient=e}async healthCheck(){let e=await this.httpClient.get("/health");if(!e.data)throw new Error("Health response data is null");return e.data}async isAuthed(){return this.httpClient.get("/is-authed")}async installApplication(e){return this.httpClient.post("/install-application",e)}async installDevApplication(e){return this.httpClient.post("/install-dev-application",e)}async uninstallApplication(e){return this.httpClient.delete(`/applications/${e}`)}async listApplications(){return this.httpClient.get("/applications")}async getApplication(e){return this.httpClient.get(`/applications/${e}`)}async createContext(e){return this.httpClient.post("/contexts",e)}async deleteContext(e){return this.httpClient.delete(`/contexts/${e}`)}async getContexts(){return this.httpClient.get("/contexts")}async getContext(e){return this.httpClient.get(`/contexts/${e}`)}async uploadBlob(e){return this.httpClient.post("/blobs",e)}async deleteBlob(e){return this.httpClient.delete(`/blobs/${e}`)}async listBlobs(){return this.httpClient.get("/blobs")}async getBlob(e){return this.httpClient.get(`/blobs/${e}`)}async createAlias(e){return this.httpClient.post("/alias",e)}async deleteAlias(e){return this.httpClient.delete(`/alias/${e}`)}async listAliases(){return this.httpClient.get("/alias")}async getAlias(e){return this.httpClient.get(`/alias/${e}`)}async getNetworkPeers(){return this.httpClient.get("/network/peers")}async getNetworkStats(){return this.httpClient.get("/network/stats")}async getNetworkConfig(){return this.httpClient.get("/network/config")}async updateNetworkConfig(e){return this.httpClient.put("/network/config",e)}async getPeersCount(){return this.httpClient.get("/network/peers/count")}async getSystemInfo(){return this.httpClient.get("/system/info")}async getSystemLogs(){return this.httpClient.get("/system/logs")}async getSystemMetrics(){return this.httpClient.get("/system/metrics")}async restartSystem(){return this.httpClient.post("/system/restart")}async shutdownSystem(){return this.httpClient.post("/system/shutdown")}};var R=class{async get(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}};function re(n){let e=new R;return new m(e)}function ie(n){let e=new R;return new m(e)}function oe(n){let e=new R;return new m(e)}function v(n,e){return new m(n)}var A=class{constructor(e){this.tokenData=null;this.refreshPromise=null;this.config={timeoutMs:1e4,...e};let t=typeof window<"u"&&"__TAURI_INTERNALS__"in window;this.httpClient=y({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs,credentials:this.config.requestCredentials??(t?"omit":void 0)}),this.authClient=q(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs}),this.adminClient=v(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs})}get auth(){return this.authClient}get admin(){return this.adminClient}async authenticate(e){let t=e||this.config.credentials;if(!t)throw new Error("No credentials provided for authentication");try{let s={auth_method:"user_password",public_key:t.username,client_name:"mero-js-sdk",permissions:["admin"],timestamp:Math.floor(Date.now()/1e3),provider_data:{username:t.username,password:t.password}},r=await this.authClient.generateTokens(s);return this.tokenData={access_token:r.data.access_token,refresh_token:r.data.refresh_token,expires_at:Date.now()+1440*60*1e3},this.tokenData}catch(s){throw new Error(`Authentication failed: ${s instanceof Error?s.message:"Unknown error"}`)}}async getValidToken(){if(!this.tokenData)return null;let e=300*1e3;return Date.now()>=this.tokenData.expires_at-e?await this.refreshToken():this.tokenData}async refreshToken(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");if(this.refreshPromise)return this.refreshPromise;this.refreshPromise=this.performTokenRefresh();try{return await this.refreshPromise}finally{this.refreshPromise=null}}async performTokenRefresh(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");try{let e=await this.authClient.refreshToken({access_token:this.tokenData.access_token,refresh_token:this.tokenData.refresh_token});return this.tokenData={access_token:e.data.access_token,refresh_token:e.data.refresh_token,expires_at:Date.now()+1440*60*1e3},this.tokenData}catch(e){throw this.clearToken(),new Error(`Token refresh failed: ${e instanceof Error?e.message:"Unknown error"}`)}}clearToken(){this.tokenData=null}isAuthenticated(){return this.tokenData!==null}getTokenData(){return this.tokenData}};function M(n){return new A(n)}export{m as AdminApiClient,d as AuthApiClient,c as HTTPError,A as MeroJs,g as WebHttpClient,b as combineSignals,oe as createAdminApiClient,v as createAdminApiClientFromHttpClient,ee as createAuthApiClient,q as createAuthApiClientFromHttpClient,re as createBrowserAdminApiClient,Y as createBrowserAuthApiClient,y as createBrowserHttpClient,H as createHttpClient,M as createMeroJs,ie as createNodeAdminApiClient,Z as createNodeAuthApiClient,S as createNodeHttpClient,U as createRetryableMethod,P as createTimeoutSignal,D as createUniversalHttpClient,E as withRetry};
|
|
1
|
+
function M(r){let e=r.filter(Boolean);if(e.length===0)return;let t=AbortSignal;if(typeof t.any=="function")try{return t.any(e)}catch{}let n=new AbortController,s=i=>{n.abort(i.target.reason);for(let l of e)l.removeEventListener("abort",s)};for(let i of e){if(i.aborted)return AbortSignal.abort(i.reason);i.addEventListener("abort",s,{once:!0})}return n.signal}function U(r){if(typeof AbortSignal.timeout=="function")return AbortSignal.timeout(r);let e=new AbortController;return setTimeout(()=>{e.abort(new DOMException("Timeout","TimeoutError"))},r),e.signal}var g=class extends Error{constructor(t,n,s,i,l){super(`HTTP ${t} ${n}`);this.status=t;this.statusText=n;this.url=s;this.headers=i;this.bodyText=l;this.name="HTTPError"}toJSON(){return{status:this.status,statusText:this.statusText,url:this.url,headers:K(this.headers),bodyText:this.bodyText}}};function K(r){let e={};return r.forEach((t,n)=>{e[n]=t}),e}var R=class{constructor(e){this.transport=e;this.refreshTokenPromise=null;this.onTokenRefreshPromise=null}async get(e,t){return this.request(e,{...t,method:"GET"})}async post(e,t,n){return this.request(e,{...n,method:"POST",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...n?.headers}})}async put(e,t,n){return this.request(e,{...n,method:"PUT",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...n?.headers}})}async delete(e,t){return this.request(e,{...t,method:"DELETE"})}async patch(e,t,n){return this.request(e,{...n,method:"PATCH",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...n?.headers}})}async head(e,t){let n=await this.makeRequest(e,{...t,method:"HEAD",parse:"response"});return{headers:K(n.headers),status:n.status}}async request(e,t){return this.makeRequest(e,t)}async makeRequest(e,t,n=0,s){let l=this.buildUrl(e),d=s??Date.now(),C=this.createAbortSignal(t),h=await this.buildHeaders(t?.headers),p;h instanceof Headers?(p={},h.forEach((a,b)=>{p[b]=a})):p=h;let c={method:t?.method||"GET",headers:p},y=t?.body instanceof ReadableStream||typeof t?.body=="object"&&t?.body!==null&&"getReader"in t.body&&!(t.body instanceof Blob);(t?.body!==void 0&&!y||t?.body!==void 0&&y&&n===0)&&(c.body=t.body);let w;if(n>0&&s!==void 0){let a=t?.timeoutMs||this.transport.timeoutMs;if(a){let b=Date.now()-d,A=Math.max(0,a-b);w=this.createAbortSignal({...t,timeoutMs:A})}else w=this.createAbortSignal(t)}else w=C;w&&(c.signal=w),this.transport.credentials!==void 0&&(c.credentials=this.transport.credentials),t?.mode!==void 0&&(c.mode=t.mode),t?.cache!==void 0&&(c.cache=t.cache),t?.redirect!==void 0&&(c.redirect=t.redirect),t?.referrer!==void 0&&(c.referrer=t.referrer),t?.referrerPolicy!==void 0&&(c.referrerPolicy=t.referrerPolicy),t?.integrity!==void 0&&(c.integrity=t.integrity),t?.keepalive!==void 0&&(c.keepalive=t.keepalive);try{let a=await this.transport.fetch(l,c);if(!a.ok){let b=await this.getBodyText(a),A=new g(a.status,a.statusText,l,a.headers,b),V=t?.signal?.aborted===!0;if(a.status===401&&this.transport.refreshToken&&a.headers.get("x-auth-error")==="token_expired"&&n<1&&!y&&!V)try{let u=this.refreshTokenPromise;u||(u=this.transport.refreshToken(),this.refreshTokenPromise=u);let _=await u;if(!_||_.trim()==="")throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,new Error("Refresh token returned empty token");if(!this.transport.onTokenRefresh)throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,new Error("onTokenRefresh callback is required when refreshToken is provided. The callback must update the token storage so getAuthToken() returns the new token.");let S=this.onTokenRefreshPromise;S||(S=this.transport.onTokenRefresh(_),this.onTokenRefreshPromise=S),await S,this.refreshTokenPromise=null,this.onTokenRefreshPromise=null;let J=t?.timeoutMs||this.transport.timeoutMs;if(J&&s!==void 0){let z=Date.now()-d;if(J-z<=0)throw A}return this.makeRequest(e,t,n+1,d)}catch(u){throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,u instanceof Error&&u.message.includes("onTokenRefresh")?u:A}throw A}return this.parseResponse(a,t?.parse)}catch(a){throw a instanceof g||a instanceof Error&&a.message.includes("onTokenRefresh")?a:new g(0,"Network Error",l,new Headers,a instanceof Error?a.message:"Unknown error")}}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;let t=this.transport.baseUrl;return e.startsWith("/")?`${t.endsWith("/")?t.slice(0,-1):t}${e}`:`${t.endsWith("/")?t:`${t}/`}${e}`}createAbortSignal(e){let t=[];this.transport.defaultAbortSignal&&t.push(this.transport.defaultAbortSignal),e?.signal&&t.push(e.signal);let n=e?.timeoutMs||this.transport.timeoutMs;return n&&t.push(U(n)),t.length>0?M(t):void 0}async buildHeaders(e){let t={...this.transport.defaultHeaders};if(this.transport.getAuthToken)try{let n=await this.transport.getAuthToken();n&&n.trim()!==""&&(t.Authorization=`Bearer ${n}`)}catch{}return e&&(e instanceof Headers?e.forEach((n,s)=>{t[s]=n}):Array.isArray(e)?e.forEach(([n,s])=>{t[n]=s}):Object.assign(t,e)),t}async parseResponse(e,t){switch(t){case"text":return await e.text();case"blob":return await e.blob();case"arrayBuffer":return await e.arrayBuffer();case"response":return e;case"json":default:return await e.json()}}async getBodyText(e){try{let t=await e.text();return t.length>65536?t.slice(0,65536)+"...":t}catch{return""}}};function W(r){return new R(r)}function E(r){let e={fetch:(t,n)=>globalThis.fetch(t,n),baseUrl:r.baseUrl,getAuthToken:r.getAuthToken,onTokenRefresh:r.onTokenRefresh,refreshToken:r.refreshToken,defaultHeaders:r.defaultHeaders,timeoutMs:r.timeoutMs,credentials:r.credentials,defaultAbortSignal:r.defaultAbortSignal};return W(e)}function B(r){let e=r.fetch??globalThis.fetch;if(!e)throw new Error("No fetch implementation available. Please provide a fetch implementation (e.g., undici.fetch) or use Node.js 18+ which has native fetch support.");let n={fetch:e===globalThis.fetch?(s,i)=>globalThis.fetch(s,i):(s,i)=>e(s,i),baseUrl:r.baseUrl,getAuthToken:r.getAuthToken,onTokenRefresh:r.onTokenRefresh,refreshToken:r.refreshToken,defaultHeaders:r.defaultHeaders,timeoutMs:r.timeoutMs,credentials:r.credentials,defaultAbortSignal:r.defaultAbortSignal};return W(n)}function X(r){return typeof window<"u"?E(r):B(r)}function Y(r,e){if(e<=0)return!1;let n=r?.name;if(n==="TimeoutError")return!0;if(n==="AbortError")return!1;let s=r;if("status"in s&&typeof s.status=="number"){let i=s.status;return i>=500||i===429}return n==="TypeError"}function Q(r){let t=250*Math.pow(2,r-1),n=(Math.random()-.5)*.4*t;return Math.max(0,t+n)}async function G(r,e={}){let{attempts:t=3}=e,n;for(let s=1;s<=t;s++)try{return await r(s)}catch(i){if(n=i,!Y(n,t-s))throw n;let l=Q(s),h=n.headers?.get?.("Retry-After");if(h){let p=parseInt(h,10);if(!isNaN(p))l=Math.max(l,p*1e3);else{let c=new Date(h);if(!isNaN(c.getTime())){let y=Math.max(0,c.getTime()-Date.now());l=Math.max(l,Math.min(y,6e4))}}}await new Promise(p=>setTimeout(p,l))}throw n||new Error("Retry failed without error")}function Z(r,e={}){return async(...t)=>G(()=>r(...t),e)}var m=class{constructor(e){this.httpClient=e}async getHealth(){let e=await this.httpClient.get("/auth/health");if(!e.data)throw new Error("Health response data is null");return e.data}async getIdentity(){let e=await this.httpClient.get("/admin/identity");if(!e.data)throw new Error("Identity response data is null");return e.data}async getProviders(){let e=await this.httpClient.get("/auth/providers");if(!e.data)throw new Error("Providers response data is null");return e.data}async getLoginPage(){return this.httpClient.get("/auth/login",{parse:"text"})}async generateTokens(e){return this.httpClient.post("/auth/token",e)}async refreshToken(e){return this.httpClient.post("/auth/refresh",e)}async generateMockTokens(e){return this.httpClient.post("/auth/mock-token",e)}async getChallenge(){return this.httpClient.get("/auth/challenge")}async validateToken(e){try{let t=await this.validateTokenGet(e);return{valid:t.status===200,headers:t.headers,status:t.status}}catch{return{valid:!1,headers:{},status:401}}}async validateTokenGet(e){let t=await this.httpClient.head("/auth/validate",{headers:{Authorization:`Bearer ${e}`}});return{status:t.status,headers:t.headers}}async isAuthed(){return this.httpClient.get("/auth/is-authed")}async revokeTokens(e){return this.httpClient.post("/admin/revoke",e)}async listRootKeys(){let e=await this.httpClient.get("/admin/keys");if(!e.data)throw new Error("Root keys response data is null");return e.data}async createRootKey(e){return this.httpClient.post("/admin/keys",e)}async deleteRootKey(e){return this.httpClient.delete(`/admin/keys/${e}`)}async listClientKeys(){let e=await this.httpClient.get("/admin/keys/clients");if(!e.data)throw new Error("Client keys response data is null");return e.data}async generateClientKey(e){return this.httpClient.post("/admin/client-key",e)}async deleteClientKey(e,t){return this.httpClient.delete(`/admin/keys/${e}/clients/${t}`)}async getKeyPermissions(e){return this.httpClient.get(`/admin/keys/${e}/permissions`)}async updateKeyPermissions(e,t){return this.httpClient.put(`/admin/keys/${e}/permissions`,{permissions:t})}};var v=class{async get(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}};function Te(r){let e=new v;return new m(e)}function Ce(r){let e=new v;return new m(e)}function ye(r){let e=new v;return new m(e)}function F(r,e){return new m(r)}function o(r){return r.data}var f=class{constructor(e){this.httpClient=e}async healthCheck(){return o(await this.httpClient.get("/admin-api/health"))}async isAuthed(){return this.httpClient.get("/admin-api/is-authed")}async installApplication(e){return o(await this.httpClient.post("/admin-api/install-application",e))}async installDevApplication(e){return o(await this.httpClient.post("/admin-api/install-dev-application",e))}async uninstallApplication(e){return o(await this.httpClient.delete(`/admin-api/applications/${e}`))}async listApplications(){return o(await this.httpClient.get("/admin-api/applications"))}async getApplication(e){return o(await this.httpClient.get(`/admin-api/applications/${e}`))}async getLatestPackageVersion(e){return this.httpClient.get(`/admin-api/packages/${encodeURIComponent(e)}/latest`)}async createContext(e){return o(await this.httpClient.post("/admin-api/contexts",e))}async deleteContext(e){return o(await this.httpClient.delete(`/admin-api/contexts/${e}`))}async getContexts(){return o(await this.httpClient.get("/admin-api/contexts"))}async getContext(e){return o(await this.httpClient.get(`/admin-api/contexts/${e}`))}async getContextsForApplication(e){return o(await this.httpClient.get(`/admin-api/contexts/for-application/${e}`))}async generateContextIdentity(){return o(await this.httpClient.post("/admin-api/identity/context",{}))}async getContextIdentities(e){return o(await this.httpClient.get(`/admin-api/contexts/${e}/identities`))}async getContextIdentitiesOwned(e){return o(await this.httpClient.get(`/admin-api/contexts/${e}/identities-owned`))}async inviteToContext(e){return o(await this.httpClient.post("/admin-api/contexts/invite",e))}async joinContext(e){return o(await this.httpClient.post("/admin-api/contexts/join",e))}async uploadBlob(e){return o(await this.httpClient.put("/admin-api/blobs",e))}async deleteBlob(e){return o(await this.httpClient.delete(`/admin-api/blobs/${e}`))}async listBlobs(){return o(await this.httpClient.get("/admin-api/blobs"))}async getBlob(e){return o(await this.httpClient.get(`/admin-api/blobs/${e}`))}async createContextAlias(e){return this.httpClient.post("/admin-api/alias/create/context",e)}async createApplicationAlias(e){return this.httpClient.post("/admin-api/alias/create/application",e)}async lookupContextAlias(e){return this.httpClient.post(`/admin-api/alias/lookup/context/${encodeURIComponent(e)}`,{})}async lookupApplicationAlias(e){return this.httpClient.post(`/admin-api/alias/lookup/application/${encodeURIComponent(e)}`,{})}async deleteContextAlias(e){return this.httpClient.post(`/admin-api/alias/delete/context/${encodeURIComponent(e)}`,{})}async deleteApplicationAlias(e){return this.httpClient.post(`/admin-api/alias/delete/application/${encodeURIComponent(e)}`,{})}async listContextAliases(){return o(await this.httpClient.get("/admin-api/alias/list/context"))}async listApplicationAliases(){return o(await this.httpClient.get("/admin-api/alias/list/application"))}async getPeersCount(){return this.httpClient.get("/admin-api/peers")}};var x=class{async get(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}};function Re(r){let e=new x;return new f(e)}function ve(r){let e=new x;return new f(e)}function xe(r){let e=new x;return new f(e)}function j(r,e){return new f(r)}function q(r){try{let e=r.indexOf("#");if(e===-1)return null;let t=r.substring(e+1),n=new URLSearchParams(t),s=n.get("access_token");return s?{accessToken:s,refreshToken:n.get("refresh_token")??"",applicationId:n.get("application_id")??"",contextId:n.get("context_id")??"",contextIdentity:n.get("context_identity")??"",nodeUrl:n.get("node_url")??""}:null}catch{return null}}function O(r,e){let t=new URLSearchParams;return t.set("callback-url",e.callbackUrl),e.permissions&&e.permissions.length>0&&t.set("permissions",e.permissions.join(",")),t.set("mode",e.mode),e.packageName&&(t.set("package-name",e.packageName),e.packageVersion&&t.set("package-version",e.packageVersion),e.registryUrl&&t.set("registry-url",e.registryUrl)),`${r.replace(/\/+$/,"")}/auth/login?${t.toString()}`}var H=class extends Error{constructor(e,t,n,s){super(t),this.name="RpcError",this.code=e,this.data=n,this.type=s}},P=class{constructor(e){this.httpClient=e.httpClient}async execute(e){let t={jsonrpc:"2.0",id:1,method:"execute",params:{contextId:e.contextId,method:e.method,argsJson:e.argsJson??{},executorPublicKey:e.executorPublicKey}},n=await this.httpClient.post("/jsonrpc",t);if(n.error){let s=n.error,i=s.code??-1,l=s.message??s.type??"RPC error";throw new H(i,l,s.data,s.type)}return n.result&&"output"in n.result?n.result.output:n.result}};var k=class{constructor(e){this.sessionId=null;this.abortController=null;this.reconnectTimer=null;this.subscribedContextIds=new Set;this.closed=!1;this.listeners={connect:[],event:[],error:[]};this.baseUrl=e.baseUrl.replace(/\/+$/,""),this.getAuthToken=e.getAuthToken,this.reconnectDelayMs=e.reconnectDelayMs??3e3}on(e,t){let n=e;if(n in this.listeners){let s=this.listeners[n];s.includes(t)||s.push(t)}}off(e,t){let n=e;if(n in this.listeners){let s=this.listeners[n],i=s.indexOf(t);i!==-1&&s.splice(i,1)}}emit(e,t){let n=e;if(n in this.listeners)for(let s of this.listeners[n])try{s(t)}catch{}}async connect(){if(!(this.abortController&&!this.closed)){this.closed=!1,this.abortController=new AbortController;try{let e=await this.getAuthToken(),t=await fetch(`${this.baseUrl}/sse`,{headers:{Authorization:`Bearer ${e}`,Accept:"text/event-stream"},signal:this.abortController.signal});if(!t.ok)throw new Error(`SSE connection failed: ${t.status}`);if(!t.body)throw new Error("SSE response has no body");this.readStream(t.body).catch(n=>{if(this.closed)return;let s=n instanceof Error?n:new Error(String(n));this.emit("error",s),this.scheduleReconnect()})}catch(e){if(this.closed)return;let t=e instanceof Error?e:new Error(String(e));this.emit("error",t),this.scheduleReconnect()}}}async readStream(e){let t=e.getReader(),n=new TextDecoder,s="";try{for(;;){let{done:i,value:l}=await t.read();if(i)break;s+=n.decode(l,{stream:!0});let d=s.split(`
|
|
2
|
+
`);s=d.pop()??"";for(let C of d)if(C.startsWith("data:")){let h=C.slice(5).trim();h&&this.handleMessage(h)}}if(s+=n.decode(),s.startsWith("data:")){let i=s.slice(5).trim();i&&this.handleMessage(i)}}catch(i){if(this.closed)return;let l=i instanceof Error?i:new Error(String(i));this.emit("error",l)}this.closed||this.scheduleReconnect()}handleMessage(e){try{let t=JSON.parse(e);if(t.type==="connect"&&t.session_id){this.sessionId=t.session_id,this.emit("connect",t.session_id),this.subscribedContextIds.size>0&&this.sendSubscription("subscribe",[...this.subscribedContextIds]);return}if(t.result&&t.result.contextId){let n=t.result.data;if(Array.isArray(n))try{let s=new Uint8Array(n),i=new TextDecoder().decode(s);n=JSON.parse(i)}catch{}this.emit("event",{contextId:t.result.contextId,data:n})}}catch{}}async subscribe(e){let t=e.filter(n=>!this.subscribedContextIds.has(n));for(let n of e)this.subscribedContextIds.add(n);t.length>0&&this.sessionId&&await this.sendSubscription("subscribe",t)}async unsubscribe(e){let t=e.filter(n=>this.subscribedContextIds.has(n));for(let n of e)this.subscribedContextIds.delete(n);t.length>0&&this.sessionId&&await this.sendSubscription("unsubscribe",t)}async sendSubscription(e,t){try{let n=await this.getAuthToken(),s=await fetch(`${this.baseUrl}/sse/subscription`,{method:"POST",headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"},body:JSON.stringify({id:this.sessionId,method:e,params:{contextIds:t}})});s.ok||this.emit("error",new Error(`SSE ${e} failed: ${s.status}`))}catch(n){this.emit("error",n instanceof Error?n:new Error(`SSE ${e} failed`))}}forceReconnect(){this.abortController&&(this.abortController.abort(),this.abortController=null),this.sessionId=null,this.connect()}scheduleReconnect(){this.closed||(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.forceReconnect()},this.reconnectDelayMs))}close(){this.closed=!0,this.abortController&&(this.abortController.abort(),this.abortController=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.sessionId=null,this.subscribedContextIds.clear()}};var D=class D{constructor(e){this.ws=null;this.closed=!1;this.reconnectAttempt=0;this.reconnectTimer=null;this.subscribedContextIds=new Set;this.listeners={connect:[],event:[],error:[]};this.baseUrl=e.baseUrl.replace(/\/+$/,""),this.getAuthToken=e.getAuthToken}on(e,t){let n=e;if(n in this.listeners){let s=this.listeners[n];s.includes(t)||s.push(t)}}off(e,t){let n=e;if(n in this.listeners){let s=this.listeners[n],i=s.indexOf(t);i!==-1&&s.splice(i,1)}}emit(e,t){let n=e;if(n in this.listeners)for(let s of this.listeners[n])try{s(t)}catch{}}async connect(){if(!(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN))){this.closed=!1;try{let e=await this.getAuthToken();if(!e)throw new Error("No authentication token available for WebSocket connection");let t=this.baseUrl.replace(/^http/,"ws");this.ws=new WebSocket(`${t}/ws?token=${encodeURIComponent(e)}`),this.ws.onopen=()=>{this.reconnectAttempt=0,this.emit("connect"),this.subscribedContextIds.size>0&&this.sendMessage({id:null,method:"subscribe",params:{contextIds:[...this.subscribedContextIds]}})},this.ws.onmessage=n=>{this.handleMessage(n.data)},this.ws.onerror=()=>{this.emit("error",new Error("WebSocket error"))},this.ws.onclose=()=>{this.closed||this.scheduleReconnect()}}catch(e){if(this.closed)return;let t=e instanceof Error?e:new Error(String(e));this.emit("error",t),this.scheduleReconnect()}}}handleMessage(e){if(typeof e=="string")try{let t=JSON.parse(e);if(t.result&&t.result.contextId){let n=t.result.data;if(Array.isArray(n))try{let s=new Uint8Array(n),i=new TextDecoder().decode(s);n=JSON.parse(i)}catch{}this.emit("event",{contextId:t.result.contextId,data:n})}}catch{}}subscribe(e){for(let t of e)this.subscribedContextIds.add(t);this.ws&&this.ws.readyState===WebSocket.OPEN&&this.sendMessage({id:null,method:"subscribe",params:{contextIds:e}})}unsubscribe(e){for(let t of e)this.subscribedContextIds.delete(t);this.ws&&this.ws.readyState===WebSocket.OPEN&&this.sendMessage({id:null,method:"unsubscribe",params:{contextIds:e}})}sendMessage(e){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify(e))}scheduleReconnect(){if(this.closed)return;this.reconnectTimer&&clearTimeout(this.reconnectTimer);let e=Math.min(1e3*Math.pow(2,this.reconnectAttempt),D.MAX_BACKOFF_MS);this.reconnectAttempt++,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},e)}close(){this.closed=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.onclose=null,this.ws.close(),this.ws=null),this.subscribedContextIds.clear()}};D.MAX_BACKOFF_MS=3e4;var T=D;function $(r,e){try{let t=r.split(".");if(t.length===3){let n=t[1].replace(/-/g,"+").replace(/_/g,"/");for(;n.length%4;)n+="=";let s=JSON.parse(atob(n));if(typeof s.exp=="number")return s.exp*1e3}}catch{}return e}var I=class{constructor(e){this.tokenData=null;this.refreshPromise=null;this.rpcClient=null;this.sseClient=null;this.wsClient=null;this.wsWarned=!1;this.config={timeoutMs:1e4,...e},this.tokenStore=e.tokenStore??null,this.tokenStore&&(this.tokenData=this.tokenStore.getTokens());let t=typeof window<"u"&&"__TAURI_INTERNALS__"in window;this.httpClient=E({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",refreshToken:async()=>(await this.performTokenRefresh()).access_token,onTokenRefresh:async n=>{this.tokenData&&(this.tokenData.access_token=n,this.tokenStore?.setTokens(this.tokenData))},timeoutMs:this.config.timeoutMs,credentials:this.config.requestCredentials??(t?"omit":void 0)}),this.authClient=F(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs}),this.adminClient=j(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs})}get auth(){return this.authClient}get admin(){return this.adminClient}get rpc(){return this.rpcClient||(this.rpcClient=new P({httpClient:this.httpClient})),this.rpcClient}get events(){return this.sseClient||(this.sseClient=new k({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||""})),this.sseClient}get ws(){return this.wsWarned||(this.wsWarned=!0,console.warn("[mero-js] WsClient is experimental. Use mero.events (SSE) for production.")),this.wsClient||(this.wsClient=new T({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||""})),this.wsClient}async authenticate(e){let t=e||this.config.credentials;if(!t)throw new Error("No credentials provided for authentication");try{let n={auth_method:"user_password",public_key:t.username,client_name:"mero-js-sdk",permissions:["admin"],timestamp:Math.floor(Date.now()/1e3),provider_data:{username:t.username,password:t.password}},s=await this.authClient.generateTokens(n),i=s.data.access_token;return this.tokenData={access_token:i,refresh_token:s.data.refresh_token,expires_at:$(i,Date.now()+36e5)},this.tokenStore?.setTokens(this.tokenData),this.tokenData}catch(n){throw new Error(`Authentication failed: ${n instanceof Error?n.message:"Unknown error"}`)}}async getValidToken(){return this.tokenData}async refreshToken(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");if(this.refreshPromise)return this.refreshPromise;this.refreshPromise=this.performTokenRefresh();try{return await this.refreshPromise}finally{this.refreshPromise=null}}async performTokenRefresh(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");try{let e=await this.authClient.refreshToken({access_token:this.tokenData.access_token,refresh_token:this.tokenData.refresh_token}),t=e.data.access_token;return this.tokenData={access_token:t,refresh_token:e.data.refresh_token,expires_at:$(t,Date.now()+36e5)},this.tokenStore?.setTokens(this.tokenData),this.tokenData}catch(e){throw new Error(`Token refresh failed: ${e instanceof Error?e.message:"Unknown error"}`)}}clearToken(){this.tokenData=null,this.tokenStore?.clear()}isAuthenticated(){return this.tokenData!==null}setTokenData(e){let t=e.expires_at||$(e.access_token,Date.now()+36e5);this.tokenData={...e,expires_at:t},this.tokenStore?.setTokens(this.tokenData)}getTokenData(){return this.tokenData}close(){this.sseClient?.close(),this.wsClient?.close()}static parseAuthCallback(e){return q(e)}static buildAuthLoginUrl(e,t){return O(e,t)}};function ee(r){return new I(r)}var N=class{constructor(){this.tokens=null}getTokens(){return this.tokens}setTokens(e){this.tokens=e}clear(){this.tokens=null}},te="mero-tokens",L=class{constructor(e=te){this.key=e}getTokens(){try{if(typeof localStorage>"u")return null;let e=localStorage.getItem(this.key);if(!e)return null;let t=JSON.parse(e);return t&&t.access_token&&t.refresh_token?{access_token:t.access_token,refresh_token:t.refresh_token,expires_at:typeof t.expires_at=="number"?t.expires_at:Date.now()+36e5}:null}catch{return null}}setTokens(e){try{if(typeof localStorage>"u")return;localStorage.setItem(this.key,JSON.stringify(e))}catch{}}clear(){try{if(typeof localStorage>"u")return;localStorage.removeItem(this.key)}catch{}}};export{f as AdminApiClient,m as AuthApiClient,g as HTTPError,L as LocalStorageTokenStore,N as MemoryTokenStore,I as MeroJs,P as RpcClient,H as RpcError,k as SseClient,R as WebHttpClient,T as WsClient,O as buildAuthLoginUrl,M as combineSignals,xe as createAdminApiClient,j as createAdminApiClientFromHttpClient,ye as createAuthApiClient,F as createAuthApiClientFromHttpClient,Re as createBrowserAdminApiClient,Te as createBrowserAuthApiClient,E as createBrowserHttpClient,W as createHttpClient,ee as createMeroJs,ve as createNodeAdminApiClient,Ce as createNodeAuthApiClient,B as createNodeHttpClient,Z as createRetryableMethod,U as createTimeoutSignal,X as createUniversalHttpClient,q as parseAuthCallback,G as withRetry};
|
|
2
3
|
//# sourceMappingURL=index.browser.mjs.map
|