@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 +9 -15
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -9
- package/dist/client.js.map +1 -1
- package/dist/next/blog-post-page.d.ts +1 -1
- package/dist/next/blog-post-page.d.ts.map +1 -1
- package/dist/react/blog-list.d.ts.map +1 -1
- package/dist/react/blog-list.js +1 -1
- package/dist/react/blog-list.js.map +1 -1
- package/dist/react/blog-post.d.ts.map +1 -1
- package/dist/react/blog-post.js +1 -1
- package/dist/react/blog-post.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/init.mjs +8 -5
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
|
|
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
|
-
- **
|
|
10
|
-
- **Paginated** — Pre-built paginated
|
|
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
|
|
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),
|
|
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
|
|
95
|
-
- The individual article
|
|
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
|
-
##
|
|
179
|
+
## Client
|
|
186
180
|
|
|
187
181
|
Use `EarlySeoClient` directly for full control:
|
|
188
182
|
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
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 —
|
|
2
|
+
// @earlyseo/blog — Client
|
|
3
3
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
// Thin read-only client that fetches pre-built
|
|
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
|
|
54
|
+
throw new Error(`EarlySEO fetch error: ${res.status} ${res.statusText} for ${url}`);
|
|
61
55
|
}
|
|
62
56
|
return res.json();
|
|
63
57
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,
|
|
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 |
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/react/blog-list.js
CHANGED
|
@@ -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:
|
|
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":"AAAA,YAAY,CAAC;;AACb,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAChF,oEAAoE;AAEpE,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkB7C,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YAC/C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAkD;IACxF,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,CACL,kBAAS,SAAS,EAAC,oBAAoB,YACrC,aAAG,IAAI,EAAE,IAAI,aACV,OAAO,CAAC,QAAQ,IAAI,CACnB,cACE,SAAS,EAAC,0BAA0B,EACpC,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,GAAG,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,EACtC,OAAO,EAAC,MAAM,GACd,CACH,EACD,eAAK,SAAS,EAAC,yBAAyB,aACtC,aAAI,SAAS,EAAC,0BAA0B,YAAE,OAAO,CAAC,KAAK,GAAM,EAC5D,OAAO,CAAC,eAAe,IAAI,CAC1B,YAAG,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,eAAe,GAAK,CACrE,EACD,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,QAAQ,EAAE,OAAO,CAAC,SAAS,YAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAQ,EACxE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACrC,eAAgB,SAAS,EAAC,mBAAmB,YAC1C,GAAG,IADK,GAAG,CAEP,CACR,CAAC,IACE,IACF,IACJ,GACI,CACX,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,WAAW,GAAG,CAAC,EACf,KAAK,GAAG,MAAM,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,GACC;IACd,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAC3E,WAAW,CAAC,WAAW,CAAC,CAAC;IAE3B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,aAAa,CAAC,CAAC,CAAC,CACrB,4BAAG,aAAa,EAAE,GAAI,CACvB,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAE,iBAAiB,SAAS,IAAI,EAAE,EAAE,YAChD,
|
|
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,
|
|
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"}
|
package/dist/react/blog-post.js
CHANGED
|
@@ -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:
|
|
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":"AAAA,YAAY,CAAC;;AAOb,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0B3C,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YAC/C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,QAAQ,EACR,QAAQ,GAAG,gBAAgB,GACb;IACd,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,aAAa,CAAC,CAAC,CAAC,CACrB,4BAAG,aAAa,EAAE,GAAI,CACvB,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAE,sBAAsB,SAAS,IAAI,EAAE,EAAE,YACrD,
|
|
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
|
|
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
|
|
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
|
|
48
|
+
/** Full article JSON */
|
|
49
49
|
export interface Article {
|
|
50
50
|
/** Unique article ID (from EarlySEO) */
|
|
51
51
|
id: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
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;
|
|
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
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
|
-
|
|
35
|
-
|
|
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");
|