@earlyseo/blog 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  Drop-in blog integration for **React** & **Next.js** — powered by [EarlySEO](https://earlyseo.com).
4
4
 
5
- Articles are served from the EarlySEO CDN. No database, no webhooks, no storage config — just add your **site ID** and go.
5
+ Articles are authored in the EarlySEO dashboard and rendered on your site. No database, no webhooks, no storage config — just add your **site ID** and go.
6
6
 
7
7
  ## Features
8
8
 
9
- - **CDN-first** — Articles served from EarlySEO's global CDN. Zero infrastructure to manage.
10
- - **Paginated** — Pre-built paginated JSON. No DB queries per visitor.
9
+ - **Zero infrastructure** — Articles are managed by EarlySEO. Nothing to host or maintain.
10
+ - **Paginated** — Pre-built paginated data. No DB queries per visitor.
11
11
  - **Next.js App Router** — Drop-in server components for `/blog` and `/blog/[slug]`
12
12
  - **React hooks** — `useArticles()` and `useArticle(slug)` for custom UIs
13
13
  - **Full SEO** — Open Graph, Twitter cards, meta descriptions, canonical URLs
@@ -75,24 +75,18 @@ export default createBlogPostPage({ siteId });
75
75
  export const generateMetadata = createBlogPostMetadata({ siteId, siteName: "My Site" });
76
76
  ```
77
77
 
78
- That's it! Articles published from EarlySEO automatically appear on your blog via CDN.
78
+ That's it! Articles published from EarlySEO automatically appear on your blog.
79
79
 
80
80
  ---
81
81
 
82
82
  ## How It Works
83
83
 
84
- When you publish an article in [EarlySEO](https://earlyseo.com), we write pre-built JSON files to our CDN:
84
+ When you publish an article in [EarlySEO](https://earlyseo.com), it becomes instantly available to your site via the SDK.
85
85
 
86
- ```
87
- media.earlyseo.com/site/{siteId}/manifest.json → Total pages, version
88
- media.earlyseo.com/site/{siteId}/articles/page-1.json → Paginated article list
89
- media.earlyseo.com/site/{siteId}/article/my-slug.json → Full article content
90
- ```
91
-
92
- Your site reads from these JSON files — **no database, no API calls, no webhook handlers**.
86
+ The SDK fetches article data at request time — **no database, no API keys, no webhook handlers**.
93
87
 
94
- Only the affected files are updated on each publish:
95
- - The individual article JSON
88
+ Only the affected data is updated on each publish:
89
+ - The individual article
96
90
  - The paginated list pages
97
91
  - The manifest
98
92
 
@@ -182,7 +176,7 @@ Override the default card in the blog list:
182
176
 
183
177
  ---
184
178
 
185
- ## CDN Client
179
+ ## Client
186
180
 
187
181
  Use `EarlySeoClient` directly for full control:
188
182
 
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,WAAW;IAQ3D,gCAAgC;IAChC,WAAW,IAAI,MAAM;IAIrB,wDAAwD;IACxD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIjC,2CAA2C;IAC3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOhC,oDAAoD;IAC9C,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI7C,4EAA4E;IACtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAKhE,2DAA2D;IACrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YAMzC,SAAS;CAcxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,WAAW;IAQ3D,gCAAgC;IAChC,WAAW,IAAI,MAAM;IAIrB,wDAAwD;IACxD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIjC,2CAA2C;IAC3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOhC,oDAAoD;IAC9C,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI7C,4EAA4E;IACtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAKhE,2DAA2D;IACrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YAMzC,SAAS;CAcxB"}
package/dist/client.js CHANGED
@@ -1,13 +1,7 @@
1
1
  // ─────────────────────────────────────────────────────────────────────────────
2
- // @earlyseo/blog — CDN Client
2
+ // @earlyseo/blog — Client
3
3
  // ─────────────────────────────────────────────────────────────────────────────
4
- // Thin read-only client that fetches pre-built JSON from the EarlySEO CDN.
5
- // All writes happen server-side in our worker — users never write.
6
- //
7
- // CDN layout:
8
- // /site/{siteId}/manifest.json → Manifest
9
- // /site/{siteId}/articles/page-{n}.json → ArticleListPage
10
- // /site/{siteId}/article/{slug}.json → Article
4
+ // Thin read-only client that fetches pre-built article data from EarlySEO.
11
5
  // ─────────────────────────────────────────────────────────────────────────────
12
6
  import { DEFAULT_CDN_BASE_URL, } from "./types";
13
7
  export class EarlySeoClient {
@@ -57,7 +51,7 @@ export class EarlySeoClient {
57
51
  if (res.status === 404)
58
52
  return null;
59
53
  if (!res.ok) {
60
- throw new Error(`EarlySEO CDN error: ${res.status} ${res.statusText} for ${url}`);
54
+ throw new Error(`EarlySEO fetch error: ${res.status} ${res.statusText} for ${url}`);
61
55
  }
62
56
  return res.json();
63
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,2EAA2E;AAC3E,mEAAmE;AACnE,EAAE;AACF,cAAc;AACd,sDAAsD;AACtD,6DAA6D;AAC7D,qDAAqD;AACrD,gFAAgF;AAEhF,OAAO,EACL,oBAAoB,GAKrB,MAAM,SAAS,CAAC;AAEjB,MAAM,OAAO,cAAc;IAMzB,YAAY,MAAsB,EAAE,SAAuB;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,0EAA0E;IAE1E,gCAAgC;IAChC,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,gBAAgB,CAAC;IAC7D,CAAC;IAED,wDAAwD;IACxD,WAAW,CAAC,IAAY;QACtB,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,kBAAkB,IAAI,OAAO,CAAC;IAC1E,CAAC;IAED,2CAA2C;IAC3C,UAAU,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,YAAY,IAAI,OAAO,CAAC;IACpE,CAAC;IAED,0EAA0E;IAE1E,oDAAoD;IACpD,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAW,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAkB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0EAA0E;IAElE,KAAK,CAAC,SAAS,CAAI,GAAW;QACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,GAAG,IAAI,CAAC,SAAS;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,CAAE,IAAI,CAAC,SAAS,CAAC,OAAkC,IAAI,EAAE,CAAC;aAC9D;SACF,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,QAAQ,GAAG,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAEhF,OAAO,EACL,oBAAoB,GAKrB,MAAM,SAAS,CAAC;AAEjB,MAAM,OAAO,cAAc;IAMzB,YAAY,MAAsB,EAAE,SAAuB;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,0EAA0E;IAE1E,gCAAgC;IAChC,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,gBAAgB,CAAC;IAC7D,CAAC;IAED,wDAAwD;IACxD,WAAW,CAAC,IAAY;QACtB,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,kBAAkB,IAAI,OAAO,CAAC;IAC1E,CAAC;IAED,2CAA2C;IAC3C,UAAU,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,YAAY,IAAI,OAAO,CAAC;IACpE,CAAC;IAED,0EAA0E;IAE1E,oDAAoD;IACpD,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAW,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAkB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0EAA0E;IAElE,KAAK,CAAC,SAAS,CAAI,GAAW;QACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,GAAG,IAAI,CAAC,SAAS;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,CAAE,IAAI,CAAC,SAAS,CAAC,OAAkC,IAAI,EAAE,CAAC;aAC9D;SACF,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,QAAQ,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;CACF"}
@@ -31,7 +31,7 @@ export declare function createBlogPostPage(options: BlogPostPageOptions): ({ par
31
31
  params: Promise<{
32
32
  slug: string;
33
33
  }>;
34
- }) => Promise<string | number | bigint | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined>;
34
+ }) => Promise<string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined>;
35
35
  /**
36
36
  * Creates a generateMetadata function for the /blog/[slug] page.
37
37
  * Provides full SEO metadata including Open Graph and Twitter cards.
@@ -1 +1 @@
1
- {"version":3,"file":"blog-post-page.d.ts","sourceRoot":"","sources":["../../src/next/blog-post-page.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB;AAcD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,IAY1B,aAEhC;IACD,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC,0IAuEF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,IAIwC,aAEpC;IACD,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC,sCAqCF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;;;;;;;;;GAmBA"}
1
+ {"version":3,"file":"blog-post-page.d.ts","sourceRoot":"","sources":["../../src/next/blog-post-page.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB;AAcD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,IAY1B,aAEhC;IACD,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC,iIAuEF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,IAIwC,aAEpC;IACD,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC,sCAqCF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;;;;;;;;;GAmBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"blog-list.d.ts","sourceRoot":"","sources":["../../src/react/blog-list.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,SAAS,CAAC;IAC9B,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,SAAS,CAAC;CACjC;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,WAAe,EACf,KAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,GACd,EAAE,aAAa,2CAwEf"}
1
+ {"version":3,"file":"blog-list.d.ts","sourceRoot":"","sources":["../../src/react/blog-list.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,SAAS,CAAC;IAC9B,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,SAAS,CAAC;CACjC;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,WAAe,EACf,KAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,GACd,EAAE,aAAa,2CA+Ef"}
@@ -36,7 +36,7 @@ export function BlogList({ initialPage = 1, title = "Blog", className, renderCar
36
36
  const { basePath } = useEarlySeoContext();
37
37
  const { articles, page, totalPages, totalArticles, loading, error, goToPage } = useArticles(initialPage);
38
38
  if (loading) {
39
- return renderLoading ? (_jsx(_Fragment, { children: renderLoading() })) : (_jsx("div", { className: `earlyseo-blog ${className ?? ""}`, children: _jsx("div", { className: "earlyseo-blog-empty", children: "Loading articles\u2026" }) }));
39
+ return renderLoading ? (_jsx(_Fragment, { children: renderLoading() })) : (_jsx("div", { className: `earlyseo-blog ${className ?? ""}`, children: _jsxs("div", { className: "earlyseo-blog-empty", style: { display: "flex", flexDirection: "column", alignItems: "center", gap: "12px", padding: "48px 0" }, children: [_jsxs("svg", { width: "48", height: "48", viewBox: "0 0 180 180", fill: "none", style: { animation: "earlyseo-breathe 2.4s cubic-bezier(0.4,0,0.6,1) infinite" }, children: [_jsx("style", { children: `@keyframes earlyseo-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}` }), _jsx("path", { fill: "#EF7C23", d: "M42.364693,133.329758 C41.392796,134.861298 40.597309,136.087784 39.675198,137.509476 C33.533985,121.271591 44.838245,98.811195 62.395020,92.310585 C67.031685,90.593796 72.016808,89.676010 76.918999,88.847237 C88.108727,86.955429 98.445839,83.149803 107.422386,75.957596 C107.678101,76.525269 108.007172,76.954903 107.913162,77.089890 C100.002281,88.449753 97.564629,101.706169 94.278038,114.787346 C88.952194,135.985077 68.215446,147.503052 46.864868,141.367554 C53.176380,126.928833 63.449196,115.961571 75.452477,106.233643 C61.156437,111.084023 50.663979,120.578728 42.364693,133.329758z" }), _jsx("path", { fill: "#EF7C23", d: "M116.639435,62.615288 C110.973541,67.279480 105.671196,71.838364 100.109711,76.055496 C97.151794,78.298409 94.108269,80.078476 89.699669,78.911568 C86.029152,77.940033 81.897018,78.712494 77.969337,78.712494 C77.750496,78.231323 77.531647,77.750153 77.312798,77.268982 C81.188507,72.838776 84.882919,68.227379 89.034821,64.073219 C90.559677,62.547531 93.301308,61.093159 95.255005,61.353573 C101.337776,62.164345 104.368469,58.520615 107.978180,54.716625 C117.535645,44.644783 129.390427,39.418297 143.822952,39.063076 C144.191711,49.553711 141.633926,58.827564 136.400238,67.362144 C134.669617,70.184265 132.694412,72.956390 130.369064,75.291283 C126.507401,79.168808 123.169449,82.654823 123.350258,89.053139 C123.444588,92.391479 120.251602,96.258804 117.687996,99.121048 C114.765625,102.383835 110.890556,104.793320 107.120766,107.821716 C104.641510,95.934128 105.392586,85.618385 113.725861,76.535202 C119.217499,70.549385 123.832985,63.755325 128.772217,57.270947 C129.742523,55.997116 130.398621,54.483955 131.199631,53.081173 C130.860519,52.718716 130.521408,52.356262 130.182297,51.993805 C125.753273,55.451832 121.324257,58.909855 116.639435,62.615288z" })] }), _jsx("span", { style: { fontSize: "0.85rem", opacity: 0.6 }, children: "Loading articles\u2026" })] }) }));
40
40
  }
41
41
  if (error) {
42
42
  return (_jsx("div", { className: `earlyseo-blog ${className ?? ""}`, children: _jsx("div", { className: "earlyseo-blog-empty", children: "Failed to load articles." }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"blog-list.js","sourceRoot":"","sources":["../../src/react/blog-list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blog-list.js","sourceRoot":"","sources":["../../src/react/blog-list.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"blog-post.d.ts","sourceRoot":"","sources":["../../src/react/blog-post.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,SAAS,CAAC;IACjC,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,SAAS,CAAC;IAChC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAcD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,QAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,QAAQ,EACR,QAA2B,GAC5B,EAAE,aAAa,2CAoEf"}
1
+ {"version":3,"file":"blog-post.d.ts","sourceRoot":"","sources":["../../src/react/blog-post.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,SAAS,CAAC;IACjC,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,SAAS,CAAC;IAChC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAcD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,QAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,QAAQ,EACR,QAA2B,GAC5B,EAAE,aAAa,2CA2Ef"}
@@ -27,7 +27,7 @@ export function BlogPost({ slug, className, htmlMode = "styled", renderArticle,
27
27
  const { basePath } = useEarlySeoContext();
28
28
  const { article, loading, error } = useArticle(slug);
29
29
  if (loading) {
30
- return renderLoading ? (_jsx(_Fragment, { children: renderLoading() })) : (_jsx("div", { className: `earlyseo-blog-post ${className ?? ""}`, children: _jsx("div", { className: "earlyseo-blog-empty", children: "Loading article\u2026" }) }));
30
+ return renderLoading ? (_jsx(_Fragment, { children: renderLoading() })) : (_jsx("div", { className: `earlyseo-blog-post ${className ?? ""}`, children: _jsxs("div", { className: "earlyseo-blog-empty", style: { display: "flex", flexDirection: "column", alignItems: "center", gap: "12px", padding: "48px 0" }, children: [_jsxs("svg", { width: "48", height: "48", viewBox: "0 0 180 180", fill: "none", style: { animation: "earlyseo-breathe 2.4s cubic-bezier(0.4,0,0.6,1) infinite" }, children: [_jsx("style", { children: `@keyframes earlyseo-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}` }), _jsx("path", { fill: "#EF7C23", d: "M42.364693,133.329758 C41.392796,134.861298 40.597309,136.087784 39.675198,137.509476 C33.533985,121.271591 44.838245,98.811195 62.395020,92.310585 C67.031685,90.593796 72.016808,89.676010 76.918999,88.847237 C88.108727,86.955429 98.445839,83.149803 107.422386,75.957596 C107.678101,76.525269 108.007172,76.954903 107.913162,77.089890 C100.002281,88.449753 97.564629,101.706169 94.278038,114.787346 C88.952194,135.985077 68.215446,147.503052 46.864868,141.367554 C53.176380,126.928833 63.449196,115.961571 75.452477,106.233643 C61.156437,111.084023 50.663979,120.578728 42.364693,133.329758z" }), _jsx("path", { fill: "#EF7C23", d: "M116.639435,62.615288 C110.973541,67.279480 105.671196,71.838364 100.109711,76.055496 C97.151794,78.298409 94.108269,80.078476 89.699669,78.911568 C86.029152,77.940033 81.897018,78.712494 77.969337,78.712494 C77.750496,78.231323 77.531647,77.750153 77.312798,77.268982 C81.188507,72.838776 84.882919,68.227379 89.034821,64.073219 C90.559677,62.547531 93.301308,61.093159 95.255005,61.353573 C101.337776,62.164345 104.368469,58.520615 107.978180,54.716625 C117.535645,44.644783 129.390427,39.418297 143.822952,39.063076 C144.191711,49.553711 141.633926,58.827564 136.400238,67.362144 C134.669617,70.184265 132.694412,72.956390 130.369064,75.291283 C126.507401,79.168808 123.169449,82.654823 123.350258,89.053139 C123.444588,92.391479 120.251602,96.258804 117.687996,99.121048 C114.765625,102.383835 110.890556,104.793320 107.120766,107.821716 C104.641510,95.934128 105.392586,85.618385 113.725861,76.535202 C119.217499,70.549385 123.832985,63.755325 128.772217,57.270947 C129.742523,55.997116 130.398621,54.483955 131.199631,53.081173 C130.860519,52.718716 130.521408,52.356262 130.182297,51.993805 C125.753273,55.451832 121.324257,58.909855 116.639435,62.615288z" })] }), _jsx("span", { style: { fontSize: "0.85rem", opacity: 0.6 }, children: "Loading article\u2026" })] }) }));
31
31
  }
32
32
  if (error || !article) {
33
33
  return renderNotFound ? (_jsx(_Fragment, { children: renderNotFound() })) : (_jsx("div", { className: `earlyseo-blog-post ${className ?? ""}`, children: _jsxs("div", { className: "earlyseo-blog-empty", children: [_jsx("p", { children: "Article not found." }), _jsx("a", { href: backHref ?? basePath, children: backText })] }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"blog-post.js","sourceRoot":"","sources":["../../src/react/blog-post.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blog-post.js","sourceRoot":"","sources":["../../src/react/blog-post.tsx"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /** Top-level manifest stored at /site/{siteId}/manifest.json */
1
+ /** Top-level site manifest */
2
2
  export interface Manifest {
3
3
  /** Schema version for future migrations */
4
4
  schemaVersion: 1;
@@ -32,7 +32,7 @@ export interface ArticleListItem {
32
32
  /** Article tags */
33
33
  tags: string[];
34
34
  }
35
- /** Paginated list page stored at /site/{siteId}/articles/page-{n}.json */
35
+ /** Paginated list page */
36
36
  export interface ArticleListPage {
37
37
  /** Page number (1-indexed) */
38
38
  page: number;
@@ -45,7 +45,7 @@ export interface ArticleListPage {
45
45
  /** Articles on this page (newest first) */
46
46
  articles: ArticleListItem[];
47
47
  }
48
- /** Full article JSON stored at /site/{siteId}/article/{slug}.json */
48
+ /** Full article JSON */
49
49
  export interface Article {
50
50
  /** Unique article ID (from EarlySEO) */
51
51
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAcA,gEAAgE;AAChE,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,aAAa,EAAE,CAAC,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qEAAqE;AACrE,MAAM,WAAW,OAAO;IACtB,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,+BAA+B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,aAAa,EAAE,CAAC,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,0BAA0B;AAC1B,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,wBAAwB;AACxB,MAAM,WAAW,OAAO;IACtB,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,+BAA+B,CAAC"}
package/dist/types.js CHANGED
@@ -1,14 +1,6 @@
1
1
  // ─────────────────────────────────────────────────────────────────────────────
2
2
  // @earlyseo/blog — Core Types
3
3
  // ─────────────────────────────────────────────────────────────────────────────
4
- // CDN JSON schema for the paginated, versioned article system.
5
- //
6
- // CDN layout:
7
- // /site/{siteId}/manifest.json
8
- // /site/{siteId}/articles/page-1.json
9
- // /site/{siteId}/articles/page-2.json
10
- // /site/{siteId}/article/{slug}.json
11
- // ─────────────────────────────────────────────────────────────────────────────
12
4
  /** Default CDN base URL — the EarlySEO public R2 bucket. */
13
5
  export const DEFAULT_CDN_BASE_URL = "https://media.earlyseo.com";
14
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,cAAc;AACd,iCAAiC;AACjC,wCAAwC;AACxC,wCAAwC;AACxC,uCAAuC;AACvC,gFAAgF;AAwGhF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAwGhF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earlyseo/blog",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Drop-in blog integration for React & Next.js — powered by EarlySEO. Articles are served from EarlySEO's CDN. Just add your site ID and render.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli/init.mjs CHANGED
@@ -28,11 +28,14 @@ function fileExists(relativePath) {
28
28
  return fs.existsSync(path.join(cwd, relativePath));
29
29
  }
30
30
 
31
- function writeFileSafe(relativePath, content) {
31
+ async function writeFileSafe(relativePath, content) {
32
32
  const fullPath = path.join(cwd, relativePath);
33
33
  if (fs.existsSync(fullPath)) {
34
- console.log(` Skipped ${relativePath} (already exists)`);
35
- return false;
34
+ const answer = await ask(` ${relativePath} already exists. Overwrite? (y/N) `);
35
+ if (answer.toLowerCase() !== "y") {
36
+ console.log(` ⏭ Skipped ${relativePath}`);
37
+ return false;
38
+ }
36
39
  }
37
40
  fs.mkdirSync(path.dirname(fullPath), { recursive: true });
38
41
  fs.writeFileSync(fullPath, content, "utf-8");
@@ -149,8 +152,8 @@ async function main() {
149
152
  const listPagePath = `${blogDir}/page.tsx`;
150
153
  const postPagePath = `${blogDir}/[slug]/page.tsx`;
151
154
 
152
- writeFileSafe(listPagePath, blogListPage(siteId));
153
- writeFileSafe(postPagePath, blogPostPage(siteId));
155
+ await writeFileSafe(listPagePath, blogListPage(siteId));
156
+ await writeFileSafe(postPagePath, blogPostPage(siteId));
154
157
 
155
158
  // 6. Add EARLYSEO_SITE_ID to .env.local
156
159
  const envPath = path.join(cwd, ".env.local");