@makeswift/react-router 0.1.12-canary.8 → 0.2.0-canary.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -29,27 +29,33 @@ var import_unstable_framework_support = require("@makeswift/runtime/unstable-fra
|
|
|
29
29
|
const DEFAULT_TIMEOUT = 1e4;
|
|
30
30
|
function renderHtml(children, {
|
|
31
31
|
timeout,
|
|
32
|
-
|
|
32
|
+
classNamePrefix,
|
|
33
33
|
enableCssReset,
|
|
34
34
|
responseStatusCode,
|
|
35
35
|
responseHeaders
|
|
36
36
|
}) {
|
|
37
|
-
const
|
|
37
|
+
const stylesRegistry = (0, import_unstable_framework_support.createMakeswiftStylesRegistry)();
|
|
38
38
|
return new Promise((resolve, reject) => {
|
|
39
39
|
let didError = false;
|
|
40
40
|
const { pipe, abort } = (0, import_server.renderToPipeableStream)(
|
|
41
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
41
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
42
|
+
import_unstable_framework_support.RootStyleRegistry,
|
|
43
|
+
{
|
|
44
|
+
stylesRegistry,
|
|
45
|
+
classNamePrefix,
|
|
46
|
+
enableCssReset,
|
|
47
|
+
shouldRenderStyleElements: false,
|
|
48
|
+
children
|
|
49
|
+
}
|
|
50
|
+
),
|
|
42
51
|
{
|
|
43
|
-
// wait for all Suspense boundaries before streaming
|
|
52
|
+
// wait for all Suspense boundaries before streaming to ensure all Makeswift styles have been generated & stored in the registry
|
|
44
53
|
onAllReady() {
|
|
45
|
-
const { classNames, css } = cache.flush();
|
|
46
54
|
const headInjector = createHeadInjectionTransform(
|
|
47
|
-
|
|
55
|
+
stylesRegistry.serializeToHtmlStyleTags()
|
|
48
56
|
);
|
|
49
57
|
const body = new import_node_stream.PassThrough();
|
|
50
|
-
const responseStream = (0, import_node.createReadableStreamFromReadable)(
|
|
51
|
-
classNames.length > 0 ? body.pipe(headInjector) : body
|
|
52
|
-
);
|
|
58
|
+
const responseStream = (0, import_node.createReadableStreamFromReadable)(body.pipe(headInjector));
|
|
53
59
|
responseHeaders.set("Content-Type", "text/html; charset=utf-8");
|
|
54
60
|
resolve(
|
|
55
61
|
new Response(responseStream, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/render.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { createReadableStreamFromReadable } from '@react-router/node'\nimport { renderToPipeableStream } from 'react-dom/server'\nimport { PassThrough, Transform } from 'node:stream'\n\nimport {\n
|
|
1
|
+
{"version":3,"sources":["../../../src/server/render.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { createReadableStreamFromReadable } from '@react-router/node'\nimport { renderToPipeableStream } from 'react-dom/server'\nimport { PassThrough, Transform } from 'node:stream'\n\nimport {\n createMakeswiftStylesRegistry,\n RootStyleRegistry,\n type RootStyleProps,\n} from '@makeswift/runtime/unstable-framework-support'\n\nconst DEFAULT_TIMEOUT = 10000\n\nexport function renderHtml(\n children: ReactNode,\n {\n timeout,\n classNamePrefix,\n enableCssReset,\n responseStatusCode,\n responseHeaders,\n }: RootStyleProps & {\n request: Request\n timeout?: number\n responseStatusCode: number\n responseHeaders: Headers\n },\n): Promise<Response> {\n const stylesRegistry = createMakeswiftStylesRegistry()\n\n return new Promise((resolve, reject) => {\n let didError = false\n\n const { pipe, abort } = renderToPipeableStream(\n <RootStyleRegistry\n stylesRegistry={stylesRegistry}\n classNamePrefix={classNamePrefix}\n enableCssReset={enableCssReset}\n shouldRenderStyleElements={false}\n >\n {children}\n </RootStyleRegistry>,\n {\n // wait for all Suspense boundaries before streaming to ensure all Makeswift styles have been generated & stored in the registry\n onAllReady() {\n // create a head injection transform with server-side styles\n const headInjector = createHeadInjectionTransform(\n stylesRegistry.serializeToHtmlStyleTags(),\n )\n\n // prepare a pipeable response stream with the head transform\n const body = new PassThrough()\n const responseStream = createReadableStreamFromReadable(body.pipe(headInjector))\n\n // amend response headers with content type\n responseHeaders.set('Content-Type', 'text/html; charset=utf-8')\n\n // return the stream response\n resolve(\n new Response(responseStream, {\n status: didError ? 500 : responseStatusCode,\n headers: responseHeaders,\n }),\n )\n\n // write the initial HTML doctype and start piping the stream\n body.write('<!DOCTYPE html>')\n pipe(body)\n },\n onShellError(err) {\n reject(err)\n },\n onError(err) {\n didError = true\n console.error(err)\n },\n },\n )\n\n setTimeout(abort, timeout ?? DEFAULT_TIMEOUT)\n })\n}\n\nfunction createHeadInjectionTransform(snippet: string) {\n let injected = false\n return new Transform({\n transform(chunk, _enc, cb) {\n if (injected) return cb(null, chunk)\n\n // inject `snippet` right before the first </head> tag\n const str = chunk.toString()\n const idx = str.indexOf('</head>')\n if (idx === -1) return cb(null, chunk)\n\n injected = true\n const out = str.slice(0, idx) + snippet + str.slice(idx)\n cb(null, out)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCM;AAjCN,kBAAiD;AACjD,oBAAuC;AACvC,yBAAuC;AAEvC,wCAIO;AAEP,MAAM,kBAAkB;AAEjB,SAAS,WACd,UACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMmB;AACnB,QAAM,qBAAiB,iEAA8B;AAErD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,WAAW;AAEf,UAAM,EAAE,MAAM,MAAM,QAAI;AAAA,MACtB;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,2BAA2B;AAAA,UAE1B;AAAA;AAAA,MACH;AAAA,MACA;AAAA;AAAA,QAEE,aAAa;AAEX,gBAAM,eAAe;AAAA,YACnB,eAAe,yBAAyB;AAAA,UAC1C;AAGA,gBAAM,OAAO,IAAI,+BAAY;AAC7B,gBAAM,qBAAiB,8CAAiC,KAAK,KAAK,YAAY,CAAC;AAG/E,0BAAgB,IAAI,gBAAgB,0BAA0B;AAG9D;AAAA,YACE,IAAI,SAAS,gBAAgB;AAAA,cAC3B,QAAQ,WAAW,MAAM;AAAA,cACzB,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AAGA,eAAK,MAAM,iBAAiB;AAC5B,eAAK,IAAI;AAAA,QACX;AAAA,QACA,aAAa,KAAK;AAChB,iBAAO,GAAG;AAAA,QACZ;AAAA,QACA,QAAQ,KAAK;AACX,qBAAW;AACX,kBAAQ,MAAM,GAAG;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,eAAW,OAAO,WAAW,eAAe;AAAA,EAC9C,CAAC;AACH;AAEA,SAAS,6BAA6B,SAAiB;AACrD,MAAI,WAAW;AACf,SAAO,IAAI,6BAAU;AAAA,IACnB,UAAU,OAAO,MAAM,IAAI;AACzB,UAAI;AAAU,eAAO,GAAG,MAAM,KAAK;AAGnC,YAAM,MAAM,MAAM,SAAS;AAC3B,YAAM,MAAM,IAAI,QAAQ,SAAS;AACjC,UAAI,QAAQ;AAAI,eAAO,GAAG,MAAM,KAAK;AAErC,iBAAW;AACX,YAAM,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,IAAI,MAAM,GAAG;AACvD,SAAG,MAAM,GAAG;AAAA,IACd;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -3,34 +3,39 @@ import { createReadableStreamFromReadable } from "@react-router/node";
|
|
|
3
3
|
import { renderToPipeableStream } from "react-dom/server";
|
|
4
4
|
import { PassThrough, Transform } from "node:stream";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
RootStyleRegistry
|
|
8
|
-
styleTagHtml
|
|
6
|
+
createMakeswiftStylesRegistry,
|
|
7
|
+
RootStyleRegistry
|
|
9
8
|
} from "@makeswift/runtime/unstable-framework-support";
|
|
10
9
|
const DEFAULT_TIMEOUT = 1e4;
|
|
11
10
|
function renderHtml(children, {
|
|
12
11
|
timeout,
|
|
13
|
-
|
|
12
|
+
classNamePrefix,
|
|
14
13
|
enableCssReset,
|
|
15
14
|
responseStatusCode,
|
|
16
15
|
responseHeaders
|
|
17
16
|
}) {
|
|
18
|
-
const
|
|
17
|
+
const stylesRegistry = createMakeswiftStylesRegistry();
|
|
19
18
|
return new Promise((resolve, reject) => {
|
|
20
19
|
let didError = false;
|
|
21
20
|
const { pipe, abort } = renderToPipeableStream(
|
|
22
|
-
/* @__PURE__ */ jsx(
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
RootStyleRegistry,
|
|
23
|
+
{
|
|
24
|
+
stylesRegistry,
|
|
25
|
+
classNamePrefix,
|
|
26
|
+
enableCssReset,
|
|
27
|
+
shouldRenderStyleElements: false,
|
|
28
|
+
children
|
|
29
|
+
}
|
|
30
|
+
),
|
|
23
31
|
{
|
|
24
|
-
// wait for all Suspense boundaries before streaming
|
|
32
|
+
// wait for all Suspense boundaries before streaming to ensure all Makeswift styles have been generated & stored in the registry
|
|
25
33
|
onAllReady() {
|
|
26
|
-
const { classNames, css } = cache.flush();
|
|
27
34
|
const headInjector = createHeadInjectionTransform(
|
|
28
|
-
|
|
35
|
+
stylesRegistry.serializeToHtmlStyleTags()
|
|
29
36
|
);
|
|
30
37
|
const body = new PassThrough();
|
|
31
|
-
const responseStream = createReadableStreamFromReadable(
|
|
32
|
-
classNames.length > 0 ? body.pipe(headInjector) : body
|
|
33
|
-
);
|
|
38
|
+
const responseStream = createReadableStreamFromReadable(body.pipe(headInjector));
|
|
34
39
|
responseHeaders.set("Content-Type", "text/html; charset=utf-8");
|
|
35
40
|
resolve(
|
|
36
41
|
new Response(responseStream, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/render.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { createReadableStreamFromReadable } from '@react-router/node'\nimport { renderToPipeableStream } from 'react-dom/server'\nimport { PassThrough, Transform } from 'node:stream'\n\nimport {\n
|
|
1
|
+
{"version":3,"sources":["../../../src/server/render.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { createReadableStreamFromReadable } from '@react-router/node'\nimport { renderToPipeableStream } from 'react-dom/server'\nimport { PassThrough, Transform } from 'node:stream'\n\nimport {\n createMakeswiftStylesRegistry,\n RootStyleRegistry,\n type RootStyleProps,\n} from '@makeswift/runtime/unstable-framework-support'\n\nconst DEFAULT_TIMEOUT = 10000\n\nexport function renderHtml(\n children: ReactNode,\n {\n timeout,\n classNamePrefix,\n enableCssReset,\n responseStatusCode,\n responseHeaders,\n }: RootStyleProps & {\n request: Request\n timeout?: number\n responseStatusCode: number\n responseHeaders: Headers\n },\n): Promise<Response> {\n const stylesRegistry = createMakeswiftStylesRegistry()\n\n return new Promise((resolve, reject) => {\n let didError = false\n\n const { pipe, abort } = renderToPipeableStream(\n <RootStyleRegistry\n stylesRegistry={stylesRegistry}\n classNamePrefix={classNamePrefix}\n enableCssReset={enableCssReset}\n shouldRenderStyleElements={false}\n >\n {children}\n </RootStyleRegistry>,\n {\n // wait for all Suspense boundaries before streaming to ensure all Makeswift styles have been generated & stored in the registry\n onAllReady() {\n // create a head injection transform with server-side styles\n const headInjector = createHeadInjectionTransform(\n stylesRegistry.serializeToHtmlStyleTags(),\n )\n\n // prepare a pipeable response stream with the head transform\n const body = new PassThrough()\n const responseStream = createReadableStreamFromReadable(body.pipe(headInjector))\n\n // amend response headers with content type\n responseHeaders.set('Content-Type', 'text/html; charset=utf-8')\n\n // return the stream response\n resolve(\n new Response(responseStream, {\n status: didError ? 500 : responseStatusCode,\n headers: responseHeaders,\n }),\n )\n\n // write the initial HTML doctype and start piping the stream\n body.write('<!DOCTYPE html>')\n pipe(body)\n },\n onShellError(err) {\n reject(err)\n },\n onError(err) {\n didError = true\n console.error(err)\n },\n },\n )\n\n setTimeout(abort, timeout ?? DEFAULT_TIMEOUT)\n })\n}\n\nfunction createHeadInjectionTransform(snippet: string) {\n let injected = false\n return new Transform({\n transform(chunk, _enc, cb) {\n if (injected) return cb(null, chunk)\n\n // inject `snippet` right before the first </head> tag\n const str = chunk.toString()\n const idx = str.indexOf('</head>')\n if (idx === -1) return cb(null, chunk)\n\n injected = true\n const out = str.slice(0, idx) + snippet + str.slice(idx)\n cb(null, out)\n },\n })\n}\n"],"mappings":"AAmCM;AAjCN,SAAS,wCAAwC;AACjD,SAAS,8BAA8B;AACvC,SAAS,aAAa,iBAAiB;AAEvC;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAEP,MAAM,kBAAkB;AAEjB,SAAS,WACd,UACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMmB;AACnB,QAAM,iBAAiB,8BAA8B;AAErD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,WAAW;AAEf,UAAM,EAAE,MAAM,MAAM,IAAI;AAAA,MACtB;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,2BAA2B;AAAA,UAE1B;AAAA;AAAA,MACH;AAAA,MACA;AAAA;AAAA,QAEE,aAAa;AAEX,gBAAM,eAAe;AAAA,YACnB,eAAe,yBAAyB;AAAA,UAC1C;AAGA,gBAAM,OAAO,IAAI,YAAY;AAC7B,gBAAM,iBAAiB,iCAAiC,KAAK,KAAK,YAAY,CAAC;AAG/E,0BAAgB,IAAI,gBAAgB,0BAA0B;AAG9D;AAAA,YACE,IAAI,SAAS,gBAAgB;AAAA,cAC3B,QAAQ,WAAW,MAAM;AAAA,cACzB,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AAGA,eAAK,MAAM,iBAAiB;AAC5B,eAAK,IAAI;AAAA,QACX;AAAA,QACA,aAAa,KAAK;AAChB,iBAAO,GAAG;AAAA,QACZ;AAAA,QACA,QAAQ,KAAK;AACX,qBAAW;AACX,kBAAQ,MAAM,GAAG;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,eAAW,OAAO,WAAW,eAAe;AAAA,EAC9C,CAAC;AACH;AAEA,SAAS,6BAA6B,SAAiB;AACrD,MAAI,WAAW;AACf,SAAO,IAAI,UAAU;AAAA,IACnB,UAAU,OAAO,MAAM,IAAI;AACzB,UAAI;AAAU,eAAO,GAAG,MAAM,KAAK;AAGnC,YAAM,MAAM,MAAM,SAAS;AAC3B,YAAM,MAAM,IAAI,QAAQ,SAAS;AACjC,UAAI,QAAQ;AAAI,eAAO,GAAG,MAAM,KAAK;AAErC,iBAAW;AACX,YAAM,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,IAAI,MAAM,GAAG;AACvD,SAAG,MAAM,GAAG;AAAA,IACd;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { type RootStyleProps } from '@makeswift/runtime/unstable-framework-support';
|
|
3
|
-
export declare function renderHtml(children: ReactNode, { timeout,
|
|
3
|
+
export declare function renderHtml(children: ReactNode, { timeout, classNamePrefix, enableCssReset, responseStatusCode, responseHeaders, }: RootStyleProps & {
|
|
4
4
|
request: Request;
|
|
5
5
|
timeout?: number;
|
|
6
6
|
responseStatusCode: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/server/render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/server/render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,+CAA+C,CAAA;AAItD,wBAAgB,UAAU,CACxB,QAAQ,EAAE,SAAS,EACnB,EACE,OAAO,EACP,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,EAAE,cAAc,GAAG;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;CACzB,GACA,OAAO,CAAC,QAAQ,CAAC,CAsDnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makeswift/react-router",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-canary.19",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "makeswift/makeswift",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@makeswift/runtime": "0.
|
|
30
|
+
"@makeswift/runtime": "0.29.0-canary.19"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@react-router/node": "^7.0.0",
|