From 2a09bb8e86d1d5174dffb8d2d9b03ffeb5b6c06e Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Wed, 9 Jul 2025 18:17:38 +0800 Subject: [PATCH 1/6] feat: export isStore and isTask functions; update API documentation --- .changeset/mighty-peaches-knock.md | 5 ++ packages/docs/src/routes/api/qwik/api.json | 28 +++++++ packages/docs/src/routes/api/qwik/index.mdx | 74 +++++++++++++++++++ packages/qwik/src/core/index.ts | 3 +- packages/qwik/src/core/qwik.core.api.md | 10 +++ .../core/reactive-primitives/impl/store.ts | 2 +- .../core/reactive-primitives/signal.public.ts | 2 +- packages/qwik/src/core/use/use-task.ts | 2 +- 8 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 .changeset/mighty-peaches-knock.md diff --git a/.changeset/mighty-peaches-knock.md b/.changeset/mighty-peaches-knock.md new file mode 100644 index 00000000000..8737fbdc3a1 --- /dev/null +++ b/.changeset/mighty-peaches-knock.md @@ -0,0 +1,5 @@ +--- +'@qwik.dev/core': patch +--- + +fix: export isStore from signal implementation diff --git a/packages/docs/src/routes/api/qwik/api.json b/packages/docs/src/routes/api/qwik/api.json index 55b49caf435..6b2d8a8cc8e 100644 --- a/packages/docs/src/routes/api/qwik/api.json +++ b/packages/docs/src/routes/api/qwik/api.json @@ -835,6 +835,34 @@ "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/utils.ts", "mdFile": "core.issignal.md" }, + { + "name": "isStore", + "id": "isstore", + "hierarchy": [ + { + "name": "isStore", + "id": "isstore" + } + ], + "kind": "Function", + "content": "```typescript\nisStore: (value: StoreTarget) => boolean\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nStoreTarget\n\n\n\n\n\n
\n**Returns:**\n\nboolean", + "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts", + "mdFile": "core.isstore.md" + }, + { + "name": "isTask", + "id": "istask", + "hierarchy": [ + { + "name": "isTask", + "id": "istask" + } + ], + "kind": "Function", + "content": "```typescript\nisTask: (value: any) => value is Task\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nany\n\n\n\n\n\n
\n**Returns:**\n\nvalue is Task", + "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts", + "mdFile": "core.istask.md" + }, { "name": "jsx", "id": "jsx", diff --git a/packages/docs/src/routes/api/qwik/index.mdx b/packages/docs/src/routes/api/qwik/index.mdx index 284d5abd3e4..00abe72796b 100644 --- a/packages/docs/src/routes/api/qwik/index.mdx +++ b/packages/docs/src/routes/api/qwik/index.mdx @@ -1647,6 +1647,80 @@ value is [Signal](#signal)<unknown> [Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/utils.ts) +## isStore + +```typescript +isStore: (value: StoreTarget) => boolean; +``` + + + +
+ +Parameter + + + +Type + + + +Description + +
+ +value + + + +StoreTarget + + + +
+**Returns:** + +boolean + +[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts) + +## isTask + +```typescript +isTask: (value: any) => value is Task +``` + + + +
+ +Parameter + + + +Type + + + +Description + +
+ +value + + + +any + + + +
+**Returns:** + +value is Task + +[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts) + ## jsx Used by the JSX transpilers to create a JSXNode. Note that the optimizer will not use this, instead using \_jsxSplit and \_jsxSorted directly. diff --git a/packages/qwik/src/core/index.ts b/packages/qwik/src/core/index.ts index 77068bd48b6..8e2c26b3e81 100644 --- a/packages/qwik/src/core/index.ts +++ b/packages/qwik/src/core/index.ts @@ -128,7 +128,7 @@ export type { } from './use/use-resource'; export { useResourceQrl, Resource } from './use/use-resource'; export { useResource$ } from './use/use-resource-dollar'; -export { useTaskQrl } from './use/use-task'; +export { useTaskQrl, isTask } from './use/use-task'; export { useTask$ } from './use/use-task-dollar'; export { useVisibleTask$ } from './use/use-visible-task-dollar'; export { useComputed$ } from './use/use-computed'; @@ -151,6 +151,7 @@ export { createSerializer$, createAsyncComputedQrl, createAsyncComputed$, + isStore, } from './reactive-primitives/signal.public'; export type { ComputedOptions } from './reactive-primitives/types'; diff --git a/packages/qwik/src/core/qwik.core.api.md b/packages/qwik/src/core/qwik.core.api.md index e68e4ecc99e..69c8999709b 100644 --- a/packages/qwik/src/core/qwik.core.api.md +++ b/packages/qwik/src/core/qwik.core.api.md @@ -427,9 +427,19 @@ export interface ISsrComponentFrame { scopedStyleIds: Set; } +// Warning: (ae-forgotten-export) The symbol "StoreTarget" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export const isStore: (value: StoreTarget) => boolean; + // @internal (undocumented) export function _isStringifiable(value: unknown): value is _Stringifiable; +// Warning: (ae-forgotten-export) The symbol "Task" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export const isTask: (value: any) => value is Task; + // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // // @public diff --git a/packages/qwik/src/core/reactive-primitives/impl/store.ts b/packages/qwik/src/core/reactive-primitives/impl/store.ts index 04701c6072e..cd49faf1031 100644 --- a/packages/qwik/src/core/reactive-primitives/impl/store.ts +++ b/packages/qwik/src/core/reactive-primitives/impl/store.ts @@ -40,7 +40,7 @@ export const getStoreTarget = (value: T): T | null => { export const unwrapStore = (value: T): T => { return getStoreTarget(value) || value; }; - +/** @public */ export const isStore = (value: StoreTarget): boolean => { return STORE_TARGET in value; }; diff --git a/packages/qwik/src/core/reactive-primitives/signal.public.ts b/packages/qwik/src/core/reactive-primitives/signal.public.ts index 4c79dd0e62b..7c61805f158 100644 --- a/packages/qwik/src/core/reactive-primitives/signal.public.ts +++ b/packages/qwik/src/core/reactive-primitives/signal.public.ts @@ -8,7 +8,7 @@ import { } from './signal-api'; import type { ComputedReturnType } from '../use/use-computed'; import type { AsyncComputedReturnType } from '../use/use-async-computed'; - +export { isStore } from './impl/store'; export { isSignal } from './utils'; /** @public */ diff --git a/packages/qwik/src/core/use/use-task.ts b/packages/qwik/src/core/use/use-task.ts index 7ba1bcfa6c1..84fd908ef02 100644 --- a/packages/qwik/src/core/use/use-task.ts +++ b/packages/qwik/src/core/use/use-task.ts @@ -220,7 +220,7 @@ export class Task super(); } } - +/** @public */ export const isTask = (value: any): value is Task => { return value instanceof Task; }; From 296ab6b07ab35a037e8ba1357c5e79265cad6681 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Fri, 11 Jul 2025 14:31:08 +0800 Subject: [PATCH 2/6] feat: add _isTask function and update API documentation; remove isStore function --- packages/docs/src/routes/api/qwik/api.json | 42 +++---- packages/docs/src/routes/api/qwik/index.mdx | 111 ++++++------------ packages/qwik/src/core/index.ts | 3 +- packages/qwik/src/core/internal.ts | 3 +- packages/qwik/src/core/qwik.core.api.md | 11 +- .../core/reactive-primitives/impl/store.ts | 2 +- 6 files changed, 59 insertions(+), 113 deletions(-) diff --git a/packages/docs/src/routes/api/qwik/api.json b/packages/docs/src/routes/api/qwik/api.json index 6b2d8a8cc8e..66e53a94b84 100644 --- a/packages/docs/src/routes/api/qwik/api.json +++ b/packages/docs/src/routes/api/qwik/api.json @@ -2,6 +2,20 @@ "id": "qwik", "package": "@qwik.dev/qwik", "members": [ + { + "name": "_isTask", + "id": "_istask", + "hierarchy": [ + { + "name": "_isTask", + "id": "_istask" + } + ], + "kind": "Function", + "content": "```typescript\nisTask: (value: any) => value is Task\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nany\n\n\n\n\n\n
\n**Returns:**\n\nvalue is Task", + "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts", + "mdFile": "core._istask.md" + }, { "name": "\"q:slot\"", "id": "componentbaseprops-_q_slot_", @@ -835,34 +849,6 @@ "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/utils.ts", "mdFile": "core.issignal.md" }, - { - "name": "isStore", - "id": "isstore", - "hierarchy": [ - { - "name": "isStore", - "id": "isstore" - } - ], - "kind": "Function", - "content": "```typescript\nisStore: (value: StoreTarget) => boolean\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nStoreTarget\n\n\n\n\n\n
\n**Returns:**\n\nboolean", - "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts", - "mdFile": "core.isstore.md" - }, - { - "name": "isTask", - "id": "istask", - "hierarchy": [ - { - "name": "isTask", - "id": "istask" - } - ], - "kind": "Function", - "content": "```typescript\nisTask: (value: any) => value is Task\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nany\n\n\n\n\n\n
\n**Returns:**\n\nvalue is Task", - "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts", - "mdFile": "core.istask.md" - }, { "name": "jsx", "id": "jsx", diff --git a/packages/docs/src/routes/api/qwik/index.mdx b/packages/docs/src/routes/api/qwik/index.mdx index 00abe72796b..310a7057cbf 100644 --- a/packages/docs/src/routes/api/qwik/index.mdx +++ b/packages/docs/src/routes/api/qwik/index.mdx @@ -4,6 +4,43 @@ title: \@qwik.dev/qwik API Reference # [API](/api) › @qwik.dev/qwik +## \_isTask + +```typescript +isTask: (value: any) => value is Task +``` + + + +
+ +Parameter + + + +Type + + + +Description + +
+ +value + + + +any + + + +
+**Returns:** + +value is Task + +[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts) + ## "q:slot" ```typescript @@ -1647,80 +1684,6 @@ value is [Signal](#signal)<unknown> [Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/utils.ts) -## isStore - -```typescript -isStore: (value: StoreTarget) => boolean; -``` - - - -
- -Parameter - - - -Type - - - -Description - -
- -value - - - -StoreTarget - - - -
-**Returns:** - -boolean - -[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts) - -## isTask - -```typescript -isTask: (value: any) => value is Task -``` - - - -
- -Parameter - - - -Type - - - -Description - -
- -value - - - -any - - - -
-**Returns:** - -value is Task - -[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts) - ## jsx Used by the JSX transpilers to create a JSXNode. Note that the optimizer will not use this, instead using \_jsxSplit and \_jsxSorted directly. diff --git a/packages/qwik/src/core/index.ts b/packages/qwik/src/core/index.ts index 8e2c26b3e81..77068bd48b6 100644 --- a/packages/qwik/src/core/index.ts +++ b/packages/qwik/src/core/index.ts @@ -128,7 +128,7 @@ export type { } from './use/use-resource'; export { useResourceQrl, Resource } from './use/use-resource'; export { useResource$ } from './use/use-resource-dollar'; -export { useTaskQrl, isTask } from './use/use-task'; +export { useTaskQrl } from './use/use-task'; export { useTask$ } from './use/use-task-dollar'; export { useVisibleTask$ } from './use/use-visible-task-dollar'; export { useComputed$ } from './use/use-computed'; @@ -151,7 +151,6 @@ export { createSerializer$, createAsyncComputedQrl, createAsyncComputed$, - isStore, } from './reactive-primitives/signal.public'; export type { ComputedOptions } from './reactive-primitives/types'; diff --git a/packages/qwik/src/core/internal.ts b/packages/qwik/src/core/internal.ts index 7d1bf0c6d32..0cc6717ba09 100644 --- a/packages/qwik/src/core/internal.ts +++ b/packages/qwik/src/core/internal.ts @@ -53,4 +53,5 @@ export { useInvokeContext as _useInvokeContext, _waitUntilRendered, } from './use/use-core'; -export { scheduleTask as _task } from './use/use-task'; +export { scheduleTask as _task, isTask as _isTask } from './use/use-task'; +export { unwrapStore as _unwrapStore } from './use/use-store.public'; diff --git a/packages/qwik/src/core/qwik.core.api.md b/packages/qwik/src/core/qwik.core.api.md index 69c8999709b..3ef73d0fec8 100644 --- a/packages/qwik/src/core/qwik.core.api.md +++ b/packages/qwik/src/core/qwik.core.api.md @@ -427,18 +427,13 @@ export interface ISsrComponentFrame { scopedStyleIds: Set; } -// Warning: (ae-forgotten-export) The symbol "StoreTarget" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) -export const isStore: (value: StoreTarget) => boolean; - // @internal (undocumented) export function _isStringifiable(value: unknown): value is _Stringifiable; // Warning: (ae-forgotten-export) The symbol "Task" needs to be exported by the entry point index.d.ts // // @public (undocumented) -export const isTask: (value: any) => value is Task; +export const _isTask: (value: any) => value is Task; // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // @@ -1666,7 +1661,9 @@ export const _UNINITIALIZED: unique symbol; export const untrack: (fn: () => T) => T; // @public -export const unwrapStore: (value: T) => T; +const unwrapStore: (value: T) => T; +export { unwrapStore as _unwrapStore } +export { unwrapStore } // @public export const useAsyncComputed$: (qrl: AsyncComputedFn, options?: ComputedOptions | undefined) => AsyncComputedReturnType; diff --git a/packages/qwik/src/core/reactive-primitives/impl/store.ts b/packages/qwik/src/core/reactive-primitives/impl/store.ts index cd49faf1031..04701c6072e 100644 --- a/packages/qwik/src/core/reactive-primitives/impl/store.ts +++ b/packages/qwik/src/core/reactive-primitives/impl/store.ts @@ -40,7 +40,7 @@ export const getStoreTarget = (value: T): T | null => { export const unwrapStore = (value: T): T => { return getStoreTarget(value) || value; }; -/** @public */ + export const isStore = (value: StoreTarget): boolean => { return STORE_TARGET in value; }; From 7bb0075286641fbe1ccc7e4c1935737d9f03d018 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Mon, 14 Jul 2025 16:24:15 +0800 Subject: [PATCH 3/6] feat: export isStore function for public use --- packages/qwik/src/core/internal.ts | 1 + packages/qwik/src/core/reactive-primitives/impl/store.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/packages/qwik/src/core/internal.ts b/packages/qwik/src/core/internal.ts index 0cc6717ba09..f016ad4b22f 100644 --- a/packages/qwik/src/core/internal.ts +++ b/packages/qwik/src/core/internal.ts @@ -55,3 +55,4 @@ export { } from './use/use-core'; export { scheduleTask as _task, isTask as _isTask } from './use/use-task'; export { unwrapStore as _unwrapStore } from './use/use-store.public'; +export { isStore as _isStore } from './reactive-primitives/signal.public'; diff --git a/packages/qwik/src/core/reactive-primitives/impl/store.ts b/packages/qwik/src/core/reactive-primitives/impl/store.ts index 04701c6072e..658ec638b9a 100644 --- a/packages/qwik/src/core/reactive-primitives/impl/store.ts +++ b/packages/qwik/src/core/reactive-primitives/impl/store.ts @@ -41,6 +41,9 @@ export const unwrapStore = (value: T): T => { return getStoreTarget(value) || value; }; +/* + * @public + */ export const isStore = (value: StoreTarget): boolean => { return STORE_TARGET in value; }; From 5837d1bf6920e0165c8538d4de924ad97c29da04 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Mon, 14 Jul 2025 16:30:51 +0800 Subject: [PATCH 4/6] feat: add _isStore function and update API documentation --- packages/docs/src/routes/api/qwik/api.json | 14 +++++++ packages/docs/src/routes/api/qwik/index.mdx | 37 +++++++++++++++++++ packages/qwik/src/core/qwik.core.api.md | 5 +++ .../core/reactive-primitives/impl/store.ts | 4 +- 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/packages/docs/src/routes/api/qwik/api.json b/packages/docs/src/routes/api/qwik/api.json index 66e53a94b84..bf4797dbbe2 100644 --- a/packages/docs/src/routes/api/qwik/api.json +++ b/packages/docs/src/routes/api/qwik/api.json @@ -2,6 +2,20 @@ "id": "qwik", "package": "@qwik.dev/qwik", "members": [ + { + "name": "_isStore", + "id": "_isstore", + "hierarchy": [ + { + "name": "_isStore", + "id": "_isstore" + } + ], + "kind": "Function", + "content": "```typescript\nisStore: (value: StoreTarget) => boolean\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nStoreTarget\n\n\n\n\n\n
\n**Returns:**\n\nboolean", + "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts", + "mdFile": "core._isstore.md" + }, { "name": "_isTask", "id": "_istask", diff --git a/packages/docs/src/routes/api/qwik/index.mdx b/packages/docs/src/routes/api/qwik/index.mdx index 310a7057cbf..663da2f6608 100644 --- a/packages/docs/src/routes/api/qwik/index.mdx +++ b/packages/docs/src/routes/api/qwik/index.mdx @@ -4,6 +4,43 @@ title: \@qwik.dev/qwik API Reference # [API](/api) › @qwik.dev/qwik +## \_isStore + +```typescript +isStore: (value: StoreTarget) => boolean; +``` + + + +
+ +Parameter + + + +Type + + + +Description + +
+ +value + + + +StoreTarget + + + +
+**Returns:** + +boolean + +[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts) + ## \_isTask ```typescript diff --git a/packages/qwik/src/core/qwik.core.api.md b/packages/qwik/src/core/qwik.core.api.md index 3ef73d0fec8..dbb4b338c6d 100644 --- a/packages/qwik/src/core/qwik.core.api.md +++ b/packages/qwik/src/core/qwik.core.api.md @@ -427,6 +427,11 @@ export interface ISsrComponentFrame { scopedStyleIds: Set; } +// Warning: (ae-forgotten-export) The symbol "StoreTarget" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export const _isStore: (value: StoreTarget) => boolean; + // @internal (undocumented) export function _isStringifiable(value: unknown): value is _Stringifiable; diff --git a/packages/qwik/src/core/reactive-primitives/impl/store.ts b/packages/qwik/src/core/reactive-primitives/impl/store.ts index 658ec638b9a..6ae63976ae1 100644 --- a/packages/qwik/src/core/reactive-primitives/impl/store.ts +++ b/packages/qwik/src/core/reactive-primitives/impl/store.ts @@ -41,9 +41,7 @@ export const unwrapStore = (value: T): T => { return getStoreTarget(value) || value; }; -/* - * @public - */ +/** @public */ export const isStore = (value: StoreTarget): boolean => { return STORE_TARGET in value; }; From 8a11f422fc8d8061f33ddc429c9e6fe4d5449d14 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Mon, 14 Jul 2025 16:43:06 +0800 Subject: [PATCH 5/6] refactor: remove _isStore and _isTask functions from API documentation and internal exports --- .changeset/mighty-peaches-knock.md | 5 -- packages/docs/src/routes/api/qwik/api.json | 28 ------- packages/docs/src/routes/api/qwik/index.mdx | 74 ------------------- packages/qwik/src/core/internal.ts | 3 +- packages/qwik/src/core/qwik.core.api.md | 8 +- .../core/reactive-primitives/impl/store.ts | 2 +- .../core/reactive-primitives/signal.public.ts | 1 - packages/qwik/src/core/use/use-task.ts | 2 +- 8 files changed, 6 insertions(+), 117 deletions(-) delete mode 100644 .changeset/mighty-peaches-knock.md diff --git a/.changeset/mighty-peaches-knock.md b/.changeset/mighty-peaches-knock.md deleted file mode 100644 index 8737fbdc3a1..00000000000 --- a/.changeset/mighty-peaches-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@qwik.dev/core': patch ---- - -fix: export isStore from signal implementation diff --git a/packages/docs/src/routes/api/qwik/api.json b/packages/docs/src/routes/api/qwik/api.json index bf4797dbbe2..55b49caf435 100644 --- a/packages/docs/src/routes/api/qwik/api.json +++ b/packages/docs/src/routes/api/qwik/api.json @@ -2,34 +2,6 @@ "id": "qwik", "package": "@qwik.dev/qwik", "members": [ - { - "name": "_isStore", - "id": "_isstore", - "hierarchy": [ - { - "name": "_isStore", - "id": "_isstore" - } - ], - "kind": "Function", - "content": "```typescript\nisStore: (value: StoreTarget) => boolean\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nStoreTarget\n\n\n\n\n\n
\n**Returns:**\n\nboolean", - "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts", - "mdFile": "core._isstore.md" - }, - { - "name": "_isTask", - "id": "_istask", - "hierarchy": [ - { - "name": "_isTask", - "id": "_istask" - } - ], - "kind": "Function", - "content": "```typescript\nisTask: (value: any) => value is Task\n```\n\n\n\n\n
\n\nParameter\n\n\n\n\nType\n\n\n\n\nDescription\n\n\n
\n\nvalue\n\n\n\n\nany\n\n\n\n\n\n
\n**Returns:**\n\nvalue is Task", - "editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts", - "mdFile": "core._istask.md" - }, { "name": "\"q:slot\"", "id": "componentbaseprops-_q_slot_", diff --git a/packages/docs/src/routes/api/qwik/index.mdx b/packages/docs/src/routes/api/qwik/index.mdx index 663da2f6608..284d5abd3e4 100644 --- a/packages/docs/src/routes/api/qwik/index.mdx +++ b/packages/docs/src/routes/api/qwik/index.mdx @@ -4,80 +4,6 @@ title: \@qwik.dev/qwik API Reference # [API](/api) › @qwik.dev/qwik -## \_isStore - -```typescript -isStore: (value: StoreTarget) => boolean; -``` - - - -
- -Parameter - - - -Type - - - -Description - -
- -value - - - -StoreTarget - - - -
-**Returns:** - -boolean - -[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/reactive-primitives/impl/store.ts) - -## \_isTask - -```typescript -isTask: (value: any) => value is Task -``` - - - -
- -Parameter - - - -Type - - - -Description - -
- -value - - - -any - - - -
-**Returns:** - -value is Task - -[Edit this section](https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/core/use/use-task.ts) - ## "q:slot" ```typescript diff --git a/packages/qwik/src/core/internal.ts b/packages/qwik/src/core/internal.ts index f016ad4b22f..000a815abba 100644 --- a/packages/qwik/src/core/internal.ts +++ b/packages/qwik/src/core/internal.ts @@ -54,5 +54,4 @@ export { _waitUntilRendered, } from './use/use-core'; export { scheduleTask as _task, isTask as _isTask } from './use/use-task'; -export { unwrapStore as _unwrapStore } from './use/use-store.public'; -export { isStore as _isStore } from './reactive-primitives/signal.public'; +export { isStore as _isStore } from './reactive-primitives/impl/store'; diff --git a/packages/qwik/src/core/qwik.core.api.md b/packages/qwik/src/core/qwik.core.api.md index dbb4b338c6d..688c902865e 100644 --- a/packages/qwik/src/core/qwik.core.api.md +++ b/packages/qwik/src/core/qwik.core.api.md @@ -429,7 +429,7 @@ export interface ISsrComponentFrame { // Warning: (ae-forgotten-export) The symbol "StoreTarget" needs to be exported by the entry point index.d.ts // -// @public (undocumented) +// @internal (undocumented) export const _isStore: (value: StoreTarget) => boolean; // @internal (undocumented) @@ -437,7 +437,7 @@ export function _isStringifiable(value: unknown): value is _Stringifiable; // Warning: (ae-forgotten-export) The symbol "Task" needs to be exported by the entry point index.d.ts // -// @public (undocumented) +// @internal (undocumented) export const _isTask: (value: any) => value is Task; // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts @@ -1666,9 +1666,7 @@ export const _UNINITIALIZED: unique symbol; export const untrack: (fn: () => T) => T; // @public -const unwrapStore: (value: T) => T; -export { unwrapStore as _unwrapStore } -export { unwrapStore } +export const unwrapStore: (value: T) => T; // @public export const useAsyncComputed$: (qrl: AsyncComputedFn, options?: ComputedOptions | undefined) => AsyncComputedReturnType; diff --git a/packages/qwik/src/core/reactive-primitives/impl/store.ts b/packages/qwik/src/core/reactive-primitives/impl/store.ts index 6ae63976ae1..a8eaf98eaf9 100644 --- a/packages/qwik/src/core/reactive-primitives/impl/store.ts +++ b/packages/qwik/src/core/reactive-primitives/impl/store.ts @@ -41,7 +41,7 @@ export const unwrapStore = (value: T): T => { return getStoreTarget(value) || value; }; -/** @public */ +/** @internal */ export const isStore = (value: StoreTarget): boolean => { return STORE_TARGET in value; }; diff --git a/packages/qwik/src/core/reactive-primitives/signal.public.ts b/packages/qwik/src/core/reactive-primitives/signal.public.ts index 7c61805f158..606534e8281 100644 --- a/packages/qwik/src/core/reactive-primitives/signal.public.ts +++ b/packages/qwik/src/core/reactive-primitives/signal.public.ts @@ -8,7 +8,6 @@ import { } from './signal-api'; import type { ComputedReturnType } from '../use/use-computed'; import type { AsyncComputedReturnType } from '../use/use-async-computed'; -export { isStore } from './impl/store'; export { isSignal } from './utils'; /** @public */ diff --git a/packages/qwik/src/core/use/use-task.ts b/packages/qwik/src/core/use/use-task.ts index 84fd908ef02..fb4188edebe 100644 --- a/packages/qwik/src/core/use/use-task.ts +++ b/packages/qwik/src/core/use/use-task.ts @@ -220,7 +220,7 @@ export class Task super(); } } -/** @public */ +/** @internal */ export const isTask = (value: any): value is Task => { return value instanceof Task; }; From 2d1ef93860de86509a23f79e414765f6b2c49476 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Fri, 25 Jul 2025 16:33:29 +0800 Subject: [PATCH 6/6] feat: expand internal vnode and mapArray utilities with new exports and documentation --- .../qwik/src/core/client/util-mapArray.ts | 3 ++ packages/qwik/src/core/client/vnode.ts | 10 +++++ packages/qwik/src/core/internal.ts | 20 +++++++++- packages/qwik/src/core/qwik.core.api.md | 39 +++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) diff --git a/packages/qwik/src/core/client/util-mapArray.ts b/packages/qwik/src/core/client/util-mapArray.ts index 1928c560369..afe5edd77f2 100644 --- a/packages/qwik/src/core/client/util-mapArray.ts +++ b/packages/qwik/src/core/client/util-mapArray.ts @@ -1,5 +1,6 @@ import { assertTrue } from '../shared/error/assert'; +/** @internal */ export const mapApp_findIndx = (array: (T | null)[], key: string, start: number): number => { assertTrue(start % 2 === 0, 'Expecting even number.'); let bottom = (start as number) >> 1; @@ -19,6 +20,7 @@ export const mapApp_findIndx = (array: (T | null)[], key: string, start: numb return (bottom << 1) ^ -1; }; +/** @internal */ export const mapArray_set = ( array: (T | null)[], key: string, @@ -48,6 +50,7 @@ export const mapApp_remove = (array: (T | null)[], key: string, start: number return value; }; +/** @internal */ export const mapArray_get = (array: (T | null)[], key: string, start: number): T | null => { const indx = mapApp_findIndx(array, key, start); if (indx >= 0) { diff --git a/packages/qwik/src/core/client/vnode.ts b/packages/qwik/src/core/client/vnode.ts index 4c0a8603c17..dd60321fdda 100644 --- a/packages/qwik/src/core/client/vnode.ts +++ b/packages/qwik/src/core/client/vnode.ts @@ -317,6 +317,7 @@ export const vnode_isElementOrVirtualVNode = ( return (flag & VNodeFlags.ELEMENT_OR_VIRTUAL_MASK) !== 0; }; +/** @internal */ export const vnode_isMaterialized = (vNode: VNode): boolean => { assertDefined(vNode, 'Missing vNode'); const flag = (vNode as VNode)[VNodeProps.flags]; @@ -327,12 +328,14 @@ export const vnode_isMaterialized = (vNode: VNode): boolean => { ); }; +/** @internal */ export const vnode_isTextVNode = (vNode: VNode): vNode is TextVNode => { assertDefined(vNode, 'Missing vNode'); const flag = (vNode as VNode)[VNodeProps.flags]; return (flag & VNodeFlags.Text) === VNodeFlags.Text; }; +/** @internal */ export const vnode_isVirtualVNode = (vNode: VNode): vNode is VirtualVNode => { assertDefined(vNode, 'Missing vNode'); const flag = (vNode as VNode)[VNodeProps.flags]; @@ -384,6 +387,7 @@ export const vnode_getNodeTypeName = (vNode: VNode): string => { return ''; }; +/** @internal */ export const vnode_ensureElementInflated = (vnode: VNode) => { const flags = vnode[VNodeProps.flags]; if ((flags & VNodeFlags.INFLATED_TYPE_MASK) === VNodeFlags.Element) { @@ -1233,6 +1237,7 @@ export const vnode_setText = (journal: VNodeJournal, textVNode: TextVNode, text: journal.push(VNodeJournalOpCode.SetText, textNode, (textVNode[TextVNodeProps.text] = text)); }; +/** @internal */ export const vnode_getFirstChild = (vnode: VNode): VNode | null => { if (vnode_isTextVNode(vnode)) { return null; @@ -1592,6 +1597,7 @@ const processVNodeData = ( } }; +/** @internal */ export const vnode_getNextSibling = (vnode: VNode): VNode | null => { return vnode[VNodeProps.nextSibling]; }; @@ -1600,6 +1606,7 @@ export const vnode_getPreviousSibling = (vnode: VNode): VNode | null => { return vnode[VNodeProps.previousSibling]; }; +/** @internal */ export const vnode_getAttrKeys = (vnode: ElementVNode | VirtualVNode): string[] => { const type = vnode[VNodeProps.flags]; if ((type & VNodeFlags.ELEMENT_OR_VIRTUAL_MASK) !== 0) { @@ -1651,6 +1658,7 @@ export const vnode_setAttr = ( } }; +/** @internal */ export const vnode_getAttr = (vnode: VNode, key: string): string | null => { const type = vnode[VNodeProps.flags]; if ((type & VNodeFlags.ELEMENT_OR_VIRTUAL_MASK) !== 0) { @@ -1693,6 +1701,7 @@ export const vnode_setProp = (vnode: VirtualVNode | ElementVNode, key: string, v } }; +/** @internal */ export const vnode_getPropStartIndex = (vnode: VNode): number => { const type = vnode[VNodeProps.flags] & VNodeFlags.TYPE_MASK; if (type === VNodeFlags.Element) { @@ -1703,6 +1712,7 @@ export const vnode_getPropStartIndex = (vnode: VNode): number => { throw qError(QError.invalidVNodeType, [type]); }; +/** @internal */ export const vnode_getProps = (vnode: VNode): unknown[] => { return vnode[vnode_getPropStartIndex(vnode)] as unknown[]; }; diff --git a/packages/qwik/src/core/internal.ts b/packages/qwik/src/core/internal.ts index 9d1dd95c2e2..e7cd749d238 100644 --- a/packages/qwik/src/core/internal.ts +++ b/packages/qwik/src/core/internal.ts @@ -15,7 +15,25 @@ export type { VNode as _VNode, VNodeFlags as _VNodeFlags, } from './client/types'; -export { vnode_toString as _vnode_toString } from './client/vnode'; +export { + vnode_toString as _vnode_toString, + vnode_getPropStartIndex as _vnode_getPropStartIndex, + vnode_getProps as _vnode_getProps, + vnode_isTextVNode as _vnode_isTextVNode, + vnode_isVirtualVNode as _vnode_isVirtualVNode, + vnode_getFirstChild as _vnode_getFirstChild, + vnode_isMaterialized as _vnode_isMaterialized, + vnode_getNextSibling as _vnode_getNextSibling, + vnode_ensureElementInflated as _vnode_ensureElementInflated, + vnode_getAttrKeys as _vnode_getAttrKeys, + vnode_getAttr as _vnode_getAttr, +} from './client/vnode'; +export { + mapApp_findIndx as _mapApp_findIndx, + mapArray_get as _mapArray_get, + mapArray_set as _mapArray_set, +} from './client/util-mapArray'; + export { _wrapProp, _wrapSignal } from './reactive-primitives/internal-api'; export { SubscriptionData as _SubscriptionData } from './reactive-primitives/subscription-data'; export { _EFFECT_BACK_REF } from './reactive-primitives/types'; diff --git a/packages/qwik/src/core/qwik.core.api.md b/packages/qwik/src/core/qwik.core.api.md index fa435fd2534..294494302ee 100644 --- a/packages/qwik/src/core/qwik.core.api.md +++ b/packages/qwik/src/core/qwik.core.api.md @@ -511,6 +511,15 @@ export type JSXTagName = keyof HTMLElementTagNameMap | Omit; +// @internal (undocumented) +export const _mapApp_findIndx: (array: (T | null)[], key: string, start: number) => number; + +// @internal (undocumented) +export const _mapArray_get: (array: (T | null)[], key: string, start: number) => T | null; + +// @internal (undocumented) +export const _mapArray_set: (array: (T | null)[], key: string, value: T | null, start: number) => void; + // @public @deprecated (undocumented) export type NativeAnimationEvent = AnimationEvent; @@ -1838,6 +1847,36 @@ export type VisibleTaskStrategy = 'intersection-observer' | 'document-ready' | ' // @internal (undocumented) export type _VNode = _ElementVNode | _TextVNode | _VirtualVNode; +// @internal (undocumented) +export const _vnode_ensureElementInflated: (vnode: _VNode) => void; + +// @internal (undocumented) +export const _vnode_getAttr: (vnode: _VNode, key: string) => string | null; + +// @internal (undocumented) +export const _vnode_getAttrKeys: (vnode: _ElementVNode | _VirtualVNode) => string[]; + +// @internal (undocumented) +export const _vnode_getFirstChild: (vnode: _VNode) => _VNode | null; + +// @internal (undocumented) +export const _vnode_getNextSibling: (vnode: _VNode) => _VNode | null; + +// @internal (undocumented) +export const _vnode_getProps: (vnode: _VNode) => unknown[]; + +// @internal (undocumented) +export const _vnode_getPropStartIndex: (vnode: _VNode) => number; + +// @internal (undocumented) +export const _vnode_isMaterialized: (vNode: _VNode) => boolean; + +// @internal (undocumented) +export const _vnode_isTextVNode: (vNode: _VNode) => vNode is _TextVNode; + +// @internal (undocumented) +export const _vnode_isVirtualVNode: (vNode: _VNode) => vNode is _VirtualVNode; + // @internal (undocumented) export function _vnode_toString(this: _VNode | null, depth?: number, offset?: string, materialize?: boolean, siblings?: boolean, colorize?: boolean): string;