gemi 0.126.0 → 0.127.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/{chunk-ravssmdy.js → chunk-3hndrc5z.js} +2 -2
- package/dist/{chunk-ravssmdy.js.map → chunk-3hndrc5z.js.map} +1 -1
- package/dist/{chunk-zbvdkh6q.js → chunk-3p9vj0h6.js} +1 -1
- package/dist/{chunk-cwpezdpw.js → chunk-6c8pn6hj.js} +13 -13
- package/dist/{chunk-cwpezdpw.js.map → chunk-6c8pn6hj.js.map} +3 -3
- package/dist/{chunk-mpt5jg4e.js → chunk-pxstrw29.js} +1 -1
- package/dist/{chunk-zy5gxk1g.js → chunk-yhxjhrvp.js} +1 -1
- package/dist/chunks/{ThemeProvider-CS2a1snV.js → ThemeProvider-BIrCSrFY.js} +2 -2
- package/dist/chunks/{ThemeProvider-CS2a1snV.js.map → ThemeProvider-BIrCSrFY.js.map} +1 -1
- package/dist/client/fetchFile.d.ts +66 -0
- package/dist/client/fetchFile.d.ts.map +1 -0
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +75 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/rpc.d.ts +11 -0
- package/dist/client/rpc.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/gemi.d.ts +4 -0
- package/dist/http/ApiRouter.d.ts +40 -3
- package/dist/http/ApiRouter.d.ts.map +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/services/index.js +1 -1
- package/dist/testing/index.js +1 -1
- package/package.json +1 -1
- package/skills/gemi-react-best-practices/rules/query-no-hand-rolled-fetch.md +14 -0
- /package/dist/{chunk-zbvdkh6q.js.map → chunk-3p9vj0h6.js.map} +0 -0
- /package/dist/{chunk-mpt5jg4e.js.map → chunk-pxstrw29.js.map} +0 -0
- /package/dist/{chunk-zy5gxk1g.js.map → chunk-yhxjhrvp.js.map} +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { FileRPC } from "./rpc";
|
|
2
|
+
import type { UrlParser } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* The paths `fetchBlob` and `fetchText` take: the app's file routes
|
|
5
|
+
* (`this.stream(...)` and `this.file(...)`), or any path while `FileRPC` is
|
|
6
|
+
* empty — an app without file routes, or a program without the app's types.
|
|
7
|
+
*/
|
|
8
|
+
export type FilePath = FilePathOf<FileRPC>;
|
|
9
|
+
/** `FilePath` over a given table, for tests. @internal */
|
|
10
|
+
export type FilePathOf<T> = [keyof T] extends [never] ? string : keyof T & string;
|
|
11
|
+
export type FetchFileOptions<P extends string> = {
|
|
12
|
+
/** The path's `:params`, substituted as `useQuery` does. */
|
|
13
|
+
params?: Partial<UrlParser<P>>;
|
|
14
|
+
/** The query string. `null` and `undefined` values are left out. */
|
|
15
|
+
search?: Record<string, string | number | boolean | null | undefined> | URLSearchParams;
|
|
16
|
+
/** Aborts the request; the returned promise then rejects with an `AbortError`. */
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
/** Anything else `fetch` takes (headers, `cache`, `credentials`). Always a `GET`. */
|
|
19
|
+
init?: Omit<RequestInit, "method" | "body" | "signal">;
|
|
20
|
+
};
|
|
21
|
+
/** @internal */
|
|
22
|
+
export type FetchFileArgs<P extends string> = {} extends UrlParser<P> ? [options?: FetchFileOptions<P>] : [options: FetchFileOptions<P> & {
|
|
23
|
+
params: UrlParser<P>;
|
|
24
|
+
}];
|
|
25
|
+
interface Fetched {
|
|
26
|
+
/**
|
|
27
|
+
* The file name the server gave in `Content-Disposition` (`filename*`
|
|
28
|
+
* first, then `filename`), or `null` when it gave none.
|
|
29
|
+
*/
|
|
30
|
+
filename: string | null;
|
|
31
|
+
/** The response, for its headers and status. Its body has been read. */
|
|
32
|
+
response: Response;
|
|
33
|
+
}
|
|
34
|
+
export interface FetchedBlob extends Fetched {
|
|
35
|
+
blob: Blob;
|
|
36
|
+
}
|
|
37
|
+
export interface FetchedText extends Fetched {
|
|
38
|
+
text: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Downloads a file route's body as a `Blob`.
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* const { blob, filename } = await fetchBlob("/pages/:pageId/post/image", {
|
|
45
|
+
* params: { pageId },
|
|
46
|
+
* search: { format: "png" },
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* A non-2xx rejects with a `QueryError` (`status`, the JSON `body` or `null`,
|
|
51
|
+
* `retryAfter`), the error `useQuery` throws, so `mutationErrorList(error)`
|
|
52
|
+
* reads its message. A network failure rejects with the browser's `TypeError`,
|
|
53
|
+
* an abort with its `AbortError`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function fetchBlob<P extends FilePath>(path: P, ...args: FetchFileArgs<P>): Promise<FetchedBlob>;
|
|
56
|
+
/** `fetchBlob`, with the body read as text. */
|
|
57
|
+
export declare function fetchText<P extends FilePath>(path: P, ...args: FetchFileArgs<P>): Promise<FetchedText>;
|
|
58
|
+
/**
|
|
59
|
+
* The file name in a `Content-Disposition` header: the RFC 5987
|
|
60
|
+
* `filename*=UTF-8''...` form when present and decodable, else `filename`.
|
|
61
|
+
*
|
|
62
|
+
* @internal Exported for tests.
|
|
63
|
+
*/
|
|
64
|
+
export declare function filenameOf(response: Response): string | null;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=fetchFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchFile.d.ts","sourceRoot":"","sources":["../../client/fetchFile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAElF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC/C,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,oEAAoE;IACpE,MAAM,CAAC,EACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC5D,eAAe,CAAC;IACpB,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qFAAqF;IACrF,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;CACxD,CAAC;AAGF,gBAAgB;AAChB,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IACxC,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,GACnB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC/B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAEhE,UAAU,OAAO;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAChD,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED,+CAA+C;AAC/C,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAChD,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,WAAW,CAAC,CAGtB;AAuCD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAe5D"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export type { QueryFailure, RetryOption, RetryDelayOption, } from "./retryPolicy
|
|
|
9
9
|
export { useMutation, useDelete, usePatch, usePost, usePut, useUpload } from "./useMutation";
|
|
10
10
|
export type { MutationCallConfig, MutationConcurrency } from "./useMutation";
|
|
11
11
|
export { useMutate } from "./useMutate";
|
|
12
|
+
export { fetchBlob, fetchText } from "./fetchFile";
|
|
13
|
+
export type { FetchedBlob, FetchedText, FetchFileOptions, FilePath } from "./fetchFile";
|
|
12
14
|
export { useSetQueryData } from "./useSetQueryData";
|
|
13
15
|
export type { QueryTarget, QueryUpdate } from "./useSetQueryData";
|
|
14
16
|
export { useSubscription } from "./useSubscription";
|
|
@@ -42,7 +44,7 @@ export type { InitOptions } from "./init";
|
|
|
42
44
|
export { isChunkLoadError, recoverFromChunkLoadError, CHUNK_RELOAD_MARKER, } from "./chunkLoadRecovery";
|
|
43
45
|
export type { ChunkLoadErrorContext, ChunkLoadErrorSource, ChunkLoadRecoveryOptions, ChunkReloadBlock, } from "./chunkLoadRecovery";
|
|
44
46
|
export { createRoot } from "./createRoot";
|
|
45
|
-
export type { RPC, ViewRPC, I18nDictionary, BroadcastRPC, Features, FeatureKey, ClientFeatureKey, } from "./rpc";
|
|
47
|
+
export type { RPC, FileRPC, ViewRPC, I18nDictionary, BroadcastRPC, Features, FeatureKey, ClientFeatureKey, } from "./rpc";
|
|
46
48
|
export type { ViewProps, LayoutProps, ViewPaths } from "./types";
|
|
47
49
|
export type { CreateI18nDictionary } from "./I18nContext";
|
|
48
50
|
export { Image } from "./Image";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as retryDelayFor, A as useLocation, B as getRealtimeClient, C as useRoute, D as I18nProvider, E as I18nContext, G as QueryConfigContext, H as SOCKET_ID_HEADER, I as RealtimeContext, J as USER_QUERY_CONFIG_KEYS, K as QueryManagerContext, L as channelKey, M as isAbsoluteUrl, O as ServerDataContext, P as Action, Q as parseRetryAfter, R as configureRealtime, S as routeDataUrl, T as useNavigate, U as toVariantKey, V as reconnectRealtime, W as applyParams$1, X as DEFAULT_STALE_TIME, Y as pickDefined, Z as isRetryableQueryError, _ as loadDictionary, a as useRouteTransition, b as setActiveLocale, c as ComponentsContext, d as loadViewModule, et as shouldRetryQuery, f as subscribeViewModules, g as recoverFromChunkLoadError, h as isChunkLoadError, i as RouteTransitionProvider, j as domainUrl, k as ServerDataProvider, l as ComponentsProvider, m as configureChunkLoadRecovery, n as useTheme, nt as Subject, o as ClientRouterContext, p as CHUNK_RELOAD_MARKER, q as QueryManagerProvider, r as m, s as ClientRouterProvider, t as ThemeProvider, tt as QueryError, u as initialViewModulesReady, v as loadDictionaryForRender, w as useSearchParams, x as readRoutePayload, y as registerDictionary, z as currentSocketId } from "../chunks/ThemeProvider-BIrCSrFY.js";
|
|
2
2
|
import { n as RouteStateContext, r as RouteStateProvider, t as useParams } from "../chunks/useParams-BN3XXfmG.js";
|
|
3
3
|
import { Fragment, StrictMode, Suspense, createContext, createElement, isValidElement, lazy, memo, use, useCallback, useContext, useDeferredValue, useEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1308,6 +1308,79 @@ function useMutate() {
|
|
|
1308
1308
|
};
|
|
1309
1309
|
}
|
|
1310
1310
|
//#endregion
|
|
1311
|
+
//#region client/fetchFile.ts
|
|
1312
|
+
/**
|
|
1313
|
+
* Downloads a file route's body as a `Blob`.
|
|
1314
|
+
*
|
|
1315
|
+
* ```ts
|
|
1316
|
+
* const { blob, filename } = await fetchBlob("/pages/:pageId/post/image", {
|
|
1317
|
+
* params: { pageId },
|
|
1318
|
+
* search: { format: "png" },
|
|
1319
|
+
* });
|
|
1320
|
+
* ```
|
|
1321
|
+
*
|
|
1322
|
+
* A non-2xx rejects with a `QueryError` (`status`, the JSON `body` or `null`,
|
|
1323
|
+
* `retryAfter`), the error `useQuery` throws, so `mutationErrorList(error)`
|
|
1324
|
+
* reads its message. A network failure rejects with the browser's `TypeError`,
|
|
1325
|
+
* an abort with its `AbortError`.
|
|
1326
|
+
*/
|
|
1327
|
+
async function fetchBlob(path, ...args) {
|
|
1328
|
+
const response = await request(path, args[0]);
|
|
1329
|
+
return {
|
|
1330
|
+
blob: await response.blob(),
|
|
1331
|
+
filename: filenameOf(response),
|
|
1332
|
+
response
|
|
1333
|
+
};
|
|
1334
|
+
}
|
|
1335
|
+
/** `fetchBlob`, with the body read as text. */
|
|
1336
|
+
async function fetchText(path, ...args) {
|
|
1337
|
+
const response = await request(path, args[0]);
|
|
1338
|
+
return {
|
|
1339
|
+
text: await response.text(),
|
|
1340
|
+
filename: filenameOf(response),
|
|
1341
|
+
response
|
|
1342
|
+
};
|
|
1343
|
+
}
|
|
1344
|
+
async function request(path, options = {}) {
|
|
1345
|
+
const { params = {}, search, signal, init } = options;
|
|
1346
|
+
const url = applyParams$1(path, params);
|
|
1347
|
+
const query = searchString(search);
|
|
1348
|
+
const response = await fetch(`/api${url}${query ? `?${query}` : ""}`, {
|
|
1349
|
+
...init,
|
|
1350
|
+
method: "GET",
|
|
1351
|
+
signal
|
|
1352
|
+
});
|
|
1353
|
+
if (!response.ok) {
|
|
1354
|
+
const body = await response.json().catch(() => null);
|
|
1355
|
+
throw new QueryError(url, query, response.status, body, parseRetryAfter(response.headers.get("retry-after")));
|
|
1356
|
+
}
|
|
1357
|
+
return response;
|
|
1358
|
+
}
|
|
1359
|
+
function searchString(search) {
|
|
1360
|
+
if (!search) return "";
|
|
1361
|
+
if (search instanceof URLSearchParams) return search.toString();
|
|
1362
|
+
const params = new URLSearchParams();
|
|
1363
|
+
for (const [key, value] of Object.entries(search)) if (value !== null && value !== void 0) params.append(key, String(value));
|
|
1364
|
+
return params.toString();
|
|
1365
|
+
}
|
|
1366
|
+
/**
|
|
1367
|
+
* The file name in a `Content-Disposition` header: the RFC 5987
|
|
1368
|
+
* `filename*=UTF-8''...` form when present and decodable, else `filename`.
|
|
1369
|
+
*
|
|
1370
|
+
* @internal Exported for tests.
|
|
1371
|
+
*/
|
|
1372
|
+
function filenameOf(response) {
|
|
1373
|
+
const header = response.headers.get("content-disposition");
|
|
1374
|
+
if (!header) return null;
|
|
1375
|
+
const extended = /filename\*\s*=\s*([^']*)'[^']*'([^;]+)/i.exec(header);
|
|
1376
|
+
if (extended) try {
|
|
1377
|
+
return decodeURIComponent(extended[2].trim());
|
|
1378
|
+
} catch {}
|
|
1379
|
+
const plain = /filename\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^;]+))/i.exec(header);
|
|
1380
|
+
if (!plain) return null;
|
|
1381
|
+
return (plain[1] !== void 0 ? plain[1].replace(/\\(.)/g, "$1") : plain[2].trim()) || null;
|
|
1382
|
+
}
|
|
1383
|
+
//#endregion
|
|
1311
1384
|
//#region client/useSubscription.ts
|
|
1312
1385
|
var MIN_RETRY_MS = 1e3;
|
|
1313
1386
|
var MAX_RETRY_MS = 3e4;
|
|
@@ -3512,6 +3585,6 @@ function onStaticNavigate(callback) {
|
|
|
3512
3585
|
return () => document.removeEventListener("gemi:page-load", listener);
|
|
3513
3586
|
}
|
|
3514
3587
|
//#endregion
|
|
3515
|
-
export { CHUNK_RELOAD_MARKER, Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, configureRealtime, create, createRoot, defineDictionary, init, isAuthenticationError, isChunkLoadError, isCsrfError, isFormError, isHttpError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isRetryableQueryError, isServerError, isValidationError, island, mutationErrorField, mutationErrorKind, mutationErrorList, onStaticNavigate, recoverFromChunkLoadError, textDirection, useAppIdMissmatch, useBreadcrumbs, useChannel, useChannelInvalidate, useDelete, useDictionary, useDomain, useEmailCode, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useFormatter, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSetQueryData, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
|
|
3588
|
+
export { CHUNK_RELOAD_MARKER, Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, configureRealtime, create, createRoot, defineDictionary, fetchBlob, fetchText, init, isAuthenticationError, isChunkLoadError, isCsrfError, isFormError, isHttpError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isRetryableQueryError, isServerError, isValidationError, island, mutationErrorField, mutationErrorKind, mutationErrorList, onStaticNavigate, recoverFromChunkLoadError, textDirection, useAppIdMissmatch, useBreadcrumbs, useChannel, useChannelInvalidate, useDelete, useDictionary, useDomain, useEmailCode, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useFormatter, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSetQueryData, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
|
|
3516
3589
|
|
|
3517
3590
|
//# sourceMappingURL=index.js.map
|