@leadertechie/personal-site-kit 0.1.0-alpha.17 → 0.1.0-alpha.19

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.
Files changed (32) hide show
  1. package/dist/api/content-utils.d.ts.map +1 -1
  2. package/dist/api/handlers/about-me.d.ts.map +1 -1
  3. package/dist/api/handlers/auth-handler.d.ts.map +1 -1
  4. package/dist/api/handlers/content-api.d.ts.map +1 -1
  5. package/dist/api/handlers/content.d.ts.map +1 -1
  6. package/dist/api/handlers/home.d.ts.map +1 -1
  7. package/dist/api/handlers/static-details.d.ts +1 -1
  8. package/dist/api/handlers/static-details.d.ts.map +1 -1
  9. package/dist/api/website-api.d.ts.map +1 -1
  10. package/dist/api.js +2 -2
  11. package/dist/chunks/{index-CGvOrVf8.js → index-C1krnvU3.js} +0 -2
  12. package/dist/chunks/{index-DAog9TQE.js → index-DrnbjP2Q.js} +2 -4
  13. package/dist/chunks/{template-DUdadCrH.js → template-DVy2k_na.js} +0 -4
  14. package/dist/chunks/{website-api-Cy2kZ0dC.js → website-api-BjNkkALB.js} +122 -151
  15. package/dist/index.js +3 -3
  16. package/dist/prerender/data-fetcher.d.ts.map +1 -1
  17. package/dist/prerender/page-content.d.ts.map +1 -1
  18. package/dist/prerender/page-generators/base.d.ts +0 -1
  19. package/dist/prerender/page-generators/base.d.ts.map +1 -1
  20. package/dist/prerender.js +9 -31
  21. package/dist/shared/core/site-store.d.ts.map +1 -1
  22. package/dist/shared/core/theme-toggle.d.ts.map +1 -1
  23. package/dist/shared/router.d.ts.map +1 -1
  24. package/dist/shared.js +1 -1
  25. package/dist/ui/about-me/index.d.ts.map +1 -1
  26. package/dist/ui/admin/index.d.ts.map +1 -1
  27. package/dist/ui/banner/index.d.ts.map +1 -1
  28. package/dist/ui/blog-viewer/index.d.ts.map +1 -1
  29. package/dist/ui/footer/index.d.ts.map +1 -1
  30. package/dist/ui/story-viewer/index.d.ts.map +1 -1
  31. package/dist/ui.js +1 -1
  32. package/package.json +12 -5
@@ -1 +1 @@
1
- {"version":3,"file":"content-utils.d.ts","sourceRoot":"","sources":["../../src/api/content-utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,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;AAED,MAAM,WAAW,QAAS,SAAQ,eAAe;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBtF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6BhG;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,IAAI,CAK5D;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAqB1H;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAiB1H;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CA2BjG"}
1
+ {"version":3,"file":"content-utils.d.ts","sourceRoot":"","sources":["../../src/api/content-utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,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;AAED,MAAM,WAAW,QAAS,SAAQ,eAAe;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBtF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMhG;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,IAAI,CAK5D;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAqB1H;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAiB1H;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CA2BjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"about-me.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/about-me.ts"],"names":[],"mappings":"AA0DA,wBAAgB,iBAAiB,SAEhC;AAED,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4DhE"}
1
+ {"version":3,"file":"about-me.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/about-me.ts"],"names":[],"mappings":"AAmDA,wBAAgB,iBAAiB,SAEhC;AAED,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4DhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-handler.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/auth-handler.ts"],"names":[],"mappings":"AA0BA,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC/F"}
1
+ {"version":3,"file":"auth-handler.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/auth-handler.ts"],"names":[],"mappings":"AAwBA,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgC/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/content-api.ts"],"names":[],"mappings":"AAcA,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmB9F;AAED,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBhG;AAED,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkB/E"}
1
+ {"version":3,"file":"content-api.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/content-api.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmB9F;AAED,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBhG;AAED,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkB/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/content.ts"],"names":[],"mappings":"AAoBA,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqElG"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/content.ts"],"names":[],"mappings":"AAqBA,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqElG"}
@@ -1 +1 @@
1
- {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/home.ts"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,SAEhC;AAED,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwC7D"}
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/home.ts"],"names":[],"mappings":"AAwCA,wBAAgB,iBAAiB,SAEhC;AAED,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwC7D"}
@@ -1,2 +1,2 @@
1
- export declare function handleStaticDetails(env?: any, method?: string, body?: any): Promise<Response>;
1
+ export declare function handleStaticDetails(env?: any, method?: string, _body?: any): Promise<Response>;
2
2
  //# sourceMappingURL=static-details.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-details.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/static-details.ts"],"names":[],"mappings":"AAQA,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuCnG"}
1
+ {"version":3,"file":"static-details.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/static-details.ts"],"names":[],"mappings":"AAQA,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuCpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"website-api.d.ts","sourceRoot":"","sources":["../../src/api/website-api.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAiC;IAEhD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAIzD,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,UAAU;IAqBL,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgGlE"}
1
+ {"version":3,"file":"website-api.d.ts","sourceRoot":"","sources":["../../src/api/website-api.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAiC;IAEhD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAIzD,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,UAAU;IAqBL,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkGlE"}
package/dist/api.js CHANGED
@@ -1,5 +1,5 @@
1
- import { W as WebsiteAPI } from "./chunks/website-api-Cy2kZ0dC.js";
2
- import { A, B, M, R, c, a, g, b, d, h, e, r, s, v } from "./chunks/website-api-Cy2kZ0dC.js";
1
+ import { W as WebsiteAPI } from "./chunks/website-api-BjNkkALB.js";
2
+ import { A, B, M, R, c, a, g, b, d, h, e, r, s, v } from "./chunks/website-api-BjNkkALB.js";
3
3
  const defaultAPI = new WebsiteAPI();
4
4
  export {
5
5
  A as AUTH_KV,
@@ -16,8 +16,6 @@ class BasePageGenerator {
16
16
  footerlinks='${JSON.stringify(footerLinks)}'>
17
17
  </my-footer>`;
18
18
  }
19
- generateMeta(title, description, canonicalUrl) {
20
- }
21
19
  wrapContent(banner, mainContent, footer) {
22
20
  return `${banner}${mainContent}${footer}`;
23
21
  }
@@ -2475,8 +2475,7 @@ class BlogViewer extends (_a$1 = LitElement, _slug_dec$1 = [property({ type: Str
2475
2475
  }
2476
2476
  renderMarkdown(content) {
2477
2477
  if (!content) return "";
2478
- const nodes = pipeline$1.parse(content);
2479
- return pipeline$1.render(nodes);
2478
+ return pipeline$1.renderMarkdown(content);
2480
2479
  }
2481
2480
  }
2482
2481
  _init$1 = __decoratorStart$1(_a$1);
@@ -2681,8 +2680,7 @@ class StoryViewer extends (_a = LitElement, _slug_dec = [property({ type: String
2681
2680
  }
2682
2681
  renderMarkdown(content) {
2683
2682
  if (!content) return "";
2684
- const nodes = pipeline.parse(content);
2685
- return pipeline.render(nodes);
2683
+ return pipeline.renderMarkdown(content);
2686
2684
  }
2687
2685
  }
2688
2686
  _init = __decoratorStart(_a);
@@ -383,10 +383,6 @@ class Router {
383
383
  this.afterRender();
384
384
  }
385
385
  async renderAdminPage() {
386
- generatePageContent("/admin", this.routes, this.footerLinks, {
387
- siteTitle: this.siteTitle,
388
- copyright: this.copyright
389
- });
390
386
  if (this.appElement) {
391
387
  this.appElement.innerHTML = `
392
388
  <my-banner header="${this.siteTitle}" logo="${this.logo}">
@@ -1,4 +1,4 @@
1
- import { ContentCacheV2, R2ContentLoader } from "@leadertechie/r2tohtml";
1
+ import { R2ContentLoader, ContentCacheV2, parseFrontmatter as parseFrontmatter$1 } from "@leadertechie/r2tohtml";
2
2
  function createJSONResponse(data, status = 200) {
3
3
  return new Response(JSON.stringify(data), {
4
4
  status,
@@ -9,14 +9,6 @@ function createErrorResponse(message, status = 500) {
9
9
  return createJSONResponse({ error: message }, status);
10
10
  }
11
11
  let loader$1 = null;
12
- new ContentCacheV2(
13
- 5 * 60 * 1e3,
14
- // TTL: 5 minutes fresh
15
- true,
16
- // enabled
17
- 30 * 60 * 1e3
18
- // SWR TTL: 30 minutes stale window
19
- );
20
12
  function getLoader$1(env) {
21
13
  if (!env?.CONTENT_BUCKET) {
22
14
  return null;
@@ -50,7 +42,7 @@ function getLoader$1(env) {
50
42
  }
51
43
  return loader$1;
52
44
  }
53
- function clearContentCache$1() {
45
+ function clearContentCache$2() {
54
46
  loader$1?.clearCache();
55
47
  }
56
48
  async function handleAboutMe(env) {
@@ -107,14 +99,6 @@ async function handleAboutMe(env) {
107
99
  }
108
100
  }
109
101
  let loader = null;
110
- new ContentCacheV2(
111
- 5 * 60 * 1e3,
112
- // TTL: 5 minutes fresh
113
- true,
114
- // enabled
115
- 30 * 60 * 1e3
116
- // SWR TTL: 30 minutes stale window
117
- );
118
102
  function getLoader(env) {
119
103
  if (!loader && env?.CONTENT_BUCKET) {
120
104
  loader = new R2ContentLoader(
@@ -145,7 +129,7 @@ function getLoader(env) {
145
129
  }
146
130
  return loader;
147
131
  }
148
- function clearContentCache() {
132
+ function clearContentCache$1() {
149
133
  loader?.clearCache();
150
134
  }
151
135
  async function handleHome(env) {
@@ -157,8 +141,8 @@ async function handleHome(env) {
157
141
  });
158
142
  }
159
143
  const r2 = getLoader(env);
160
- let astResult = await r2.getWithAST("pages/home.md");
161
- let renderedResult = await r2.getRendered("pages/home.md");
144
+ const astResult = await r2.getWithAST("pages/home.md");
145
+ const renderedResult = await r2.getRendered("pages/home.md");
162
146
  if (!astResult || !renderedResult) {
163
147
  return new Response(JSON.stringify({
164
148
  contentNodes: [],
@@ -268,7 +252,7 @@ async function clearRateLimit(env, ip) {
268
252
  const kvKey = `rate:${ip}`;
269
253
  await env.KV.delete(kvKey);
270
254
  }
271
- async function getAuthStore(env) {
255
+ async function getAuthStore$1(env) {
272
256
  const store = await env.KV.get(AUTH_KV, "json");
273
257
  return store;
274
258
  }
@@ -282,7 +266,7 @@ async function setupAuth(env, username, password) {
282
266
  }));
283
267
  }
284
268
  async function verifyCredentials(env, username, password) {
285
- const store = await getAuthStore(env);
269
+ const store = await getAuthStore$1(env);
286
270
  if (!store) {
287
271
  return false;
288
272
  }
@@ -295,6 +279,107 @@ async function verifyCredentials(env, username, password) {
295
279
  function getClientIP(request) {
296
280
  return request.headers.get("CF-Connecting-IP") || request.headers.get("X-Forwarded-For")?.split(",")[0]?.trim() || "unknown";
297
281
  }
282
+ const contentCache = new ContentCacheV2(
283
+ 5 * 60 * 1e3,
284
+ // TTL: 5 minutes fresh
285
+ true,
286
+ // enabled
287
+ 30 * 60 * 1e3
288
+ // SWR TTL: 30 minutes stale window
289
+ );
290
+ function getCachedOrFetch(key, fetchFn) {
291
+ const cached = contentCache.get(key);
292
+ if (cached) {
293
+ if (!cached.stale) {
294
+ return Promise.resolve(cached.data);
295
+ }
296
+ fetchFn().then((data) => {
297
+ contentCache.set(key, data);
298
+ contentCache.refresh(key);
299
+ }).catch(() => {
300
+ });
301
+ return Promise.resolve(cached.data);
302
+ }
303
+ return fetchFn().then((data) => {
304
+ contentCache.set(key, data);
305
+ return data;
306
+ });
307
+ }
308
+ function clearContentCache(prefix) {
309
+ {
310
+ contentCache.clear();
311
+ }
312
+ }
313
+ function parseFrontmatter(content) {
314
+ const parsed = parseFrontmatter$1(content);
315
+ return {
316
+ metadata: parsed.metadata,
317
+ content: parsed.content.trim()
318
+ };
319
+ }
320
+ function checkContentBucket(env) {
321
+ if (!env?.CONTENT_BUCKET) {
322
+ return createErrorResponse("Content bucket not configured", 500);
323
+ }
324
+ return null;
325
+ }
326
+ async function fetchContentItem(bucket, type, slug) {
327
+ const mdObj = await bucket.get(`${type}/${slug}.md`);
328
+ const jsonObj = await bucket.get(`${type}/${slug}.json`);
329
+ if (!mdObj && !jsonObj) throw new Error(`${type.slice(0, -1)} not found`);
330
+ let metadata = {};
331
+ if (jsonObj) {
332
+ metadata = await jsonObj.json();
333
+ }
334
+ let content = "";
335
+ if (mdObj) {
336
+ const text = await mdObj.text();
337
+ const parsed = parseFrontmatter(text);
338
+ content = parsed.content;
339
+ metadata = { ...parsed.metadata, ...metadata };
340
+ }
341
+ return { ...metadata, slug, content };
342
+ }
343
+ async function fetchContentList(bucket, type, latest) {
344
+ const list = await bucket.list({ prefix: `${type}/` });
345
+ const items = [];
346
+ for (const item of list.objects) {
347
+ if (item.key.endsWith(".json")) {
348
+ const obj = await bucket.get(item.key);
349
+ if (obj) {
350
+ const metadata = await obj.json();
351
+ const slug = item.key.replace(`${type}/`, "").replace(".json", "");
352
+ items.push({ ...metadata, slug });
353
+ }
354
+ }
355
+ }
356
+ const sorted = items.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
357
+ return latest ? sorted.slice(0, latest) : sorted;
358
+ }
359
+ async function searchContent(bucket, query) {
360
+ const q = query.toLowerCase();
361
+ const results = [];
362
+ const [blogsList, storiesList] = await Promise.all([
363
+ bucket.list({ prefix: "blogs/" }),
364
+ bucket.list({ prefix: "stories/" })
365
+ ]);
366
+ for (const item of [...blogsList.objects, ...storiesList.objects]) {
367
+ if (item.key.endsWith(".md")) {
368
+ const obj = await bucket.get(item.key);
369
+ if (obj) {
370
+ const text = await obj.text();
371
+ const { metadata } = parseFrontmatter(text);
372
+ const matchTitle = metadata.title?.toLowerCase().includes(q);
373
+ const matchDesc = metadata.description?.toLowerCase().includes(q);
374
+ const matchTags = metadata.tags?.some((t) => t.toLowerCase().includes(q));
375
+ if (matchTitle || matchDesc || matchTags) {
376
+ results.push(metadata);
377
+ }
378
+ }
379
+ }
380
+ }
381
+ return results;
382
+ }
298
383
  function getSessionToken(request) {
299
384
  const cookieHeader = request.headers.get("Cookie");
300
385
  if (!cookieHeader) return null;
@@ -324,7 +409,7 @@ async function handleContent(request, env, subpath) {
324
409
  if (method === "GET" && subpath.startsWith("images/")) {
325
410
  return handleGet(request, bucket, subpath);
326
411
  }
327
- const store = await getAuthStore(env);
412
+ const store = await getAuthStore$1(env);
328
413
  if (!store) {
329
414
  if (method === "GET") {
330
415
  return handleGet(request, bucket, subpath);
@@ -399,8 +484,9 @@ async function handleWrite(request, bucket, subpath, env, method) {
399
484
  options.httpMetadata = { contentType };
400
485
  }
401
486
  await bucket.put(subpath, request.body, options);
402
- clearContentCache();
403
487
  clearContentCache$1();
488
+ clearContentCache$2();
489
+ clearContentCache();
404
490
  return createJSONResponse({ success: true, key: subpath });
405
491
  } catch (e) {
406
492
  return createErrorResponse("Failed to upload content: " + e.message, 500);
@@ -409,8 +495,9 @@ async function handleWrite(request, bucket, subpath, env, method) {
409
495
  if (method === "DELETE" && subpath) {
410
496
  try {
411
497
  await bucket.delete(subpath);
412
- clearContentCache();
413
498
  clearContentCache$1();
499
+ clearContentCache$2();
500
+ clearContentCache();
414
501
  return createJSONResponse({ success: true, key: subpath });
415
502
  } catch (e) {
416
503
  return createErrorResponse("Failed to delete content: " + e.message, 500);
@@ -431,7 +518,6 @@ function createSessionCookie(token, origin) {
431
518
  return cookie;
432
519
  }
433
520
  async function handleAuth(request, env, subpath) {
434
- request.method;
435
521
  const clientIP = getClientIP(request);
436
522
  const path = subpath.replace(/^\//, "").split("/")[0];
437
523
  const origin = request.headers.get("Origin") || new URL(request.url).origin;
@@ -579,123 +665,6 @@ async function handleLogout(request, env) {
579
665
  }
580
666
  });
581
667
  }
582
- const contentCache = new ContentCacheV2(
583
- 5 * 60 * 1e3,
584
- // TTL: 5 minutes fresh
585
- true,
586
- // enabled
587
- 30 * 60 * 1e3
588
- // SWR TTL: 30 minutes stale window
589
- );
590
- function getCachedOrFetch(key, fetchFn) {
591
- const cached = contentCache.get(key);
592
- if (cached) {
593
- if (!cached.stale) {
594
- return Promise.resolve(cached.data);
595
- }
596
- fetchFn().then((data) => {
597
- contentCache.set(key, data);
598
- contentCache.refresh(key);
599
- }).catch(() => {
600
- });
601
- return Promise.resolve(cached.data);
602
- }
603
- return fetchFn().then((data) => {
604
- contentCache.set(key, data);
605
- return data;
606
- });
607
- }
608
- function parseFrontmatter(content) {
609
- const lines = content.split("\n");
610
- const metadata = {};
611
- let contentStart = 0;
612
- if (lines[0]?.trim() === "---") {
613
- for (let i = 1; i < lines.length; i++) {
614
- if (lines[i]?.trim() === "---") {
615
- contentStart = i + 1;
616
- break;
617
- }
618
- const colonIdx = lines[i].indexOf(":");
619
- if (colonIdx > 0) {
620
- const key = lines[i].slice(0, colonIdx).trim();
621
- let value = lines[i].slice(colonIdx + 1).trim();
622
- if (value.startsWith("[") && value.endsWith("]")) {
623
- value = value.slice(1, -1);
624
- metadata[key] = value.split(",").map((v) => v.trim());
625
- } else {
626
- metadata[key] = value;
627
- }
628
- }
629
- }
630
- }
631
- return {
632
- metadata,
633
- content: lines.slice(contentStart).join("\n").trim()
634
- };
635
- }
636
- function checkContentBucket(env) {
637
- if (!env?.CONTENT_BUCKET) {
638
- return createErrorResponse("Content bucket not configured", 500);
639
- }
640
- return null;
641
- }
642
- async function fetchContentItem(bucket, type, slug) {
643
- const mdObj = await bucket.get(`${type}/${slug}.md`);
644
- const jsonObj = await bucket.get(`${type}/${slug}.json`);
645
- if (!mdObj && !jsonObj) throw new Error(`${type.slice(0, -1)} not found`);
646
- let metadata = {};
647
- if (jsonObj) {
648
- metadata = await jsonObj.json();
649
- }
650
- let content = "";
651
- if (mdObj) {
652
- const text = await mdObj.text();
653
- const parsed = parseFrontmatter(text);
654
- content = parsed.content;
655
- metadata = { ...parsed.metadata, ...metadata };
656
- }
657
- return { ...metadata, slug, content };
658
- }
659
- async function fetchContentList(bucket, type, latest) {
660
- const list = await bucket.list({ prefix: `${type}/` });
661
- const items = [];
662
- for (const item of list.objects) {
663
- if (item.key.endsWith(".json")) {
664
- const obj = await bucket.get(item.key);
665
- if (obj) {
666
- const metadata = await obj.json();
667
- const slug = item.key.replace(`${type}/`, "").replace(".json", "");
668
- items.push({ ...metadata, slug });
669
- }
670
- }
671
- }
672
- const sorted = items.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
673
- return latest ? sorted.slice(0, latest) : sorted;
674
- }
675
- async function searchContent(bucket, query) {
676
- const q = query.toLowerCase();
677
- const results = [];
678
- const [blogsList, storiesList] = await Promise.all([
679
- bucket.list({ prefix: "blogs/" }),
680
- bucket.list({ prefix: "stories/" })
681
- ]);
682
- for (const item of [...blogsList.objects, ...storiesList.objects]) {
683
- if (item.key.endsWith(".md")) {
684
- const obj = await bucket.get(item.key);
685
- if (obj) {
686
- const text = await obj.text();
687
- const { metadata } = parseFrontmatter(text);
688
- const matchTitle = metadata.title?.toLowerCase().includes(q);
689
- const matchDesc = metadata.description?.toLowerCase().includes(q);
690
- const matchTags = metadata.tags?.some((t) => t.toLowerCase().includes(q));
691
- if (matchTitle || matchDesc || matchTags) {
692
- results.push(metadata);
693
- }
694
- }
695
- }
696
- }
697
- return results;
698
- }
699
668
  async function handleBlogs(env, slug, latest) {
700
669
  const bucketCheck = checkContentBucket(env);
701
670
  if (bucketCheck) return bucketCheck;
@@ -804,7 +773,7 @@ const DEFAULT_STATIC_DETAILS = {
804
773
  github: "https://github.com/yourname",
805
774
  email: "yourname@domain.com"
806
775
  };
807
- async function handleStaticDetails(env, method, body) {
776
+ async function handleStaticDetails(env, method, _body) {
808
777
  try {
809
778
  if (!env?.CONTENT_BUCKET) {
810
779
  return new Response(JSON.stringify(DEFAULT_STATIC_DETAILS), {
@@ -917,15 +886,16 @@ class WebsiteAPI {
917
886
  return this.addCORSHeaders(await handleInfo());
918
887
  case "home":
919
888
  return this.addAdminCORSHeaders(await handleHome(env), origin);
920
- case "cache-clear":
889
+ case "cache-clear": {
921
890
  const cookieHeader = request.headers.get("Cookie");
922
891
  const sessionToken = cookieHeader?.split(";").find((c) => c.trim().startsWith("session="))?.split("=")[1];
923
892
  const session = sessionToken ? await env.KV.get(`session:${sessionToken}`, "json") : null;
924
893
  if (!session || session.expiresAt < Date.now()) {
925
894
  return this.addAdminCORSHeaders(createErrorResponse("Unauthorized", 401), origin);
926
895
  }
927
- clearContentCache$1();
896
+ clearContentCache$2();
928
897
  return this.addAdminCORSHeaders(new Response(JSON.stringify({ success: true, message: "Cache cleared" }), { status: 200, headers: { "Content-Type": "application/json" } }), origin);
898
+ }
929
899
  case "aboutme":
930
900
  return this.addAdminCORSHeaders(await handleAboutMe(env), origin);
931
901
  case "logo":
@@ -934,9 +904,10 @@ class WebsiteAPI {
934
904
  return this.addAdminCORSHeaders(await handleStaticDetails(env), origin);
935
905
  case "blogs":
936
906
  return this.addAdminCORSHeaders(await handleBlogs(env), origin);
937
- case "blogs/latest":
907
+ case "blogs/latest": {
938
908
  const latestCount = url.searchParams.get("count");
939
909
  return this.addAdminCORSHeaders(await handleBlogs(env, void 0, latestCount ? parseInt(latestCount) : 5), origin);
910
+ }
940
911
  default:
941
912
  if (route.startsWith("images/")) {
942
913
  return this.addAdminCORSHeaders(await handleContent(request, env, route), origin);
@@ -950,8 +921,8 @@ class WebsiteAPI {
950
921
  return this.addAdminCORSHeaders(await handleStories(env), origin);
951
922
  }
952
923
  if (route === "stories/latest") {
953
- const latestCount2 = url.searchParams.get("count");
954
- return this.addAdminCORSHeaders(await handleStories(env, void 0, latestCount2 ? parseInt(latestCount2) : 5), origin);
924
+ const latestCount = url.searchParams.get("count");
925
+ return this.addAdminCORSHeaders(await handleStories(env, void 0, latestCount ? parseInt(latestCount) : 5), origin);
955
926
  }
956
927
  const slug = route.replace("stories/", "");
957
928
  return this.addAdminCORSHeaders(await handleStories(env, slug), origin);
@@ -975,7 +946,7 @@ export {
975
946
  RATE_LIMIT_KV as R,
976
947
  WebsiteAPI as W,
977
948
  clearRateLimit as a,
978
- getAuthStore as b,
949
+ getAuthStore$1 as b,
979
950
  checkRateLimit as c,
980
951
  getClientIP as d,
981
952
  hashPassword as e,
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { A, B, M, R, W, c, a, g, b, d, h, e, r, s, v } from "./chunks/website-api-Cy2kZ0dC.js";
1
+ import { A, B, M, R, W, c, a, g, b, d, h, e, r, s, v } from "./chunks/website-api-BjNkkALB.js";
2
2
  import { WebsitePrerender } from "./prerender.js";
3
- import { A as A2, a as a2, b as b2, c as c2, d as d2, e as e2, f, g as g2, h as h2, i, B as B2, F, M as M2, j, S, k } from "./chunks/index-DAog9TQE.js";
3
+ import { A as A2, a as a2, b as b2, c as c2, d as d2, e as e2, f, g as g2, h as h2, i, B as B2, F, M as M2, j, S, k } from "./chunks/index-DrnbjP2Q.js";
4
4
  import { S as S2, g as g3, i as i2, r as r2 } from "./chunks/site-store-CGV9c2DI.js";
5
- import { R as R2, T, W as W2, b as b3, c as c3, g as g4, r as r3 } from "./chunks/template-DUdadCrH.js";
5
+ import { R as R2, T, W as W2, b as b3, c as c3, g as g4, r as r3 } from "./chunks/template-DVy2k_na.js";
6
6
  export {
7
7
  A as AUTH_KV,
8
8
  A2 as AdminAboutMeSection,
@@ -1 +1 @@
1
- {"version":3,"file":"data-fetcher.d.ts","sourceRoot":"","sources":["../../src/prerender/data-fetcher.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAwCD,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQpE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzD;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgB/F;AAED,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBhG"}
1
+ {"version":3,"file":"data-fetcher.d.ts","sourceRoot":"","sources":["../../src/prerender/data-fetcher.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAiCD,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQpE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzD;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgB/F;AAED,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBhG"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-content.d.ts","sourceRoot":"","sources":["../../src/prerender/page-content.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAgHD,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,QAAQ,MAAM,EAAE,EAChB,aAAa,WAAW,EAAE,EAC1B,MAAM,GAAG,KACR,OAAO,CAAC,WAAW,CAqJrB,CAAC"}
1
+ {"version":3,"file":"page-content.d.ts","sourceRoot":"","sources":["../../src/prerender/page-content.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAgGD,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,QAAQ,MAAM,EAAE,EAChB,aAAa,WAAW,EAAE,EAC1B,MAAM,GAAG,KACR,OAAO,CAAC,WAAW,CAkJrB,CAAC"}
@@ -19,7 +19,6 @@ export interface BasePageData {
19
19
  export declare class BasePageGenerator {
20
20
  protected generateBanner(routes: IRoute[], siteTitle: string, logo: string): string;
21
21
  protected generateFooter(footerLinks: IFooterLink[], copyright: string): string;
22
- protected generateMeta(title: string, description: string, canonicalUrl: string): void;
23
22
  protected wrapContent(banner: string, mainContent: string, footer: string): string;
24
23
  generatePage(pathname: string, routes: IRoute[], footerLinks: IFooterLink[], staticDetails: StaticDetails, apiUrl: string, baseUrl: string, mainContent: string, title: string, description: string): PageContent;
25
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/prerender/page-generators/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,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,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAcnF,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAQ/E,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAItF,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3E,YAAY,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,WAAW,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,WAAW;CAcf"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/prerender/page-generators/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,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,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAcnF,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAQ/E,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3E,YAAY,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,WAAW,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,WAAW;CAcf"}
package/dist/prerender.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ContentCacheV2, R2ContentLoader } from "@leadertechie/r2tohtml";
1
+ import { R2ContentLoader } from "@leadertechie/r2tohtml";
2
2
  let cachedAssets = null;
3
3
  let isDiscovering = false;
4
4
  async function getAssetPaths(baseSiteUrl) {
@@ -103,14 +103,6 @@ const createHtmlTemplate = async ({
103
103
  </html>`;
104
104
  };
105
105
  let loader = null;
106
- new ContentCacheV2(
107
- 5 * 60 * 1e3,
108
- // TTL: 5 minutes fresh
109
- true,
110
- // enabled
111
- 30 * 60 * 1e3
112
- // SWR TTL: 30 minutes stale window
113
- );
114
106
  function getLoader(env) {
115
107
  if (!loader) {
116
108
  if (!env?.CONTENT_BUCKET) return null;
@@ -153,16 +145,6 @@ async function fetchProfile(env) {
153
145
  return null;
154
146
  }
155
147
  }
156
- async function fetchAboutMe(env) {
157
- try {
158
- const r2 = getLoader(env);
159
- if (!r2) return "";
160
- const result = await r2.getRendered("about-me.md");
161
- return result?.content || "";
162
- } catch {
163
- return "";
164
- }
165
- }
166
148
  async function fetchHome(env) {
167
149
  try {
168
150
  const r2 = getLoader(env);
@@ -229,25 +211,21 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
229
211
  } catch (e) {
230
212
  }
231
213
  let profile = null;
232
- let aboutMeContent = "";
233
214
  let homeContent = "";
234
215
  let latestBlogs = [];
235
216
  let latestStories = [];
236
217
  if (env?.CONTENT_BUCKET) {
237
- [profile, aboutMeContent, homeContent, latestBlogs, latestStories] = await Promise.all([
218
+ [profile, homeContent, latestBlogs, latestStories] = await Promise.all([
238
219
  fetchProfile(env),
239
- fetchAboutMe(env),
240
220
  fetchHome(env),
241
221
  fetchLatestBlogSummaries(env, 3),
242
222
  fetchLatestStorySummaries(env, 3)
243
223
  ]);
244
224
  }
245
225
  const name = profile?.name || "User";
246
- profile?.title || "Professional";
247
- new URL(pathname, baseUrl).toString();
248
226
  const strategies = {
249
227
  home: async () => {
250
- const { HomePageGenerator } = await import("./chunks/index-CGvOrVf8.js");
228
+ const { HomePageGenerator } = await import("./chunks/index-C1krnvU3.js");
251
229
  const generator = new HomePageGenerator();
252
230
  return generator.generate({
253
231
  routes,
@@ -263,7 +241,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
263
241
  });
264
242
  },
265
243
  about: async () => {
266
- const { AboutPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
244
+ const { AboutPageGenerator } = await import("./chunks/index-C1krnvU3.js");
267
245
  const generator = new AboutPageGenerator();
268
246
  return generator.generate({
269
247
  routes,
@@ -276,7 +254,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
276
254
  });
277
255
  },
278
256
  blogsList: async () => {
279
- const { BlogsListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
257
+ const { BlogsListPageGenerator } = await import("./chunks/index-C1krnvU3.js");
280
258
  const generator = new BlogsListPageGenerator();
281
259
  return generator.generate({
282
260
  routes,
@@ -290,7 +268,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
290
268
  });
291
269
  },
292
270
  storiesList: async () => {
293
- const { StoriesListPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
271
+ const { StoriesListPageGenerator } = await import("./chunks/index-C1krnvU3.js");
294
272
  const generator = new StoriesListPageGenerator();
295
273
  return generator.generate({
296
274
  routes,
@@ -304,7 +282,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
304
282
  });
305
283
  },
306
284
  blogDetail: async (slug) => {
307
- const { BlogDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
285
+ const { BlogDetailPageGenerator } = await import("./chunks/index-C1krnvU3.js");
308
286
  const generator = new BlogDetailPageGenerator();
309
287
  return generator.generate({
310
288
  routes,
@@ -317,7 +295,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
317
295
  });
318
296
  },
319
297
  storyDetail: async (slug) => {
320
- const { StoryDetailPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
298
+ const { StoryDetailPageGenerator } = await import("./chunks/index-C1krnvU3.js");
321
299
  const generator = new StoryDetailPageGenerator();
322
300
  return generator.generate({
323
301
  routes,
@@ -330,7 +308,7 @@ const generatePageContent = async (pathname, routes, footerLinks, env) => {
330
308
  });
331
309
  },
332
310
  notFound: async () => {
333
- const { NotFoundPageGenerator } = await import("./chunks/index-CGvOrVf8.js");
311
+ const { NotFoundPageGenerator } = await import("./chunks/index-C1krnvU3.js");
334
312
  const generator = new NotFoundPageGenerator();
335
313
  return generator.generate({
336
314
  routes,
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"site-store.d.ts","sourceRoot":"","sources":["../../../src/shared/core/site-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8C,MAAM,WAAW,CAAC;AAEtF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../src/shared/core/theme-toggle.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAY,SAAQ,WAAW;;IAQ1C,iBAAiB;IAIjB,oBAAoB;IAIpB,MAAM;IAiCN,0BAA0B;IAc1B,WAAW,aAOT;IAEF,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAUhC,UAAU,IAAI,MAAM;IAgBpB,WAAW,IAAI,MAAM;IAQrB,wBAAwB,CAAC,KAAK,EAAE,MAAM;CAQvC"}
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../src/shared/core/theme-toggle.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,WAAW;;IAQ1C,iBAAiB;IAIjB,oBAAoB;IAIpB,MAAM;IAiCN,0BAA0B;IAc1B,WAAW,aAOT;IAEF,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAUhC,UAAU,IAAI,MAAM;IAgBpB,WAAW,IAAI,MAAM;IAQrB,wBAAwB,CAAC,KAAK,EAAE,MAAM;CAQvC"}
@@ -1 +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;IAgCnB;;;OAGG;IACH,OAAO,CAAC,WAAW;YAIL,cAAc;IAmC5B,OAAO,CAAC,iBAAiB;YASX,qBAAqB;YAkBrB,uBAAuB;YAoBvB,eAAe;CAsB9B"}
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;IAgCnB;;;OAGG;IACH,OAAO,CAAC,WAAW;YAIL,cAAc;IAmC5B,OAAO,CAAC,iBAAiB;YASX,qBAAqB;YAkBrB,uBAAuB;YAoBvB,eAAe;CAiB9B"}
package/dist/shared.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { S, g, i, r } from "./chunks/site-store-CGV9c2DI.js";
2
- import { R, T, W, b, c, g as g2, r as r2 } from "./chunks/template-DUdadCrH.js";
2
+ import { R, T, W, b, c, g as g2, r as r2 } from "./chunks/template-DVy2k_na.js";
3
3
  export {
4
4
  R as Router,
5
5
  S as SiteStore,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/about-me/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,qBACa,SAAU,SAAQ,UAAU;IACvC,MAAM,CAAC,MAAM,0BAAiB;IAG9B,QAAQ,CAAC,OAAO,SAAM;IAGtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IAGxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAGlC,QAAQ,CAAC,OAAO,UAAQ;IAEjB,OAAO,sBAAgB;;IAM9B,OAAO,KAAK,UAAU,GAErB;IAEK,iBAAiB;IAcvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAY7B,WAAW;IAuBzB,OAAO,CAAC,kBAAkB;IAS1B,MAAM;CA6BP"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/about-me/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,qBACa,SAAU,SAAQ,UAAU;IACvC,MAAM,CAAC,MAAM,0BAAiB;IAG9B,QAAQ,CAAC,OAAO,SAAM;IAGtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IAGxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAGlC,QAAQ,CAAC,OAAO,UAAQ;IAEjB,OAAO,sBAAgB;;IAM9B,OAAO,KAAK,UAAU,GAErB;IAEK,iBAAiB;IAcvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAY7B,WAAW;IAuBzB,OAAO,CAAC,kBAAkB;IAS1B,MAAM;CA6BP"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,CAAC;AAEF,qBACa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,MAAM,0BAAe;IAG5B,QAAQ,CAAC,eAAe,UAAS;IAGjC,QAAQ,CAAC,OAAO,UAAS;IAGzB,QAAQ,CAAC,SAAS,UAAQ;IAG1B,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAM;IAGzC,QAAQ,CAAC,aAAa,SAAM;IAG5B,QAAQ,CAAC,aAAa,SAAa;IAGnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAM;IAG3C,QAAQ,CAAC,UAAU,SAAM;IAEzB,OAAO,CAAC,UAAU,CAAkB;;IAQpC,OAAO,CAAC,gBAAgB;IAIlB,iBAAiB;IAMjB,eAAe;IAcf,YAAY;IASZ,WAAW,CAAC,CAAC,EAAE,WAAW;IAkB1B,WAAW,CAAC,CAAC,EAAE,WAAW;IAkC1B,YAAY;IAQZ,YAAY;IAQZ,kBAAkB;IAMlB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAkBpC,gBAAgB;IAUhB,YAAY,CAAC,GAAG,EAAE,MAAM;IAS9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IAY3B,eAAe;IAUf,WAAW;IAUX,MAAM;CAyDP;AAED,eAAO,MAAM,WAAW,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,CAAC;AAEF,qBACa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,MAAM,0BAAe;IAG5B,QAAQ,CAAC,eAAe,UAAS;IAGjC,QAAQ,CAAC,OAAO,UAAS;IAGzB,QAAQ,CAAC,SAAS,UAAQ;IAG1B,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAM;IAGzC,QAAQ,CAAC,aAAa,SAAM;IAG5B,QAAQ,CAAC,aAAa,SAAa;IAGnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAM;IAG3C,QAAQ,CAAC,UAAU,SAAM;IAEzB,OAAO,CAAC,UAAU,CAAkB;;IAQpC,OAAO,CAAC,gBAAgB;IAIlB,iBAAiB;IAMjB,eAAe;IAcf,YAAY;IASZ,WAAW,CAAC,CAAC,EAAE,WAAW;IAkB1B,WAAW,CAAC,CAAC,EAAE,WAAW;IAkC1B,YAAY;IAQZ,YAAY;IAQZ,kBAAkB;IAMlB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAkBpC,gBAAgB;IAUhB,YAAY,CAAC,GAAG,EAAE,MAAM;IAS9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IAY3B,eAAe;IAUf,WAAW;IAUX,MAAM;CAyDP;AAED,eAAO,MAAM,WAAW,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/banner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C,qBACa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,MAAM,0BAAgB;IAE7B,MAAM,CAAC,UAAU;;;;;;;MAGf;IAEM,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;;IAQrB,MAAM;CAcP"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/banner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,qBACa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,MAAM,0BAAgB;IAE7B,MAAM,CAAC,UAAU;;;;;;;MAGf;IAEM,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;;IAQrB,MAAM;CAcP"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/blog-viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AA0B5C,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,0BAAoB;IAGjC,QAAQ,CAAC,IAAI,SAAM;IAGnB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,OAAO,UAAQ;IAGxB,QAAQ,CAAC,KAAK,SAAM;IAEpB,OAAO,KAAK,UAAU,GAMrB;IAED,iBAAiB;IAOjB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM/C,QAAQ;IA4BR,MAAM;IA+BN,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAKxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/blog-viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AA0BvC,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,0BAAoB;IAGjC,QAAQ,CAAC,IAAI,SAAM;IAGnB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,OAAO,UAAQ;IAGxB,QAAQ,CAAC,KAAK,SAAM;IAEpB,OAAO,KAAK,UAAU,GAMrB;IAED,iBAAiB;IAOjB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM/C,QAAQ;IA4BR,MAAM;IA+BN,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAInE,qBACa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAM,0BAAgB;IAG7B,QAAQ,CAAC,SAAS,SAAM;IAGxB,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAM;IAEzC,MAAM;CA2BP"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAInE,qBACa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAM,0BAAgB;IAG7B,QAAQ,CAAC,SAAS,SAAM;IAGxB,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAM;IAEzC,MAAM;CA2BP"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/story-viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AA0B5C,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,MAAM,0BAAqB;IAGlC,QAAQ,CAAC,IAAI,SAAM;IAGnB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAG5C,QAAQ,CAAC,OAAO,UAAQ;IAGxB,QAAQ,CAAC,KAAK,SAAM;IAEpB,OAAO,KAAK,UAAU,GAKrB;IAEK,iBAAiB;IAOvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAMrC,SAAS;IAuBf,MAAM;IA+BN,OAAO,CAAC,cAAc;CAKvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/story-viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AA0BvC,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,MAAM,0BAAqB;IAGlC,QAAQ,CAAC,IAAI,SAAM;IAGnB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAG5C,QAAQ,CAAC,OAAO,UAAQ;IAGxB,QAAQ,CAAC,KAAK,SAAM;IAEpB,OAAO,KAAK,UAAU,GAKrB;IAEK,iBAAiB;IAOvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAMrC,SAAS;IAuBf,MAAM;IA+BN,OAAO,CAAC,cAAc;CAIvB"}
package/dist/ui.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A, a, b, c, d, e, f, g, h, i, B, F, M, j, S, k } from "./chunks/index-DAog9TQE.js";
1
+ import { A, a, b, c, d, e, f, g, h, i, B, F, M, j, S, k } from "./chunks/index-DrnbjP2Q.js";
2
2
  export {
3
3
  A as AdminAboutMeSection,
4
4
  a as AdminBlogsSection,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leadertechie/personal-site-kit",
3
- "version": "0.1.0-alpha.17",
3
+ "version": "0.1.0-alpha.19",
4
4
  "type": "module",
5
5
  "description": "A high-performance personal website engine for Cloudflare Workers and R2",
6
6
  "repository": {
@@ -40,18 +40,25 @@
40
40
  "scripts": {
41
41
  "build": "vite build && npm run postbuild",
42
42
  "postbuild": "cp -r src/styles dist/",
43
- "test": "vitest run"
43
+ "test": "vitest run",
44
+ "lint": "eslint \"src/**/*.ts\"",
45
+ "lint:fix": "eslint \"src/**/*.ts\" --fix"
44
46
  },
45
47
  "dependencies": {
46
- "@leadertechie/md2html": "^0.1.0-alpha.15",
47
- "@leadertechie/md2interact": "^0.1.0-alpha.1",
48
- "@leadertechie/r2tohtml": "^0.1.0-alpha.14",
48
+ "@leadertechie/md2html": "^0.1.0-alpha.20",
49
+ "@leadertechie/md2interact": "^0.1.0-alpha.4",
50
+ "@leadertechie/r2tohtml": "^0.1.0-alpha.17",
49
51
  "lit": "^3.2.1"
50
52
  },
51
53
  "devDependencies": {
54
+ "@eslint/js": "^9.39.4",
52
55
  "@types/node": "^20.11.0",
56
+ "@typescript-eslint/eslint-plugin": "^8.20.0",
57
+ "@typescript-eslint/parser": "^8.20.0",
58
+ "eslint": "^9.18.0",
53
59
  "jsdom": "^29.0.1",
54
60
  "typescript": "^5.7.3",
61
+ "typescript-eslint": "^8.20.0",
55
62
  "vite": "^7.3.0",
56
63
  "vite-plugin-dts": "^4.5.4",
57
64
  "vitest": "^4.0.16"