@solidjs/router
Advanced tools
Comparing version 0.14.1 to 0.14.2
@@ -0,6 +1,11 @@ | ||
import { type ReconcileOptions } from "solid-js/store"; | ||
/** | ||
* This is mock of the eventual Solid 2.0 primitive. It is not fully featured. | ||
* As `createAsync` and `createAsyncStore` are wrappers for `createResource`, | ||
* this type allows to support `latest` field for these primitives. | ||
* It will be removed in the future. | ||
*/ | ||
import { type Accessor } from "solid-js"; | ||
import { type ReconcileOptions } from "solid-js/store"; | ||
export type AccessorWithLatest<T> = { | ||
(): T; | ||
latest: T; | ||
}; | ||
export declare function createAsync<T>(fn: (prev: T) => Promise<T>, options: { | ||
@@ -10,3 +15,3 @@ name?: string; | ||
deferStream?: boolean; | ||
}): Accessor<T>; | ||
}): AccessorWithLatest<T>; | ||
export declare function createAsync<T>(fn: (prev: T | undefined) => Promise<T>, options?: { | ||
@@ -16,3 +21,3 @@ name?: string; | ||
deferStream?: boolean; | ||
}): Accessor<T | undefined>; | ||
}): AccessorWithLatest<T | undefined>; | ||
export declare function createAsyncStore<T>(fn: (prev: T) => Promise<T>, options: { | ||
@@ -23,3 +28,3 @@ name?: string; | ||
reconcile?: ReconcileOptions; | ||
}): Accessor<T>; | ||
}): AccessorWithLatest<T>; | ||
export declare function createAsyncStore<T>(fn: (prev: T | undefined) => Promise<T>, options?: { | ||
@@ -30,2 +35,2 @@ name?: string; | ||
reconcile?: ReconcileOptions; | ||
}): Accessor<T | undefined>; | ||
}): AccessorWithLatest<T | undefined>; |
@@ -11,3 +11,9 @@ /** | ||
[resource] = createResource(() => subFetch(fn, untrack(prev)), v => v, options); | ||
return () => resource(); | ||
const resultAccessor = (() => resource()); | ||
Object.defineProperty(resultAccessor, 'latest', { | ||
get() { | ||
return resource.latest; | ||
} | ||
}); | ||
return resultAccessor; | ||
} | ||
@@ -21,3 +27,9 @@ export function createAsyncStore(fn, options = {}) { | ||
}); | ||
return () => resource(); | ||
const resultAccessor = (() => resource()); | ||
Object.defineProperty(resultAccessor, 'latest', { | ||
get() { | ||
return resource.latest; | ||
} | ||
}); | ||
return resultAccessor; | ||
} | ||
@@ -24,0 +36,0 @@ function createDeepSignal(value, options) { |
@@ -1,4 +0,4 @@ | ||
export { createAsync, createAsyncStore } from "./createAsync.js"; | ||
export { createAsync, createAsyncStore, type AccessorWithLatest } from "./createAsync.js"; | ||
export { action, useSubmission, useSubmissions, useAction, type Action } from "./action.js"; | ||
export { cache, revalidate, type CachedFunction } from "./cache.js"; | ||
export { redirect, reload, json } from "./response.js"; |
import { isServer, getRequestEvent, createComponent as createComponent$1, memo, delegateEvents, spread, mergeProps as mergeProps$1, template } from 'solid-js/web'; | ||
import { getOwner, runWithOwner, createMemo, createContext, onCleanup, useContext, untrack, createSignal, createRenderEffect, on, startTransition, resetErrorBoundaries, batch, createComponent, children, mergeProps, Show, createRoot, getListener, sharedConfig, $TRACK, splitProps, createResource } from 'solid-js'; | ||
import { getOwner, runWithOwner, createMemo, createContext, onCleanup, useContext, untrack, createSignal, createRenderEffect, on, startTransition, resetErrorBoundaries, batch, createComponent, children, mergeProps, Show, createRoot, sharedConfig, getListener, $TRACK, splitProps, createResource } from 'solid-js'; | ||
import { createStore, reconcile, unwrap } from 'solid-js/store'; | ||
@@ -843,2 +843,3 @@ | ||
!ignore && config.set(next); | ||
if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = true; | ||
return next; | ||
@@ -1525,2 +1526,9 @@ }); | ||
*/ | ||
/** | ||
* As `createAsync` and `createAsyncStore` are wrappers for `createResource`, | ||
* this type allows to support `latest` field for these primitives. | ||
* It will be removed in the future. | ||
*/ | ||
function createAsync(fn, options) { | ||
@@ -1530,3 +1538,9 @@ let resource; | ||
[resource] = createResource(() => subFetch(fn, untrack(prev)), v => v, options); | ||
return () => resource(); | ||
const resultAccessor = () => resource(); | ||
Object.defineProperty(resultAccessor, 'latest', { | ||
get() { | ||
return resource.latest; | ||
} | ||
}); | ||
return resultAccessor; | ||
} | ||
@@ -1540,3 +1554,9 @@ function createAsyncStore(fn, options = {}) { | ||
}); | ||
return () => resource(); | ||
const resultAccessor = () => resource(); | ||
Object.defineProperty(resultAccessor, 'latest', { | ||
get() { | ||
return resource.latest; | ||
} | ||
}); | ||
return resultAccessor; | ||
} | ||
@@ -1543,0 +1563,0 @@ function createDeepSignal(value, options) { |
@@ -1,2 +0,2 @@ | ||
import { createSignal, onCleanup } from "solid-js"; | ||
import { createSignal, onCleanup, sharedConfig } from "solid-js"; | ||
import { createRouterComponent } from "./components.jsx"; | ||
@@ -25,2 +25,4 @@ function intercept([value, setValue], get, set) { | ||
!ignore && config.set(next); | ||
if (sharedConfig.registry && !sharedConfig.done) | ||
sharedConfig.done = true; | ||
return next; | ||
@@ -27,0 +29,0 @@ }); |
@@ -9,3 +9,3 @@ { | ||
"license": "MIT", | ||
"version": "0.14.1", | ||
"version": "0.14.2", | ||
"homepage": "https://github.com/solidjs/solid-router#readme", | ||
@@ -12,0 +12,0 @@ "repository": { |
@@ -498,2 +498,9 @@ <p> | ||
It also preserves `latest` field from `createResource`. Note that it will be removed in the future. | ||
```jsx | ||
const user = createAsync((currentValue) => getUser(params.id)) | ||
return <h1>{user.latest.name}</h1>; | ||
``` | ||
Using `cache` in `createResource` directly won't work properly as the fetcher is not reactive and it won't invalidate properly. | ||
@@ -504,2 +511,3 @@ | ||
Similar to `createAsync` except it uses a deeply reactive store. Perfect for applying fine-grained changes to large model data that updates. | ||
It also supports `latest` field which will be removed in the future. | ||
@@ -732,3 +740,3 @@ ```jsx | ||
| preload | boolean | Enables/disables preloads globally, default: `true` | | ||
| explicitLinks | boolean | Disables all anchors being intercepted and instead requires `<A>`. default: `false` | | ||
| explicitLinks | boolean | Disables all anchors being intercepted and instead requires `<A>`. Default: `false`. (To disable interception for a specific link, set `target` to any value, e.g. `<a target="_self">`.) | | ||
@@ -735,0 +743,0 @@ ### `<A>` |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
172191
3835
999