kiru 0.50.8 → 0.51.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +4 -12
- package/dist/reconciler.js.map +1 -1
- package/dist/router/client/index.d.ts +10 -0
- package/dist/router/client/index.d.ts.map +1 -0
- package/dist/router/client/index.js +73 -0
- package/dist/router/client/index.js.map +1 -0
- package/dist/router/dev/index.d.ts +2 -0
- package/dist/router/dev/index.d.ts.map +1 -0
- package/dist/router/dev/index.js +46 -0
- package/dist/router/dev/index.js.map +1 -0
- package/dist/router/fileRouter.d.ts +1 -1
- package/dist/router/fileRouter.d.ts.map +1 -1
- package/dist/router/fileRouter.js +10 -2
- package/dist/router/fileRouter.js.map +1 -1
- package/dist/router/fileRouterController.d.ts +4 -4
- package/dist/router/fileRouterController.d.ts.map +1 -1
- package/dist/router/fileRouterController.js +118 -47
- package/dist/router/fileRouterController.js.map +1 -1
- package/dist/router/globals.d.ts +3 -0
- package/dist/router/globals.d.ts.map +1 -1
- package/dist/router/globals.js +3 -0
- package/dist/router/globals.js.map +1 -1
- package/dist/router/head.d.ts +38 -0
- package/dist/router/head.d.ts.map +1 -0
- package/dist/router/head.js +63 -0
- package/dist/router/head.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +5 -0
- package/dist/router/index.js.map +1 -1
- package/dist/router/pageConfig.d.ts +1 -1
- package/dist/router/pageConfig.d.ts.map +1 -1
- package/dist/router/pageConfig.js +1 -1
- package/dist/router/pageConfig.js.map +1 -1
- package/dist/router/server/index.d.ts +17 -0
- package/dist/router/server/index.d.ts.map +1 -0
- package/dist/router/server/index.js +160 -0
- package/dist/router/server/index.js.map +1 -0
- package/dist/router/types.d.ts +35 -11
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.internal.d.ts +6 -2
- package/dist/router/types.internal.d.ts.map +1 -1
- package/dist/router/utils/index.d.ts +4 -4
- package/dist/router/utils/index.d.ts.map +1 -1
- package/dist/router/utils/index.js +18 -5
- package/dist/router/utils/index.js.map +1 -1
- package/dist/types.dom.d.ts +2 -2
- package/dist/types.dom.d.ts.map +1 -1
- package/dist/types.utils.d.ts +3 -0
- package/dist/types.utils.d.ts.map +1 -1
- package/dist/utils/vdom.d.ts +2 -1
- package/dist/utils/vdom.d.ts.map +1 -1
- package/dist/utils/vdom.js +6 -1
- package/dist/utils/vdom.js.map +1 -1
- package/package.json +17 -1
- package/src/constants.ts +1 -0
- package/src/reconciler.ts +9 -19
- package/src/router/client/index.ts +97 -0
- package/src/router/dev/index.ts +63 -0
- package/src/router/fileRouter.ts +12 -3
- package/src/router/fileRouterController.ts +185 -73
- package/src/router/globals.ts +4 -0
- package/src/router/head.ts +66 -0
- package/src/router/index.ts +7 -0
- package/src/router/pageConfig.ts +2 -2
- package/src/router/server/index.ts +214 -0
- package/src/router/types.internal.ts +6 -2
- package/src/router/types.ts +43 -20
- package/src/router/utils/index.ts +25 -7
- package/src/types.dom.ts +2 -5
- package/src/types.utils.ts +4 -0
- package/src/utils/vdom.ts +9 -0
package/dist/utils/vdom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vdom.d.ts","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,iBAAiB,EAIlB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,CAAA;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAUjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAElD;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAEpD;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,CAIzE;AAED,iBAAS,UAAU,CACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GAChB,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAAE,CAElD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,iBAAiB,CACxB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAA;CAAE,CAE1D;AAED,iBAAS,eAAe,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAE5C;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAUhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAQ/C;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAaxE;AAED,iBAAS,aAAa,CACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,GAC/B,IAAI,CAUN;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,qBAO3E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAK5E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAgBjD;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,CAEvE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAMrE"}
|
|
1
|
+
{"version":3,"file":"vdom.d.ts","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,iBAAiB,EAIlB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,CAAA;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAUjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAElD;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAEpD;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,CAM3E;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,CAIzE;AAED,iBAAS,UAAU,CACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GAChB,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAAE,CAElD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,iBAAiB,CACxB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAA;CAAE,CAE1D;AAED,iBAAS,eAAe,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAE5C;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAUhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAQ/C;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAaxE;AAED,iBAAS,aAAa,CACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,GAC/B,IAAI,CAUN;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,qBAO3E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAK5E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAgBjD;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,CAEvE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAMrE"}
|
package/dist/utils/vdom.js
CHANGED
|
@@ -3,7 +3,7 @@ import { FLAG_DELETION, $FRAGMENT, $CONTEXT_PROVIDER, FLAG_PLACEMENT, FLAG_UPDAT
|
|
|
3
3
|
import { createElement } from "../index.js";
|
|
4
4
|
import { KiruError } from "../error.js";
|
|
5
5
|
import { node } from "../globals.js";
|
|
6
|
-
export { cloneVNode, isVNodeDeleted, isVNode, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
|
|
6
|
+
export { cloneVNode, isVNodeDeleted, isVNode, isValidTextChild, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
|
|
7
7
|
function cloneVNode(vNode) {
|
|
8
8
|
const children = vNode.props.children;
|
|
9
9
|
let clonedChildren;
|
|
@@ -21,6 +21,11 @@ function isVNodeDeleted(vNode) {
|
|
|
21
21
|
function isVNode(thing) {
|
|
22
22
|
return typeof thing === "object" && thing !== null && "type" in thing;
|
|
23
23
|
}
|
|
24
|
+
function isValidTextChild(thing) {
|
|
25
|
+
return ((typeof thing === "string" && thing !== "") ||
|
|
26
|
+
typeof thing === "number" ||
|
|
27
|
+
typeof thing === "bigint");
|
|
28
|
+
}
|
|
24
29
|
function isExoticType(type) {
|
|
25
30
|
return (type === $FRAGMENT || type === $CONTEXT_PROVIDER || type === $ERROR_BOUNDARY);
|
|
26
31
|
}
|
package/dist/utils/vdom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiru",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0-preview.1",
|
|
4
4
|
"description": "A batteries-included, easy-to-use rendering library with a tiny footprint",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -26,6 +26,22 @@
|
|
|
26
26
|
"types": "./dist/router/index.d.ts",
|
|
27
27
|
"default": "./dist/router/index.js"
|
|
28
28
|
},
|
|
29
|
+
"./router/dev": {
|
|
30
|
+
"types": "./dist/router/dev/index.d.ts",
|
|
31
|
+
"default": "./dist/router/dev/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./router/client": {
|
|
34
|
+
"types": "./dist/router/client/index.d.ts",
|
|
35
|
+
"default": "./dist/router/client/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./router/server": {
|
|
38
|
+
"types": "./dist/router/server/index.d.ts",
|
|
39
|
+
"default": "./dist/router/server/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./router/utils": {
|
|
42
|
+
"types": "./dist/router/utils/index.d.ts",
|
|
43
|
+
"default": "./dist/router/utils/index.js"
|
|
44
|
+
},
|
|
29
45
|
"./ssr/client": {
|
|
30
46
|
"types": "./dist/ssr/client.d.ts",
|
|
31
47
|
"default": "./dist/ssr/client.js"
|
package/src/constants.ts
CHANGED
package/src/reconciler.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { $FRAGMENT, FLAG_PLACEMENT, FLAG_UPDATE } from "./constants.js"
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
getVNodeAppContext,
|
|
4
|
+
isValidTextChild,
|
|
5
|
+
isVNode,
|
|
6
|
+
latest,
|
|
7
|
+
} from "./utils/index.js"
|
|
3
8
|
import { Signal } from "./signals/base.js"
|
|
4
9
|
import { __DEV__ } from "./env.js"
|
|
5
10
|
import { createElement, Fragment } from "./element.js"
|
|
@@ -150,7 +155,7 @@ function reconcileChildrenArray(parent: VNode, children: unknown[]) {
|
|
|
150
155
|
function updateSlot(parent: VNode, oldChild: VNode | null, child: unknown) {
|
|
151
156
|
// Update the node if the keys match, otherwise return null.
|
|
152
157
|
const key = oldChild?.props.key
|
|
153
|
-
if (
|
|
158
|
+
if (isValidTextChild(child)) {
|
|
154
159
|
if (key !== undefined) return null
|
|
155
160
|
if (
|
|
156
161
|
oldChild?.type === "#text" &&
|
|
@@ -268,7 +273,7 @@ function updateFragment(
|
|
|
268
273
|
}
|
|
269
274
|
|
|
270
275
|
function createChild(parent: VNode, child: unknown): VNode | null {
|
|
271
|
-
if (
|
|
276
|
+
if (isValidTextChild(child)) {
|
|
272
277
|
if (__DEV__) {
|
|
273
278
|
dev_emitCreateNode()
|
|
274
279
|
}
|
|
@@ -341,12 +346,7 @@ function updateFromMap(
|
|
|
341
346
|
child: any
|
|
342
347
|
): VNode | null {
|
|
343
348
|
const isSig = Signal.isSignal(child)
|
|
344
|
-
if (
|
|
345
|
-
isSig ||
|
|
346
|
-
(typeof child === "string" && child !== "") ||
|
|
347
|
-
typeof child === "number" ||
|
|
348
|
-
typeof child === "bigint"
|
|
349
|
-
) {
|
|
349
|
+
if (isSig || isValidTextChild(child)) {
|
|
350
350
|
const oldChild = existingChildren.get(index)
|
|
351
351
|
if (oldChild) {
|
|
352
352
|
if (oldChild.props.nodeValue === child) {
|
|
@@ -430,16 +430,6 @@ function updateFromMap(
|
|
|
430
430
|
return null
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
function isValidTextNodeValue(
|
|
434
|
-
value: unknown
|
|
435
|
-
): value is string | number | bigint {
|
|
436
|
-
return (
|
|
437
|
-
(typeof value === "string" && value !== "") ||
|
|
438
|
-
typeof value === "number" ||
|
|
439
|
-
typeof value === "bigint"
|
|
440
|
-
)
|
|
441
|
-
}
|
|
442
|
-
|
|
443
433
|
function propsChanged(oldProps: VNode["props"], newProps: VNode["props"]) {
|
|
444
434
|
const aKeys = Object.keys(oldProps)
|
|
445
435
|
const bKeys = Object.keys(newProps)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// initClient({ dir, baseUrl, pages, layouts })
|
|
2
|
+
|
|
3
|
+
import { createElement } from "../../element.js"
|
|
4
|
+
import { hydrate } from "../../ssr/client.js"
|
|
5
|
+
import { FileRouter } from "../fileRouter.js"
|
|
6
|
+
import {
|
|
7
|
+
matchLayouts,
|
|
8
|
+
matchRoute,
|
|
9
|
+
match404Route,
|
|
10
|
+
parseQuery,
|
|
11
|
+
} from "../utils/index.js"
|
|
12
|
+
import type { FormattedViteImportMap, PageModule } from "../types.internal"
|
|
13
|
+
import type { FileRouterConfig, FileRouterPreloadConfig } from "../types"
|
|
14
|
+
import { fileRouterInstance, fileRouterRoute } from "../globals.js"
|
|
15
|
+
import { FileRouterController } from "../fileRouterController.js"
|
|
16
|
+
import { FileRouterDataLoadError } from "../errors.js"
|
|
17
|
+
import { __DEV__ } from "../../env.js"
|
|
18
|
+
|
|
19
|
+
interface InitClientOptions {
|
|
20
|
+
dir: string
|
|
21
|
+
baseUrl: string
|
|
22
|
+
pages: FormattedViteImportMap
|
|
23
|
+
layouts: FormattedViteImportMap
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function initClient(options: InitClientOptions) {
|
|
27
|
+
const { dir, baseUrl, pages, layouts } = options
|
|
28
|
+
const config: FileRouterConfig = {
|
|
29
|
+
dir,
|
|
30
|
+
baseUrl,
|
|
31
|
+
pages,
|
|
32
|
+
layouts,
|
|
33
|
+
preloaded: await preparePreloadConfig(options),
|
|
34
|
+
transition: true,
|
|
35
|
+
}
|
|
36
|
+
hydrate(createElement(FileRouter, { config }), document.body)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function preparePreloadConfig(
|
|
40
|
+
options: InitClientOptions,
|
|
41
|
+
isStatic404 = false
|
|
42
|
+
): Promise<FileRouterPreloadConfig> {
|
|
43
|
+
let pageProps = {}
|
|
44
|
+
let url = new URL(window.location.pathname, "http://localhost")
|
|
45
|
+
const pathSegments = url.pathname.split("/").filter(Boolean)
|
|
46
|
+
let routeMatch = matchRoute(options.pages, pathSegments)
|
|
47
|
+
|
|
48
|
+
if (routeMatch === null || isStatic404) {
|
|
49
|
+
// Try to find a 404 page in parent directories
|
|
50
|
+
const _404Match = match404Route(options.pages, pathSegments)
|
|
51
|
+
if (!_404Match) {
|
|
52
|
+
throw new Error(`No 404 route defined (path: ${url.pathname}).`)
|
|
53
|
+
}
|
|
54
|
+
routeMatch = _404Match
|
|
55
|
+
}
|
|
56
|
+
if (!routeMatch) {
|
|
57
|
+
throw new Error(`No route defined (path: ${url.pathname}).`)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const layoutEntries = matchLayouts(options.layouts, routeMatch.routeSegments)
|
|
61
|
+
fileRouterInstance.current = new FileRouterController()
|
|
62
|
+
fileRouterRoute.current = routeMatch.route
|
|
63
|
+
const [page, ...layouts] = await Promise.all([
|
|
64
|
+
routeMatch.pageEntry.load() as Promise<PageModule>,
|
|
65
|
+
...layoutEntries.map((e) => e.load()),
|
|
66
|
+
])
|
|
67
|
+
fileRouterRoute.current = null
|
|
68
|
+
|
|
69
|
+
// Check if page has static props pre-loaded at build time
|
|
70
|
+
if (page.__KIRU_STATIC_PROPS__) {
|
|
71
|
+
const staticProps = page.__KIRU_STATIC_PROPS__[window.location.pathname]
|
|
72
|
+
if (!staticProps) {
|
|
73
|
+
return preparePreloadConfig(options, true)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
pageProps = staticProps.error
|
|
77
|
+
? {
|
|
78
|
+
data: null,
|
|
79
|
+
error: new FileRouterDataLoadError(staticProps.error),
|
|
80
|
+
loading: false,
|
|
81
|
+
}
|
|
82
|
+
: { data: staticProps.data, error: null, loading: false }
|
|
83
|
+
} else if (typeof page.config?.loader?.load === "function") {
|
|
84
|
+
pageProps = { loading: true, data: null, error: null }
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
pages: options.pages,
|
|
89
|
+
layouts: options.layouts,
|
|
90
|
+
page: page,
|
|
91
|
+
pageProps: pageProps,
|
|
92
|
+
pageLayouts: layouts,
|
|
93
|
+
params: routeMatch.params,
|
|
94
|
+
query: parseQuery(url.search),
|
|
95
|
+
route: routeMatch.route,
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { __DEV__ } from "../../env.js"
|
|
2
|
+
|
|
3
|
+
export function onLoadedDev() {
|
|
4
|
+
if (!__DEV__) {
|
|
5
|
+
throw new Error(
|
|
6
|
+
"onLoadedDev should not have been included in production build."
|
|
7
|
+
)
|
|
8
|
+
}
|
|
9
|
+
clean()
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function clean() {
|
|
13
|
+
let isCleaned = true
|
|
14
|
+
const VITE_ID = "data-vite-dev-id"
|
|
15
|
+
const injectedByVite = [
|
|
16
|
+
...document.querySelectorAll(`style[${VITE_ID}]`),
|
|
17
|
+
].map((style) => style.getAttribute(VITE_ID))
|
|
18
|
+
|
|
19
|
+
const suffix = "?temp"
|
|
20
|
+
const injectedByKiru = [
|
|
21
|
+
...document.querySelectorAll(
|
|
22
|
+
`link[rel="stylesheet"][type="text/css"][href$="${suffix}"]`
|
|
23
|
+
),
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
injectedByKiru.forEach((linkKiru) => {
|
|
27
|
+
const href = linkKiru.getAttribute("href")!
|
|
28
|
+
let filePathAbsoluteUserRootDir = href.slice(0, -suffix.length)
|
|
29
|
+
const prefix = "/@fs/"
|
|
30
|
+
if (filePathAbsoluteUserRootDir.startsWith(prefix))
|
|
31
|
+
filePathAbsoluteUserRootDir = filePathAbsoluteUserRootDir.slice(
|
|
32
|
+
prefix.length
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
if (
|
|
36
|
+
injectedByVite.some((filePathAbsoluteFilesystem) =>
|
|
37
|
+
filePathAbsoluteFilesystem!.endsWith(filePathAbsoluteUserRootDir)
|
|
38
|
+
)
|
|
39
|
+
) {
|
|
40
|
+
linkKiru.remove()
|
|
41
|
+
} else {
|
|
42
|
+
isCleaned = false
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
return isCleaned
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function removeInjectedStyles() {
|
|
49
|
+
let sleep = 2
|
|
50
|
+
|
|
51
|
+
function runClean() {
|
|
52
|
+
if (clean()) return
|
|
53
|
+
|
|
54
|
+
if (sleep < 1000) {
|
|
55
|
+
sleep *= 2
|
|
56
|
+
}
|
|
57
|
+
setTimeout(runClean, sleep)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
setTimeout(runClean, sleep)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
removeInjectedStyles()
|
package/src/router/fileRouter.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { __DEV__ } from "../env.js"
|
|
2
1
|
import { createElement } from "../element.js"
|
|
3
2
|
import { useState, useEffect } from "../hooks/index.js"
|
|
4
3
|
import { RouterContext } from "./context.js"
|
|
5
4
|
import { FileRouterController } from "./fileRouterController.js"
|
|
6
5
|
import type { FileRouterConfig } from "./types.js"
|
|
6
|
+
import { fileRouterInstance } from "./globals.js"
|
|
7
7
|
|
|
8
8
|
export interface FileRouterProps {
|
|
9
9
|
/**
|
|
@@ -24,8 +24,17 @@ export interface FileRouterProps {
|
|
|
24
24
|
config: FileRouterConfig
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function FileRouter(
|
|
28
|
-
const [controller] = useState(() =>
|
|
27
|
+
export function FileRouter({ config }: FileRouterProps): JSX.Element {
|
|
28
|
+
const [controller] = useState(() => {
|
|
29
|
+
if (fileRouterInstance.current && !config.preloaded) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
"[kiru/router]: FileRouter cannot be instantiated more than once at a time."
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
const router = (fileRouterInstance.current ??= new FileRouterController())
|
|
35
|
+
router.init(config)
|
|
36
|
+
return router
|
|
37
|
+
})
|
|
29
38
|
useEffect(() => () => controller.dispose(), [controller])
|
|
30
39
|
|
|
31
40
|
return createElement(
|