Skip to content

Commit

Permalink
fix(optimizer): correctly emit fixed children (#6186)
Browse files Browse the repository at this point in the history
* fix(optimizer): correctly emit fixed children

The only time when we don't know what the children are statically is when they're overridden by spread props.

* chore: pnpm api.update
  • Loading branch information
wmertens committed Apr 30, 2024
1 parent 1af71d7 commit 4d8001e
Show file tree
Hide file tree
Showing 48 changed files with 662 additions and 864 deletions.
Expand Up @@ -12,7 +12,7 @@
}
],
"kind": "Function",
"content": "```typescript\nexport declare function createQwikCity(opts: QwikCityCloudflarePagesOptions): (request: PlatformCloudflarePages['request'], env: Record<string, any> & {\n ASSETS: {\n fetch: (req: Request) => Response;\n };\n}, ctx: PlatformCloudflarePages['ctx']) => Promise<Response>;\n```\n\n\n<table><thead><tr><th>\n\nParameter\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\nopts\n\n\n</td><td>\n\n[QwikCityCloudflarePagesOptions](#qwikcitycloudflarepagesoptions)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\n(request: [PlatformCloudflarePages](#platformcloudflarepages)<!-- -->\\['request'\\], env: Record&lt;string, any&gt; &amp; { ASSETS: { fetch: (req: Request) =&gt; Response; }; }, ctx: [PlatformCloudflarePages](#platformcloudflarepages)<!-- -->\\['ctx'\\]) =&gt; Promise&lt;Response&gt;",
"content": "```typescript\nexport declare function createQwikCity(opts: QwikCityCloudflarePagesOptions): (request: PlatformCloudflarePages['request'], env: PlatformCloudflarePages['env'] & {\n ASSETS: {\n fetch: (req: Request) => Response;\n };\n}, ctx: PlatformCloudflarePages['ctx']) => Promise<Response>;\n```\n\n\n<table><thead><tr><th>\n\nParameter\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\nopts\n\n\n</td><td>\n\n[QwikCityCloudflarePagesOptions](#qwikcitycloudflarepagesoptions)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\n(request: [PlatformCloudflarePages](#platformcloudflarepages)<!-- -->\\['request'\\], env: [PlatformCloudflarePages](#platformcloudflarepages)<!-- -->\\['env'\\] &amp; { ASSETS: { fetch: (req: Request) =&gt; Response; }; }, ctx: [PlatformCloudflarePages](#platformcloudflarepages)<!-- -->\\['ctx'\\]) =&gt; Promise&lt;Response&gt;",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik-city/middleware/cloudflare-pages/index.ts",
"mdFile": "qwik-city.createqwikcity.md"
},
Expand Down
Expand Up @@ -9,7 +9,7 @@ title: \@builder.io/qwik-city/middleware/cloudflare-pages API Reference
```typescript
export declare function createQwikCity(opts: QwikCityCloudflarePagesOptions): (
request: PlatformCloudflarePages["request"],
env: Record<string, any> & {
env: PlatformCloudflarePages["env"] & {
ASSETS: {
fetch: (req: Request) => Response;
};
Expand Down Expand Up @@ -45,7 +45,7 @@ opts
</tbody></table>
**Returns:**

(request: [PlatformCloudflarePages](#platformcloudflarepages)['request'], env: Record&lt;string, any&gt; &amp; { ASSETS: { fetch: (req: Request) =&gt; Response; }; }, ctx: [PlatformCloudflarePages](#platformcloudflarepages)['ctx']) =&gt; Promise&lt;Response&gt;
(request: [PlatformCloudflarePages](#platformcloudflarepages)['request'], env: [PlatformCloudflarePages](#platformcloudflarepages)['env'] &amp; { ASSETS: { fetch: (req: Request) =&gt; Response; }; }, ctx: [PlatformCloudflarePages](#platformcloudflarepages)['ctx']) =&gt; Promise&lt;Response&gt;

[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik-city/middleware/cloudflare-pages/index.ts)

Expand Down
2 changes: 1 addition & 1 deletion packages/docs/src/routes/api/qwik-city/api.json
Expand Up @@ -796,7 +796,7 @@
}
],
"kind": "Function",
"content": "Returns the document head for the current page. The generic type describes the front matter.\n\n\n```typescript\nuseDocumentHead: <FrontMatter extends Record<string, unknown> = Record<string, any>>() => Required<Required<import(\"./types\").DocumentHeadValue<FrontMatter>>>\n```\n**Returns:**\n\nRequired&lt;Required&lt;import(\"./types\").[DocumentHeadValue](#documentheadvalue)<!-- -->&lt;FrontMatter&gt;&gt;&gt;",
"content": "Returns the document head for the current page. The generic type describes the front matter.\n\n\n```typescript\nuseDocumentHead: <FrontMatter extends Record<string, unknown> = Record<string, any>>() => Required<ResolvedDocumentHead<FrontMatter>>\n```\n**Returns:**\n\nRequired&lt;[ResolvedDocumentHead](#resolveddocumenthead)<!-- -->&lt;FrontMatter&gt;&gt;",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik-city/runtime/src/use-functions.ts",
"mdFile": "qwik-city.usedocumenthead.md"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/docs/src/routes/api/qwik-city/index.md
Expand Up @@ -2328,12 +2328,12 @@ Returns the document head for the current page. The generic type describes the f
```typescript
useDocumentHead: <
FrontMatter extends Record<string, unknown> = Record<string, any>,
>() => Required<Required<import("./types").DocumentHeadValue<FrontMatter>>>;
>() => Required<ResolvedDocumentHead<FrontMatter>>;
```

**Returns:**

Required&lt;Required&lt;import("./types").[DocumentHeadValue](#documentheadvalue)&lt;FrontMatter&gt;&gt;&gt;
Required&lt;[ResolvedDocumentHead](#resolveddocumenthead)&lt;FrontMatter&gt;&gt;

[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik-city/runtime/src/use-functions.ts)

Expand Down
2 changes: 1 addition & 1 deletion packages/docs/src/routes/api/qwik-testing/api.json
Expand Up @@ -12,7 +12,7 @@
}
],
"kind": "Function",
"content": "CreatePlatform and CreateDocument\n\n\n```typescript\ncreateDOM: ({ html }?: {\n html?: string | undefined;\n}) => Promise<{\n render: (jsxElement: JSXOutput) => Promise<import(\"@builder.io/qwik\").RenderResult>;\n screen: HTMLElement;\n userEvent: (queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventNameCamel: string | keyof WindowEventMap, eventPayload?: any) => Promise<void>;\n}>\n```\n\n\n<table><thead><tr><th>\n\nParameter\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{ html }\n\n\n</td><td>\n\n{ html?: string \\| undefined; }\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\nPromise&lt;{ render: (jsxElement: JSXOutput) =&gt; Promise&lt;import(\"@builder.io/qwik\").RenderResult&gt;; screen: HTMLElement; userEvent: (queryOrElement: string \\| Element \\| keyof HTMLElementTagNameMap \\| null, eventNameCamel: string \\| keyof WindowEventMap, eventPayload?: any) =&gt; Promise&lt;void&gt;; }&gt;",
"content": "CreatePlatform and CreateDocument\n\n\n```typescript\ncreateDOM: ({ html }?: {\n html?: string;\n}) => Promise<{\n render: (jsxElement: JSXOutput) => Promise<import(\"@builder.io/qwik\").RenderResult>;\n screen: HTMLElement;\n userEvent: (queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventNameCamel: string | keyof WindowEventMap, eventPayload?: any) => Promise<void>;\n}>\n```\n\n\n<table><thead><tr><th>\n\nParameter\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{ html }\n\n\n</td><td>\n\n{ html?: string; }\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\nPromise&lt;{ render: (jsxElement: JSXOutput) =&gt; Promise&lt;import(\"@builder.io/qwik\").RenderResult&gt;; screen: HTMLElement; userEvent: (queryOrElement: string \\| Element \\| keyof HTMLElementTagNameMap \\| null, eventNameCamel: string \\| keyof WindowEventMap, eventPayload?: any) =&gt; Promise&lt;void&gt;; }&gt;",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/testing/library.ts",
"mdFile": "qwik.createdom.md"
}
Expand Down
4 changes: 2 additions & 2 deletions packages/docs/src/routes/api/qwik-testing/index.md
Expand Up @@ -9,7 +9,7 @@ title: \@builder.io/qwik/testing API Reference
CreatePlatform and CreateDocument

```typescript
createDOM: ({ html }?: { html?: string | undefined }) =>
createDOM: ({ html }?: { html?: string }) =>
Promise<{
render: (
jsxElement: JSXOutput,
Expand Down Expand Up @@ -42,7 +42,7 @@ Description

</td><td>

{ html?: string \| undefined; }
{ html?: string; }

</td><td>

Expand Down
20 changes: 3 additions & 17 deletions packages/docs/src/routes/api/qwik/api.json
Expand Up @@ -889,22 +889,8 @@
}
],
"kind": "Function",
"content": "```typescript\nexport declare namespace h \n```\n\n\n<table><thead><tr><th>\n\nFunction\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[h(type)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, text)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data, text)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(sel, data, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/factory.ts",
"mdFile": "qwik.h.md"
},
{
"name": "h",
"id": "h",
"hierarchy": [
{
"name": "h",
"id": "h"
}
],
"kind": "Namespace",
"content": "```typescript\nexport declare namespace h \n```\n\n\n<table><thead><tr><th>\n\nFunction\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\n[h(type)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, text)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data, text)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(type, data, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\n[h(sel, data, children)](#)\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/factory.ts",
"content": "The legacy transform, used in special cases like `<div {...props} key=\"key\" />`<!-- -->. Note that the children are spread arguments, instead of a prop like in jsx() calls.\n\nAlso note that this disables optimizations.\n\n\n```typescript\nexport declare function h<TYPE extends string | FunctionComponent<PROPS>, PROPS extends {} = {}>(type: TYPE, props?: PROPS | null, ...children: any[]): JSXNode<TYPE>;\n```\n\n\n<table><thead><tr><th>\n\nParameter\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\ntype\n\n\n</td><td>\n\nTYPE\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\nprops\n\n\n</td><td>\n\nPROPS \\| null\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n<tr><td>\n\nchildren\n\n\n</td><td>\n\nany\\[\\]\n\n\n</td><td>\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\n[JSXNode](#jsxnode)<!-- -->&lt;TYPE&gt;",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/jsx-runtime.ts",
"mdFile": "qwik.h.md"
},
{
Expand Down Expand Up @@ -1085,7 +1071,7 @@
}
],
"kind": "Function",
"content": "Create a `____$(...)` convenience method from `___(...)`<!-- -->.\n\nIt is very common for functions to take a lazy-loadable resource as a first argument. For this reason, the Qwik Optimizer automatically extracts the first argument from any function which ends in `$`<!-- -->.\n\nThis means that `foo$(arg0)` and `foo($(arg0))` are equivalent with respect to Qwik Optimizer. The former is just a shorthand for the latter.\n\nFor example, these function calls are equivalent:\n\n- `component$(() => {...})` is same as `component($(() => {...}))`\n\n```tsx\nexport function myApi(callback: QRL<() => void>): void {\n // ...\n}\n\nexport const myApi$ = implicit$FirstArg(myApi);\n// type of myApi$: (callback: () => void): void\n\n// can be used as:\nmyApi$(() => console.log('callback'));\n\n// will be transpiled to:\n// FILE: <current file>\nmyApi(qrl('./chunk-abc.js', 'callback'));\n\n// FILE: chunk-abc.js\nexport const callback = () => console.log('callback');\n```\n\n\n```typescript\nimplicit$FirstArg: <FIRST, REST extends any[], RET>(fn: (first: QRL<FIRST>, ...rest: REST) => RET) => (first: FIRST, ...rest: REST) => RET\n```\n\n\n<table><thead><tr><th>\n\nParameter\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\nfn\n\n\n</td><td>\n\n(first: [QRL](#qrl)<!-- -->&lt;FIRST&gt;, ...rest: REST) =&gt; RET\n\n\n</td><td>\n\nA function that should have its first argument automatically `$`<!-- -->.\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\n(first: FIRST, ...rest: REST) =&gt; RET",
"content": "Create a `____$(...)` convenience method from `___(...)`<!-- -->.\n\nIt is very common for functions to take a lazy-loadable resource as a first argument. For this reason, the Qwik Optimizer automatically extracts the first argument from any function which ends in `$`<!-- -->.\n\nThis means that `foo$(arg0)` and `foo($(arg0))` are equivalent with respect to Qwik Optimizer. The former is just a shorthand for the latter.\n\nFor example, these function calls are equivalent:\n\n- `component$(() => {...})` is same as `component($(() => {...}))`\n\n```tsx\nexport function myApi(callback: QRL<() => void>): void {\n // ...\n}\n\nexport const myApi$ = implicit$FirstArg(myApi);\n// type of myApi$: (callback: () => void): void\n\n// can be used as:\nmyApi$(() => console.log('callback'));\n\n// will be transpiled to:\n// FILE: <current file>\nmyApi(qrl('./chunk-abc.js', 'callback'));\n\n// FILE: chunk-abc.js\nexport const callback = () => console.log('callback');\n```\n\n\n```typescript\nimplicit$FirstArg: <FIRST, REST extends any[], RET>(fn: (first: QRL<FIRST>, ...rest: REST) => RET) => ((first: FIRST, ...rest: REST) => RET)\n```\n\n\n<table><thead><tr><th>\n\nParameter\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\nfn\n\n\n</td><td>\n\n(first: [QRL](#qrl)<!-- -->&lt;FIRST&gt;, ...rest: REST) =&gt; RET\n\n\n</td><td>\n\nA function that should have its first argument automatically `$`<!-- -->.\n\n\n</td></tr>\n</tbody></table>\n**Returns:**\n\n((first: FIRST, ...rest: REST) =&gt; RET)",
"editUrl": "https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/util/implicit_dollar.ts",
"mdFile": "qwik.implicit_firstarg.md"
},
Expand Down
112 changes: 22 additions & 90 deletions packages/docs/src/routes/api/qwik/index.md
Expand Up @@ -2253,81 +2253,24 @@ getPlatform: () => CorePlatform;
## h
The legacy transform, used in special cases like `<div {...props} key="key" />`. Note that the children are spread arguments, instead of a prop like in jsx() calls.
Also note that this disables optimizations.
```typescript
export declare namespace h
export declare function h<
TYPE extends string | FunctionComponent<PROPS>,
PROPS extends {} = {},
>(type: TYPE, props?: PROPS | null, ...children: any[]): JSXNode<TYPE>;
```
<table><thead><tr><th>
Function
Parameter
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[h(type)](#)
</td><td>
</td></tr>
<tr><td>
[h(type, data)](#)
</td><td>
</td></tr>
<tr><td>
[h(type, text)](#)
</td><td>
</td></tr>
<tr><td>
[h(type, children)](#)
</td><td>
</td></tr>
<tr><td>
[h(type, data, text)](#)
</td><td>
</td></tr>
<tr><td>
[h(type, data, children)](#)
</td><td>
</td></tr>
<tr><td>
[h(sel, data, children)](#)
</td><td>
</td></tr>
</tbody></table>
[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/factory.ts)
## h
```typescript
export declare namespace h
```
<table><thead><tr><th>
Function
Type
</th><th>
Expand All @@ -2336,56 +2279,45 @@ Description
</th></tr></thead>
<tbody><tr><td>
[h(type)](#)
type
</td><td>
</td></tr>
<tr><td>
[h(type, data)](#)
TYPE
</td><td>
</td></tr>
<tr><td>
[h(type, text)](#)
props
</td><td>
</td></tr>
<tr><td>
[h(type, children)](#)
PROPS \| null
</td><td>
</td></tr>
<tr><td>
[h(type, data, text)](#)
</td><td>
_(Optional)_
</td></tr>
<tr><td>
[h(type, data, children)](#)
children
</td><td>
</td></tr>
<tr><td>
[h(sel, data, children)](#)
any[]
</td><td>
</td></tr>
</tbody></table>
**Returns:**
[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/factory.ts)
[JSXNode](#jsxnode)&lt;TYPE&gt;
[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/render/jsx/jsx-runtime.ts)
## HrHTMLAttributes
Expand Down Expand Up @@ -2645,7 +2577,7 @@ A function that should have its first argument automatically `$`.
</tbody></table>
**Returns:**
(first: FIRST, ...rest: REST) =&gt; RET
((first: FIRST, ...rest: REST) =&gt; RET)
[Edit this section](https://github.com/BuilderIO/qwik/tree/main/packages/qwik/src/core/util/implicit_dollar.ts)
Expand Down
2 changes: 1 addition & 1 deletion packages/qwik-city/middleware/cloudflare-pages/api.md
Expand Up @@ -7,7 +7,7 @@
import type { ServerRenderOptions } from '@builder.io/qwik-city/middleware/request-handler';

// @public (undocumented)
export function createQwikCity(opts: QwikCityCloudflarePagesOptions): (request: PlatformCloudflarePages['request'], env: Record<string, any> & {
export function createQwikCity(opts: QwikCityCloudflarePagesOptions): (request: PlatformCloudflarePages['request'], env: PlatformCloudflarePages['env'] & {
ASSETS: {
fetch: (req: Request) => Response;
};
Expand Down
2 changes: 1 addition & 1 deletion packages/qwik-city/runtime/src/api.md
Expand Up @@ -455,7 +455,7 @@ export type TypedDataValidator<T extends zod.ZodType = zod.ZodType> = {
export const useContent: () => ContentState;

// @public
export const useDocumentHead: <FrontMatter extends Record<string, unknown> = Record<string, any>>() => Required<Required<DocumentHeadValue<FrontMatter>>>;
export const useDocumentHead: <FrontMatter extends Record<string, unknown> = Record<string, any>>() => Required<ResolvedDocumentHead<FrontMatter>>;

// @public (undocumented)
export const useLocation: () => RouteLocation;
Expand Down
29 changes: 5 additions & 24 deletions packages/qwik/src/core/api.md
Expand Up @@ -274,27 +274,8 @@ export function getLocale(defaultLocale?: string): string;
// @public
export const getPlatform: () => CorePlatform;

// @public (undocumented)
function h<TYPE extends string | FunctionComponent<PROPS>, PROPS extends {} = {}>(type: TYPE, props: PROPS | null, ...children: any[]): JSXNode<TYPE>;

// @public (undocumented)
namespace h {
// (undocumented)
function h(type: any): JSXNode<any>;
// (undocumented)
function h(type: Node, data: any): JSXNode<any>;
// (undocumented)
function h(type: any, text: string): JSXNode<any>;
// (undocumented)
function h(type: any, children: Array<any>): JSXNode<any>;
// (undocumented)
function h(type: any, data: any, text: string): JSXNode<any>;
// (undocumented)
function h(type: any, data: any, children: Array<JSXNode<any> | undefined | null>): JSXNode<any>;
// (undocumented)
function h(sel: any, data: any | null, children: JSXNode<any>): JSXNode<any>;
{ JSX };
}
// @public
function h<TYPE extends string | FunctionComponent<PROPS>, PROPS extends {} = {}>(type: TYPE, props?: PROPS | null, ...children: any[]): JSXNode<TYPE>;
export { h as createElement }
export { h }

Expand Down Expand Up @@ -349,7 +330,7 @@ export interface ImgHTMLAttributes<T extends Element> extends Attrs<'img', T> {
}

// @public
export const implicit$FirstArg: <FIRST, REST extends any[], RET>(fn: (first: QRL<FIRST>, ...rest: REST) => RET) => (first: FIRST, ...rest: REST) => RET;
export const implicit$FirstArg: <FIRST, REST extends any[], RET>(fn: (first: QRL<FIRST>, ...rest: REST) => RET) => ((first: FIRST, ...rest: REST) => RET);

// Warning: (ae-internal-missing-underscore) The name "inlinedQrl" should be prefixed with an underscore because the declaration is marked as @internal
//
Expand Down Expand Up @@ -410,7 +391,7 @@ export { jsx }
export { jsx as jsxs }

// @internal (undocumented)
export const _jsxBranch: <T>(input?: T | undefined) => T | undefined;
export const _jsxBranch: <T>(input?: T) => T | undefined;

// @internal
export const _jsxC: <T extends string | FunctionComponent<any>>(type: T, varProps: Props | null, constProps: Props | null, flags: number, key: string | number | null, dev?: DevJSX) => JSXNode<T>;
Expand Down Expand Up @@ -447,7 +428,7 @@ export interface JSXNode<T extends string | FunctionComponent | unknown = unknow
export type JSXOutput = JSXNode | string | number | boolean | null | undefined | JSXOutput[];

// @internal
export const _jsxQ: <T>(type: T, varProps: Props | null, constProps: Props | null, children: JSXChildren | null, flags: number, key: string | number | null, dev?: DevJSX) => JSXNode<T>;
export const _jsxQ: <T>(type: T, varProps: Props | null, constProps: Props | null, children: JSXChildren | null, flags: number, key: string | number | null | undefined, dev?: DevJSX) => JSXNode<T>;

// @public (undocumented)
export type JSXTagName = keyof HTMLElementTagNameMap | Omit<string, keyof HTMLElementTagNameMap>;
Expand Down

0 comments on commit 4d8001e

Please sign in to comment.