@@ -13,7 +13,6 @@ import type {
13
13
DefineLoaderFn ,
14
14
UseDataLoader ,
15
15
UseDataLoaderResult ,
16
- _DataMaybeLazy ,
17
16
_DefineLoaderEntryMap ,
18
17
} from 'unplugin-vue-router/runtime'
19
18
import {
@@ -60,40 +59,32 @@ import { toLazyValue } from './createDataLoader'
60
59
* @param loader - function that returns a promise with the data
61
60
* @param options - options to configure the data loader
62
61
*/
63
- export function defineColadaLoader <
64
- Name extends keyof RouteMap ,
65
- Data ,
66
- isLazy extends boolean ,
67
- > (
62
+ export function defineColadaLoader < Name extends keyof RouteMap , Data > (
68
63
name : Name ,
69
- options : DefineDataColadaLoaderOptions < isLazy , Name , Data >
70
- ) : UseDataLoaderColada < isLazy , Data >
71
- export function defineColadaLoader < Data , isLazy extends boolean > (
72
- options : DefineDataColadaLoaderOptions < isLazy , keyof RouteMap , Data >
73
- ) : UseDataLoaderColada < isLazy , Data >
64
+ options : DefineDataColadaLoaderOptions < Name , Data >
65
+ ) : UseDataLoaderColada < Data >
66
+ export function defineColadaLoader < Data > (
67
+ options : DefineDataColadaLoaderOptions < keyof RouteMap , Data >
68
+ ) : UseDataLoaderColada < Data >
74
69
75
- export function defineColadaLoader < Data , isLazy extends boolean > (
70
+ export function defineColadaLoader < Data > (
76
71
nameOrOptions :
77
72
| keyof RouteMap
78
- | DefineDataColadaLoaderOptions < isLazy , keyof RouteMap , Data > ,
79
- _options ?: DefineDataColadaLoaderOptions < isLazy , keyof RouteMap , Data >
80
- ) : UseDataLoaderColada < isLazy , Data > {
73
+ | DefineDataColadaLoaderOptions < keyof RouteMap , Data > ,
74
+ _options ?: DefineDataColadaLoaderOptions < keyof RouteMap , Data >
75
+ ) : UseDataLoaderColada < Data > {
81
76
// TODO: make it DEV only and remove the first argument in production mode
82
77
// resolve option overrides
83
78
_options =
84
79
_options ||
85
- ( nameOrOptions as DefineDataColadaLoaderOptions <
86
- isLazy ,
87
- keyof RouteMap ,
88
- Data
89
- > )
80
+ ( nameOrOptions as DefineDataColadaLoaderOptions < keyof RouteMap , Data > )
90
81
const loader = _options . query
91
82
92
83
const options = {
93
84
...DEFAULT_DEFINE_LOADER_OPTIONS ,
94
85
..._options ,
95
86
commit : _options ?. commit || 'after-load' ,
96
- } as DefineDataColadaLoaderOptions < isLazy , keyof RouteMap , Data >
87
+ } as DefineDataColadaLoaderOptions < keyof RouteMap , Data >
97
88
98
89
let isInitial = true
99
90
@@ -104,18 +95,16 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
104
95
parent ?: DataLoaderEntryBase ,
105
96
reload ?: boolean
106
97
) : Promise < void > {
107
- const entries = router [
108
- LOADER_ENTRIES_KEY
109
- ] ! as unknown as _DefineLoaderEntryMap <
110
- DataLoaderColadaEntry < boolean , unknown >
98
+ const entries = router [ LOADER_ENTRIES_KEY ] ! as _DefineLoaderEntryMap <
99
+ DataLoaderColadaEntry < unknown >
111
100
>
112
101
const isSSR = router [ IS_SSR_KEY ]
113
102
const key = serializeQueryKey ( options . key , to )
114
103
if ( ! entries . has ( loader ) ) {
115
104
const route = shallowRef < RouteLocationNormalizedLoaded > ( to )
116
105
entries . set ( loader , {
117
106
// force the type to match
118
- data : shallowRef < _DataMaybeLazy < Data , isLazy > > ( ) ,
107
+ data : shallowRef < Data | undefined > ( ) ,
119
108
isLoading : shallowRef ( false ) ,
120
109
error : shallowRef < any > ( ) ,
121
110
to,
@@ -308,7 +297,7 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
308
297
}
309
298
310
299
function commit (
311
- this : DataLoaderColadaEntry < isLazy , Data > ,
300
+ this : DataLoaderColadaEntry < Data > ,
312
301
to : RouteLocationNormalizedLoaded
313
302
) {
314
303
const key = serializeQueryKey ( options . key , to )
@@ -358,7 +347,7 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
358
347
359
348
// @ts -expect-error: requires the internals and symbol that are added later
360
349
const useDataLoader : // for ts
361
- UseDataLoaderColada < isLazy , Data > = ( ) => {
350
+ UseDataLoaderColada < Data > = ( ) => {
362
351
// work with nested data loaders
363
352
const currentEntry = getCurrentContext ( )
364
353
const [ parentEntry , _router , _route ] = currentEntry
@@ -368,10 +357,8 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
368
357
369
358
const entries = router [
370
359
LOADER_ENTRIES_KEY
371
- ] ! as unknown as _DefineLoaderEntryMap <
372
- DataLoaderColadaEntry < boolean , unknown >
373
- >
374
- let entry = entries . get ( loader )
360
+ ] ! as unknown as _DefineLoaderEntryMap < DataLoaderColadaEntry < unknown > >
361
+ let entry = entries . get ( loader ) as DataLoaderColadaEntry < Data > | undefined
375
362
376
363
if (
377
364
// if the entry doesn't exist, create it with load and ensure it's loading
@@ -388,7 +375,7 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
388
375
)
389
376
}
390
377
391
- entry = entries . get ( loader ) !
378
+ entry = entries . get ( loader ) ! as DataLoaderColadaEntry < Data >
392
379
393
380
// add ourselves to the parent entry children
394
381
if ( parentEntry ) {
@@ -450,7 +437,7 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
450
437
asyncStatus : ext ! . asyncStatus ,
451
438
state : ext ! . state ,
452
439
isPending : ext ! . isPending ,
453
- } satisfies UseDataLoaderColadaResult < boolean , unknown >
440
+ } satisfies UseDataLoaderColadaResult < Data >
454
441
455
442
// load ensures there is a pending load
456
443
const promise = entry
@@ -489,11 +476,10 @@ export function defineColadaLoader<Data, isLazy extends boolean>(
489
476
export const joinKeys = ( keys : string [ ] ) : string => keys . join ( '|' )
490
477
491
478
export interface DefineDataColadaLoaderOptions <
492
- isLazy extends boolean ,
493
479
Name extends keyof RouteMap ,
494
480
Data ,
495
- > extends DefineDataLoaderOptionsBase < isLazy > ,
496
- Omit < UseQueryOptions < unknown > , 'query' | 'key' > {
481
+ > extends DefineDataLoaderOptionsBase ,
482
+ Omit < UseQueryOptions < Data > , 'query' | 'key' > {
497
483
/**
498
484
* Key associated with the data and passed to pinia colada
499
485
* @param to - Route to load the data
@@ -517,8 +503,8 @@ export interface DefineDataColadaLoaderOptions<
517
503
*/
518
504
export interface DataColadaLoaderContext extends DataLoaderContextBase { }
519
505
520
- export interface UseDataLoaderColadaResult < isLazy extends boolean , Data >
521
- extends UseDataLoaderResult < isLazy , Data > ,
506
+ export interface UseDataLoaderColadaResult < Data >
507
+ extends UseDataLoaderResult < Data > ,
522
508
Pick <
523
509
UseQueryReturn < Data , any > ,
524
510
'isPending' | 'refetch' | 'refresh' | 'status' | 'asyncStatus' | 'state'
@@ -527,8 +513,7 @@ export interface UseDataLoaderColadaResult<isLazy extends boolean, Data>
527
513
/**
528
514
* Data Loader composable returned by `defineColadaLoader()`.
529
515
*/
530
- export interface UseDataLoaderColada < isLazy extends boolean , Data >
531
- extends UseDataLoader < isLazy , Data > {
516
+ export interface UseDataLoaderColada < Data > extends UseDataLoader < Data > {
532
517
/**
533
518
* Data Loader composable returned by `defineColadaLoader()`.
534
519
*
@@ -555,12 +540,11 @@ export interface UseDataLoaderColada<isLazy extends boolean, Data>
555
540
// `return new NavigationResult()` in the loader
556
541
Exclude < Data , NavigationResult > ,
557
542
// or use it as a composable
558
- UseDataLoaderColadaResult < isLazy , Exclude < Data , NavigationResult > >
543
+ UseDataLoaderColadaResult < Exclude < Data , NavigationResult > >
559
544
>
560
545
}
561
546
562
- export interface DataLoaderColadaEntry < isLazy extends boolean , Data >
563
- extends DataLoaderEntryBase < isLazy , Data > {
547
+ export interface DataLoaderColadaEntry < Data > extends DataLoaderEntryBase < Data > {
564
548
/**
565
549
* Reactive route passed to pinia colada so it automatically refetch
566
550
*/
@@ -601,7 +585,7 @@ const DEFAULT_DEFINE_LOADER_OPTIONS = {
601
585
server : true ,
602
586
commit : 'after-load' ,
603
587
} satisfies Omit <
604
- DefineDataColadaLoaderOptions < boolean , keyof RouteMap , unknown > ,
588
+ DefineDataColadaLoaderOptions < keyof RouteMap , unknown > ,
605
589
'key' | 'query'
606
590
>
607
591
@@ -622,7 +606,7 @@ const toValueWithParameters = <T, Arg>(
622
606
* @param to - route to use
623
607
*/
624
608
function serializeQueryKey (
625
- keyOption : DefineDataColadaLoaderOptions < boolean , string , unknown > [ 'key' ] ,
609
+ keyOption : DefineDataColadaLoaderOptions < string , unknown > [ 'key' ] ,
626
610
to : RouteLocationNormalizedLoaded
627
611
) : string [ ] {
628
612
const key = toValueWithParameters ( keyOption , to )
0 commit comments