polen 0.10.0-next.12 → 0.10.0-next.14
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/build/api/vite/plugins/build.d.ts.map +1 -1
- package/build/api/vite/plugins/build.js +11 -3
- package/build/api/vite/plugins/build.js.map +1 -1
- package/build/api/vite/plugins/core.d.ts.map +1 -1
- package/build/api/vite/plugins/core.js +12 -10
- package/build/api/vite/plugins/core.js.map +1 -1
- package/build/api/vite/plugins/pages.d.ts.map +1 -1
- package/build/api/vite/plugins/pages.js +6 -7
- package/build/api/vite/plugins/pages.js.map +1 -1
- package/build/api/vite/plugins/serve.d.ts.map +1 -1
- package/build/api/vite/plugins/serve.js +47 -7
- package/build/api/vite/plugins/serve.js.map +1 -1
- package/build/lib/file-router/diagnostic-reporter.js +2 -2
- package/build/lib/file-router/diagnostic-reporter.js.map +1 -1
- package/build/lib/graphql-document/components/CopyButton.d.ts +19 -0
- package/build/lib/graphql-document/components/CopyButton.d.ts.map +1 -0
- package/build/lib/graphql-document/components/CopyButton.js +43 -0
- package/build/lib/graphql-document/components/CopyButton.js.map +1 -0
- package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -4
- package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +1 -1
- package/build/lib/graphql-document/components/GraphQLDocument.js +52 -83
- package/build/lib/graphql-document/components/GraphQLDocument.js.map +1 -1
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +33 -0
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +1 -0
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +48 -0
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +1 -0
- package/build/lib/graphql-document/components/IdentifierLink.d.ts +15 -13
- package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +1 -1
- package/build/lib/graphql-document/components/IdentifierLink.js +51 -117
- package/build/lib/graphql-document/components/IdentifierLink.js.map +1 -1
- package/build/lib/graphql-document/components/graphql-document-styles.d.ts +5 -0
- package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +1 -0
- package/build/lib/graphql-document/components/graphql-document-styles.js +167 -0
- package/build/lib/graphql-document/components/graphql-document-styles.js.map +1 -0
- package/build/lib/graphql-document/components/index.d.ts +2 -1
- package/build/lib/graphql-document/components/index.d.ts.map +1 -1
- package/build/lib/graphql-document/components/index.js +2 -1
- package/build/lib/graphql-document/components/index.js.map +1 -1
- package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +43 -0
- package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +1 -0
- package/build/lib/graphql-document/hooks/use-tooltip-state.js +132 -0
- package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +1 -0
- package/build/lib/graphql-document/positioning-simple.d.ts +0 -5
- package/build/lib/graphql-document/positioning-simple.d.ts.map +1 -1
- package/build/lib/graphql-document/positioning-simple.js +78 -90
- package/build/lib/graphql-document/positioning-simple.js.map +1 -1
- package/build/lib/kit-temp.d.ts +103 -0
- package/build/lib/kit-temp.d.ts.map +1 -1
- package/build/lib/kit-temp.js +236 -2
- package/build/lib/kit-temp.js.map +1 -1
- package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts +1 -8
- package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts.map +1 -1
- package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js +48 -53
- package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js.map +1 -1
- package/build/package-paths.js +3 -3
- package/build/package-paths.js.map +1 -1
- package/build/template/components/Link.d.ts +1 -1
- package/build/template/components/Link.d.ts.map +1 -1
- package/build/template/components/Link.js +14 -5
- package/build/template/components/Link.js.map +1 -1
- package/build/template/components/content/GraphQLDocumentWithSchema.d.ts.map +1 -1
- package/build/template/components/content/GraphQLDocumentWithSchema.js +0 -3
- package/build/template/components/content/GraphQLDocumentWithSchema.js.map +1 -1
- package/build/template/components/content/GraphQLDocumentWrapper.d.ts.map +1 -1
- package/build/template/components/content/GraphQLDocumentWrapper.js +8 -7
- package/build/template/components/content/GraphQLDocumentWrapper.js.map +1 -1
- package/build/template/components/sidebar/SidebarItem.js +2 -2
- package/build/template/entry.client.d.ts.map +1 -1
- package/build/template/entry.client.js +0 -3
- package/build/template/entry.client.js.map +1 -1
- package/build/template/hooks/useClientOnly.d.ts +9 -0
- package/build/template/hooks/useClientOnly.d.ts.map +1 -0
- package/build/template/hooks/useClientOnly.js +16 -0
- package/build/template/hooks/useClientOnly.js.map +1 -0
- package/build/template/routes/root.d.ts.map +1 -1
- package/build/template/routes/root.js +2 -150
- package/build/template/routes/root.js.map +1 -1
- package/build/template/server/app.d.ts +8 -1
- package/build/template/server/app.d.ts.map +1 -1
- package/build/template/server/app.js +21 -21
- package/build/template/server/app.js.map +1 -1
- package/build/template/server/create-page-html-response.d.ts +7 -0
- package/build/template/server/create-page-html-response.d.ts.map +1 -0
- package/build/template/server/{render-page.js → create-page-html-response.js} +11 -16
- package/build/template/server/create-page-html-response.js.map +1 -0
- package/build/template/server/main.js +2 -1
- package/build/template/server/main.js.map +1 -1
- package/build/template/server/middleware/page.d.ts +4 -0
- package/build/template/server/middleware/page.d.ts.map +1 -0
- package/build/template/server/middleware/page.js +15 -0
- package/build/template/server/middleware/page.js.map +1 -0
- package/build/template/server/middleware/unsupported-assets.d.ts +10 -0
- package/build/template/server/middleware/unsupported-assets.d.ts.map +1 -0
- package/build/template/server/middleware/unsupported-assets.js +21 -0
- package/build/template/server/middleware/unsupported-assets.js.map +1 -0
- package/build/template/server/ssg/generate.d.ts.map +1 -1
- package/build/template/server/ssg/generate.js +33 -34
- package/build/template/server/ssg/generate.js.map +1 -1
- package/build/template/styles/code-block.css +218 -0
- package/package.json +4 -2
- package/src/api/singletons/markdown/markdown.test.ts +1 -1
- package/src/api/vite/plugins/build.ts +97 -89
- package/src/api/vite/plugins/core.ts +15 -10
- package/src/api/vite/plugins/pages.ts +9 -7
- package/src/api/vite/plugins/serve.ts +62 -9
- package/src/lib/file-router/diagnostic-reporter.ts +2 -2
- package/src/lib/graphql-document/components/CopyButton.tsx +76 -0
- package/src/lib/graphql-document/components/GraphQLDocument.tsx +73 -95
- package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +197 -0
- package/src/lib/graphql-document/components/IdentifierLink.tsx +105 -166
- package/src/lib/graphql-document/components/graphql-document-styles.ts +167 -0
- package/src/lib/graphql-document/components/index.ts +2 -1
- package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +76 -0
- package/src/lib/graphql-document/hooks/use-tooltip-state.ts +191 -0
- package/src/lib/graphql-document/positioning-simple.test.ts +18 -22
- package/src/lib/graphql-document/positioning-simple.ts +97 -108
- package/src/lib/kit-temp.test.ts +15 -3
- package/src/lib/kit-temp.ts +304 -4
- package/src/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.ts +52 -58
- package/src/package-paths.ts +3 -3
- package/src/template/components/Link.tsx +20 -12
- package/src/template/components/content/GraphQLDocumentWithSchema.tsx +0 -5
- package/src/template/components/content/GraphQLDocumentWrapper.tsx +14 -7
- package/src/template/components/sidebar/SidebarItem.tsx +2 -2
- package/src/template/entry.client.tsx +0 -3
- package/src/template/hooks/useClientOnly.ts +21 -0
- package/src/template/routes/root.tsx +0 -159
- package/src/template/server/app.ts +33 -23
- package/src/template/server/{render-page.tsx → create-page-html-response.ts} +19 -16
- package/src/template/server/main.ts +2 -1
- package/src/template/server/middleware/page.ts +19 -0
- package/src/template/server/middleware/unsupported-assets.ts +25 -0
- package/src/template/server/ssg/generate.ts +68 -72
- package/build/lib/graphql-document/components/HoverTooltip.d.ts +0 -35
- package/build/lib/graphql-document/components/HoverTooltip.d.ts.map +0 -1
- package/build/lib/graphql-document/components/HoverTooltip.js +0 -132
- package/build/lib/graphql-document/components/HoverTooltip.js.map +0 -1
- package/build/template/server/render-page.d.ts +0 -3
- package/build/template/server/render-page.d.ts.map +0 -1
- package/build/template/server/render-page.js.map +0 -1
- package/src/lib/graphql-document/components/HoverTooltip.tsx +0 -282
@@ -1,32 +1,27 @@
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
2
1
|
import { reportError } from '#api/server/report-error';
|
2
|
+
import { React } from '#dep/react/index';
|
3
3
|
import { ResponseInternalServerError } from '#lib/kit-temp';
|
4
4
|
import { Arr } from '@wollybeard/kit';
|
5
|
-
import { StrictMode } from 'react';
|
6
5
|
import * as ReactDomServer from 'react-dom/server';
|
7
6
|
import { createStaticRouter, StaticRouterProvider } from 'react-router';
|
8
|
-
import PROJECT_DATA from 'virtual:polen/project/data.jsonsuper';
|
9
|
-
import viteClientAssetManifest from 'virtual:polen/vite/client/manifest';
|
10
|
-
import { injectManifestIntoHtml } from "./manifest.js";
|
11
7
|
import { view } from "./view.js";
|
12
|
-
export const
|
8
|
+
export const createPageHtmlResponse = async (staticHandlerContext, hooks) => {
|
13
9
|
const router = createStaticRouter(view.dataRoutes, staticHandlerContext);
|
14
10
|
let html = ``;
|
15
11
|
try {
|
16
|
-
html = ReactDomServer.renderToString(
|
12
|
+
html = ReactDomServer.renderToString(React.createElement(React.StrictMode, null, React.createElement(StaticRouterProvider, {
|
13
|
+
router,
|
14
|
+
context: staticHandlerContext,
|
15
|
+
})));
|
17
16
|
}
|
18
17
|
catch (cause) {
|
19
18
|
reportError(new Error(`Failed to server side render the HTML`, { cause }));
|
20
19
|
return ResponseInternalServerError();
|
21
20
|
}
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
if (import.meta.env.DEV) {
|
27
|
-
// const env = ctx.env as { viteDevServer: Vite.ViteDevServer }
|
28
|
-
// html = await env.viteDevServer.transformIndexHtml(ctx.req.url, html)
|
29
|
-
// await env.viteDevServer.transformIndexHtml(ctx.req.url, html)
|
21
|
+
// Create the full HTML document
|
22
|
+
// Apply HTML transformation hook to the full document
|
23
|
+
if (hooks?.transformHtml) {
|
24
|
+
html = await hooks.transformHtml(html);
|
30
25
|
}
|
31
26
|
const headers = getRouteHeaders(staticHandlerContext);
|
32
27
|
headers.set(`Content-Type`, `text/html; charset=utf-8`);
|
@@ -63,4 +58,4 @@ const getRouteHeaders = (context) => {
|
|
63
58
|
}
|
64
59
|
return headers;
|
65
60
|
};
|
66
|
-
//# sourceMappingURL=
|
61
|
+
//# sourceMappingURL=create-page-html-response.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create-page-html-response.js","sourceRoot":"","sources":["../../../src/template/server/create-page-html-response.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { serve } from '@hono/node-server'; // TODO: support non-node platforms.
|
2
2
|
import { neverCase } from '@wollybeard/kit/language';
|
3
|
-
import {
|
3
|
+
import { createApp } from "./app.js";
|
4
4
|
import { generate } from "./ssg/generate.js";
|
5
5
|
import { view } from "./view.js";
|
6
6
|
if (__BUILDING__) {
|
@@ -10,6 +10,7 @@ if (__BUILDING__) {
|
|
10
10
|
break;
|
11
11
|
case `ssr`:
|
12
12
|
const port = process.env[`PORT`] ? parseInt(process.env[`PORT`]) : 3001; // todo viteConfigResolved.server.port + 1
|
13
|
+
const app = createApp();
|
13
14
|
serve({ fetch: app.fetch, port });
|
14
15
|
break;
|
15
16
|
case `spa`:
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/template/server/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA,CAAC,oCAAoC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/template/server/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA,CAAC,oCAAoC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,IAAI,YAAY,EAAE,CAAC;IACjB,QAAQ,sBAAsB,EAAE,CAAC;QAC/B,KAAK,KAAK;YACR,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;YACpB,MAAK;QACP,KAAK,KAAK;YACR,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,CAAC,0CAA0C;YAClH,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;YACvB,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACjC,MAAK;QACP,KAAK,KAAK;YACR,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD;YACE,SAAS,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;AACH,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../src/template/server/middleware/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAIhD,eAAO,MAAM,cAAc,GAAI,cAAc,eAAe,EAAE,MAC9C,KAAK,IAAI,CAAC,OAAO,sBAWhC,CAAA"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { asyncReduceWith } from '#lib/kit-temp';
|
2
|
+
import { createPageHtmlResponse } from "../create-page-html-response.js";
|
3
|
+
import { view } from "../view.js";
|
4
|
+
export const PageMiddleware = (transformers) => {
|
5
|
+
return async (ctx) => {
|
6
|
+
const staticHandlerContext = await view.query(ctx.req.raw);
|
7
|
+
if (staticHandlerContext instanceof Response) {
|
8
|
+
return staticHandlerContext;
|
9
|
+
}
|
10
|
+
return createPageHtmlResponse(staticHandlerContext, {
|
11
|
+
transformHtml: asyncReduceWith(transformers, ctx),
|
12
|
+
});
|
13
|
+
};
|
14
|
+
};
|
15
|
+
//# sourceMappingURL=page.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/template/server/middleware/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAA+B,EAAE,EAAE;IAChE,OAAO,KAAK,EAAE,GAAiB,EAAE,EAAE;QACjC,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE1D,IAAI,oBAAoB,YAAY,QAAQ,EAAE,CAAC;YAC7C,OAAO,oBAAoB,CAAA;QAC7B,CAAC;QAED,OAAO,sBAAsB,CAAC,oBAAoB,EAAE;YAClD,aAAa,EAAE,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC;SAClD,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import type { Hono } from '#dep/hono/index';
|
2
|
+
/**
|
3
|
+
* Temporary middleware to block unsupported asset requests
|
4
|
+
*
|
5
|
+
* TODO: Polen should eventually support favicon and apple-touch-icon generation
|
6
|
+
* For now, we return 404 immediately to prevent these requests from reaching
|
7
|
+
* React Router and causing unnecessary processing or errors.
|
8
|
+
*/
|
9
|
+
export declare const UnsupportedAssetsMiddleware: () => Hono.MiddlewareHandler;
|
10
|
+
//# sourceMappingURL=unsupported-assets.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"unsupported-assets.d.ts","sourceRoot":"","sources":["../../../../src/template/server/middleware/unsupported-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK3C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QAAO,IAAI,CAAC,iBAYnD,CAAA"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { AppleTouchIcon } from '#lib/apple-touch-icon/index';
|
2
|
+
import { Favicon } from '#lib/favicon/index';
|
3
|
+
import { Http } from '@wollybeard/kit';
|
4
|
+
/**
|
5
|
+
* Temporary middleware to block unsupported asset requests
|
6
|
+
*
|
7
|
+
* TODO: Polen should eventually support favicon and apple-touch-icon generation
|
8
|
+
* For now, we return 404 immediately to prevent these requests from reaching
|
9
|
+
* React Router and causing unnecessary processing or errors.
|
10
|
+
*/
|
11
|
+
export const UnsupportedAssetsMiddleware = () => {
|
12
|
+
return async (ctx, next) => {
|
13
|
+
// Block these asset requests until Polen supports them
|
14
|
+
if (Favicon.fileNamePattern.test(ctx.req.path)
|
15
|
+
|| AppleTouchIcon.fileNamePattern.test(ctx.req.path)) {
|
16
|
+
return Http.Response.notFound;
|
17
|
+
}
|
18
|
+
await next();
|
19
|
+
};
|
20
|
+
};
|
21
|
+
//# sourceMappingURL=unsupported-assets.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"unsupported-assets.js","sourceRoot":"","sources":["../../../../src/template/server/middleware/unsupported-assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAA2B,EAAE;IACtE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,uDAAuD;QACvD,IACE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;eACvC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EACpD,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;QAC/B,CAAC;QAED,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/template/server/ssg/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/template/server/ssg/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAU1D,eAAO,MAAM,QAAQ,GAAU,MAAM,WAAW,CAAC,aAAa,kBA+E7D,CAAA"}
|
@@ -1,37 +1,21 @@
|
|
1
1
|
import { Hono } from '#dep/hono/index';
|
2
|
-
import {
|
2
|
+
import { asyncParallel, chunk } from '#lib/kit-temp';
|
3
|
+
import { debugPolen } from '#singletons/debug';
|
3
4
|
import * as NodeFs from 'node:fs/promises';
|
4
5
|
import PROJECT_DATA from 'virtual:polen/project/data.jsonsuper';
|
5
|
-
import
|
6
|
+
import viteClientAssetManifest from 'virtual:polen/vite/client/manifest';
|
7
|
+
import { createPageHtmlResponse } from "../create-page-html-response.js";
|
8
|
+
import { injectManifestIntoHtml } from "../manifest.js";
|
6
9
|
import { getRoutesPaths } from "./get-route-paths.js";
|
7
10
|
export const generate = async (view) => {
|
8
|
-
const
|
9
|
-
// For SSG, we need to create a request with the base path prepended
|
10
|
-
// so React Router can match it correctly
|
11
|
-
const url = new URL(ctx.req.raw.url);
|
12
|
-
const basePath = PROJECT_DATA.basePath === '/' ? '' : PROJECT_DATA.basePath.slice(0, -1);
|
13
|
-
// Create a new request with the base path prepended to the pathname
|
14
|
-
const modifiedRequest = new Request(`${url.protocol}//${url.host}${basePath}${url.pathname}${url.search}`, {
|
15
|
-
method: ctx.req.raw.method,
|
16
|
-
headers: ctx.req.raw.headers,
|
17
|
-
body: ctx.req.raw.body,
|
18
|
-
});
|
19
|
-
const staticHandlerContext = await view.query(modifiedRequest);
|
20
|
-
if (staticHandlerContext instanceof Response) {
|
21
|
-
return staticHandlerContext;
|
22
|
-
}
|
23
|
-
return renderPage(staticHandlerContext);
|
24
|
-
};
|
11
|
+
const debug = debugPolen.sub(`ssg`);
|
25
12
|
const routePaths = getRoutesPaths();
|
26
|
-
for (const routePath of routePaths) {
|
27
|
-
app.get(routePath, handler);
|
28
|
-
}
|
29
|
-
// For large schemas, we need to process in smaller batches to avoid memory issues
|
30
|
-
const BATCH_SIZE = 50;
|
31
13
|
const totalPaths = routePaths.length;
|
32
|
-
|
33
|
-
|
34
|
-
|
14
|
+
debug(`start`, { totalPaths });
|
15
|
+
// Process routes in batches using the new utilities
|
16
|
+
const batchSize = 50;
|
17
|
+
const batches = chunk(routePaths, batchSize);
|
18
|
+
const result = await asyncParallel(batches, async (batchPaths, batchIndex) => {
|
35
19
|
const batchApp = new Hono.Hono();
|
36
20
|
// Create a custom handler for batch processing that includes base path handling
|
37
21
|
const batchHandler = async (ctx) => {
|
@@ -48,23 +32,38 @@ export const generate = async (view) => {
|
|
48
32
|
if (staticHandlerContext instanceof Response) {
|
49
33
|
return staticHandlerContext;
|
50
34
|
}
|
51
|
-
|
35
|
+
// SSG uses manifest-based transformation directly
|
36
|
+
const transformHtml = (html) => {
|
37
|
+
return injectManifestIntoHtml(html, viteClientAssetManifest, PROJECT_DATA.basePath);
|
38
|
+
};
|
39
|
+
return createPageHtmlResponse(staticHandlerContext, { transformHtml });
|
52
40
|
};
|
53
41
|
// Register only the routes for this batch
|
54
42
|
for (const routePath of batchPaths) {
|
55
43
|
batchApp.get(routePath, batchHandler);
|
56
44
|
}
|
57
|
-
|
58
|
-
|
45
|
+
debug(`batch:start`, {
|
46
|
+
batchIndex: batchIndex + 1,
|
47
|
+
totalBatches: batches.length,
|
48
|
+
pagesInBatch: batchPaths.length,
|
49
|
+
});
|
50
|
+
const ssgResult = await Hono.SSG.toSSG(batchApp, NodeFs, {
|
59
51
|
concurrency: 5, // Reduced concurrency for memory efficiency
|
60
52
|
dir: PROJECT_DATA.paths.relative.build.root,
|
61
53
|
});
|
62
|
-
if (!
|
63
|
-
throw new Error(`Failed to generate static site at batch ${
|
64
|
-
cause:
|
54
|
+
if (!ssgResult.success) {
|
55
|
+
throw new Error(`Failed to generate static site at batch ${batchIndex + 1}`, {
|
56
|
+
cause: ssgResult.error,
|
65
57
|
});
|
66
58
|
}
|
59
|
+
return ssgResult;
|
60
|
+
}, {
|
61
|
+
concurrency: 1, // Process batches sequentially to avoid memory issues
|
62
|
+
failFast: true, // Stop on first batch failure
|
63
|
+
});
|
64
|
+
if (!result.success) {
|
65
|
+
throw new Error(`SSG generation failed`, { cause: result.errors[0] });
|
67
66
|
}
|
68
|
-
|
67
|
+
debug(`complete`, { totalPaths });
|
69
68
|
};
|
70
69
|
//# sourceMappingURL=generate.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/template/server/ssg/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/template/server/ssg/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,uBAAuB,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAkC,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAA+B,EAAE,EAAE;IAChE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;IACpC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAE9B,oDAAoD;IACpD,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,OAAO,EACP,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;QAEhC,gFAAgF;QAChF,MAAM,YAAY,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/C,oEAAoE;YACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAExF,oEAAoE;YACpE,MAAM,eAAe,GAAG,IAAI,OAAO,CACjC,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EACrE;gBACE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;gBAC1B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;gBAC5B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;aACvB,CACF,CAAA;YAED,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAC9D,IAAI,oBAAoB,YAAY,QAAQ,EAAE,CAAC;gBAC7C,OAAO,oBAAoB,CAAA;YAC7B,CAAC;YAED,kDAAkD;YAClD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;gBACrC,OAAO,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;YACrF,CAAC,CAAA;YACD,OAAO,sBAAsB,CAAC,oBAAoB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAA;QACxE,CAAC,CAAA;QAED,0CAA0C;QAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,CAAC,aAAa,EAAE;YACnB,UAAU,EAAE,UAAU,GAAG,CAAC;YAC1B,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,YAAY,EAAE,UAAU,CAAC,MAAM;SAChC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE;YACvD,WAAW,EAAE,CAAC,EAAE,4CAA4C;YAC5D,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;SAC5C,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,GAAG,CAAC,EAAE,EAAE;gBAC3E,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC,EACD;QACE,WAAW,EAAE,CAAC,EAAE,sDAAsD;QACtE,QAAQ,EAAE,IAAI,EAAE,8BAA8B;KAC/C,CACF,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;AACnC,CAAC,CAAA"}
|
@@ -0,0 +1,218 @@
|
|
1
|
+
/* Code Block Styles */
|
2
|
+
|
3
|
+
/* Base code block container */
|
4
|
+
.code-block {
|
5
|
+
position: relative;
|
6
|
+
margin: 1rem 0;
|
7
|
+
border-radius: 8px;
|
8
|
+
overflow: hidden;
|
9
|
+
font-size: 14px;
|
10
|
+
line-height: 1.6;
|
11
|
+
}
|
12
|
+
|
13
|
+
.code-block pre {
|
14
|
+
margin: 0;
|
15
|
+
padding: 1rem;
|
16
|
+
overflow-x: auto;
|
17
|
+
background: inherit;
|
18
|
+
}
|
19
|
+
|
20
|
+
.code-block code {
|
21
|
+
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
|
22
|
+
font-variant-ligatures: contextual;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* Shiki theme switching with CSS variables */
|
26
|
+
/* Default to light theme */
|
27
|
+
:root {
|
28
|
+
color-scheme: light;
|
29
|
+
}
|
30
|
+
|
31
|
+
/* When dark mode is active */
|
32
|
+
.dark {
|
33
|
+
color-scheme: dark;
|
34
|
+
}
|
35
|
+
|
36
|
+
/* Shiki token colors for light theme (github-light) */
|
37
|
+
:root {
|
38
|
+
--shiki-color-text: #24292e;
|
39
|
+
--shiki-color-background: #f6f8fa;
|
40
|
+
--shiki-token-constant: #005cc5;
|
41
|
+
--shiki-token-string: #032f62;
|
42
|
+
--shiki-token-comment: #6a737d;
|
43
|
+
--shiki-token-keyword: #d73a49;
|
44
|
+
--shiki-token-parameter: #e36209;
|
45
|
+
--shiki-token-function: #6f42c1;
|
46
|
+
--shiki-token-string-expression: #032f62;
|
47
|
+
--shiki-token-punctuation: #24292e;
|
48
|
+
--shiki-token-link: #032f62;
|
49
|
+
}
|
50
|
+
|
51
|
+
/* Shiki token colors for dark theme (tokyo-night) */
|
52
|
+
.dark {
|
53
|
+
--shiki-color-text: #c0caf5;
|
54
|
+
--shiki-color-background: #1a1b26;
|
55
|
+
--shiki-token-constant: #ff9e64;
|
56
|
+
--shiki-token-string: #9ece6a;
|
57
|
+
--shiki-token-comment: #565f89;
|
58
|
+
--shiki-token-keyword: #bb9af7;
|
59
|
+
--shiki-token-parameter: #e0af68;
|
60
|
+
--shiki-token-function: #7aa2f7;
|
61
|
+
--shiki-token-string-expression: #9ece6a;
|
62
|
+
--shiki-token-punctuation: #c0caf5;
|
63
|
+
--shiki-token-link: #9ece6a;
|
64
|
+
}
|
65
|
+
|
66
|
+
/* Shiki code blocks */
|
67
|
+
pre.shiki {
|
68
|
+
margin: 1rem 0;
|
69
|
+
padding: 1rem;
|
70
|
+
border-radius: 8px;
|
71
|
+
overflow-x: auto;
|
72
|
+
font-size: 14px;
|
73
|
+
line-height: 1.6;
|
74
|
+
background-color: var(--shiki-color-background);
|
75
|
+
color: var(--shiki-color-text);
|
76
|
+
}
|
77
|
+
|
78
|
+
pre.shiki code {
|
79
|
+
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
|
80
|
+
font-variant-ligatures: contextual;
|
81
|
+
}
|
82
|
+
|
83
|
+
/* Line numbers */
|
84
|
+
.code-block[data-line-numbers="true"] pre {
|
85
|
+
padding-left: 3.5rem;
|
86
|
+
position: relative;
|
87
|
+
}
|
88
|
+
|
89
|
+
.code-block[data-line-numbers="true"] .line {
|
90
|
+
position: relative;
|
91
|
+
}
|
92
|
+
|
93
|
+
.code-block[data-line-numbers="true"] .line::before {
|
94
|
+
content: attr(data-line);
|
95
|
+
position: absolute;
|
96
|
+
left: -3rem;
|
97
|
+
width: 2.5rem;
|
98
|
+
text-align: right;
|
99
|
+
color: var(--gray-a6);
|
100
|
+
user-select: none;
|
101
|
+
}
|
102
|
+
|
103
|
+
/* Line highlighting */
|
104
|
+
.code-block .line[data-highlighted="true"] {
|
105
|
+
background-color: var(--amber-a3);
|
106
|
+
display: block;
|
107
|
+
margin: 0 -1rem;
|
108
|
+
padding: 0 1rem;
|
109
|
+
}
|
110
|
+
|
111
|
+
/* Diff lines */
|
112
|
+
.code-block .line[data-diff="+"] {
|
113
|
+
background-color: var(--green-a3);
|
114
|
+
display: block;
|
115
|
+
margin: 0 -1rem;
|
116
|
+
padding: 0 1rem;
|
117
|
+
}
|
118
|
+
|
119
|
+
.code-block .line[data-diff="-"] {
|
120
|
+
background-color: var(--red-a3);
|
121
|
+
display: block;
|
122
|
+
margin: 0 -1rem;
|
123
|
+
padding: 0 1rem;
|
124
|
+
}
|
125
|
+
|
126
|
+
.code-block .line[data-diff="+"]::before {
|
127
|
+
content: "+ ";
|
128
|
+
color: var(--green-11);
|
129
|
+
font-weight: bold;
|
130
|
+
}
|
131
|
+
|
132
|
+
.code-block .line[data-diff="-"]::before {
|
133
|
+
content: "- ";
|
134
|
+
color: var(--red-11);
|
135
|
+
font-weight: bold;
|
136
|
+
}
|
137
|
+
|
138
|
+
/* Focus lines */
|
139
|
+
.code-block .line:not([data-focus="true"]) {
|
140
|
+
opacity: 0.5;
|
141
|
+
filter: grayscale(100%);
|
142
|
+
transition: opacity 0.2s, filter 0.2s;
|
143
|
+
}
|
144
|
+
|
145
|
+
.code-block:hover .line:not([data-focus="true"]) {
|
146
|
+
opacity: 0.8;
|
147
|
+
filter: grayscale(0%);
|
148
|
+
}
|
149
|
+
|
150
|
+
/* Copy button */
|
151
|
+
.code-block-copy {
|
152
|
+
position: absolute;
|
153
|
+
top: 0.5rem;
|
154
|
+
right: 0.5rem;
|
155
|
+
padding: 0.25rem 0.5rem;
|
156
|
+
border-radius: 4px;
|
157
|
+
background: var(--gray-a3);
|
158
|
+
color: var(--gray-12);
|
159
|
+
border: 1px solid var(--gray-a5);
|
160
|
+
cursor: pointer;
|
161
|
+
font-size: 12px;
|
162
|
+
transition: all 0.2s;
|
163
|
+
}
|
164
|
+
|
165
|
+
.code-block-copy:hover {
|
166
|
+
background: var(--gray-a4);
|
167
|
+
border-color: var(--gray-a6);
|
168
|
+
}
|
169
|
+
|
170
|
+
.code-block-copy.copied {
|
171
|
+
background: var(--green-a3);
|
172
|
+
border-color: var(--green-a5);
|
173
|
+
color: var(--green-11);
|
174
|
+
}
|
175
|
+
|
176
|
+
/* Language badge */
|
177
|
+
.code-block-lang {
|
178
|
+
position: absolute;
|
179
|
+
top: 0;
|
180
|
+
right: 0;
|
181
|
+
padding: 0.25rem 0.75rem;
|
182
|
+
background: var(--gray-a3);
|
183
|
+
color: var(--gray-11);
|
184
|
+
font-size: 12px;
|
185
|
+
font-weight: 500;
|
186
|
+
border-bottom-left-radius: 4px;
|
187
|
+
user-select: none;
|
188
|
+
}
|
189
|
+
|
190
|
+
/* Scrollbar styling */
|
191
|
+
.code-block pre::-webkit-scrollbar {
|
192
|
+
height: 8px;
|
193
|
+
width: 8px;
|
194
|
+
}
|
195
|
+
|
196
|
+
.code-block pre::-webkit-scrollbar-track {
|
197
|
+
background: var(--gray-a3);
|
198
|
+
border-radius: 4px;
|
199
|
+
}
|
200
|
+
|
201
|
+
.code-block pre::-webkit-scrollbar-thumb {
|
202
|
+
background: var(--gray-a6);
|
203
|
+
border-radius: 4px;
|
204
|
+
}
|
205
|
+
|
206
|
+
.code-block pre::-webkit-scrollbar-thumb:hover {
|
207
|
+
background: var(--gray-a7);
|
208
|
+
}
|
209
|
+
|
210
|
+
/* Inline code */
|
211
|
+
code:not(.code-block code) {
|
212
|
+
padding: 0.2em 0.4em;
|
213
|
+
margin: 0;
|
214
|
+
font-size: 0.85em;
|
215
|
+
background-color: var(--gray-a3);
|
216
|
+
border-radius: 4px;
|
217
|
+
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
|
218
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "polen",
|
3
|
-
"version": "0.10.0-next.
|
3
|
+
"version": "0.10.0-next.14",
|
4
4
|
"type": "module",
|
5
5
|
"description": "A framework for delightful GraphQL developer portals",
|
6
6
|
"author": {
|
@@ -199,6 +199,7 @@
|
|
199
199
|
"@octokit/types": "^14.1.0",
|
200
200
|
"@playwright/browser-chromium": "^1.53.0",
|
201
201
|
"@stylistic/eslint-plugin": "^4.4.1",
|
202
|
+
"@testing-library/react": "^16.3.0",
|
202
203
|
"@tsconfig/node-lts": "^22.0.1",
|
203
204
|
"@tsconfig/node22": "^22.0.2",
|
204
205
|
"@tsconfig/strictest": "^2.0.5",
|
@@ -267,7 +268,8 @@
|
|
267
268
|
"prepublishOnly": "pnpm build",
|
268
269
|
"prepack": "pnpm build",
|
269
270
|
"build:cli:chmodx": "chmod +x ./build/cli/index.js",
|
270
|
-
"postbuild": "pnpm run build:cli:chmodx",
|
271
|
+
"postbuild": "pnpm run build:cli:chmodx && pnpm run build:copy-assets",
|
272
|
+
"build:copy-assets": "cp -r src/template/styles build/template/",
|
271
273
|
"test": "vitest",
|
272
274
|
"check": "pnpm run '/^check:(?!pedantic:).+/'",
|
273
275
|
"checkAll": "pnpm run '/^check:.+/'",
|
@@ -2,7 +2,7 @@ import { describe, expect, test } from 'vitest'
|
|
2
2
|
import { parse } from './markdown.ts'
|
3
3
|
|
4
4
|
describe(`markdown parser with syntax highlighting`, () => {
|
5
|
-
test(`parse highlights code blocks`, async () => {
|
5
|
+
test(`parse highlights code blocks`, { timeout: 10000 }, async () => {
|
6
6
|
const markdown = `
|
7
7
|
# Hello
|
8
8
|
|