@emberkit/core 0.2.0 → 0.2.3
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/LICENSE +199 -0
- package/dist/boundaries/error-boundary.d.ts +29 -0
- package/dist/boundaries/error-boundary.d.ts.map +1 -0
- package/dist/boundaries/errors.d.ts +39 -0
- package/dist/boundaries/errors.d.ts.map +1 -0
- package/dist/boundaries/index.d.ts +5 -0
- package/dist/boundaries/index.d.ts.map +1 -0
- package/dist/boundaries/loading-boundary.d.ts +42 -0
- package/dist/boundaries/loading-boundary.d.ts.map +1 -0
- package/dist/cache/index.d.ts +60 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +24 -22
- package/dist/compiler/compiler.d.ts +6 -0
- package/dist/compiler/compiler.d.ts.map +1 -0
- package/dist/compiler/helpers/attributes.d.ts +4 -0
- package/dist/compiler/helpers/attributes.d.ts.map +1 -0
- package/dist/compiler/helpers/utils.d.ts +10 -0
- package/dist/compiler/helpers/utils.d.ts.map +1 -0
- package/dist/compiler/index.d.ts +5 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/types.d.ts +40 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/context/index.d.ts +34 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/types.d.ts +10 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/dev-server/index.d.ts +30 -0
- package/dist/dev-server/index.d.ts.map +1 -0
- package/dist/dev-server/index.js +27 -27
- package/dist/forms/index.d.ts +58 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +1 -1
- package/dist/forms/mutations.d.ts +48 -0
- package/dist/forms/mutations.d.ts.map +1 -0
- package/dist/forms/mutations.js +4 -1
- package/dist/hmr/client.d.ts +18 -0
- package/dist/hmr/client.d.ts.map +1 -0
- package/dist/hmr/client.js +1 -1
- package/dist/hmr/index.d.ts +3 -0
- package/dist/hmr/index.d.ts.map +1 -0
- package/dist/hmr/types.d.ts +42 -0
- package/dist/hmr/types.d.ts.map +1 -0
- package/dist/hmr/types.js +7 -7
- package/dist/hydration/helpers/analyzer.d.ts +9 -0
- package/dist/hydration/helpers/analyzer.d.ts.map +1 -0
- package/dist/hydration/helpers/hydration.d.ts +19 -0
- package/dist/hydration/helpers/hydration.d.ts.map +1 -0
- package/dist/hydration/helpers/hydration.js +1 -1
- package/dist/hydration/index.d.ts +4 -0
- package/dist/hydration/index.d.ts.map +1 -0
- package/dist/hydration/types.d.ts +27 -0
- package/dist/hydration/types.d.ts.map +1 -0
- package/dist/hydration/types.js +32 -8
- package/dist/image/index.d.ts +9 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +1 -1
- package/dist/image/processor.d.ts +57 -0
- package/dist/image/processor.d.ts.map +1 -0
- package/dist/image/processor.js +20 -15
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/jsx-dev-runtime.d.ts +11 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.d.ts +11 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/loader/helpers/loader.d.ts +6 -0
- package/dist/loader/helpers/loader.d.ts.map +1 -0
- package/dist/loader/index.d.ts +3 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/types.d.ts +34 -0
- package/dist/loader/types.d.ts.map +1 -0
- package/dist/markdown/index.d.ts +77 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +178 -172
- package/dist/mdx/index.d.ts +43 -0
- package/dist/mdx/index.d.ts.map +1 -0
- package/dist/mdx/index.js +46 -40
- package/dist/mdx/loader.d.ts +3 -0
- package/dist/mdx/loader.d.ts.map +1 -0
- package/dist/meta/head-registry.d.ts +5 -0
- package/dist/meta/head-registry.d.ts.map +1 -0
- package/dist/meta/head.d.ts +29 -0
- package/dist/meta/head.d.ts.map +1 -0
- package/dist/meta/index.d.ts +91 -0
- package/dist/meta/index.d.ts.map +1 -0
- package/dist/meta/index.js +16 -16
- package/dist/navigation/helpers/navigation.d.ts +15 -0
- package/dist/navigation/helpers/navigation.d.ts.map +1 -0
- package/dist/navigation/helpers/navigation.js +4 -4
- package/dist/navigation/helpers/useNavigate.d.ts +6 -0
- package/dist/navigation/helpers/useNavigate.d.ts.map +1 -0
- package/dist/navigation/index.d.ts +5 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/types.d.ts +24 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +1 -2
- package/dist/plugin/index.d.ts +73 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +4 -4
- package/dist/router/helpers/path.d.ts +15 -0
- package/dist/router/helpers/path.d.ts.map +1 -0
- package/dist/router/helpers/route.d.ts +6 -0
- package/dist/router/helpers/route.d.ts.map +1 -0
- package/dist/router/helpers/route.js +10 -3
- package/dist/router/index.d.ts +35 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/types.d.ts +30 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +1 -3
- package/dist/runtime/helpers/element.d.ts +7 -0
- package/dist/runtime/helpers/element.d.ts.map +1 -0
- package/dist/runtime/helpers/render.d.ts +8 -0
- package/dist/runtime/helpers/render.d.ts.map +1 -0
- package/dist/runtime/helpers/render.js +37 -8
- package/dist/runtime/index.d.ts +16 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +63 -7
- package/dist/runtime/types.d.ts +65 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/signals/helpers/core.d.ts +11 -0
- package/dist/signals/helpers/core.d.ts.map +1 -0
- package/dist/signals/helpers/core.js +34 -12
- package/dist/signals/helpers/utils.d.ts +7 -0
- package/dist/signals/helpers/utils.d.ts.map +1 -0
- package/dist/signals/index.d.ts +4 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/types.d.ts +23 -0
- package/dist/signals/types.d.ts.map +1 -0
- package/dist/ssg/index.d.ts +38 -0
- package/dist/ssg/index.d.ts.map +1 -0
- package/dist/ssg/index.js +8 -15
- package/dist/ssr/helpers/render-html.d.ts +16 -0
- package/dist/ssr/helpers/render-html.d.ts.map +1 -0
- package/dist/ssr/helpers/render-html.js +3 -2
- package/dist/ssr/helpers/ssr.d.ts +14 -0
- package/dist/ssr/helpers/ssr.d.ts.map +1 -0
- package/dist/ssr/helpers/ssr.js +3 -1
- package/dist/ssr/index.d.ts +4 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/types.d.ts +29 -0
- package/dist/ssr/types.d.ts.map +1 -0
- package/dist/vite-plugin/index.d.ts +5 -0
- package/dist/vite-plugin/index.d.ts.map +1 -0
- package/dist/vite-plugin/index.js +207 -28
- package/dist/vite-plugin/types.d.ts +44 -0
- package/dist/vite-plugin/types.d.ts.map +1 -0
- package/dist/vite-plugin/types.js +4 -0
- package/package.json +12 -10
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export { Head } from './head.js';
|
|
2
|
+
export type { HeadProps } from './head.js';
|
|
3
|
+
export { registerHeadContent, drainHeadContent, peekHeadContent, clearHeadContent, } from './head-registry.js';
|
|
4
|
+
export interface MetaData {
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
keywords?: string[];
|
|
8
|
+
author?: string;
|
|
9
|
+
robots?: string;
|
|
10
|
+
canonical?: string;
|
|
11
|
+
openGraph?: OpenGraphData;
|
|
12
|
+
twitter?: TwitterCardData;
|
|
13
|
+
structuredData?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface OpenGraphData {
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
url?: string;
|
|
19
|
+
type?: 'website' | 'article' | 'product' | 'profile';
|
|
20
|
+
images?: OGImage[];
|
|
21
|
+
locale?: string;
|
|
22
|
+
siteName?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface OGImage {
|
|
25
|
+
url: string;
|
|
26
|
+
width?: number;
|
|
27
|
+
height?: number;
|
|
28
|
+
alt?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface TwitterCardData {
|
|
31
|
+
card: 'summary' | 'summary_large_image' | 'app' | 'player';
|
|
32
|
+
site?: string;
|
|
33
|
+
creator?: string;
|
|
34
|
+
title?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
image?: string;
|
|
37
|
+
imageAlt?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare class MetaGenerator {
|
|
40
|
+
private baseUrl;
|
|
41
|
+
private defaultDescription;
|
|
42
|
+
private defaultTitle;
|
|
43
|
+
private siteName;
|
|
44
|
+
constructor(baseUrl?: string);
|
|
45
|
+
generate(data: MetaData): string;
|
|
46
|
+
private generateBasicMeta;
|
|
47
|
+
private generateCanonical;
|
|
48
|
+
private generateOpenGraph;
|
|
49
|
+
private generateStructuredData;
|
|
50
|
+
private generateTwitter;
|
|
51
|
+
}
|
|
52
|
+
export declare function createMetaGenerator(baseUrl?: string): MetaGenerator;
|
|
53
|
+
export declare function generateMeta(data: MetaData, baseUrl?: string): string;
|
|
54
|
+
export declare function generateBreadcrumbs(items: Array<{
|
|
55
|
+
name: string;
|
|
56
|
+
url: string;
|
|
57
|
+
}>): string;
|
|
58
|
+
export declare function generateArticleSchema(data: {
|
|
59
|
+
title: string;
|
|
60
|
+
description: string;
|
|
61
|
+
author: string;
|
|
62
|
+
publishedAt: string;
|
|
63
|
+
url: string;
|
|
64
|
+
image?: string;
|
|
65
|
+
}): string;
|
|
66
|
+
export declare function generateProductSchema(data: {
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
price: string;
|
|
70
|
+
currency?: string;
|
|
71
|
+
availability?: string;
|
|
72
|
+
image?: string;
|
|
73
|
+
}): string;
|
|
74
|
+
export interface MetaLink {
|
|
75
|
+
rel: string;
|
|
76
|
+
href: string;
|
|
77
|
+
type?: string;
|
|
78
|
+
sizes?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function generateLinks(links: MetaLink[]): string;
|
|
81
|
+
export interface MetaScript {
|
|
82
|
+
src?: string;
|
|
83
|
+
content?: string;
|
|
84
|
+
type?: string;
|
|
85
|
+
async?: boolean;
|
|
86
|
+
defer?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export declare function generateScripts(scripts: MetaScript[]): string;
|
|
89
|
+
export declare const DEFAULT_META: MetaData;
|
|
90
|
+
export declare function mergeMeta(base: MetaData, override: Partial<MetaData>): MetaData;
|
|
91
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/meta/index.ts"],"names":[],"mappings":"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"}
|
package/dist/meta/index.js
CHANGED
|
@@ -2,8 +2,8 @@ export { Head } from './head.js';
|
|
|
2
2
|
export { registerHeadContent, drainHeadContent, peekHeadContent, clearHeadContent, } from './head-registry.js';
|
|
3
3
|
export class MetaGenerator {
|
|
4
4
|
baseUrl;
|
|
5
|
-
defaultTitle = 'EmberKit App';
|
|
6
5
|
defaultDescription = 'Built with EmberKit';
|
|
6
|
+
defaultTitle = 'EmberKit App';
|
|
7
7
|
siteName = 'EmberKit';
|
|
8
8
|
constructor(baseUrl = 'https://example.com') {
|
|
9
9
|
this.baseUrl = baseUrl;
|
|
@@ -35,6 +35,15 @@ export class MetaGenerator {
|
|
|
35
35
|
}
|
|
36
36
|
return tags;
|
|
37
37
|
}
|
|
38
|
+
generateCanonical(data) {
|
|
39
|
+
if (!data.canonical && this.baseUrl) {
|
|
40
|
+
return [`<link rel="canonical" href="${escapeHtml(this.baseUrl)}">`];
|
|
41
|
+
}
|
|
42
|
+
if (data.canonical) {
|
|
43
|
+
return [`<link rel="canonical" href="${escapeHtml(data.canonical)}">`];
|
|
44
|
+
}
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
38
47
|
generateOpenGraph(data) {
|
|
39
48
|
if (!data.openGraph)
|
|
40
49
|
return [];
|
|
@@ -65,6 +74,12 @@ export class MetaGenerator {
|
|
|
65
74
|
}
|
|
66
75
|
return tags;
|
|
67
76
|
}
|
|
77
|
+
generateStructuredData(data) {
|
|
78
|
+
if (!data.structuredData)
|
|
79
|
+
return [];
|
|
80
|
+
const json = JSON.stringify(data.structuredData);
|
|
81
|
+
return [`<script type="application/ld+json">${json}</script>`];
|
|
82
|
+
}
|
|
68
83
|
generateTwitter(data) {
|
|
69
84
|
if (!data.twitter)
|
|
70
85
|
return [];
|
|
@@ -85,21 +100,6 @@ export class MetaGenerator {
|
|
|
85
100
|
tags.push(`<meta name="twitter:creator" content="${escapeHtml(tc.creator)}">`);
|
|
86
101
|
return tags;
|
|
87
102
|
}
|
|
88
|
-
generateCanonical(data) {
|
|
89
|
-
if (!data.canonical && this.baseUrl) {
|
|
90
|
-
return [`<link rel="canonical" href="${escapeHtml(this.baseUrl)}">`];
|
|
91
|
-
}
|
|
92
|
-
if (data.canonical) {
|
|
93
|
-
return [`<link rel="canonical" href="${escapeHtml(data.canonical)}">`];
|
|
94
|
-
}
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
generateStructuredData(data) {
|
|
98
|
-
if (!data.structuredData)
|
|
99
|
-
return [];
|
|
100
|
-
const json = JSON.stringify(data.structuredData);
|
|
101
|
-
return [`<script type="application/ld+json">${json}</script>`];
|
|
102
|
-
}
|
|
103
103
|
}
|
|
104
104
|
export function createMetaGenerator(baseUrl) {
|
|
105
105
|
return new MetaGenerator(baseUrl);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { NavigationOptions, ViewTransitionOptions } from '../types.js';
|
|
2
|
+
export declare function navigate(to: string, options?: NavigationOptions): Promise<void>;
|
|
3
|
+
export declare function redirect(to: string, status?: number): never;
|
|
4
|
+
export declare function preload(path: string): void;
|
|
5
|
+
export declare function startViewTransition(options?: ViewTransitionOptions): Promise<void>;
|
|
6
|
+
export interface ViewTransition {
|
|
7
|
+
readonly finished: Promise<void>;
|
|
8
|
+
readonly ready: Promise<void>;
|
|
9
|
+
readonly updateCallbackDone: Promise<void>;
|
|
10
|
+
skipTransition: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function reload(): void;
|
|
13
|
+
export declare function back(): void;
|
|
14
|
+
export declare function forward(): void;
|
|
15
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzF;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,KAAK,CAQhE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAM1C;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5F;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED,wBAAgB,IAAI,IAAI,IAAI,CAE3B;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B"}
|
|
@@ -7,9 +7,7 @@ export async function navigate(to, options = {}) {
|
|
|
7
7
|
history.pushState(state ?? null, '', to);
|
|
8
8
|
}
|
|
9
9
|
if (viewTransition) {
|
|
10
|
-
const viewTransitionOptions = typeof viewTransition === 'boolean'
|
|
11
|
-
? {}
|
|
12
|
-
: viewTransition;
|
|
10
|
+
const viewTransitionOptions = typeof viewTransition === 'boolean' ? {} : viewTransition;
|
|
13
11
|
await startViewTransition(viewTransitionOptions);
|
|
14
12
|
}
|
|
15
13
|
window.dispatchEvent(new PopStateEvent('popstate', { state: history.state }));
|
|
@@ -35,7 +33,9 @@ export async function startViewTransition(options = {}) {
|
|
|
35
33
|
if (skipTransition) {
|
|
36
34
|
return;
|
|
37
35
|
}
|
|
38
|
-
if (documentViewTransition &&
|
|
36
|
+
if (documentViewTransition &&
|
|
37
|
+
typeof document !== 'undefined' &&
|
|
38
|
+
'startViewTransition' in document) {
|
|
39
39
|
const transition = document.startViewTransition(async () => {
|
|
40
40
|
await Promise.resolve();
|
|
41
41
|
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NavigationOptions } from '../types.js';
|
|
2
|
+
export type UseNavigateOptions = Omit<NavigationOptions, 'viewTransition'> & {
|
|
3
|
+
skipTransition?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare function useNavigate(): (path: string, options?: UseNavigateOptions) => Promise<void>;
|
|
6
|
+
//# sourceMappingURL=useNavigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/useNavigate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,WAAW,KACX,MAAM,MAAM,EAAE,UAAS,kBAAuB,mBAQ7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type NavigationType = 'push' | 'replace' | 'pop' | 'reload';
|
|
2
|
+
export interface NavigationOptions {
|
|
3
|
+
replace?: boolean;
|
|
4
|
+
state?: Record<string, unknown>;
|
|
5
|
+
viewTransition?: boolean | ViewTransitionOptions;
|
|
6
|
+
}
|
|
7
|
+
export interface ViewTransitionOptions {
|
|
8
|
+
skipTransition?: boolean;
|
|
9
|
+
documentViewTransition?: boolean;
|
|
10
|
+
name?: string;
|
|
11
|
+
types?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface NavigationState {
|
|
14
|
+
type: NavigationType;
|
|
15
|
+
from: string;
|
|
16
|
+
to: string;
|
|
17
|
+
options?: NavigationOptions;
|
|
18
|
+
}
|
|
19
|
+
export interface NavigationTrigger {
|
|
20
|
+
type: NavigationType;
|
|
21
|
+
delta?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const VIEW_TRANSITION_API_SUPPORTED: boolean;
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/navigation/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,6BAA6B,SAC4B,CAAC"}
|
package/dist/navigation/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export const VIEW_TRANSITION_API_SUPPORTED = typeof document !== 'undefined' &&
|
|
2
|
-
'startViewTransition' in document;
|
|
1
|
+
export const VIEW_TRANSITION_API_SUPPORTED = typeof document !== 'undefined' && 'startViewTransition' in document;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export interface Plugin {
|
|
2
|
+
name: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
setup: (context: PluginContext) => void | Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export interface PluginContext {
|
|
7
|
+
config: ResolvedConfig;
|
|
8
|
+
api: PluginAPI;
|
|
9
|
+
onHook: (name: string, callback: HookCallback) => void;
|
|
10
|
+
addWatchFile: (file: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedConfig {
|
|
13
|
+
mode: 'static' | 'ssr' | 'spa' | 'hybrid';
|
|
14
|
+
root: string;
|
|
15
|
+
outDir: string;
|
|
16
|
+
srcDir: string;
|
|
17
|
+
routesDir: string;
|
|
18
|
+
server: ServerConfig;
|
|
19
|
+
build: BuildConfig;
|
|
20
|
+
}
|
|
21
|
+
export interface ServerConfig {
|
|
22
|
+
port: number;
|
|
23
|
+
host: string;
|
|
24
|
+
cors: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface BuildConfig {
|
|
27
|
+
target: string;
|
|
28
|
+
minify: boolean;
|
|
29
|
+
sourcemap: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface PluginAPI {
|
|
32
|
+
resolveId: (id: string, options?: ResolveIdOptions) => Promise<ResolvedId | null>;
|
|
33
|
+
load: (id: string) => Promise<string | null>;
|
|
34
|
+
transform: (code: string, id: string) => Promise<TransformResult | null>;
|
|
35
|
+
render: (html: string, context: RenderContext) => Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
export interface ResolveIdOptions {
|
|
38
|
+
importer?: string;
|
|
39
|
+
skipSelf?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ResolvedId {
|
|
42
|
+
id: string;
|
|
43
|
+
external?: boolean;
|
|
44
|
+
moduleSideEffects?: boolean | null;
|
|
45
|
+
}
|
|
46
|
+
export interface TransformResult {
|
|
47
|
+
code: string;
|
|
48
|
+
map?: string;
|
|
49
|
+
mappings?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface RenderContext {
|
|
52
|
+
url: string;
|
|
53
|
+
params: Record<string, string>;
|
|
54
|
+
head?: string;
|
|
55
|
+
body?: string;
|
|
56
|
+
}
|
|
57
|
+
export type HookCallback = (context?: unknown) => void | Promise<void>;
|
|
58
|
+
export type HookName = 'buildStart' | 'buildEnd' | 'transform' | 'renderStart' | 'renderEnd' | 'configResolved';
|
|
59
|
+
export declare class PluginPipeline {
|
|
60
|
+
private hookCache;
|
|
61
|
+
private plugins;
|
|
62
|
+
addPlugin(plugin: Plugin): void;
|
|
63
|
+
getPlugins(): Plugin[];
|
|
64
|
+
removePlugin(name: string): void;
|
|
65
|
+
runHook(name: HookName, context?: unknown): Promise<void>;
|
|
66
|
+
private invalidateCache;
|
|
67
|
+
}
|
|
68
|
+
export declare function createPluginContext(config: ResolvedConfig, api: PluginAPI): PluginContext;
|
|
69
|
+
export declare function createPluginAPI(): PluginAPI;
|
|
70
|
+
export declare const CORE_PLUGINS: Plugin[];
|
|
71
|
+
export declare function loadPlugin(name: string): Promise<Plugin>;
|
|
72
|
+
export declare function resolvePlugins(plugins: Plugin[], config: ResolvedConfig): Promise<PluginContext[]>;
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
export class PluginPipeline {
|
|
2
|
-
plugins = [];
|
|
3
2
|
hookCache = new Map();
|
|
3
|
+
plugins = [];
|
|
4
4
|
addPlugin(plugin) {
|
|
5
5
|
this.plugins.push(plugin);
|
|
6
6
|
this.invalidateCache();
|
|
7
7
|
}
|
|
8
|
+
getPlugins() {
|
|
9
|
+
return [...this.plugins];
|
|
10
|
+
}
|
|
8
11
|
removePlugin(name) {
|
|
9
12
|
this.plugins = this.plugins.filter((p) => p.name !== name);
|
|
10
13
|
this.invalidateCache();
|
|
@@ -18,9 +21,6 @@ export class PluginPipeline {
|
|
|
18
21
|
invalidateCache() {
|
|
19
22
|
this.hookCache.clear();
|
|
20
23
|
}
|
|
21
|
-
getPlugins() {
|
|
22
|
-
return [...this.plugins];
|
|
23
|
-
}
|
|
24
24
|
}
|
|
25
25
|
export function createPluginContext(config, api) {
|
|
26
26
|
const hooks = new Map();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function normalizePath(path: string): string;
|
|
2
|
+
export declare function pathToRegex(path: string): {
|
|
3
|
+
pattern: RegExp;
|
|
4
|
+
paramNames: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare function matchPath(pattern: RegExp, path: string): string[] | null;
|
|
7
|
+
export declare function scoreRoute(routePath: string): number;
|
|
8
|
+
export declare function extractSegments(filePath: string): string[];
|
|
9
|
+
export declare function segmentsToPath(segments: string[]): string;
|
|
10
|
+
export declare function isIndexFile(fileName: string): boolean;
|
|
11
|
+
export declare function isDynamicSegment(segment: string): boolean;
|
|
12
|
+
export declare function isCatchAll(segment: string): boolean;
|
|
13
|
+
export declare function getParamName(segment: string): string | null;
|
|
14
|
+
export declare function getCatchAllName(segment: string): string | null;
|
|
15
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/router/helpers/path.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAiBnF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAMxE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Route, RouteMatch } from '../types.js';
|
|
2
|
+
export declare function createRoute(filePath: string, routeDir?: string): Route | null;
|
|
3
|
+
export declare function matchRoute(routes: Route[], pathname: string): RouteMatch | null;
|
|
4
|
+
export declare function sortRoutes(routes: Route[]): Route[];
|
|
5
|
+
export declare function findLayoutChain(routes: Route[], pathname: string): Route[];
|
|
6
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/router/helpers/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAqB,GAAG,KAAK,GAAG,IAAI,CA2D3F;AAwBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAwB/E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAEnD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CA4B1E"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { normalizePath, matchPath, scoreRoute, extractSegments } from './path.js';
|
|
2
2
|
export function createRoute(filePath, routeDir = 'src/routes') {
|
|
3
|
-
const relativePath = filePath
|
|
4
|
-
|
|
3
|
+
const relativePath = filePath
|
|
4
|
+
.replace(/\\/g, '/')
|
|
5
|
+
.replace(routeDir, '')
|
|
6
|
+
.replace(/\.(tsx|ts|jsx|js|md|mdx)$/, '');
|
|
7
|
+
if (relativePath.startsWith('/_api/') ||
|
|
8
|
+
relativePath.startsWith('_api/') ||
|
|
9
|
+
relativePath.includes('/_api/')) {
|
|
5
10
|
return null;
|
|
6
11
|
}
|
|
7
12
|
const isLayout = filePath.includes('/_layout.tsx') || filePath.includes('/_layout.ts');
|
|
@@ -96,7 +101,9 @@ export function findLayoutChain(routes, pathname) {
|
|
|
96
101
|
for (let i = 0; i <= segments.length; i++) {
|
|
97
102
|
const pathPrefix = '/' + segments.slice(0, i).join('/');
|
|
98
103
|
const layout = routes.find((r) => r.isLayout &&
|
|
99
|
-
(r.path === pathPrefix ||
|
|
104
|
+
(r.path === pathPrefix ||
|
|
105
|
+
r.path === pathPrefix + '/_layout' ||
|
|
106
|
+
r.path === pathPrefix + '/index'));
|
|
100
107
|
if (layout) {
|
|
101
108
|
layouts.push(layout);
|
|
102
109
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Route, RouteMatch, NavigateOptions, RouteParams } from './types.js';
|
|
2
|
+
import { createRoute, matchRoute, sortRoutes, findLayoutChain } from './helpers/route.js';
|
|
3
|
+
export type RouterState = {
|
|
4
|
+
pathname: string;
|
|
5
|
+
params: Record<string, string>;
|
|
6
|
+
query: Record<string, string | string[]>;
|
|
7
|
+
};
|
|
8
|
+
type Listener = (state: RouterState) => void;
|
|
9
|
+
declare class EmberKitRouter {
|
|
10
|
+
private basePath;
|
|
11
|
+
private currentPath;
|
|
12
|
+
private listeners;
|
|
13
|
+
private routes;
|
|
14
|
+
back(): void;
|
|
15
|
+
createHref(path: string): string;
|
|
16
|
+
createRouteParams<T extends Record<string, string>>(params: T): RouteParams<T>;
|
|
17
|
+
forward(): void;
|
|
18
|
+
getBasePath(): string;
|
|
19
|
+
getCurrentPath(): string;
|
|
20
|
+
getLayouts(pathname: string): Route[];
|
|
21
|
+
getRoutes(): Route[];
|
|
22
|
+
initialize(routes: Route[]): void;
|
|
23
|
+
match(pathname: string): RouteMatch | null;
|
|
24
|
+
navigate(path: string, options?: NavigateOptions): void;
|
|
25
|
+
setBasePath(path: string): void;
|
|
26
|
+
subscribe(listener: Listener): () => void;
|
|
27
|
+
private notify;
|
|
28
|
+
private parseQuery;
|
|
29
|
+
}
|
|
30
|
+
export declare const router: EmberKitRouter;
|
|
31
|
+
export declare function createRouter(routes: Route[]): EmberKitRouter;
|
|
32
|
+
export declare function createMemoryRouter(initialPath?: string): EmberKitRouter;
|
|
33
|
+
export { createRoute, matchRoute, sortRoutes, findLayoutChain };
|
|
34
|
+
export type { Route, RouteMatch, NavigateOptions, RouteParams };
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1F,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE7C,cAAM,cAAc;IAClB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAAe;IAE7B,IAAI,IAAI,IAAI;IAIZ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAQ9E,OAAO,IAAI,IAAI;IAIf,WAAW,IAAI,MAAM;IAIrB,cAAc,IAAI,MAAM;IAIxB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAIrC,SAAS,IAAI,KAAK,EAAE;IAIpB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAKjC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAavD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAKzC,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,UAAU;CAgCnB;AAED,eAAO,MAAM,MAAM,gBAAuB,CAAC;AAE3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAI5D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,MAAY,GAAG,cAAc,CAI5E;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AAChE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface Route {
|
|
2
|
+
path: string;
|
|
3
|
+
pattern: RegExp;
|
|
4
|
+
paramNames: string[];
|
|
5
|
+
filePath: string;
|
|
6
|
+
fileName: string;
|
|
7
|
+
isLayout: boolean;
|
|
8
|
+
isError: boolean;
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
isApi: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface RouteMatch {
|
|
13
|
+
route: Route;
|
|
14
|
+
params: Record<string, string>;
|
|
15
|
+
score: number;
|
|
16
|
+
}
|
|
17
|
+
export interface NavigateOptions {
|
|
18
|
+
replace?: boolean;
|
|
19
|
+
state?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface RouteParams<T extends Record<string, string> = Record<string, string>> {
|
|
22
|
+
params: T;
|
|
23
|
+
query: Record<string, string | string[]>;
|
|
24
|
+
request: Request;
|
|
25
|
+
}
|
|
26
|
+
export type RouteHandler = (params: RouteParams) => Promise<unknown> | unknown;
|
|
27
|
+
export declare const SPECIAL_FILES: Set<string>;
|
|
28
|
+
export declare const PARAM_REGEX: RegExp;
|
|
29
|
+
export declare const CATCH_ALL_REGEX: RegExp;
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACpF,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE/E,eAAO,MAAM,aAAa,aAAsD,CAAC;AAEjF,eAAO,MAAM,WAAW,QAAkB,CAAC;AAC3C,eAAO,MAAM,eAAe,QAAqB,CAAC"}
|
package/dist/router/types.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export const SPECIAL_FILES = new Set([
|
|
2
|
-
'_layout', '_error', '_loading', 'index',
|
|
3
|
-
]);
|
|
1
|
+
export const SPECIAL_FILES = new Set(['_layout', '_error', '_loading', 'index']);
|
|
4
2
|
export const PARAM_REGEX = /\[([^\]]+)\]/g;
|
|
5
3
|
export const CATCH_ALL_REGEX = /\[\.\.\.(\w+)\]/g;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { JSXElementProps, JSXNode, DOMElement } from '../types.js';
|
|
2
|
+
export declare function createElement(type: string | ((props: JSXElementProps) => JSXNode), props: JSXElementProps | null, ...children: JSXNode[]): DOMElement;
|
|
3
|
+
export declare function isValidElement(element: unknown): element is DOMElement;
|
|
4
|
+
export declare function isComponent(type: unknown): type is (props: JSXElementProps) => JSXNode;
|
|
5
|
+
export declare function flattenChildren(children: unknown[]): JSXNode[];
|
|
6
|
+
export declare function resolveComponent(type: string | ((props: JSXElementProps) => JSXNode), props: JSXElementProps): DOMElement;
|
|
7
|
+
//# sourceMappingURL=element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/runtime/helpers/element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,EACpD,KAAK,EAAE,eAAe,GAAG,IAAI,EAC7B,GAAG,QAAQ,EAAE,OAAO,EAAE,GACrB,UAAU,CAcZ;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU,CAItE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAEtF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAe9D;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,EACpD,KAAK,EAAE,eAAe,GACrB,UAAU,CAaZ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JSXElement, JSXElementProps, JSXNode } from '../types.js';
|
|
2
|
+
export declare function getHandler(id: string): ((e: Event) => void) | undefined;
|
|
3
|
+
export declare function clearHandlers(): void;
|
|
4
|
+
export declare function renderElementToHTML(element: JSXElement): string;
|
|
5
|
+
export declare function renderToString(element: JSXElement | string | null | number | unknown[]): string;
|
|
6
|
+
export declare function getComponentName(type: string | ((props: JSXElementProps) => JSXNode)): string;
|
|
7
|
+
export declare function createPropsProxy(props: JSXElementProps): JSXElementProps;
|
|
8
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/runtime/helpers/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAuBpF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAEvE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CA+G/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,MAAM,CAO/F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,MAAM,CAM7F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CASxE"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
const SELF_CLOSING_TAGS = new Set([
|
|
2
|
-
'area',
|
|
2
|
+
'area',
|
|
3
|
+
'base',
|
|
4
|
+
'br',
|
|
5
|
+
'col',
|
|
6
|
+
'embed',
|
|
7
|
+
'hr',
|
|
8
|
+
'img',
|
|
9
|
+
'input',
|
|
10
|
+
'link',
|
|
11
|
+
'meta',
|
|
12
|
+
'source',
|
|
13
|
+
'track',
|
|
14
|
+
'wbr',
|
|
3
15
|
]);
|
|
4
16
|
let handlerCounter = 0;
|
|
5
17
|
const handlerRegistry = new Map();
|
|
@@ -53,16 +65,16 @@ export function renderElementToHTML(element) {
|
|
|
53
65
|
}
|
|
54
66
|
const rawChildren = props.children ?? [];
|
|
55
67
|
const children = Array.isArray(rawChildren) ? rawChildren : [rawChildren];
|
|
56
|
-
const childHtml = children
|
|
57
|
-
.map((child) => renderToString(child))
|
|
58
|
-
.join('');
|
|
68
|
+
const childHtml = children.map((child) => renderToString(child)).join('');
|
|
59
69
|
if (currentType === 'Fragment' || currentType === 'React.Fragment') {
|
|
60
70
|
return childHtml;
|
|
61
71
|
}
|
|
62
72
|
// Handle dangerouslySetInnerHTML
|
|
63
73
|
let innerHtml = childHtml;
|
|
64
74
|
for (const [, value] of Object.entries(props)) {
|
|
65
|
-
if (typeof value === 'object' &&
|
|
75
|
+
if (typeof value === 'object' &&
|
|
76
|
+
value !== null &&
|
|
77
|
+
'__html' in value) {
|
|
66
78
|
innerHtml = String(value.__html);
|
|
67
79
|
break;
|
|
68
80
|
}
|
|
@@ -71,22 +83,39 @@ export function renderElementToHTML(element) {
|
|
|
71
83
|
.filter(([key, value]) => {
|
|
72
84
|
if (key === 'children' || key === 'key')
|
|
73
85
|
return false;
|
|
74
|
-
if (typeof value === 'object' &&
|
|
86
|
+
if (typeof value === 'object' &&
|
|
87
|
+
value !== null &&
|
|
88
|
+
'__html' in value)
|
|
89
|
+
return false;
|
|
90
|
+
if (value == null)
|
|
91
|
+
return false;
|
|
92
|
+
if (typeof value === 'function' && key !== 'data-ek-bind')
|
|
75
93
|
return false;
|
|
76
94
|
return true;
|
|
77
95
|
})
|
|
78
|
-
.filter(([, value]) => typeof value !== 'function' && value != null)
|
|
79
96
|
.map(([key, value]) => {
|
|
80
|
-
// Map React/JSX prop names to HTML attributes
|
|
81
97
|
if (key === 'className')
|
|
82
98
|
key = 'class';
|
|
83
99
|
if (key === 'strokeWidth' || key === 'strokeLinecap' || key === 'strokeLinejoin') {
|
|
84
100
|
key = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
85
101
|
}
|
|
102
|
+
if (key === 'data-ek-bind' && typeof value === 'function' && value.__idx != null) {
|
|
103
|
+
return ` data-ek-bind="${value.__idx}"`;
|
|
104
|
+
}
|
|
86
105
|
if (value === true)
|
|
87
106
|
return ` ${key}`;
|
|
88
107
|
if (value === false)
|
|
89
108
|
return '';
|
|
109
|
+
if (key === 'style' && typeof value === 'object' && value !== null) {
|
|
110
|
+
const styleStr = Object.entries(value)
|
|
111
|
+
.filter(([, v]) => v != null)
|
|
112
|
+
.map(([prop, val]) => {
|
|
113
|
+
const cssProp = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
114
|
+
return `${cssProp}: ${val}`;
|
|
115
|
+
})
|
|
116
|
+
.join('; ');
|
|
117
|
+
return ` ${key}="${styleStr}"`;
|
|
118
|
+
}
|
|
90
119
|
return ` ${key}="${value}"`;
|
|
91
120
|
})
|
|
92
121
|
.join('');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { JSXElementProps, JSXNode, DOMElement, JSXElement } from './types.js';
|
|
2
|
+
export declare function createElement(type: string | ((props: JSXElementProps) => JSXNode), props?: Record<string, unknown> | null, ...children: unknown[]): DOMElement;
|
|
3
|
+
export declare function render(element: JSXElement | string | null | ((props: Record<string, unknown>) => JSXNode), container: Element | string, options?: {
|
|
4
|
+
hydrate?: boolean;
|
|
5
|
+
routes?: Array<{
|
|
6
|
+
path: string;
|
|
7
|
+
component: () => Promise<{
|
|
8
|
+
default: (props: Record<string, unknown>) => JSXNode;
|
|
9
|
+
}>;
|
|
10
|
+
}>;
|
|
11
|
+
}): void;
|
|
12
|
+
export declare function hydrate(element: JSXElement | string | null, container: Element | string): void;
|
|
13
|
+
export declare function flushSync(fn: () => void): void;
|
|
14
|
+
export declare function isElement(element: unknown): element is JSXElement;
|
|
15
|
+
export { type JSXElement, type JSXNode };
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,EACpD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,GAAG,QAAQ,EAAE,OAAO,EAAE,GACrB,UAAU,CAYZ;AA6FD,wBAAgB,MAAM,CACpB,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,EACnF,SAAS,EAAE,OAAO,GAAG,MAAM,EAC3B,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;SAAE,CAAC,CAAC;KACpF,CAAC,CAAC;CACJ,GACA,IAAI,CAyFN;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE9F;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU,CAEjE;AAED,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,CAAC"}
|