@leadertechie/personal-site-kit 0.1.0-alpha.1 → 0.1.0-alpha.11
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/api/__tests__/info.test.d.ts +2 -0
- package/dist/api/__tests__/info.test.d.ts.map +1 -0
- package/dist/api/__tests__/utils.test.d.ts +2 -0
- package/dist/api/__tests__/utils.test.d.ts.map +1 -0
- package/dist/api/content-utils.d.ts +27 -0
- package/dist/api/content-utils.d.ts.map +1 -0
- package/dist/api/handlers/{aboutme.d.ts → about-me.d.ts} +1 -1
- package/dist/api/handlers/about-me.d.ts.map +1 -0
- package/dist/api/handlers/auth-handler.d.ts +2 -0
- package/dist/api/handlers/auth-handler.d.ts.map +1 -0
- package/dist/api/handlers/auth.d.ts +23 -0
- package/dist/api/handlers/auth.d.ts.map +1 -0
- package/dist/api/handlers/content-api.d.ts +0 -1
- package/dist/api/handlers/content-api.d.ts.map +1 -1
- package/dist/api/handlers/content.d.ts.map +1 -1
- package/dist/api/handlers/home.d.ts.map +1 -1
- package/dist/api/handlers/{staticdetails.d.ts → static-details.d.ts} +1 -1
- package/dist/api/handlers/static-details.d.ts.map +1 -0
- package/dist/api/index.d.ts +7 -8
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/website-api.d.ts +10 -0
- package/dist/api/website-api.d.ts.map +1 -0
- package/dist/api.d.ts +2 -0
- package/dist/api.js +19 -589
- package/dist/assets/logo-placeholder.svg +21 -0
- package/dist/chunks/index-B2jGIzSi.js +2695 -0
- package/dist/chunks/index-CGvOrVf8.js +213 -0
- package/dist/chunks/site-store-CGV9c2DI.js +89 -0
- package/dist/chunks/template-Ccxil4s-.js +597 -0
- package/dist/chunks/website-api-DTaVHBO_.js +927 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -352
- package/dist/prerender/__tests__/page-content.test.d.ts +2 -0
- package/dist/prerender/__tests__/page-content.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/template.test.d.ts +2 -0
- package/dist/prerender/__tests__/template.test.d.ts.map +1 -0
- package/dist/prerender/data-fetcher.d.ts +19 -0
- package/dist/prerender/data-fetcher.d.ts.map +1 -0
- package/dist/prerender/index.d.ts +5 -4
- package/dist/prerender/index.d.ts.map +1 -1
- package/dist/prerender/{pageContent.d.ts → page-content.d.ts} +1 -1
- package/dist/prerender/page-content.d.ts.map +1 -0
- package/dist/prerender/page-generators/about.d.ts +16 -0
- package/dist/prerender/page-generators/about.d.ts.map +1 -0
- package/dist/prerender/page-generators/base.d.ts +26 -0
- package/dist/prerender/page-generators/base.d.ts.map +1 -0
- package/dist/prerender/page-generators/blog-detail.d.ts +15 -0
- package/dist/prerender/page-generators/blog-detail.d.ts.map +1 -0
- package/dist/prerender/page-generators/blogs-list.d.ts +17 -0
- package/dist/prerender/page-generators/blogs-list.d.ts.map +1 -0
- package/dist/prerender/page-generators/home.d.ts +19 -0
- package/dist/prerender/page-generators/home.d.ts.map +1 -0
- package/dist/prerender/page-generators/index.d.ts +9 -0
- package/dist/prerender/page-generators/index.d.ts.map +1 -0
- package/dist/prerender/page-generators/not-found.d.ts +14 -0
- package/dist/prerender/page-generators/not-found.d.ts.map +1 -0
- package/dist/prerender/page-generators/stories-list.d.ts +17 -0
- package/dist/prerender/page-generators/stories-list.d.ts.map +1 -0
- package/dist/prerender/page-generators/story-detail.d.ts +15 -0
- package/dist/prerender/page-generators/story-detail.d.ts.map +1 -0
- package/dist/prerender/template.d.ts.map +1 -1
- package/dist/prerender/website-prerender.d.ts +22 -0
- package/dist/prerender/website-prerender.d.ts.map +1 -0
- package/dist/prerender.d.ts +2 -0
- package/dist/prerender.js +164 -151
- package/dist/shared/config/index.d.ts +1 -0
- package/dist/shared/config/index.d.ts.map +1 -1
- package/dist/shared/core/__tests__/theme-toggle.test.d.ts +2 -0
- package/dist/shared/core/__tests__/theme-toggle.test.d.ts.map +1 -0
- package/dist/shared/core/site-store.d.ts +1 -0
- package/dist/shared/core/site-store.d.ts.map +1 -1
- package/dist/shared/index.d.ts +5 -3
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/interfaces/{iFooterLink.d.ts → ifooter-link.d.ts} +1 -1
- package/dist/shared/interfaces/ifooter-link.d.ts.map +1 -0
- package/dist/shared/interfaces/{iRoute.d.ts → iroute.d.ts} +1 -1
- package/dist/shared/interfaces/iroute.d.ts.map +1 -0
- package/dist/shared/{pageContent.d.ts → page-content.d.ts} +4 -3
- package/dist/shared/page-content.d.ts.map +1 -0
- package/dist/shared/router.d.ts +23 -0
- package/dist/shared/router.d.ts.map +1 -0
- package/dist/shared/runtime.d.ts +6 -6
- package/dist/shared/runtime.d.ts.map +1 -1
- package/dist/shared/website-ui.d.ts +32 -0
- package/dist/shared/website-ui.d.ts.map +1 -0
- package/dist/shared.js +13 -8
- package/dist/ui/about-me/api.d.ts.map +1 -0
- package/dist/ui/{aboutme → about-me}/index.d.ts +2 -10
- package/dist/ui/about-me/index.d.ts.map +1 -0
- package/dist/ui/about-me/styles.d.ts.map +1 -0
- package/dist/ui/admin/api.d.ts +16 -0
- package/dist/ui/admin/api.d.ts.map +1 -0
- package/dist/ui/admin/components/AboutMeSection.d.ts +7 -0
- package/dist/ui/admin/components/AboutMeSection.d.ts.map +1 -0
- package/dist/ui/admin/components/AdminSection.d.ts +13 -0
- package/dist/ui/admin/components/AdminSection.d.ts.map +1 -0
- package/dist/ui/admin/components/BlogsSection.d.ts +7 -0
- package/dist/ui/admin/components/BlogsSection.d.ts.map +1 -0
- package/dist/ui/admin/components/HomeSection.d.ts +7 -0
- package/dist/ui/admin/components/HomeSection.d.ts.map +1 -0
- package/dist/ui/admin/components/ImagesSection.d.ts +7 -0
- package/dist/ui/admin/components/ImagesSection.d.ts.map +1 -0
- package/dist/ui/admin/components/LoginForm.d.ts +9 -0
- package/dist/ui/admin/components/LoginForm.d.ts.map +1 -0
- package/dist/ui/admin/components/LogoSection.d.ts +7 -0
- package/dist/ui/admin/components/LogoSection.d.ts.map +1 -0
- package/dist/ui/admin/components/ProfileSection.d.ts +7 -0
- package/dist/ui/admin/components/ProfileSection.d.ts.map +1 -0
- package/dist/ui/admin/components/StaticSection.d.ts +9 -0
- package/dist/ui/admin/components/StaticSection.d.ts.map +1 -0
- package/dist/ui/admin/components/StoriesSection.d.ts +7 -0
- package/dist/ui/admin/components/StoriesSection.d.ts.map +1 -0
- package/dist/ui/admin/components/index.d.ts +11 -0
- package/dist/ui/admin/components/index.d.ts.map +1 -0
- package/dist/ui/admin/index.d.ts +27 -26
- package/dist/ui/admin/index.d.ts.map +1 -1
- package/dist/ui/admin/styles.d.ts.map +1 -1
- package/dist/ui/admin/types.d.ts +24 -0
- package/dist/ui/admin/types.d.ts.map +1 -0
- package/dist/ui/banner/styles.d.ts.map +1 -1
- package/dist/ui/blog-viewer/__tests__/blogviewer.test.d.ts +2 -0
- package/dist/ui/blog-viewer/__tests__/blogviewer.test.d.ts.map +1 -0
- package/dist/ui/blog-viewer/index.d.ts +25 -0
- package/dist/ui/blog-viewer/index.d.ts.map +1 -0
- package/dist/ui/blog-viewer/styles.d.ts +2 -0
- package/dist/ui/blog-viewer/styles.d.ts.map +1 -0
- package/dist/ui/footer/index.d.ts +1 -1
- package/dist/ui/footer/index.d.ts.map +1 -1
- package/dist/ui/footer/styles.d.ts.map +1 -1
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/story-viewer/__tests__/storyviewer.test.d.ts +2 -0
- package/dist/ui/story-viewer/__tests__/storyviewer.test.d.ts.map +1 -0
- package/dist/ui/story-viewer/index.d.ts +25 -0
- package/dist/ui/story-viewer/index.d.ts.map +1 -0
- package/dist/ui/story-viewer/styles.d.ts +2 -0
- package/dist/ui/story-viewer/styles.d.ts.map +1 -0
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +17 -818
- package/package.json +31 -12
- package/public/assets/logo-placeholder.svg +21 -0
- package/dist/api/handlers/aboutme.d.ts.map +0 -1
- package/dist/api/handlers/staticdetails.d.ts.map +0 -1
- package/dist/prerender/pageContent.d.ts.map +0 -1
- package/dist/shared/interfaces/iFooterLink.d.ts.map +0 -1
- package/dist/shared/interfaces/iRoute.d.ts.map +0 -1
- package/dist/shared/pageContent.d.ts.map +0 -1
- package/dist/ui/aboutme/api.d.ts.map +0 -1
- package/dist/ui/aboutme/index.d.ts.map +0 -1
- package/dist/ui/aboutme/renderer.d.ts +0 -5
- package/dist/ui/aboutme/renderer.d.ts.map +0 -1
- package/dist/ui/aboutme/styles.d.ts.map +0 -1
- package/src/api/__tests__/info.test.ts +0 -44
- package/src/api/__tests__/utils.test.ts +0 -78
- package/src/api/handlers/aboutme.ts +0 -99
- package/src/api/handlers/content-api.ts +0 -268
- package/src/api/handlers/content.ts +0 -72
- package/src/api/handlers/home.ts +0 -79
- package/src/api/handlers/info.ts +0 -12
- package/src/api/handlers/logo.ts +0 -55
- package/src/api/handlers/staticdetails.ts +0 -48
- package/src/api/index.ts +0 -125
- package/src/api/utils.ts +0 -16
- package/src/prerender/__tests__/pageContent.test.ts +0 -54
- package/src/prerender/__tests__/template.test.ts +0 -54
- package/src/prerender/index.ts +0 -138
- package/src/prerender/pageContent.ts +0 -263
- package/src/prerender/prerender.ts +0 -25
- package/src/prerender/template.ts +0 -65
- package/src/shared/config/api.ts +0 -16
- package/src/shared/config/index.ts +0 -41
- package/src/shared/config/types.ts +0 -16
- package/src/shared/core/__tests__/theme-toggle.test.ts +0 -204
- package/src/shared/core/site-store.ts +0 -38
- package/src/shared/core/theme-toggle.ts +0 -118
- package/src/shared/index.ts +0 -15
- package/src/shared/interfaces/iFooterLink.ts +0 -4
- package/src/shared/interfaces/iRoute.ts +0 -4
- package/src/shared/models/theme-variables.css +0 -25
- package/src/shared/pageContent.ts +0 -209
- package/src/shared/runtime.ts +0 -11
- package/src/shared/template.ts +0 -35
- package/src/styles/markdown.css +0 -129
- package/src/ui/aboutme/api.ts +0 -12
- package/src/ui/aboutme/index.ts +0 -155
- package/src/ui/aboutme/renderer.ts +0 -7
- package/src/ui/aboutme/styles.ts +0 -10
- package/src/ui/admin/index.ts +0 -492
- package/src/ui/admin/styles.ts +0 -317
- package/src/ui/banner/index.ts +0 -38
- package/src/ui/banner/styles.ts +0 -10
- package/src/ui/footer/index.ts +0 -37
- package/src/ui/footer/styles.ts +0 -9
- /package/{src/shared → dist}/styles/markdown.css +0 -0
- /package/{src → dist}/styles/theme.css +0 -0
- /package/dist/ui/{aboutme → about-me}/api.d.ts +0 -0
- /package/dist/ui/{aboutme → about-me}/styles.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stories-list.d.ts","sourceRoot":"","sources":["../../../src/prerender/page-generators/stories-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,wBAAyB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW;CA0BxD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BasePageGenerator, StaticDetails } from './base';
|
|
2
|
+
import { IRoute, IFooterLink, PageContent } from '../page-content';
|
|
3
|
+
export interface StoryDetailPageData {
|
|
4
|
+
routes: IRoute[];
|
|
5
|
+
footerLinks: IFooterLink[];
|
|
6
|
+
staticDetails: StaticDetails;
|
|
7
|
+
apiUrl: string;
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
pathname: string;
|
|
10
|
+
slug: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class StoryDetailPageGenerator extends BasePageGenerator {
|
|
13
|
+
generate(data: StoryDetailPageData): PageContent;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=story-detail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-detail.d.ts","sourceRoot":"","sources":["../../../src/prerender/page-generators/story-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,wBAAyB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW;CAoBxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/prerender/template.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyBD,eAAO,MAAM,kBAAkB,GAAU,2EAOtC,aAAa,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/prerender/template.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyBD,eAAO,MAAM,kBAAkB,GAAU,2EAOtC,aAAa,KAAG,OAAO,CAAC,MAAM,CA0BhC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TemplateProps } from './template';
|
|
2
|
+
import { IFooterLink, IRoute } from './page-content';
|
|
3
|
+
export interface PrerenderOptions {
|
|
4
|
+
routes?: IRoute[];
|
|
5
|
+
defaultFooterLinks?: IFooterLink[];
|
|
6
|
+
siteTitle?: string;
|
|
7
|
+
copyright?: string;
|
|
8
|
+
templateRenderer?: (props: TemplateProps) => Promise<string> | string;
|
|
9
|
+
}
|
|
10
|
+
export declare class WebsitePrerender {
|
|
11
|
+
private routes;
|
|
12
|
+
private defaultFooterLinks;
|
|
13
|
+
private footerLinks;
|
|
14
|
+
private siteTitle;
|
|
15
|
+
private copyright;
|
|
16
|
+
private templateRenderer;
|
|
17
|
+
constructor(options?: PrerenderOptions);
|
|
18
|
+
private fetchStaticDetails;
|
|
19
|
+
private fetchAboutMeData;
|
|
20
|
+
fetch(request: Request, env: any, ctx: any): Promise<Response>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=website-prerender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website-prerender.d.ts","sourceRoot":"","sources":["../../src/prerender/website-prerender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,aAAa,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAuB,MAAM,gBAAgB,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACvE;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAqD;gBAEjE,OAAO,GAAE,gBAAqB;YAkB5B,kBAAkB;YAwBlB,gBAAgB;IAQjB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkF5E"}
|
package/dist/prerender.d.ts
CHANGED
package/dist/prerender.js
CHANGED
|
@@ -35,6 +35,7 @@ const createHtmlTemplate = async ({
|
|
|
35
35
|
<html lang="en" data-theme="light">
|
|
36
36
|
<head>
|
|
37
37
|
<meta charset="UTF-8" />
|
|
38
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self' https: http://localhost:* http://127.0.0.1:*; font-src 'self' data: https:;" />
|
|
38
39
|
<link rel="icon" type="image/svg+xml" href="/api/logo" />
|
|
39
40
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
40
41
|
<title>${title}</title>
|
|
@@ -90,7 +91,7 @@ async function fetchHome(env) {
|
|
|
90
91
|
try {
|
|
91
92
|
const r2 = getLoader(env);
|
|
92
93
|
if (!r2) return "";
|
|
93
|
-
const result = await r2.getRendered("home.md");
|
|
94
|
+
const result = await r2.getRendered("pages/home.md");
|
|
94
95
|
return result?.content || "";
|
|
95
96
|
} catch {
|
|
96
97
|
return "";
|
|
@@ -136,9 +137,9 @@ async function fetchLatestStorySummaries(env, count = 3) {
|
|
|
136
137
|
return [];
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
|
-
const generatePageContent = async (pathname,
|
|
140
|
-
const apiUrl = env?.apiUrl;
|
|
141
|
-
const baseUrl = env?.baseUrl || "https://www.
|
|
140
|
+
const generatePageContent = async (pathname, routes, footerLinks, env) => {
|
|
141
|
+
const apiUrl = env?.API_URL || env?.apiUrl;
|
|
142
|
+
const baseUrl = env?.BASE_URL || env?.baseUrl || "https://www.example.com";
|
|
142
143
|
let staticDetails = {
|
|
143
144
|
siteTitle: "My Personal Website",
|
|
144
145
|
copyright: "2026 My Personal Website",
|
|
@@ -151,20 +152,6 @@ const generatePageContent = async (pathname, routes2, footerLinks2, env) => {
|
|
|
151
152
|
if (res.ok) staticDetails = await res.json();
|
|
152
153
|
} catch (e) {
|
|
153
154
|
}
|
|
154
|
-
const logo = "/api/logo";
|
|
155
|
-
const navLinks = routes2.map((r) => `<a href="${r.link}" class="nav-link" data-route="${r.link === "/" ? "home" : r.text.toLowerCase()}">${r.text}</a>`).join("");
|
|
156
|
-
const bannerTemplate = `
|
|
157
|
-
<my-banner header="${staticDetails.siteTitle}" logo="${logo}">
|
|
158
|
-
<theme-toggle slot="theme-switcher"></theme-toggle>
|
|
159
|
-
<nav slot="nav-links">
|
|
160
|
-
${navLinks}
|
|
161
|
-
</nav>
|
|
162
|
-
</my-banner>`;
|
|
163
|
-
const footerTemplate = `
|
|
164
|
-
<my-footer
|
|
165
|
-
copyright="${staticDetails.copyright}"
|
|
166
|
-
footerlinks='${JSON.stringify(footerLinks2)}'>
|
|
167
|
-
</my-footer>`;
|
|
168
155
|
let profile = null;
|
|
169
156
|
let aboutMeContent = "";
|
|
170
157
|
let homeContent = "";
|
|
@@ -180,151 +167,175 @@ const generatePageContent = async (pathname, routes2, footerLinks2, env) => {
|
|
|
180
167
|
]);
|
|
181
168
|
}
|
|
182
169
|
const name = profile?.name || "User";
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
const
|
|
170
|
+
profile?.title || "Professional";
|
|
171
|
+
new URL(pathname, baseUrl).toString();
|
|
172
|
+
const strategies = {
|
|
173
|
+
home: async () => {
|
|
174
|
+
const { HomePageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
175
|
+
const generator = new HomePageGenerator();
|
|
176
|
+
return generator.generate({
|
|
177
|
+
routes,
|
|
178
|
+
footerLinks,
|
|
179
|
+
staticDetails,
|
|
180
|
+
apiUrl,
|
|
181
|
+
baseUrl,
|
|
182
|
+
pathname,
|
|
183
|
+
profile,
|
|
184
|
+
homeContent,
|
|
185
|
+
latestBlogs,
|
|
186
|
+
latestStories
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
about: async () => {
|
|
190
|
+
const { AboutPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
191
|
+
const generator = new AboutPageGenerator();
|
|
192
|
+
return generator.generate({
|
|
193
|
+
routes,
|
|
194
|
+
footerLinks,
|
|
195
|
+
staticDetails,
|
|
196
|
+
apiUrl,
|
|
197
|
+
baseUrl,
|
|
198
|
+
pathname,
|
|
199
|
+
profile
|
|
200
|
+
});
|
|
201
|
+
},
|
|
202
|
+
blogsList: async () => {
|
|
203
|
+
const { BlogsListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
204
|
+
const generator = new BlogsListPageGenerator();
|
|
205
|
+
return generator.generate({
|
|
206
|
+
routes,
|
|
207
|
+
footerLinks,
|
|
208
|
+
staticDetails,
|
|
209
|
+
apiUrl,
|
|
210
|
+
baseUrl,
|
|
211
|
+
pathname,
|
|
212
|
+
latestBlogs,
|
|
213
|
+
name
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
storiesList: async () => {
|
|
217
|
+
const { StoriesListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
218
|
+
const generator = new StoriesListPageGenerator();
|
|
219
|
+
return generator.generate({
|
|
220
|
+
routes,
|
|
221
|
+
footerLinks,
|
|
222
|
+
staticDetails,
|
|
223
|
+
apiUrl,
|
|
224
|
+
baseUrl,
|
|
225
|
+
pathname,
|
|
226
|
+
latestStories,
|
|
227
|
+
name
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
blogDetail: async (slug) => {
|
|
231
|
+
const { BlogDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
232
|
+
const generator = new BlogDetailPageGenerator();
|
|
233
|
+
return generator.generate({
|
|
234
|
+
routes,
|
|
235
|
+
footerLinks,
|
|
236
|
+
staticDetails,
|
|
237
|
+
apiUrl,
|
|
238
|
+
baseUrl,
|
|
239
|
+
pathname,
|
|
240
|
+
slug
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
storyDetail: async (slug) => {
|
|
244
|
+
const { StoryDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
245
|
+
const generator = new StoryDetailPageGenerator();
|
|
246
|
+
return generator.generate({
|
|
247
|
+
routes,
|
|
248
|
+
footerLinks,
|
|
249
|
+
staticDetails,
|
|
250
|
+
apiUrl,
|
|
251
|
+
baseUrl,
|
|
252
|
+
pathname,
|
|
253
|
+
slug
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
notFound: async () => {
|
|
257
|
+
const { NotFoundPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
258
|
+
const generator = new NotFoundPageGenerator();
|
|
259
|
+
return generator.generate({
|
|
260
|
+
routes,
|
|
261
|
+
footerLinks,
|
|
262
|
+
staticDetails,
|
|
263
|
+
apiUrl,
|
|
264
|
+
baseUrl,
|
|
265
|
+
pathname
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
};
|
|
186
269
|
if (pathname === "/" || pathname === "") {
|
|
187
|
-
|
|
188
|
-
const blogGists = latestBlogs.map((b) => `<div class="gist-card"><a href="/blogs/${b.slug}"><h4>${b.title}</h4></a><p>${b.summary}</p><small>${b.date}</small></div>`).join("");
|
|
189
|
-
const storyGists = latestStories.map((s) => `<div class="gist-card"><a href="/stories/${s.slug}"><h4>${s.title}</h4></a><p>${s.summary}</p><small>${s.date}</small></div>`).join("");
|
|
190
|
-
const mainContent = `
|
|
191
|
-
${bannerTemplate}
|
|
192
|
-
<main class="container container-wide column-layout">
|
|
193
|
-
<div class="main-column">
|
|
194
|
-
${homeHtml}
|
|
195
|
-
</div>
|
|
196
|
-
<div class="sidebar-column">
|
|
197
|
-
<h3>Recent Blogs</h3>
|
|
198
|
-
${blogGists || "<p>No blogs yet.</p>"}
|
|
199
|
-
<h3 class="mt-2">Recent Stories</h3>
|
|
200
|
-
${storyGists || "<p>No stories yet.</p>"}
|
|
201
|
-
</div>
|
|
202
|
-
</main>
|
|
203
|
-
${footerTemplate}`;
|
|
204
|
-
return {
|
|
205
|
-
title: `${name} – ${title}`,
|
|
206
|
-
description: `Welcome to ${name}'s personal website. Professional portfolio and content.`,
|
|
207
|
-
canonicalUrl,
|
|
208
|
-
content: mainContent
|
|
209
|
-
};
|
|
270
|
+
return strategies.home();
|
|
210
271
|
} else if (pathname === "/about-me") {
|
|
211
|
-
|
|
212
|
-
${bannerTemplate}
|
|
213
|
-
<main class="container container-narrow">
|
|
214
|
-
<my-aboutme base-url="${apiUrl}"></my-aboutme>
|
|
215
|
-
</main>
|
|
216
|
-
${footerTemplate}`;
|
|
217
|
-
return {
|
|
218
|
-
title: `About - ${name}`,
|
|
219
|
-
description: `Learn more about ${name}'s experience and skills.`,
|
|
220
|
-
canonicalUrl,
|
|
221
|
-
content: mainContent
|
|
222
|
-
};
|
|
272
|
+
return strategies.about();
|
|
223
273
|
} else if (pathname === "/blogs" || pathname === "/blogs/") {
|
|
224
|
-
|
|
225
|
-
const mainContent = `
|
|
226
|
-
${bannerTemplate}
|
|
227
|
-
<main class="container container-wide">
|
|
228
|
-
<h1>Blogs</h1>
|
|
229
|
-
<input type="text" placeholder="Search blogs..." class="search-input" />
|
|
230
|
-
<div class="blog-list">
|
|
231
|
-
${blogGists || "<p>No blogs yet.</p>"}
|
|
232
|
-
</div>
|
|
233
|
-
</main>
|
|
234
|
-
${footerTemplate}`;
|
|
235
|
-
return { title: `Blogs – ${name}`, description: "Read the latest blog posts.", canonicalUrl, content: mainContent };
|
|
274
|
+
return strategies.blogsList();
|
|
236
275
|
} else if (pathname === "/stories" || pathname === "/stories/") {
|
|
237
|
-
|
|
238
|
-
const mainContent = `
|
|
239
|
-
${bannerTemplate}
|
|
240
|
-
<main class="container container-wide">
|
|
241
|
-
<h1>Stories</h1>
|
|
242
|
-
<input type="text" placeholder="Search stories..." class="search-input" />
|
|
243
|
-
<div class="story-list">
|
|
244
|
-
${storyGists || "<p>No stories yet.</p>"}
|
|
245
|
-
</div>
|
|
246
|
-
</main>
|
|
247
|
-
${footerTemplate}`;
|
|
248
|
-
return { title: `Stories – ${name}`, description: "Read the latest stories.", canonicalUrl, content: mainContent };
|
|
276
|
+
return strategies.storiesList();
|
|
249
277
|
} else if (pathname.startsWith("/blogs/")) {
|
|
250
278
|
const slug = pathname.replace("/blogs/", "").replace("/", "");
|
|
251
|
-
|
|
252
|
-
${bannerTemplate}
|
|
253
|
-
<main class="container container-narrow">
|
|
254
|
-
<my-blog-viewer slug="${slug}"></my-blog-viewer>
|
|
255
|
-
</main>
|
|
256
|
-
${footerTemplate}`;
|
|
257
|
-
return { title: `Blog: ${slug}`, description: "Blog post", canonicalUrl, content: mainContent };
|
|
279
|
+
return strategies.blogDetail(slug);
|
|
258
280
|
} else if (pathname.startsWith("/stories/")) {
|
|
259
281
|
const slug = pathname.replace("/stories/", "").replace("/", "");
|
|
260
|
-
|
|
261
|
-
${bannerTemplate}
|
|
262
|
-
<main class="container container-narrow">
|
|
263
|
-
<my-story-viewer slug="${slug}"></my-story-viewer>
|
|
264
|
-
</main>
|
|
265
|
-
${footerTemplate}`;
|
|
266
|
-
return { title: `Story: ${slug}`, description: "Story post", canonicalUrl, content: mainContent };
|
|
282
|
+
return strategies.storyDetail(slug);
|
|
267
283
|
} else {
|
|
268
|
-
|
|
269
|
-
${bannerTemplate}
|
|
270
|
-
<main class="container container-narrow text-center">
|
|
271
|
-
<h1>Page Not Found</h1>
|
|
272
|
-
<p>The page you're looking for doesn't exist.</p>
|
|
273
|
-
<p><a href="/">Return to home</a></p>
|
|
274
|
-
</main>
|
|
275
|
-
${footerTemplate}`;
|
|
276
|
-
return { title: "404 Not Found", description: "The page you requested could not be found.", canonicalUrl, content: mainContent };
|
|
284
|
+
return strategies.notFound();
|
|
277
285
|
}
|
|
278
286
|
};
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
287
|
+
class WebsitePrerender {
|
|
288
|
+
constructor(options = {}) {
|
|
289
|
+
this.routes = options.routes || [
|
|
290
|
+
{ link: "/", text: "Home" },
|
|
291
|
+
{ link: "/blogs", text: "Blogs" },
|
|
292
|
+
{ link: "/stories", text: "Stories" },
|
|
293
|
+
{ link: "/about-me", text: "About Me" }
|
|
294
|
+
];
|
|
295
|
+
this.defaultFooterLinks = options.defaultFooterLinks || [
|
|
296
|
+
{ text: "LinkedIn", link: "https://linkedin.com/in/yourname" },
|
|
297
|
+
{ text: "GitHub", link: "https://github.com/yourname" },
|
|
298
|
+
{ text: "Email", link: "mailto:yourname@domain.com" }
|
|
299
|
+
];
|
|
300
|
+
this.footerLinks = [...this.defaultFooterLinks];
|
|
301
|
+
this.siteTitle = options.siteTitle || "My Personal Website";
|
|
302
|
+
this.copyright = options.copyright || "2026 My Personal Website";
|
|
303
|
+
this.templateRenderer = options.templateRenderer || createHtmlTemplate;
|
|
304
|
+
}
|
|
305
|
+
async fetchStaticDetails(apiUrl) {
|
|
306
|
+
try {
|
|
307
|
+
const res = await fetch(`${apiUrl}/api/static`);
|
|
308
|
+
if (res.ok) {
|
|
309
|
+
const data = await res.json();
|
|
310
|
+
this.siteTitle = data.siteTitle || this.siteTitle;
|
|
311
|
+
this.copyright = data.copyright || this.copyright;
|
|
312
|
+
const normalizeUrl = (url) => {
|
|
313
|
+
if (!url) return "";
|
|
314
|
+
if (url.startsWith("http://") || url.startsWith("https://")) return url;
|
|
315
|
+
if (url.startsWith("www.")) return `https://${url}`;
|
|
316
|
+
return url;
|
|
317
|
+
};
|
|
318
|
+
this.footerLinks = [
|
|
319
|
+
{ text: "LinkedIn", link: normalizeUrl(data.linkedin) || this.defaultFooterLinks[0].link },
|
|
320
|
+
{ text: "GitHub", link: normalizeUrl(data.github) || this.defaultFooterLinks[1].link },
|
|
321
|
+
{ text: "Email", link: data.email ? `mailto:${data.email}` : this.defaultFooterLinks[2].link }
|
|
322
|
+
];
|
|
323
|
+
}
|
|
324
|
+
} catch (e) {
|
|
311
325
|
}
|
|
312
|
-
} catch (e) {
|
|
313
326
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
327
|
+
async fetchAboutMeData(apiUrl) {
|
|
328
|
+
try {
|
|
329
|
+
const res = await fetch(`${apiUrl}/api/about-me`);
|
|
330
|
+
if (res.ok) return await res.json();
|
|
331
|
+
} catch (e) {
|
|
332
|
+
}
|
|
333
|
+
return null;
|
|
320
334
|
}
|
|
321
|
-
return null;
|
|
322
|
-
}
|
|
323
|
-
const index = {
|
|
324
335
|
async fetch(request, env, ctx) {
|
|
325
336
|
const apiUrl = env?.API_URL || "https://api.example.com";
|
|
326
337
|
const baseSiteUrl = env?.BASE_SITE_URL || "https://site.example.com";
|
|
327
|
-
await fetchStaticDetails(apiUrl);
|
|
338
|
+
await this.fetchStaticDetails(apiUrl);
|
|
328
339
|
const url = new URL(request.url);
|
|
329
340
|
if (url.pathname.startsWith("/api/")) {
|
|
330
341
|
return fetch(`${apiUrl}${url.pathname}${url.search}`);
|
|
@@ -379,13 +390,13 @@ const index = {
|
|
|
379
390
|
}
|
|
380
391
|
let hydrationScript = "";
|
|
381
392
|
if (url.pathname === "/about-me" || url.pathname === "/about-me/") {
|
|
382
|
-
const aboutMeData = await fetchAboutMeData(apiUrl);
|
|
393
|
+
const aboutMeData = await this.fetchAboutMeData(apiUrl);
|
|
383
394
|
if (aboutMeData) {
|
|
384
395
|
hydrationScript = `<script>window.__HYDRATION_DATA__ = ${JSON.stringify(aboutMeData)};<\/script>`;
|
|
385
396
|
}
|
|
386
397
|
}
|
|
387
|
-
const pageContent = await generatePageContent(url.pathname, routes, footerLinks, { ...env, apiUrl });
|
|
388
|
-
const html = await
|
|
398
|
+
const pageContent = await generatePageContent(url.pathname, this.routes, this.footerLinks, { ...env, apiUrl, siteTitle: this.siteTitle, copyright: this.copyright });
|
|
399
|
+
const html = await this.templateRenderer({ ...pageContent, hydrationData: hydrationScript });
|
|
389
400
|
return new Response(html, {
|
|
390
401
|
headers: {
|
|
391
402
|
"content-type": "text/html",
|
|
@@ -393,7 +404,9 @@ const index = {
|
|
|
393
404
|
}
|
|
394
405
|
});
|
|
395
406
|
}
|
|
396
|
-
}
|
|
407
|
+
}
|
|
408
|
+
const defaultPrerender = new WebsitePrerender();
|
|
397
409
|
export {
|
|
398
|
-
|
|
410
|
+
WebsitePrerender,
|
|
411
|
+
defaultPrerender as default
|
|
399
412
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InfrastructureConfig, WebsiteConfig } from './types';
|
|
2
2
|
export * from './types';
|
|
3
3
|
export declare function initializeConfig(infra?: Partial<InfrastructureConfig>): Promise<WebsiteConfig>;
|
|
4
|
+
export declare function refreshConfig(): Promise<WebsiteConfig>;
|
|
4
5
|
export declare function getConfig(): WebsiteConfig;
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAiB,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7E,cAAc,SAAS,CAAC;AAkBxB,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAiB,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7E,cAAc,SAAS,CAAC;AAkBxB,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAsBpG;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAW5D;AAED,wBAAgB,SAAS,IAAI,aAAa,CAEzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.test.d.ts","sourceRoot":"","sources":["../../../../src/shared/core/__tests__/theme-toggle.test.ts"],"names":[],"mappings":""}
|
|
@@ -11,6 +11,7 @@ export declare class SiteStore {
|
|
|
11
11
|
}): Promise<WebsiteConfig>;
|
|
12
12
|
subscribe(listener: (config: WebsiteConfig) => void): () => boolean;
|
|
13
13
|
private notify;
|
|
14
|
+
refresh(): Promise<void>;
|
|
14
15
|
getConfig(): WebsiteConfig;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=site-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-store.d.ts","sourceRoot":"","sources":["../../../src/shared/core/site-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,
|
|
1
|
+
{"version":3,"file":"site-store.d.ts","sourceRoot":"","sources":["../../../src/shared/core/site-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAA8C,MAAM,WAAW,CAAC;AAErG,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAmD;IAEpE,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAMtD,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI;IAMnD,OAAO,CAAC,MAAM;IAMR,OAAO;IAQb,SAAS,IAAI,aAAa;CAG3B"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from './config';
|
|
2
2
|
export * from './core/site-store';
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
3
|
+
export * from './website-ui';
|
|
4
|
+
export * from './router';
|
|
5
|
+
export * from './interfaces/iroute';
|
|
6
|
+
export * from './interfaces/ifooter-link';
|
|
5
7
|
export * from './core/theme-toggle';
|
|
6
8
|
export * from './template';
|
|
7
|
-
export * from './
|
|
9
|
+
export * from './page-content';
|
|
8
10
|
export * from './runtime';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAGzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifooter-link.d.ts","sourceRoot":"","sources":["../../../src/shared/interfaces/ifooter-link.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iroute.d.ts","sourceRoot":"","sources":["../../../src/shared/interfaces/iroute.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { IFooterLink } from './interfaces/
|
|
2
|
-
import { IRoute } from './interfaces/
|
|
1
|
+
import { IFooterLink } from './interfaces/ifooter-link';
|
|
2
|
+
import { IRoute } from './interfaces/iroute';
|
|
3
|
+
export type { IFooterLink, IRoute };
|
|
3
4
|
export interface PageContent {
|
|
4
5
|
title: string;
|
|
5
6
|
description: string;
|
|
@@ -32,4 +33,4 @@ export declare const generatePageContent: (pathname: string, routes: IRoute[], f
|
|
|
32
33
|
apiUrl?: string;
|
|
33
34
|
baseUrl?: string;
|
|
34
35
|
}) => PageContent;
|
|
35
|
-
//# sourceMappingURL=
|
|
36
|
+
//# sourceMappingURL=page-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-content.d.ts","sourceRoot":"","sources":["../../src/shared/page-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAGpC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,MAGhD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,QAAQ,MAAM,EAAE,EAChB,aAAa,WAAW,EAAE,EAC1B,OAAO;IACL,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KACA,WA0JF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { WebsiteUI } from './website-ui';
|
|
2
|
+
export declare class Router {
|
|
3
|
+
private ui;
|
|
4
|
+
private routes;
|
|
5
|
+
private apiUrl;
|
|
6
|
+
private logo;
|
|
7
|
+
private appElement;
|
|
8
|
+
constructor(ui: WebsiteUI);
|
|
9
|
+
private get config();
|
|
10
|
+
private get siteTitle();
|
|
11
|
+
private get copyright();
|
|
12
|
+
private get footerLinks();
|
|
13
|
+
init(appElementId?: string): void;
|
|
14
|
+
private setupEventListeners;
|
|
15
|
+
navigate(path: string): Promise<void>;
|
|
16
|
+
private setPageMeta;
|
|
17
|
+
private renderHomePage;
|
|
18
|
+
private renderAboutMePage;
|
|
19
|
+
private renderContentListPage;
|
|
20
|
+
private renderContentDetailPage;
|
|
21
|
+
private renderAdminPage;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/shared/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,MAAM;IAML,OAAO,CAAC,EAAE;IALtB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,UAAU,CAA4B;gBAE1B,EAAE,EAAE,SAAS;IAejC,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,WAAW,GAatB;IAEM,IAAI,CAAC,YAAY,GAAE,MAAc;IAWxC,OAAO,CAAC,mBAAmB;IAmCd,QAAQ,CAAC,IAAI,EAAE,MAAM;IA6BlC,OAAO,CAAC,WAAW;YAgCL,cAAc;IAkC5B,OAAO,CAAC,iBAAiB;YAQX,qBAAqB;YAiBrB,uBAAuB;YAmBvB,eAAe;CAqB9B"}
|
package/dist/shared/runtime.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './interfaces/
|
|
2
|
-
export * from './interfaces/
|
|
3
|
-
export * from './
|
|
4
|
-
export type { IRoute } from './interfaces/
|
|
5
|
-
export type { IFooterLink } from './interfaces/
|
|
6
|
-
export { generatePageContent } from './
|
|
1
|
+
export * from './interfaces/iroute';
|
|
2
|
+
export * from './interfaces/ifooter-link';
|
|
3
|
+
export * from './page-content';
|
|
4
|
+
export type { IRoute } from './interfaces/iroute';
|
|
5
|
+
export type { IFooterLink } from './interfaces/ifooter-link';
|
|
6
|
+
export { generatePageContent } from './page-content';
|
|
7
7
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/shared/runtime.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/shared/runtime.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAG/B,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SiteStore } from './core/site-store';
|
|
2
|
+
import { IRoute } from './interfaces/iroute';
|
|
3
|
+
import { Router } from './router';
|
|
4
|
+
export interface UIConfig {
|
|
5
|
+
apiUrl?: string;
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
routes?: IRoute[];
|
|
8
|
+
appElementId?: string;
|
|
9
|
+
theme?: {
|
|
10
|
+
primaryColor?: string;
|
|
11
|
+
backgroundColor?: string;
|
|
12
|
+
textColor?: string;
|
|
13
|
+
customCss?: string;
|
|
14
|
+
};
|
|
15
|
+
onBootstrap?: (ui: WebsiteUI) => void | Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare class WebsiteUI {
|
|
18
|
+
private static instance;
|
|
19
|
+
private store;
|
|
20
|
+
private config;
|
|
21
|
+
private router;
|
|
22
|
+
private constructor();
|
|
23
|
+
static getInstance(config?: UIConfig): WebsiteUI;
|
|
24
|
+
bootstrap(): Promise<void>;
|
|
25
|
+
private applyTheme;
|
|
26
|
+
private updateFavicon;
|
|
27
|
+
getStore(): SiteStore;
|
|
28
|
+
getConfig(): UIConfig;
|
|
29
|
+
getRouter(): Router;
|
|
30
|
+
}
|
|
31
|
+
export declare const bootstrap: (config?: UIConfig) => Promise<void>;
|
|
32
|
+
//# sourceMappingURL=website-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website-ui.d.ts","sourceRoot":"","sources":["../../src/shared/website-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO;WAKO,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS;IAU1C,SAAS;IAoCtB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,aAAa;IAad,QAAQ;IAIR,SAAS;IAIT,SAAS;CAGjB;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,QAAQ,kBAA8C,CAAC"}
|