@leadertechie/personal-site-kit 0.0.0 → 0.1.0-alpha.10
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-CGvOrVf8.js +213 -0
- package/dist/chunks/index-_AMi6ort.js +2690 -0
- package/dist/chunks/site-store-Vqmjjz9c.js +86 -0
- package/dist/chunks/template-C1tMqlPY.js +597 -0
- package/dist/chunks/website-api-CuyeBej-.js +920 -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/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 +163 -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 +35 -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"}
|
|
@@ -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
|
@@ -90,7 +90,7 @@ async function fetchHome(env) {
|
|
|
90
90
|
try {
|
|
91
91
|
const r2 = getLoader(env);
|
|
92
92
|
if (!r2) return "";
|
|
93
|
-
const result = await r2.getRendered("home.md");
|
|
93
|
+
const result = await r2.getRendered("pages/home.md");
|
|
94
94
|
return result?.content || "";
|
|
95
95
|
} catch {
|
|
96
96
|
return "";
|
|
@@ -136,9 +136,9 @@ async function fetchLatestStorySummaries(env, count = 3) {
|
|
|
136
136
|
return [];
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
const generatePageContent = async (pathname,
|
|
140
|
-
const apiUrl = env?.apiUrl;
|
|
141
|
-
const baseUrl = env?.baseUrl || "https://www.
|
|
139
|
+
const generatePageContent = async (pathname, routes, footerLinks, env) => {
|
|
140
|
+
const apiUrl = env?.API_URL || env?.apiUrl;
|
|
141
|
+
const baseUrl = env?.BASE_URL || env?.baseUrl || "https://www.example.com";
|
|
142
142
|
let staticDetails = {
|
|
143
143
|
siteTitle: "My Personal Website",
|
|
144
144
|
copyright: "2026 My Personal Website",
|
|
@@ -151,20 +151,6 @@ const generatePageContent = async (pathname, routes2, footerLinks2, env) => {
|
|
|
151
151
|
if (res.ok) staticDetails = await res.json();
|
|
152
152
|
} catch (e) {
|
|
153
153
|
}
|
|
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
154
|
let profile = null;
|
|
169
155
|
let aboutMeContent = "";
|
|
170
156
|
let homeContent = "";
|
|
@@ -180,151 +166,175 @@ const generatePageContent = async (pathname, routes2, footerLinks2, env) => {
|
|
|
180
166
|
]);
|
|
181
167
|
}
|
|
182
168
|
const name = profile?.name || "User";
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
const
|
|
169
|
+
profile?.title || "Professional";
|
|
170
|
+
new URL(pathname, baseUrl).toString();
|
|
171
|
+
const strategies = {
|
|
172
|
+
home: async () => {
|
|
173
|
+
const { HomePageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
174
|
+
const generator = new HomePageGenerator();
|
|
175
|
+
return generator.generate({
|
|
176
|
+
routes,
|
|
177
|
+
footerLinks,
|
|
178
|
+
staticDetails,
|
|
179
|
+
apiUrl,
|
|
180
|
+
baseUrl,
|
|
181
|
+
pathname,
|
|
182
|
+
profile,
|
|
183
|
+
homeContent,
|
|
184
|
+
latestBlogs,
|
|
185
|
+
latestStories
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
about: async () => {
|
|
189
|
+
const { AboutPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
190
|
+
const generator = new AboutPageGenerator();
|
|
191
|
+
return generator.generate({
|
|
192
|
+
routes,
|
|
193
|
+
footerLinks,
|
|
194
|
+
staticDetails,
|
|
195
|
+
apiUrl,
|
|
196
|
+
baseUrl,
|
|
197
|
+
pathname,
|
|
198
|
+
profile
|
|
199
|
+
});
|
|
200
|
+
},
|
|
201
|
+
blogsList: async () => {
|
|
202
|
+
const { BlogsListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
203
|
+
const generator = new BlogsListPageGenerator();
|
|
204
|
+
return generator.generate({
|
|
205
|
+
routes,
|
|
206
|
+
footerLinks,
|
|
207
|
+
staticDetails,
|
|
208
|
+
apiUrl,
|
|
209
|
+
baseUrl,
|
|
210
|
+
pathname,
|
|
211
|
+
latestBlogs,
|
|
212
|
+
name
|
|
213
|
+
});
|
|
214
|
+
},
|
|
215
|
+
storiesList: async () => {
|
|
216
|
+
const { StoriesListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
217
|
+
const generator = new StoriesListPageGenerator();
|
|
218
|
+
return generator.generate({
|
|
219
|
+
routes,
|
|
220
|
+
footerLinks,
|
|
221
|
+
staticDetails,
|
|
222
|
+
apiUrl,
|
|
223
|
+
baseUrl,
|
|
224
|
+
pathname,
|
|
225
|
+
latestStories,
|
|
226
|
+
name
|
|
227
|
+
});
|
|
228
|
+
},
|
|
229
|
+
blogDetail: async (slug) => {
|
|
230
|
+
const { BlogDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
231
|
+
const generator = new BlogDetailPageGenerator();
|
|
232
|
+
return generator.generate({
|
|
233
|
+
routes,
|
|
234
|
+
footerLinks,
|
|
235
|
+
staticDetails,
|
|
236
|
+
apiUrl,
|
|
237
|
+
baseUrl,
|
|
238
|
+
pathname,
|
|
239
|
+
slug
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
storyDetail: async (slug) => {
|
|
243
|
+
const { StoryDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
244
|
+
const generator = new StoryDetailPageGenerator();
|
|
245
|
+
return generator.generate({
|
|
246
|
+
routes,
|
|
247
|
+
footerLinks,
|
|
248
|
+
staticDetails,
|
|
249
|
+
apiUrl,
|
|
250
|
+
baseUrl,
|
|
251
|
+
pathname,
|
|
252
|
+
slug
|
|
253
|
+
});
|
|
254
|
+
},
|
|
255
|
+
notFound: async () => {
|
|
256
|
+
const { NotFoundPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
|
|
257
|
+
const generator = new NotFoundPageGenerator();
|
|
258
|
+
return generator.generate({
|
|
259
|
+
routes,
|
|
260
|
+
footerLinks,
|
|
261
|
+
staticDetails,
|
|
262
|
+
apiUrl,
|
|
263
|
+
baseUrl,
|
|
264
|
+
pathname
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
};
|
|
186
268
|
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
|
-
};
|
|
269
|
+
return strategies.home();
|
|
210
270
|
} 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
|
-
};
|
|
271
|
+
return strategies.about();
|
|
223
272
|
} 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 };
|
|
273
|
+
return strategies.blogsList();
|
|
236
274
|
} 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 };
|
|
275
|
+
return strategies.storiesList();
|
|
249
276
|
} else if (pathname.startsWith("/blogs/")) {
|
|
250
277
|
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 };
|
|
278
|
+
return strategies.blogDetail(slug);
|
|
258
279
|
} else if (pathname.startsWith("/stories/")) {
|
|
259
280
|
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 };
|
|
281
|
+
return strategies.storyDetail(slug);
|
|
267
282
|
} 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 };
|
|
283
|
+
return strategies.notFound();
|
|
277
284
|
}
|
|
278
285
|
};
|
|
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
|
-
|
|
286
|
+
class WebsitePrerender {
|
|
287
|
+
constructor(options = {}) {
|
|
288
|
+
this.routes = options.routes || [
|
|
289
|
+
{ link: "/", text: "Home" },
|
|
290
|
+
{ link: "/blogs", text: "Blogs" },
|
|
291
|
+
{ link: "/stories", text: "Stories" },
|
|
292
|
+
{ link: "/about-me", text: "About Me" }
|
|
293
|
+
];
|
|
294
|
+
this.defaultFooterLinks = options.defaultFooterLinks || [
|
|
295
|
+
{ text: "LinkedIn", link: "https://linkedin.com/in/yourname" },
|
|
296
|
+
{ text: "GitHub", link: "https://github.com/yourname" },
|
|
297
|
+
{ text: "Email", link: "mailto:yourname@domain.com" }
|
|
298
|
+
];
|
|
299
|
+
this.footerLinks = [...this.defaultFooterLinks];
|
|
300
|
+
this.siteTitle = options.siteTitle || "My Personal Website";
|
|
301
|
+
this.copyright = options.copyright || "2026 My Personal Website";
|
|
302
|
+
this.templateRenderer = options.templateRenderer || createHtmlTemplate;
|
|
303
|
+
}
|
|
304
|
+
async fetchStaticDetails(apiUrl) {
|
|
305
|
+
try {
|
|
306
|
+
const res = await fetch(`${apiUrl}/api/static`);
|
|
307
|
+
if (res.ok) {
|
|
308
|
+
const data = await res.json();
|
|
309
|
+
this.siteTitle = data.siteTitle || this.siteTitle;
|
|
310
|
+
this.copyright = data.copyright || this.copyright;
|
|
311
|
+
const normalizeUrl = (url) => {
|
|
312
|
+
if (!url) return "";
|
|
313
|
+
if (url.startsWith("http://") || url.startsWith("https://")) return url;
|
|
314
|
+
if (url.startsWith("www.")) return `https://${url}`;
|
|
315
|
+
return url;
|
|
316
|
+
};
|
|
317
|
+
this.footerLinks = [
|
|
318
|
+
{ text: "LinkedIn", link: normalizeUrl(data.linkedin) || this.defaultFooterLinks[0].link },
|
|
319
|
+
{ text: "GitHub", link: normalizeUrl(data.github) || this.defaultFooterLinks[1].link },
|
|
320
|
+
{ text: "Email", link: data.email ? `mailto:${data.email}` : this.defaultFooterLinks[2].link }
|
|
321
|
+
];
|
|
322
|
+
}
|
|
323
|
+
} catch (e) {
|
|
311
324
|
}
|
|
312
|
-
} catch (e) {
|
|
313
325
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
326
|
+
async fetchAboutMeData(apiUrl) {
|
|
327
|
+
try {
|
|
328
|
+
const res = await fetch(`${apiUrl}/api/about-me`);
|
|
329
|
+
if (res.ok) return await res.json();
|
|
330
|
+
} catch (e) {
|
|
331
|
+
}
|
|
332
|
+
return null;
|
|
320
333
|
}
|
|
321
|
-
return null;
|
|
322
|
-
}
|
|
323
|
-
const index = {
|
|
324
334
|
async fetch(request, env, ctx) {
|
|
325
335
|
const apiUrl = env?.API_URL || "https://api.example.com";
|
|
326
336
|
const baseSiteUrl = env?.BASE_SITE_URL || "https://site.example.com";
|
|
327
|
-
await fetchStaticDetails(apiUrl);
|
|
337
|
+
await this.fetchStaticDetails(apiUrl);
|
|
328
338
|
const url = new URL(request.url);
|
|
329
339
|
if (url.pathname.startsWith("/api/")) {
|
|
330
340
|
return fetch(`${apiUrl}${url.pathname}${url.search}`);
|
|
@@ -379,13 +389,13 @@ const index = {
|
|
|
379
389
|
}
|
|
380
390
|
let hydrationScript = "";
|
|
381
391
|
if (url.pathname === "/about-me" || url.pathname === "/about-me/") {
|
|
382
|
-
const aboutMeData = await fetchAboutMeData(apiUrl);
|
|
392
|
+
const aboutMeData = await this.fetchAboutMeData(apiUrl);
|
|
383
393
|
if (aboutMeData) {
|
|
384
394
|
hydrationScript = `<script>window.__HYDRATION_DATA__ = ${JSON.stringify(aboutMeData)};<\/script>`;
|
|
385
395
|
}
|
|
386
396
|
}
|
|
387
|
-
const pageContent = await generatePageContent(url.pathname, routes, footerLinks, { ...env, apiUrl });
|
|
388
|
-
const html = await
|
|
397
|
+
const pageContent = await generatePageContent(url.pathname, this.routes, this.footerLinks, { ...env, apiUrl, siteTitle: this.siteTitle, copyright: this.copyright });
|
|
398
|
+
const html = await this.templateRenderer({ ...pageContent, hydrationData: hydrationScript });
|
|
389
399
|
return new Response(html, {
|
|
390
400
|
headers: {
|
|
391
401
|
"content-type": "text/html",
|
|
@@ -393,7 +403,9 @@ const index = {
|
|
|
393
403
|
}
|
|
394
404
|
});
|
|
395
405
|
}
|
|
396
|
-
}
|
|
406
|
+
}
|
|
407
|
+
const defaultPrerender = new WebsitePrerender();
|
|
397
408
|
export {
|
|
398
|
-
|
|
409
|
+
WebsitePrerender,
|
|
410
|
+
defaultPrerender as default
|
|
399
411
|
};
|
|
@@ -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,CAkBpG;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"}
|