@earlyseo/blog 1.0.1 → 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/LICENSE ADDED
@@ -0,0 +1,111 @@
1
+ EarlySEO SaaS Commercial License (Version 1.0)
2
+
3
+ Copyright (c) 2026 EarlySEO
4
+ All rights reserved.
5
+
6
+ DEFINITIONS
7
+ "Software" means the source code, object code, binaries, documentation, data
8
+ files, and any updates or modifications provided by EarlySEO.
9
+
10
+ "Licensee" means you or the entity on whose behalf you accept this License.
11
+
12
+ "Free Trial Period" means the initial period specified in your account
13
+ (typically 14 days), during which you may use the Software at no charge for
14
+ evaluation purposes.
15
+
16
+ "Commercial Use" means use of the Software for business purposes, whether or
17
+ not you receive compensation. This includes use as part of a SaaS offering,
18
+ API service, commercial product, or any revenue-generating application.
19
+
20
+ GRANT OF LICENSE
21
+ Subject to the terms and conditions of this License, EarlySEO grants you a
22
+ limited, non-exclusive, non-transferable license to:
23
+
24
+ 1. Use and run the Software for Commercial Use.
25
+ 2. Integrate the Software into your products and services.
26
+ 3. Use the Software during the Free Trial Period at no cost.
27
+ 4. Continue using the Software after the Free Trial Period, subject to
28
+ payment of applicable subscription fees.
29
+
30
+ FREE TRIAL TERMS
31
+ - The Free Trial Period begins upon first access and expires at the end of
32
+ the specified trial duration.
33
+ - During the Free Trial Period, you may use the Software without charge for
34
+ commercial evaluation.
35
+ - At the end of the Free Trial Period, you must subscribe to a paid plan to
36
+ continue using the Software. No data will be deleted during or immediately
37
+ after the Free Trial Period, but access may be restricted until a valid
38
+ subscription is active.
39
+ - One Free Trial Period per entity is permitted unless otherwise agreed in
40
+ writing.
41
+
42
+ PERMITTED USES
43
+ - Integrate and use the Software in your SaaS platform or products.
44
+ - Make internal copies for backup and archival purposes.
45
+ - Use the Software to provide services to your end customers.
46
+ - Sublicense the Software to your end-users under the restrictions in this
47
+ License, provided they are bound by the same restrictions.
48
+
49
+ PROHIBITED USES
50
+ - You may not reverse engineer, decompile, disassemble, or attempt to derive
51
+ the source code of the Software, except to the extent required by applicable
52
+ law.
53
+ - You may not remove, obscure, or alter any copyright, patent, trademark,
54
+ license notices, or other proprietary notices in the Software.
55
+ - You may not redistribute the Software's source code as a standalone product
56
+ or service.
57
+ - You may not use the Software to develop competing products or services
58
+ without a separate written agreement.
59
+ - You may not rent, lease, sell, sublicense, or distribute the Software
60
+ separately without authorization.
61
+
62
+ USAGE RESTRICTIONS
63
+ - The Software is licensed as-is for your business needs. Usage limits,
64
+ query rates, and feature tiers are defined in your subscription plan.
65
+ - Exceeding defined usage limits may result in service suspension.
66
+
67
+ INTELLECTUAL PROPERTY
68
+ EarlySEO retains all ownership, title, and intellectual property rights in
69
+ the Software. You acquire no ownership rights, only a limited license to use.
70
+ Trademarks, logos, and brand names are the exclusive property of EarlySEO.
71
+
72
+ FEES AND PAYMENT
73
+ Subscription fees are due according to your selected plan. Failure to pay may
74
+ result in suspension or termination of service. You are responsible for all
75
+ applicable taxes.
76
+
77
+ TERMINATION
78
+ - This License remains in effect until terminated.
79
+ - EarlySEO may terminate this License immediately if you violate any material
80
+ term of this License.
81
+ - Upon termination, you must cease use of the Software and delete all copies
82
+ in your possession.
83
+ - Sections on Intellectual Property, Limitation of Liability, and Indemnity
84
+ survive termination.
85
+
86
+ DISCLAIMER OF WARRANTIES
87
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
88
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
89
+ FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
90
+
91
+ LIMITATION OF LIABILITY
92
+ TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EARLYSEO
93
+ BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE
94
+ DAMAGES, OR LOSS OF PROFITS, DATA, OR REVENUE, REGARDLESS OF THE FORM OF
95
+ ACTION OR ON ANY THEORY OF LIABILITY, EVEN IF ADVISED OF THE POSSIBILITY OF
96
+ SUCH DAMAGES.
97
+
98
+ INDEMNIFICATION
99
+ You agree to indemnify, defend, and hold harmless EarlySEO from any third-party
100
+ claims arising from your use of the Software or violation of this License.
101
+
102
+ GOVERNING LAW
103
+ This License shall be governed by and construed under the laws of the
104
+ jurisdiction in which EarlySEO is incorporated, without regard to conflict of
105
+ law principles.
106
+
107
+ CONTACT & SUPPORT
108
+ For licensing inquiries, support, or to modify your plan:
109
+ Email: team@earlyseo.com
110
+ Website: https://earlyseo.com
111
+ Documentation: https://docs.earlyseo.com
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
 
@@ -301,4 +295,4 @@ interface Article {
301
295
 
302
296
  ## License
303
297
 
304
- MIT
298
+ Proprietary — see [LICENSE](./LICENSE) for details.
@@ -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.1",
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": {
@@ -34,6 +34,7 @@
34
34
  "files": [
35
35
  "dist",
36
36
  "src/cli",
37
+ "LICENSE",
37
38
  "README.md"
38
39
  ],
39
40
  "keywords": [
@@ -47,7 +48,7 @@
47
48
  "blog-engine",
48
49
  "cdn"
49
50
  ],
50
- "license": "MIT",
51
+ "license": "SEE LICENSE IN LICENSE",
51
52
  "peerDependencies": {
52
53
  "react": ">=18.0.0",
53
54
  "react-dom": ">=18.0.0",
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");