source: imaps-frontend/node_modules/@remix-run/router/dist/router.d.ts@ d565449

main
Last change on this file since d565449 was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 15.8 KB
RevLine 
[d565449]1import type { History, Location, Path, To } from "./history";
2import { Action as HistoryAction } from "./history";
3import type { AgnosticDataRouteMatch, AgnosticDataRouteObject, AgnosticRouteObject, DataStrategyFunction, DeferredData, DetectErrorBoundaryFunction, FormEncType, HTMLFormMethod, MapRoutePropertiesFunction, RouteData, Submission, UIMatch, AgnosticPatchRoutesOnMissFunction, DataWithResponseInit } from "./utils";
4/**
5 * A Router instance manages all navigation and data loading/mutations
6 */
7export interface Router {
8 /**
9 * @internal
10 * PRIVATE - DO NOT USE
11 *
12 * Return the basename for the router
13 */
14 get basename(): RouterInit["basename"];
15 /**
16 * @internal
17 * PRIVATE - DO NOT USE
18 *
19 * Return the future config for the router
20 */
21 get future(): FutureConfig;
22 /**
23 * @internal
24 * PRIVATE - DO NOT USE
25 *
26 * Return the current state of the router
27 */
28 get state(): RouterState;
29 /**
30 * @internal
31 * PRIVATE - DO NOT USE
32 *
33 * Return the routes for this router instance
34 */
35 get routes(): AgnosticDataRouteObject[];
36 /**
37 * @internal
38 * PRIVATE - DO NOT USE
39 *
40 * Return the window associated with the router
41 */
42 get window(): RouterInit["window"];
43 /**
44 * @internal
45 * PRIVATE - DO NOT USE
46 *
47 * Initialize the router, including adding history listeners and kicking off
48 * initial data fetches. Returns a function to cleanup listeners and abort
49 * any in-progress loads
50 */
51 initialize(): Router;
52 /**
53 * @internal
54 * PRIVATE - DO NOT USE
55 *
56 * Subscribe to router.state updates
57 *
58 * @param fn function to call with the new state
59 */
60 subscribe(fn: RouterSubscriber): () => void;
61 /**
62 * @internal
63 * PRIVATE - DO NOT USE
64 *
65 * Enable scroll restoration behavior in the router
66 *
67 * @param savedScrollPositions Object that will manage positions, in case
68 * it's being restored from sessionStorage
69 * @param getScrollPosition Function to get the active Y scroll position
70 * @param getKey Function to get the key to use for restoration
71 */
72 enableScrollRestoration(savedScrollPositions: Record<string, number>, getScrollPosition: GetScrollPositionFunction, getKey?: GetScrollRestorationKeyFunction): () => void;
73 /**
74 * @internal
75 * PRIVATE - DO NOT USE
76 *
77 * Navigate forward/backward in the history stack
78 * @param to Delta to move in the history stack
79 */
80 navigate(to: number): Promise<void>;
81 /**
82 * Navigate to the given path
83 * @param to Path to navigate to
84 * @param opts Navigation options (method, submission, etc.)
85 */
86 navigate(to: To | null, opts?: RouterNavigateOptions): Promise<void>;
87 /**
88 * @internal
89 * PRIVATE - DO NOT USE
90 *
91 * Trigger a fetcher load/submission
92 *
93 * @param key Fetcher key
94 * @param routeId Route that owns the fetcher
95 * @param href href to fetch
96 * @param opts Fetcher options, (method, submission, etc.)
97 */
98 fetch(key: string, routeId: string, href: string | null, opts?: RouterFetchOptions): void;
99 /**
100 * @internal
101 * PRIVATE - DO NOT USE
102 *
103 * Trigger a revalidation of all current route loaders and fetcher loads
104 */
105 revalidate(): void;
106 /**
107 * @internal
108 * PRIVATE - DO NOT USE
109 *
110 * Utility function to create an href for the given location
111 * @param location
112 */
113 createHref(location: Location | URL): string;
114 /**
115 * @internal
116 * PRIVATE - DO NOT USE
117 *
118 * Utility function to URL encode a destination path according to the internal
119 * history implementation
120 * @param to
121 */
122 encodeLocation(to: To): Path;
123 /**
124 * @internal
125 * PRIVATE - DO NOT USE
126 *
127 * Get/create a fetcher for the given key
128 * @param key
129 */
130 getFetcher<TData = any>(key: string): Fetcher<TData>;
131 /**
132 * @internal
133 * PRIVATE - DO NOT USE
134 *
135 * Delete the fetcher for a given key
136 * @param key
137 */
138 deleteFetcher(key: string): void;
139 /**
140 * @internal
141 * PRIVATE - DO NOT USE
142 *
143 * Cleanup listeners and abort any in-progress loads
144 */
145 dispose(): void;
146 /**
147 * @internal
148 * PRIVATE - DO NOT USE
149 *
150 * Get a navigation blocker
151 * @param key The identifier for the blocker
152 * @param fn The blocker function implementation
153 */
154 getBlocker(key: string, fn: BlockerFunction): Blocker;
155 /**
156 * @internal
157 * PRIVATE - DO NOT USE
158 *
159 * Delete a navigation blocker
160 * @param key The identifier for the blocker
161 */
162 deleteBlocker(key: string): void;
163 /**
164 * @internal
165 * PRIVATE DO NOT USE
166 *
167 * Patch additional children routes into an existing parent route
168 * @param routeId The parent route id or a callback function accepting `patch`
169 * to perform batch patching
170 * @param children The additional children routes
171 */
172 patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;
173 /**
174 * @internal
175 * PRIVATE - DO NOT USE
176 *
177 * HMR needs to pass in-flight route updates to React Router
178 * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)
179 */
180 _internalSetRoutes(routes: AgnosticRouteObject[]): void;
181 /**
182 * @internal
183 * PRIVATE - DO NOT USE
184 *
185 * Internal fetch AbortControllers accessed by unit tests
186 */
187 _internalFetchControllers: Map<string, AbortController>;
188 /**
189 * @internal
190 * PRIVATE - DO NOT USE
191 *
192 * Internal pending DeferredData instances accessed by unit tests
193 */
194 _internalActiveDeferreds: Map<string, DeferredData>;
195}
196/**
197 * State maintained internally by the router. During a navigation, all states
198 * reflect the the "old" location unless otherwise noted.
199 */
200export interface RouterState {
201 /**
202 * The action of the most recent navigation
203 */
204 historyAction: HistoryAction;
205 /**
206 * The current location reflected by the router
207 */
208 location: Location;
209 /**
210 * The current set of route matches
211 */
212 matches: AgnosticDataRouteMatch[];
213 /**
214 * Tracks whether we've completed our initial data load
215 */
216 initialized: boolean;
217 /**
218 * Current scroll position we should start at for a new view
219 * - number -> scroll position to restore to
220 * - false -> do not restore scroll at all (used during submissions)
221 * - null -> don't have a saved position, scroll to hash or top of page
222 */
223 restoreScrollPosition: number | false | null;
224 /**
225 * Indicate whether this navigation should skip resetting the scroll position
226 * if we are unable to restore the scroll position
227 */
228 preventScrollReset: boolean;
229 /**
230 * Tracks the state of the current navigation
231 */
232 navigation: Navigation;
233 /**
234 * Tracks any in-progress revalidations
235 */
236 revalidation: RevalidationState;
237 /**
238 * Data from the loaders for the current matches
239 */
240 loaderData: RouteData;
241 /**
242 * Data from the action for the current matches
243 */
244 actionData: RouteData | null;
245 /**
246 * Errors caught from loaders for the current matches
247 */
248 errors: RouteData | null;
249 /**
250 * Map of current fetchers
251 */
252 fetchers: Map<string, Fetcher>;
253 /**
254 * Map of current blockers
255 */
256 blockers: Map<string, Blocker>;
257}
258/**
259 * Data that can be passed into hydrate a Router from SSR
260 */
261export type HydrationState = Partial<Pick<RouterState, "loaderData" | "actionData" | "errors">>;
262/**
263 * Future flags to toggle new feature behavior
264 */
265export interface FutureConfig {
266 v7_fetcherPersist: boolean;
267 v7_normalizeFormMethod: boolean;
268 v7_partialHydration: boolean;
269 v7_prependBasename: boolean;
270 v7_relativeSplatPath: boolean;
271 v7_skipActionErrorRevalidation: boolean;
272}
273/**
274 * Initialization options for createRouter
275 */
276export interface RouterInit {
277 routes: AgnosticRouteObject[];
278 history: History;
279 basename?: string;
280 /**
281 * @deprecated Use `mapRouteProperties` instead
282 */
283 detectErrorBoundary?: DetectErrorBoundaryFunction;
284 mapRouteProperties?: MapRoutePropertiesFunction;
285 future?: Partial<FutureConfig>;
286 hydrationData?: HydrationState;
287 window?: Window;
288 unstable_patchRoutesOnMiss?: AgnosticPatchRoutesOnMissFunction;
289 unstable_dataStrategy?: DataStrategyFunction;
290}
291/**
292 * State returned from a server-side query() call
293 */
294export interface StaticHandlerContext {
295 basename: Router["basename"];
296 location: RouterState["location"];
297 matches: RouterState["matches"];
298 loaderData: RouterState["loaderData"];
299 actionData: RouterState["actionData"];
300 errors: RouterState["errors"];
301 statusCode: number;
302 loaderHeaders: Record<string, Headers>;
303 actionHeaders: Record<string, Headers>;
304 activeDeferreds: Record<string, DeferredData> | null;
305 _deepestRenderedBoundaryId?: string | null;
306}
307/**
308 * A StaticHandler instance manages a singular SSR navigation/fetch event
309 */
310export interface StaticHandler {
311 dataRoutes: AgnosticDataRouteObject[];
312 query(request: Request, opts?: {
313 requestContext?: unknown;
314 skipLoaderErrorBubbling?: boolean;
315 unstable_dataStrategy?: DataStrategyFunction;
316 }): Promise<StaticHandlerContext | Response>;
317 queryRoute(request: Request, opts?: {
318 routeId?: string;
319 requestContext?: unknown;
320 unstable_dataStrategy?: DataStrategyFunction;
321 }): Promise<any>;
322}
323type ViewTransitionOpts = {
324 currentLocation: Location;
325 nextLocation: Location;
326};
327/**
328 * Subscriber function signature for changes to router state
329 */
330export interface RouterSubscriber {
331 (state: RouterState, opts: {
332 deletedFetchers: string[];
333 unstable_viewTransitionOpts?: ViewTransitionOpts;
334 unstable_flushSync: boolean;
335 }): void;
336}
337/**
338 * Function signature for determining the key to be used in scroll restoration
339 * for a given location
340 */
341export interface GetScrollRestorationKeyFunction {
342 (location: Location, matches: UIMatch[]): string | null;
343}
344/**
345 * Function signature for determining the current scroll position
346 */
347export interface GetScrollPositionFunction {
348 (): number;
349}
350export type RelativeRoutingType = "route" | "path";
351type BaseNavigateOrFetchOptions = {
352 preventScrollReset?: boolean;
353 relative?: RelativeRoutingType;
354 unstable_flushSync?: boolean;
355};
356type BaseNavigateOptions = BaseNavigateOrFetchOptions & {
357 replace?: boolean;
358 state?: any;
359 fromRouteId?: string;
360 unstable_viewTransition?: boolean;
361};
362type BaseSubmissionOptions = {
363 formMethod?: HTMLFormMethod;
364 formEncType?: FormEncType;
365} & ({
366 formData: FormData;
367 body?: undefined;
368} | {
369 formData?: undefined;
370 body: any;
371});
372/**
373 * Options for a navigate() call for a normal (non-submission) navigation
374 */
375type LinkNavigateOptions = BaseNavigateOptions;
376/**
377 * Options for a navigate() call for a submission navigation
378 */
379type SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;
380/**
381 * Options to pass to navigate() for a navigation
382 */
383export type RouterNavigateOptions = LinkNavigateOptions | SubmissionNavigateOptions;
384/**
385 * Options for a fetch() load
386 */
387type LoadFetchOptions = BaseNavigateOrFetchOptions;
388/**
389 * Options for a fetch() submission
390 */
391type SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;
392/**
393 * Options to pass to fetch()
394 */
395export type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;
396/**
397 * Potential states for state.navigation
398 */
399export type NavigationStates = {
400 Idle: {
401 state: "idle";
402 location: undefined;
403 formMethod: undefined;
404 formAction: undefined;
405 formEncType: undefined;
406 formData: undefined;
407 json: undefined;
408 text: undefined;
409 };
410 Loading: {
411 state: "loading";
412 location: Location;
413 formMethod: Submission["formMethod"] | undefined;
414 formAction: Submission["formAction"] | undefined;
415 formEncType: Submission["formEncType"] | undefined;
416 formData: Submission["formData"] | undefined;
417 json: Submission["json"] | undefined;
418 text: Submission["text"] | undefined;
419 };
420 Submitting: {
421 state: "submitting";
422 location: Location;
423 formMethod: Submission["formMethod"];
424 formAction: Submission["formAction"];
425 formEncType: Submission["formEncType"];
426 formData: Submission["formData"];
427 json: Submission["json"];
428 text: Submission["text"];
429 };
430};
431export type Navigation = NavigationStates[keyof NavigationStates];
432export type RevalidationState = "idle" | "loading";
433/**
434 * Potential states for fetchers
435 */
436type FetcherStates<TData = any> = {
437 Idle: {
438 state: "idle";
439 formMethod: undefined;
440 formAction: undefined;
441 formEncType: undefined;
442 text: undefined;
443 formData: undefined;
444 json: undefined;
445 data: TData | undefined;
446 };
447 Loading: {
448 state: "loading";
449 formMethod: Submission["formMethod"] | undefined;
450 formAction: Submission["formAction"] | undefined;
451 formEncType: Submission["formEncType"] | undefined;
452 text: Submission["text"] | undefined;
453 formData: Submission["formData"] | undefined;
454 json: Submission["json"] | undefined;
455 data: TData | undefined;
456 };
457 Submitting: {
458 state: "submitting";
459 formMethod: Submission["formMethod"];
460 formAction: Submission["formAction"];
461 formEncType: Submission["formEncType"];
462 text: Submission["text"];
463 formData: Submission["formData"];
464 json: Submission["json"];
465 data: TData | undefined;
466 };
467};
468export type Fetcher<TData = any> = FetcherStates<TData>[keyof FetcherStates<TData>];
469interface BlockerBlocked {
470 state: "blocked";
471 reset(): void;
472 proceed(): void;
473 location: Location;
474}
475interface BlockerUnblocked {
476 state: "unblocked";
477 reset: undefined;
478 proceed: undefined;
479 location: undefined;
480}
481interface BlockerProceeding {
482 state: "proceeding";
483 reset: undefined;
484 proceed: undefined;
485 location: Location;
486}
487export type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;
488export type BlockerFunction = (args: {
489 currentLocation: Location;
490 nextLocation: Location;
491 historyAction: HistoryAction;
492}) => boolean;
493export declare const IDLE_NAVIGATION: NavigationStates["Idle"];
494export declare const IDLE_FETCHER: FetcherStates["Idle"];
495export declare const IDLE_BLOCKER: BlockerUnblocked;
496/**
497 * Create a router and listen to history POP navigations
498 */
499export declare function createRouter(init: RouterInit): Router;
500export declare const UNSAFE_DEFERRED_SYMBOL: unique symbol;
501/**
502 * Future flags to toggle new feature behavior
503 */
504export interface StaticHandlerFutureConfig {
505 v7_relativeSplatPath: boolean;
506 v7_throwAbortReason: boolean;
507}
508export interface CreateStaticHandlerOptions {
509 basename?: string;
510 /**
511 * @deprecated Use `mapRouteProperties` instead
512 */
513 detectErrorBoundary?: DetectErrorBoundaryFunction;
514 mapRouteProperties?: MapRoutePropertiesFunction;
515 future?: Partial<StaticHandlerFutureConfig>;
516}
517export declare function createStaticHandler(routes: AgnosticRouteObject[], opts?: CreateStaticHandlerOptions): StaticHandler;
518/**
519 * Given an existing StaticHandlerContext and an error thrown at render time,
520 * provide an updated StaticHandlerContext suitable for a second SSR render
521 */
522export declare function getStaticContextFromError(routes: AgnosticDataRouteObject[], context: StaticHandlerContext, error: any): StaticHandlerContext;
523export declare function isDataWithResponseInit(value: any): value is DataWithResponseInit<unknown>;
524export declare function isDeferredData(value: any): value is DeferredData;
525export {};
Note: See TracBrowser for help on using the repository browser.