Skip to content

Commit d5760ed

Browse files
authored
Merge pull request #8126 from QwikDev/v2-async-computed-changes
feat: async computed changes
2 parents 2110331 + 3bbd3d8 commit d5760ed

File tree

32 files changed

+642
-206
lines changed

32 files changed

+642
-206
lines changed

.changeset/deep-places-allow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@qwik.dev/core': minor
3+
---
4+
5+
feat: rename .resolve() to .promise()

.changeset/orange-planes-kiss.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@qwik.dev/core': minor
3+
---
4+
5+
feat: change behavior of useAsyncComputed$ to throw only once

.changeset/petite-experts-press.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@qwik.dev/router': minor
3+
---
4+
5+
feat: extend routeLoader$ signal type and eslint rule

packages/docs/src/routes/api/qwik-router/api.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@
446446
}
447447
],
448448
"kind": "TypeAlias",
449-
"content": "```typescript\nexport type LoaderSignal<TYPE> = TYPE extends () => ValueOrPromise<infer VALIDATOR> ? ReadonlySignal<ValueOrPromise<VALIDATOR>> : ReadonlySignal<TYPE>;\n```",
449+
"content": "```typescript\nexport type LoaderSignal<TYPE> = (TYPE extends () => ValueOrPromise<infer VALIDATOR> ? ReadonlySignal<ValueOrPromise<VALIDATOR>> : ReadonlySignal<TYPE>) & Pick<AsyncComputedReadonlySignal, 'promise' | 'loading' | 'error'>;\n```",
450450
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik-router/src/runtime/src/types.ts",
451451
"mdFile": "router.loadersignal.md"
452452
},

packages/docs/src/routes/api/qwik-router/index.mdx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,11 +1163,12 @@ export type Loader<RETURN> = {
11631163
## LoaderSignal
11641164

11651165
```typescript
1166-
export type LoaderSignal<TYPE> = TYPE extends () => ValueOrPromise<
1166+
export type LoaderSignal<TYPE> = (TYPE extends () => ValueOrPromise<
11671167
infer VALIDATOR
11681168
>
11691169
? ReadonlySignal<ValueOrPromise<VALIDATOR>>
1170-
: ReadonlySignal<TYPE>;
1170+
: ReadonlySignal<TYPE>) &
1171+
Pick<AsyncComputedReadonlySignal, "promise" | "loading" | "error">;
11711172
```
11721173

11731174
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik-router/src/runtime/src/types.ts)

packages/docs/src/routes/api/qwik/api.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@
244244
}
245245
],
246246
"kind": "Interface",
247-
"content": "```typescript\nexport interface AsyncComputedReadonlySignal<T = unknown> extends ComputedSignal<T> \n```\n**Extends:** [ComputedSignal](#computedsignal)<!-- -->&lt;T&gt;\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[error](#)\n\n\n</td><td>\n\n\n</td><td>\n\nError \\| null\n\n\n</td><td>\n\nThe error that occurred while computing the signal.\n\n\n</td></tr>\n<tr><td>\n\n[loading](#)\n\n\n</td><td>\n\n\n</td><td>\n\nboolean\n\n\n</td><td>\n\nWhether the signal is currently loading.\n\n\n</td></tr>\n</tbody></table>\n\n\n<table><thead><tr><th>\n\nMethod\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[resolve()](#asynccomputedreadonlysignal-resolve)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
247+
"content": "```typescript\nexport interface AsyncComputedReadonlySignal<T = unknown> extends ComputedSignal<T> \n```\n**Extends:** [ComputedSignal](#computedsignal)<!-- -->&lt;T&gt;\n\n\n<table><thead><tr><th>\n\nProperty\n\n\n</th><th>\n\nModifiers\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[error](#)\n\n\n</td><td>\n\n\n</td><td>\n\nError \\| null\n\n\n</td><td>\n\nThe error that occurred while computing the signal.\n\n\n</td></tr>\n<tr><td>\n\n[loading](#)\n\n\n</td><td>\n\n\n</td><td>\n\nboolean\n\n\n</td><td>\n\nWhether the signal is currently loading.\n\n\n</td></tr>\n</tbody></table>\n\n\n<table><thead><tr><th>\n\nMethod\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[promise()](#asynccomputedreadonlysignal-promise)\n\n\n</td><td>\n\nA promise that resolves when the value is computed.\n\n\n</td></tr>\n</tbody></table>",
248248
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/signal.public.ts",
249249
"mdFile": "core.asynccomputedreadonlysignal.md"
250250
},
@@ -1255,6 +1255,23 @@
12551255
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/shared/prefetch-service-worker/prefetch.ts",
12561256
"mdFile": "core.prefetchserviceworker.md"
12571257
},
1258+
{
1259+
"name": "promise",
1260+
"id": "asynccomputedreadonlysignal-promise",
1261+
"hierarchy": [
1262+
{
1263+
"name": "AsyncComputedReadonlySignal",
1264+
"id": "asynccomputedreadonlysignal-promise"
1265+
},
1266+
{
1267+
"name": "promise",
1268+
"id": "asynccomputedreadonlysignal-promise"
1269+
}
1270+
],
1271+
"kind": "MethodSignature",
1272+
"content": "A promise that resolves when the value is computed.\n\n\n```typescript\npromise(): Promise<T>;\n```\n**Returns:**\n\nPromise&lt;T&gt;",
1273+
"mdFile": "core.asynccomputedreadonlysignal.promise.md"
1274+
},
12581275
{
12591276
"name": "PropFunction",
12601277
"id": "propfunction",
@@ -1801,23 +1818,6 @@
18011818
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/ssr/ssr-types.ts",
18021819
"mdFile": "core.renderssroptions.md"
18031820
},
1804-
{
1805-
"name": "resolve",
1806-
"id": "asynccomputedreadonlysignal-resolve",
1807-
"hierarchy": [
1808-
{
1809-
"name": "AsyncComputedReadonlySignal",
1810-
"id": "asynccomputedreadonlysignal-resolve"
1811-
},
1812-
{
1813-
"name": "resolve",
1814-
"id": "asynccomputedreadonlysignal-resolve"
1815-
}
1816-
],
1817-
"kind": "MethodSignature",
1818-
"content": "```typescript\nresolve(): Promise<T>;\n```\n**Returns:**\n\nPromise&lt;T&gt;",
1819-
"mdFile": "core.asynccomputedreadonlysignal.resolve.md"
1820-
},
18211821
{
18221822
"name": "Resource",
18231823
"id": "resource",

packages/docs/src/routes/api/qwik/index.mdx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,12 @@ Description
196196
</th></tr></thead>
197197
<tbody><tr><td>
198198
199-
[resolve()](#asynccomputedreadonlysignal-resolve)
199+
[promise()](#asynccomputedreadonlysignal-promise)
200200
201201
</td><td>
202202
203+
A promise that resolves when the value is computed.
204+
203205
</td></tr>
204206
</tbody></table>
205207
@@ -2629,6 +2631,18 @@ opts
26292631
26302632
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/shared/prefetch-service-worker/prefetch.ts)
26312633
2634+
## promise
2635+
2636+
A promise that resolves when the value is computed.
2637+
2638+
```typescript
2639+
promise(): Promise<T>;
2640+
```
2641+
2642+
**Returns:**
2643+
2644+
Promise&lt;T&gt;
2645+
26322646
## PropFunction
26332647
26342648
Alias for `QRL<T>`. Of historic relevance only.
@@ -3700,16 +3714,6 @@ StreamWriter
37003714
37013715
[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/ssr/ssr-types.ts)
37023716
3703-
## resolve
3704-
3705-
```typescript
3706-
resolve(): Promise<T>;
3707-
```
3708-
3709-
**Returns:**
3710-
3711-
Promise&lt;T&gt;
3712-
37133717
## Resource
37143718
37153719
This method works like an async memoized function that runs whenever some tracked value changes and returns some data.

0 commit comments

Comments
 (0)