olova 2.0.40 → 2.0.41
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/README.md +305 -12
- package/dist/client.d.ts +9 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +8 -0
- package/dist/client.js.map +1 -0
- package/dist/core/config.d.ts +179 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +33 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +16 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/data/hooks.d.ts +5 -0
- package/dist/data/hooks.d.ts.map +1 -0
- package/dist/data/hooks.js +19 -0
- package/dist/data/hooks.js.map +1 -0
- package/dist/data/index.d.ts +9 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +9 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/provider.d.ts +10 -0
- package/dist/data/provider.d.ts.map +1 -0
- package/dist/data/provider.js +10 -0
- package/dist/data/provider.js.map +1 -0
- package/dist/data/serialize.d.ts +10 -0
- package/dist/data/serialize.d.ts.map +1 -0
- package/dist/data/serialize.js +16 -0
- package/dist/data/serialize.js.map +1 -0
- package/dist/data/types.d.ts +9 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +2 -0
- package/dist/data/types.js.map +1 -0
- package/dist/head/Head.d.ts +8 -0
- package/dist/head/Head.d.ts.map +1 -0
- package/dist/head/Head.js +56 -0
- package/dist/head/Head.js.map +1 -0
- package/dist/head/HeadProvider.d.ts +31 -0
- package/dist/head/HeadProvider.d.ts.map +1 -0
- package/dist/head/HeadProvider.js +17 -0
- package/dist/head/HeadProvider.js.map +1 -0
- package/dist/head/index.d.ts +8 -0
- package/dist/head/index.d.ts.map +1 -0
- package/dist/head/index.js +8 -0
- package/dist/head/index.js.map +1 -0
- package/dist/head/ssr.d.ts +9 -0
- package/dist/head/ssr.d.ts.map +1 -0
- package/dist/head/ssr.js +35 -0
- package/dist/head/ssr.js.map +1 -0
- package/dist/hydration/context.d.ts +14 -0
- package/dist/hydration/context.d.ts.map +1 -0
- package/dist/hydration/context.js +20 -0
- package/dist/hydration/context.js.map +1 -0
- package/dist/hydration/index.d.ts +15 -0
- package/dist/hydration/index.d.ts.map +1 -0
- package/dist/hydration/index.js +25 -0
- package/dist/hydration/index.js.map +1 -0
- package/dist/hydration/payload.d.ts +46 -0
- package/dist/hydration/payload.d.ts.map +1 -0
- package/dist/hydration/payload.js +99 -0
- package/dist/hydration/payload.js.map +1 -0
- package/dist/hydration/scheduler.d.ts +16 -0
- package/dist/hydration/scheduler.d.ts.map +1 -0
- package/dist/hydration/scheduler.js +83 -0
- package/dist/hydration/scheduler.js.map +1 -0
- package/dist/hydration/seo.d.ts +10 -0
- package/dist/hydration/seo.d.ts.map +1 -0
- package/dist/hydration/seo.js +110 -0
- package/dist/hydration/seo.js.map +1 -0
- package/dist/hydration/serialization.d.ts +30 -0
- package/dist/hydration/serialization.d.ts.map +1 -0
- package/dist/hydration/serialization.js +99 -0
- package/dist/hydration/serialization.js.map +1 -0
- package/dist/hydration/types.d.ts +104 -0
- package/dist/hydration/types.d.ts.map +1 -0
- package/dist/hydration/types.js +2 -0
- package/dist/hydration/types.js.map +1 -0
- package/dist/index.d.ts +15 -85
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin/cache.d.ts +66 -0
- package/dist/plugin/cache.d.ts.map +1 -0
- package/dist/plugin/cache.js +129 -0
- package/dist/plugin/cache.js.map +1 -0
- package/dist/plugin/index.d.ts +8 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +8 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/plugin.d.ts +25 -0
- package/dist/plugin/plugin.d.ts.map +1 -0
- package/dist/plugin/plugin.js +601 -0
- package/dist/plugin/plugin.js.map +1 -0
- package/dist/router/Link.d.ts +7 -0
- package/dist/router/Link.d.ts.map +1 -0
- package/dist/router/Link.js +53 -0
- package/dist/router/Link.js.map +1 -0
- package/dist/router/Router.d.ts +7 -0
- package/dist/router/Router.d.ts.map +1 -0
- package/dist/router/Router.js +263 -0
- package/dist/router/Router.js.map +1 -0
- package/dist/router/context.d.ts +13 -0
- package/dist/router/context.d.ts.map +1 -0
- package/dist/router/context.js +47 -0
- package/dist/router/context.js.map +1 -0
- package/dist/router/hooks.d.ts +30 -0
- package/dist/router/hooks.d.ts.map +1 -0
- package/dist/router/hooks.js +59 -0
- package/dist/router/hooks.js.map +1 -0
- package/dist/router/index.d.ts +13 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +14 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/matching.d.ts +19 -0
- package/dist/router/matching.d.ts.map +1 -0
- package/dist/router/matching.js +115 -0
- package/dist/router/matching.js.map +1 -0
- package/dist/router/navigation.d.ts +26 -0
- package/dist/router/navigation.d.ts.map +1 -0
- package/dist/router/navigation.js +65 -0
- package/dist/router/navigation.js.map +1 -0
- package/dist/router/types.d.ts +61 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +6 -0
- package/dist/router/types.js.map +1 -0
- package/dist/server.d.ts +10 -16
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +7 -19
- package/dist/server.js.map +1 -1
- package/dist/streaming/html.d.ts +29 -0
- package/dist/streaming/html.d.ts.map +1 -0
- package/dist/streaming/html.js +72 -0
- package/dist/streaming/html.js.map +1 -0
- package/dist/streaming/index.d.ts +7 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +7 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/render.d.ts +32 -0
- package/dist/streaming/render.d.ts.map +1 -0
- package/dist/streaming/render.js +83 -0
- package/dist/streaming/render.js.map +1 -0
- package/dist/streaming/utils.d.ts +30 -0
- package/dist/streaming/utils.d.ts.map +1 -0
- package/dist/streaming/utils.js +61 -0
- package/dist/streaming/utils.js.map +1 -0
- package/package.json +43 -35
- package/dist/router.d.ts +0 -3
- package/dist/router.js +0 -234
- package/dist/router.js.map +0 -1
- package/dist/vite.d.ts +0 -98
- package/dist/vite.js +0 -1820
- package/dist/vite.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const PageDataContext: React.Context<any>;
|
|
3
|
+
/**
|
|
4
|
+
* Provider for page data
|
|
5
|
+
*/
|
|
6
|
+
export declare function PageDataProvider({ children, data }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
data: any;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/data/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,eAAO,MAAM,eAAe,oBAA2B,CAAC;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,IAAI,EACL,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC;CACX,2CAMA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext } from 'react';
|
|
3
|
+
export const PageDataContext = createContext(null);
|
|
4
|
+
/**
|
|
5
|
+
* Provider for page data
|
|
6
|
+
*/
|
|
7
|
+
export function PageDataProvider({ children, data }) {
|
|
8
|
+
return (_jsx(PageDataContext.Provider, { value: data, children: children }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/data/provider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAM,IAAI,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,IAAI,EAIL;IACC,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAClC,QAAQ,GACgB,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { GetStaticProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* For extracting getStaticProps from a module
|
|
4
|
+
*/
|
|
5
|
+
export declare function extractGetStaticProps(module: any): GetStaticProps | null;
|
|
6
|
+
/**
|
|
7
|
+
* Serialize data for injection into HTML
|
|
8
|
+
*/
|
|
9
|
+
export declare function serializePageData(data: any): string;
|
|
10
|
+
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/data/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI,CAKxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* For extracting getStaticProps from a module
|
|
3
|
+
*/
|
|
4
|
+
export function extractGetStaticProps(module) {
|
|
5
|
+
if (module.getStaticProps && typeof module.getStaticProps === 'function') {
|
|
6
|
+
return module.getStaticProps;
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Serialize data for injection into HTML
|
|
12
|
+
*/
|
|
13
|
+
export function serializePageData(data) {
|
|
14
|
+
return `<script>window.__OLOVA_PAGE_DATA__ = ${JSON.stringify(data)};</script>`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/data/serialize.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAW;IAC/C,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACzE,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAS;IACzC,OAAO,wCAAwC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface GetStaticPropsContext {
|
|
2
|
+
params?: Record<string, string>;
|
|
3
|
+
}
|
|
4
|
+
export interface GetStaticPropsResult<T> {
|
|
5
|
+
props: T;
|
|
6
|
+
revalidate?: number;
|
|
7
|
+
}
|
|
8
|
+
export type GetStaticProps<T = any> = (context: GetStaticPropsContext) => Promise<GetStaticPropsResult<T>> | GetStaticPropsResult<T>;
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CACpC,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Head.d.ts","sourceRoot":"","sources":["../../src/head/Head.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,QAoD/D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { useEffect, useContext } from 'react';
|
|
2
|
+
import { HeadContext } from './HeadProvider';
|
|
3
|
+
/**
|
|
4
|
+
* Head component - client-side document head management
|
|
5
|
+
*/
|
|
6
|
+
export function Head({ children }) {
|
|
7
|
+
const context = useContext(HeadContext);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
React.Children.forEach(children, (child) => {
|
|
10
|
+
if (!React.isValidElement(child))
|
|
11
|
+
return;
|
|
12
|
+
const { type, props } = child;
|
|
13
|
+
if (type === 'title') {
|
|
14
|
+
const titleProps = props;
|
|
15
|
+
if (typeof titleProps.children === 'string') {
|
|
16
|
+
document.title = titleProps.children;
|
|
17
|
+
context?.update({ title: titleProps.children });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (type === 'meta') {
|
|
21
|
+
const metaProps = props;
|
|
22
|
+
const key = metaProps.name || metaProps.property || metaProps.httpEquiv;
|
|
23
|
+
if (key) {
|
|
24
|
+
let meta = document.querySelector(`meta[name="${key}"], meta[property="${key}"]`);
|
|
25
|
+
if (!meta) {
|
|
26
|
+
meta = document.createElement('meta');
|
|
27
|
+
if (metaProps.name)
|
|
28
|
+
meta.setAttribute('name', metaProps.name);
|
|
29
|
+
if (metaProps.property)
|
|
30
|
+
meta.setAttribute('property', metaProps.property);
|
|
31
|
+
document.head.appendChild(meta);
|
|
32
|
+
}
|
|
33
|
+
meta.setAttribute('content', metaProps.content);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (type === 'link') {
|
|
37
|
+
const linkProps = props;
|
|
38
|
+
const key = linkProps.href;
|
|
39
|
+
let link = document.querySelector(`link[href="${key}"]`);
|
|
40
|
+
if (!link) {
|
|
41
|
+
link = document.createElement('link');
|
|
42
|
+
link.setAttribute('rel', linkProps.rel);
|
|
43
|
+
link.setAttribute('href', linkProps.href);
|
|
44
|
+
if (linkProps.as)
|
|
45
|
+
link.setAttribute('as', linkProps.as);
|
|
46
|
+
document.head.appendChild(link);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return () => {
|
|
51
|
+
// Cleanup could go here if needed
|
|
52
|
+
};
|
|
53
|
+
}, [children, context]);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=Head.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Head.js","sourceRoot":"","sources":["../../src/head/Head.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MetaProps {
|
|
3
|
+
name?: string;
|
|
4
|
+
property?: string;
|
|
5
|
+
httpEquiv?: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}
|
|
8
|
+
export interface HeadLinkProps {
|
|
9
|
+
rel: string;
|
|
10
|
+
href: string;
|
|
11
|
+
as?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TitleProps {
|
|
14
|
+
children: string;
|
|
15
|
+
}
|
|
16
|
+
export interface HeadState {
|
|
17
|
+
title?: string;
|
|
18
|
+
metas: Map<string, MetaProps>;
|
|
19
|
+
links: Map<string, HeadLinkProps>;
|
|
20
|
+
}
|
|
21
|
+
export declare const HeadContext: React.Context<{
|
|
22
|
+
state: HeadState;
|
|
23
|
+
update: (updates: Partial<HeadState>) => void;
|
|
24
|
+
} | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Provider for Head state management
|
|
27
|
+
*/
|
|
28
|
+
export declare function HeadProvider({ children }: {
|
|
29
|
+
children: React.ReactNode;
|
|
30
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=HeadProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadProvider.d.ts","sourceRoot":"","sources":["../../src/head/HeadProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,WAAW;WACf,SAAS;YACR,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI;SAChC,CAAC;AAEhB;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAevE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useState } from 'react';
|
|
3
|
+
export const HeadContext = createContext(null);
|
|
4
|
+
/**
|
|
5
|
+
* Provider for Head state management
|
|
6
|
+
*/
|
|
7
|
+
export function HeadProvider({ children }) {
|
|
8
|
+
const [state, setState] = useState({
|
|
9
|
+
metas: new Map(),
|
|
10
|
+
links: new Map(),
|
|
11
|
+
});
|
|
12
|
+
const update = (updates) => {
|
|
13
|
+
setState(prev => ({ ...prev, ...updates }));
|
|
14
|
+
};
|
|
15
|
+
return (_jsx(HeadContext.Provider, { value: { state, update }, children: children }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=HeadProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadProvider.js","sourceRoot":"","sources":["../../src/head/HeadProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAyBvD,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAG9B,IAAI,CAAC,CAAC;AAEhB;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAiC;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY;QAC5C,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,IAAI,GAAG,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,OAA2B,EAAE,EAAE;QAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAC3C,QAAQ,GACY,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/head/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/head/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/head/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkC9F"}
|
package/dist/head/ssr.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* For SSR/SSG - extract head elements to string
|
|
4
|
+
*/
|
|
5
|
+
export function renderHeadToString(children) {
|
|
6
|
+
let title = 'Olova App';
|
|
7
|
+
let metas = '';
|
|
8
|
+
React.Children.forEach(children, (child) => {
|
|
9
|
+
if (!React.isValidElement(child))
|
|
10
|
+
return;
|
|
11
|
+
const { type, props } = child;
|
|
12
|
+
if (type === 'title') {
|
|
13
|
+
const titleProps = props;
|
|
14
|
+
if (typeof titleProps.children === 'string') {
|
|
15
|
+
title = titleProps.children;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (type === 'meta') {
|
|
19
|
+
const metaProps = props;
|
|
20
|
+
const attrs = Object.entries(metaProps)
|
|
21
|
+
.map(([k, v]) => `${k}="${v}"`)
|
|
22
|
+
.join(' ');
|
|
23
|
+
metas += ` <meta ${attrs} />\n`;
|
|
24
|
+
}
|
|
25
|
+
if (type === 'link') {
|
|
26
|
+
const linkProps = props;
|
|
27
|
+
const attrs = Object.entries(linkProps)
|
|
28
|
+
.map(([k, v]) => `${k}="${v}"`)
|
|
29
|
+
.join(' ');
|
|
30
|
+
metas += ` <link ${attrs} />\n`;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return { title, metas };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ssr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr.js","sourceRoot":"","sources":["../../src/head/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAyB;IAC1D,IAAI,KAAK,GAAG,WAAW,CAAC;IACxB,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;YAAE,OAAO;QAEzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAgC,CAAC;QAEzD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,KAAmB,CAAC;YACvC,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC5C,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAkB,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,aAAa,KAAK,OAAO,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAsB,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,aAAa,KAAK,OAAO,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FlightContext } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Set current Flight context (server-side)
|
|
4
|
+
*/
|
|
5
|
+
export declare function setFlightContext(context: FlightContext): void;
|
|
6
|
+
/**
|
|
7
|
+
* Get current Flight context
|
|
8
|
+
*/
|
|
9
|
+
export declare function getFlightContext(): FlightContext | null;
|
|
10
|
+
/**
|
|
11
|
+
* Clear Flight context
|
|
12
|
+
*/
|
|
13
|
+
export declare function clearFlightContext(): void;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/hydration/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let currentFlightContext = null;
|
|
2
|
+
/**
|
|
3
|
+
* Set current Flight context (server-side)
|
|
4
|
+
*/
|
|
5
|
+
export function setFlightContext(context) {
|
|
6
|
+
currentFlightContext = context;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get current Flight context
|
|
10
|
+
*/
|
|
11
|
+
export function getFlightContext() {
|
|
12
|
+
return currentFlightContext;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Clear Flight context
|
|
16
|
+
*/
|
|
17
|
+
export function clearFlightContext() {
|
|
18
|
+
currentFlightContext = null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/hydration/context.ts"],"names":[],"mappings":"AAEA,IAAI,oBAAoB,GAAyB,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,oBAAoB,GAAG,IAAI,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Olova Hydration Module
|
|
3
|
+
* Implements "Flight" format for efficient client hydration
|
|
4
|
+
*/
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './payload';
|
|
7
|
+
export * from './serialization';
|
|
8
|
+
export * from './scheduler';
|
|
9
|
+
export * from './context';
|
|
10
|
+
export * from './seo';
|
|
11
|
+
/**
|
|
12
|
+
* Get the global hydration scheduler instance
|
|
13
|
+
*/
|
|
14
|
+
export declare function getHydrationScheduler(): any;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hydration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AAKtB;;GAEG;AACH,wBAAgB,qBAAqB,QAOpC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Olova Hydration Module
|
|
3
|
+
* Implements "Flight" format for efficient client hydration
|
|
4
|
+
*/
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './payload';
|
|
7
|
+
export * from './serialization';
|
|
8
|
+
export * from './scheduler';
|
|
9
|
+
export * from './context';
|
|
10
|
+
export * from './seo';
|
|
11
|
+
// Global singleton instance for the client
|
|
12
|
+
let clientScheduler = null;
|
|
13
|
+
/**
|
|
14
|
+
* Get the global hydration scheduler instance
|
|
15
|
+
*/
|
|
16
|
+
export function getHydrationScheduler() {
|
|
17
|
+
if (typeof window === 'undefined')
|
|
18
|
+
return null;
|
|
19
|
+
if (!clientScheduler) {
|
|
20
|
+
const { HydrationScheduler } = require('./scheduler');
|
|
21
|
+
clientScheduler = new HydrationScheduler();
|
|
22
|
+
}
|
|
23
|
+
return clientScheduler;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hydration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AAEtB,2CAA2C;AAC3C,IAAI,eAAe,GAAQ,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { FlightPayload, FlightSEO, FlightMeta, HydrationHint, HydrationIsland, ResourceHint } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Reset node ID counter
|
|
4
|
+
*/
|
|
5
|
+
export declare function resetFlightContext(): void;
|
|
6
|
+
/**
|
|
7
|
+
* Create an empty Flight payload
|
|
8
|
+
*/
|
|
9
|
+
export declare function createFlightPayload(route: string, options?: {
|
|
10
|
+
seo?: FlightSEO;
|
|
11
|
+
meta?: FlightMeta;
|
|
12
|
+
buildId?: string;
|
|
13
|
+
}): FlightPayload;
|
|
14
|
+
/**
|
|
15
|
+
* Add a node to the Flight payload
|
|
16
|
+
*/
|
|
17
|
+
export declare function addFlightNode(payload: FlightPayload, type: string, props: Record<string, any>, options?: {
|
|
18
|
+
hydrate?: boolean;
|
|
19
|
+
suspense?: boolean;
|
|
20
|
+
children?: string[];
|
|
21
|
+
}): string;
|
|
22
|
+
/**
|
|
23
|
+
* Add component data to payload
|
|
24
|
+
*/
|
|
25
|
+
export declare function addFlightData(payload: FlightPayload, key: string, data: any): void;
|
|
26
|
+
/**
|
|
27
|
+
* Add a streaming chunk
|
|
28
|
+
*/
|
|
29
|
+
export declare function addFlightChunk(payload: FlightPayload, id: string, html: string, data?: any): void;
|
|
30
|
+
/**
|
|
31
|
+
* Add hydration hint
|
|
32
|
+
*/
|
|
33
|
+
export declare function addHydrationHint(payload: FlightPayload, hint: HydrationHint): void;
|
|
34
|
+
/**
|
|
35
|
+
* Add hydration island for selective hydration
|
|
36
|
+
*/
|
|
37
|
+
export declare function addHydrationIsland(payload: FlightPayload, island: HydrationIsland): void;
|
|
38
|
+
/**
|
|
39
|
+
* Add resource hint for preloading
|
|
40
|
+
*/
|
|
41
|
+
export declare function addResourceHint(payload: FlightPayload, hint: ResourceHint): void;
|
|
42
|
+
/**
|
|
43
|
+
* Set SEO data on Flight payload
|
|
44
|
+
*/
|
|
45
|
+
export declare function setFlightSEO(payload: FlightPayload, seo: FlightSEO): void;
|
|
46
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/hydration/payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AAYjB;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAC3D,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,aAAa,CAmBhB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB,GACL,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,GACR,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,GACT,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,GAClB,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,eAAe,GACtB,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,YAAY,GACjB,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,SAAS,GACb,IAAI,CAEN"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { serializeProps } from './serialization';
|
|
2
|
+
let nodeIdCounter = 0;
|
|
3
|
+
/**
|
|
4
|
+
* Generate unique node ID
|
|
5
|
+
*/
|
|
6
|
+
function generateNodeId() {
|
|
7
|
+
return `o${(++nodeIdCounter).toString(36)}`;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Reset node ID counter
|
|
11
|
+
*/
|
|
12
|
+
export function resetFlightContext() {
|
|
13
|
+
nodeIdCounter = 0;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create an empty Flight payload
|
|
17
|
+
*/
|
|
18
|
+
export function createFlightPayload(route, options) {
|
|
19
|
+
return {
|
|
20
|
+
v: 1,
|
|
21
|
+
ts: Date.now(),
|
|
22
|
+
route,
|
|
23
|
+
tree: [],
|
|
24
|
+
data: {},
|
|
25
|
+
chunks: [],
|
|
26
|
+
hints: [],
|
|
27
|
+
styles: [],
|
|
28
|
+
meta: options?.meta,
|
|
29
|
+
seo: options?.seo,
|
|
30
|
+
islands: [],
|
|
31
|
+
resourceHints: [],
|
|
32
|
+
build: options?.buildId ? {
|
|
33
|
+
id: options.buildId,
|
|
34
|
+
time: Date.now(),
|
|
35
|
+
} : undefined,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Add a node to the Flight payload
|
|
40
|
+
*/
|
|
41
|
+
export function addFlightNode(payload, type, props, options = {}) {
|
|
42
|
+
const id = generateNodeId();
|
|
43
|
+
payload.tree.push({
|
|
44
|
+
id,
|
|
45
|
+
type,
|
|
46
|
+
props: serializeProps(props),
|
|
47
|
+
children: options.children || [],
|
|
48
|
+
hydrate: options.hydrate ?? false,
|
|
49
|
+
suspense: options.suspense,
|
|
50
|
+
});
|
|
51
|
+
return id;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Add component data to payload
|
|
55
|
+
*/
|
|
56
|
+
export function addFlightData(payload, key, data) {
|
|
57
|
+
payload.data[key] = data;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Add a streaming chunk
|
|
61
|
+
*/
|
|
62
|
+
export function addFlightChunk(payload, id, html, data) {
|
|
63
|
+
payload.chunks.push({
|
|
64
|
+
id,
|
|
65
|
+
html,
|
|
66
|
+
ready: true,
|
|
67
|
+
data,
|
|
68
|
+
order: payload.chunks.length,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Add hydration hint
|
|
73
|
+
*/
|
|
74
|
+
export function addHydrationHint(payload, hint) {
|
|
75
|
+
payload.hints.push(hint);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Add hydration island for selective hydration
|
|
79
|
+
*/
|
|
80
|
+
export function addHydrationIsland(payload, island) {
|
|
81
|
+
if (!payload.islands)
|
|
82
|
+
payload.islands = [];
|
|
83
|
+
payload.islands.push(island);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Add resource hint for preloading
|
|
87
|
+
*/
|
|
88
|
+
export function addResourceHint(payload, hint) {
|
|
89
|
+
if (!payload.resourceHints)
|
|
90
|
+
payload.resourceHints = [];
|
|
91
|
+
payload.resourceHints.push(hint);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Set SEO data on Flight payload
|
|
95
|
+
*/
|
|
96
|
+
export function setFlightSEO(payload, seo) {
|
|
97
|
+
payload.seo = seo;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/hydration/payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HydrationState, HydrationHint } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Hydration scheduler - Prioritizes component hydration
|
|
4
|
+
*/
|
|
5
|
+
export declare class HydrationScheduler {
|
|
6
|
+
private queue;
|
|
7
|
+
private isProcessing;
|
|
8
|
+
private state;
|
|
9
|
+
constructor();
|
|
10
|
+
getState(): HydrationState;
|
|
11
|
+
schedule(id: string, priority: HydrationHint['priority'], task: () => void): void;
|
|
12
|
+
private processQueue;
|
|
13
|
+
private receiveChunk;
|
|
14
|
+
private hydrateNode;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/hydration/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAe,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiE;IAC9E,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAA0B;;IAQvC,QAAQ,IAAI,cAAc;IAI1B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;YAgBnE,YAAY;IAiC1B,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CAOpB"}
|