houdini-react 1.2.25 → 1.2.27
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/plugin-cjs/index.js +2 -3
- package/build/plugin-esm/index.js +2 -3
- package/build/runtime/index.d.ts +2 -1
- package/build/runtime/routing/Router.d.ts +2 -1
- package/build/runtime/server/index.d.ts +17 -0
- package/build/runtime/server/renderToStream/createBuffer.d.ts +17 -0
- package/build/runtime/server/renderToStream/createPipeWrapper.d.ts +12 -0
- package/build/runtime/server/renderToStream/createReadableWrapper.d.ts +6 -0
- package/build/runtime/server/renderToStream/loadNodeStreamModule.d.ts +10 -0
- package/build/runtime/server/renderToStream/resolveSeoStrategy.d.ts +9 -0
- package/build/runtime/server/renderToStream.d.ts +28 -0
- package/build/runtime/server/shared/initData.d.ts +8 -0
- package/build/runtime/server/shared/key.d.ts +4 -0
- package/build/runtime/server/shared/utils.d.ts +3 -0
- package/build/runtime/server/useStream.d.ts +9 -0
- package/build/runtime/server/utils/assert.d.ts +15 -0
- package/build/runtime/server/utils/createErrorWithCleanStackTrace.d.ts +2 -0
- package/build/runtime/server/utils/debug.d.ts +14 -0
- package/build/runtime/server/utils/getGlobalVariable.d.ts +4 -0
- package/build/runtime/server/utils/isBrowser.d.ts +2 -0
- package/build/runtime/server/utils/isCallable.d.ts +2 -0
- package/build/runtime/server/utils/isClientSide.d.ts +2 -0
- package/build/runtime/server/utils/isPromise.d.ts +1 -0
- package/build/runtime/server/utils/isServerSide.d.ts +2 -0
- package/build/runtime/server/utils/objectAssign.d.ts +2 -0
- package/build/runtime/server/utils/projectInfo.d.ts +10 -0
- package/build/runtime/server/utils.d.ts +4 -0
- package/build/runtime-cjs/index.d.ts +2 -1
- package/build/runtime-cjs/index.js +11 -2
- package/build/runtime-cjs/routing/Router.d.ts +2 -1
- package/build/runtime-cjs/routing/Router.js +8 -7
- package/build/runtime-cjs/server/index.d.ts +17 -0
- package/build/runtime-cjs/server/index.js +28 -0
- package/build/runtime-cjs/server/renderToStream/createBuffer.d.ts +17 -0
- package/build/runtime-cjs/server/renderToStream/createBuffer.js +101 -0
- package/build/runtime-cjs/server/renderToStream/createPipeWrapper.d.ts +12 -0
- package/build/runtime-cjs/server/renderToStream/createPipeWrapper.js +90 -0
- package/build/runtime-cjs/server/renderToStream/createReadableWrapper.d.ts +6 -0
- package/build/runtime-cjs/server/renderToStream/createReadableWrapper.js +85 -0
- package/build/runtime-cjs/server/renderToStream/loadNodeStreamModule.d.ts +10 -0
- package/build/runtime-cjs/server/renderToStream/loadNodeStreamModule.js +51 -0
- package/build/runtime-cjs/server/renderToStream/resolveSeoStrategy.d.ts +9 -0
- package/build/runtime-cjs/server/renderToStream/resolveSeoStrategy.js +44 -0
- package/build/runtime-cjs/server/renderToStream.d.ts +28 -0
- package/build/runtime-cjs/server/renderToStream.js +183 -0
- package/build/runtime-cjs/server/shared/initData.d.ts +8 -0
- package/build/runtime-cjs/server/shared/initData.js +28 -0
- package/build/runtime-cjs/server/shared/key.d.ts +4 -0
- package/build/runtime-cjs/server/shared/key.js +45 -0
- package/build/runtime-cjs/server/shared/utils.d.ts +3 -0
- package/build/runtime-cjs/server/shared/utils.js +20 -0
- package/build/runtime-cjs/server/useStream.d.ts +9 -0
- package/build/runtime-cjs/server/useStream.js +44 -0
- package/build/runtime-cjs/server/utils/assert.d.ts +15 -0
- package/build/runtime-cjs/server/utils/assert.js +119 -0
- package/build/runtime-cjs/server/utils/createErrorWithCleanStackTrace.d.ts +2 -0
- package/build/runtime-cjs/server/utils/createErrorWithCleanStackTrace.js +62 -0
- package/build/runtime-cjs/server/utils/debug.d.ts +14 -0
- package/build/runtime-cjs/server/utils/debug.js +112 -0
- package/build/runtime-cjs/server/utils/getGlobalVariable.d.ts +4 -0
- package/build/runtime-cjs/server/utils/getGlobalVariable.js +32 -0
- package/build/runtime-cjs/server/utils/isBrowser.d.ts +2 -0
- package/build/runtime-cjs/server/utils/isBrowser.js +30 -0
- package/build/runtime-cjs/server/utils/isCallable.d.ts +2 -0
- package/build/runtime-cjs/server/utils/isCallable.js +30 -0
- package/build/runtime-cjs/server/utils/isClientSide.d.ts +2 -0
- package/build/runtime-cjs/server/utils/isClientSide.js +30 -0
- package/build/runtime-cjs/server/utils/isPromise.d.ts +1 -0
- package/build/runtime-cjs/server/utils/isPromise.js +31 -0
- package/build/runtime-cjs/server/utils/isServerSide.d.ts +2 -0
- package/build/runtime-cjs/server/utils/isServerSide.js +31 -0
- package/build/runtime-cjs/server/utils/objectAssign.d.ts +2 -0
- package/build/runtime-cjs/server/utils/objectAssign.js +30 -0
- package/build/runtime-cjs/server/utils/projectInfo.d.ts +10 -0
- package/build/runtime-cjs/server/utils/projectInfo.js +37 -0
- package/build/runtime-cjs/server/utils.d.ts +4 -0
- package/build/runtime-cjs/server/utils.js +21 -0
- package/build/runtime-esm/index.d.ts +2 -1
- package/build/runtime-esm/index.js +11 -2
- package/build/runtime-esm/routing/Router.d.ts +2 -1
- package/build/runtime-esm/routing/Router.js +8 -7
- package/build/runtime-esm/server/index.d.ts +17 -0
- package/build/runtime-esm/server/index.js +4 -0
- package/build/runtime-esm/server/renderToStream/createBuffer.d.ts +17 -0
- package/build/runtime-esm/server/renderToStream/createBuffer.js +77 -0
- package/build/runtime-esm/server/renderToStream/createPipeWrapper.d.ts +12 -0
- package/build/runtime-esm/server/renderToStream/createPipeWrapper.js +66 -0
- package/build/runtime-esm/server/renderToStream/createReadableWrapper.d.ts +6 -0
- package/build/runtime-esm/server/renderToStream/createReadableWrapper.js +61 -0
- package/build/runtime-esm/server/renderToStream/loadNodeStreamModule.d.ts +10 -0
- package/build/runtime-esm/server/renderToStream/loadNodeStreamModule.js +20 -0
- package/build/runtime-esm/server/renderToStream/resolveSeoStrategy.d.ts +9 -0
- package/build/runtime-esm/server/renderToStream/resolveSeoStrategy.js +20 -0
- package/build/runtime-esm/server/renderToStream.d.ts +28 -0
- package/build/runtime-esm/server/renderToStream.js +152 -0
- package/build/runtime-esm/server/shared/initData.d.ts +8 -0
- package/build/runtime-esm/server/shared/initData.js +4 -0
- package/build/runtime-esm/server/shared/key.d.ts +4 -0
- package/build/runtime-esm/server/shared/key.js +20 -0
- package/build/runtime-esm/server/shared/utils.d.ts +3 -0
- package/build/runtime-esm/server/shared/utils.js +3 -0
- package/build/runtime-esm/server/useStream.d.ts +9 -0
- package/build/runtime-esm/server/useStream.js +13 -0
- package/build/runtime-esm/server/utils/assert.d.ts +15 -0
- package/build/runtime-esm/server/utils/assert.js +91 -0
- package/build/runtime-esm/server/utils/createErrorWithCleanStackTrace.d.ts +2 -0
- package/build/runtime-esm/server/utils/createErrorWithCleanStackTrace.js +38 -0
- package/build/runtime-esm/server/utils/debug.d.ts +14 -0
- package/build/runtime-esm/server/utils/debug.js +87 -0
- package/build/runtime-esm/server/utils/getGlobalVariable.d.ts +4 -0
- package/build/runtime-esm/server/utils/getGlobalVariable.js +8 -0
- package/build/runtime-esm/server/utils/isBrowser.d.ts +2 -0
- package/build/runtime-esm/server/utils/isBrowser.js +6 -0
- package/build/runtime-esm/server/utils/isCallable.d.ts +2 -0
- package/build/runtime-esm/server/utils/isCallable.js +6 -0
- package/build/runtime-esm/server/utils/isClientSide.d.ts +2 -0
- package/build/runtime-esm/server/utils/isClientSide.js +6 -0
- package/build/runtime-esm/server/utils/isPromise.d.ts +1 -0
- package/build/runtime-esm/server/utils/isPromise.js +7 -0
- package/build/runtime-esm/server/utils/isServerSide.d.ts +2 -0
- package/build/runtime-esm/server/utils/isServerSide.js +7 -0
- package/build/runtime-esm/server/utils/objectAssign.d.ts +2 -0
- package/build/runtime-esm/server/utils/objectAssign.js +6 -0
- package/build/runtime-esm/server/utils/projectInfo.d.ts +10 -0
- package/build/runtime-esm/server/utils/projectInfo.js +13 -0
- package/build/runtime-esm/server/utils.d.ts +4 -0
- package/build/runtime-esm/server/utils.js +4 -0
- package/package.json +4 -4
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var createPipeWrapper_exports = {};
|
|
20
|
+
__export(createPipeWrapper_exports, {
|
|
21
|
+
createPipeWrapper: () => createPipeWrapper
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(createPipeWrapper_exports);
|
|
24
|
+
var import_utils = require("../utils");
|
|
25
|
+
var import_createBuffer = require("./createBuffer");
|
|
26
|
+
var import_loadNodeStreamModule = require("./loadNodeStreamModule");
|
|
27
|
+
const debug = (0, import_utils.createDebugger)("react-streaming:createPipeWrapper");
|
|
28
|
+
async function createPipeWrapper(pipeFromReact, { onReactBug }) {
|
|
29
|
+
const { Writable } = await (0, import_loadNodeStreamModule.loadNodeStreamModule)();
|
|
30
|
+
const { pipeForUser, streamEnd } = createPipeForUser();
|
|
31
|
+
const streamOperations = {
|
|
32
|
+
operations: null
|
|
33
|
+
};
|
|
34
|
+
const { injectToStream, onBeforeWrite, onBeforeEnd } = (0, import_createBuffer.createBuffer)(streamOperations);
|
|
35
|
+
return { pipeForUser, streamEnd, injectToStream };
|
|
36
|
+
function createPipeForUser() {
|
|
37
|
+
debug("createPipeForUser()");
|
|
38
|
+
let onEnded;
|
|
39
|
+
const streamEnd2 = new Promise((r) => {
|
|
40
|
+
onEnded = () => r();
|
|
41
|
+
});
|
|
42
|
+
const pipeForUser2 = (writableFromUser) => {
|
|
43
|
+
const writableForReact = new Writable({
|
|
44
|
+
write(chunk, encoding, callback) {
|
|
45
|
+
debug("write");
|
|
46
|
+
onBeforeWrite(chunk);
|
|
47
|
+
if (!writableFromUser.destroyed) {
|
|
48
|
+
writableFromUser.write(chunk, encoding, callback);
|
|
49
|
+
} else {
|
|
50
|
+
writableForReact.destroy();
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
final(callback) {
|
|
54
|
+
debug("final");
|
|
55
|
+
onBeforeEnd();
|
|
56
|
+
writableFromUser.end();
|
|
57
|
+
onEnded();
|
|
58
|
+
callback();
|
|
59
|
+
},
|
|
60
|
+
destroy(err) {
|
|
61
|
+
debug(`destroy (\`!!err === ${!!err}\`)`);
|
|
62
|
+
if (err)
|
|
63
|
+
onReactBug(err);
|
|
64
|
+
writableFromUser.destroy(err ?? void 0);
|
|
65
|
+
onEnded();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
const flush = () => {
|
|
69
|
+
if (typeof writableFromUser.flush === "function") {
|
|
70
|
+
;
|
|
71
|
+
writableFromUser.flush();
|
|
72
|
+
debug("stream flushed (Node.js Writable)");
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
streamOperations.operations = {
|
|
76
|
+
flush,
|
|
77
|
+
writeChunk(chunk) {
|
|
78
|
+
writableFromUser.write(chunk);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
writableForReact.flush = flush;
|
|
82
|
+
pipeFromReact(writableForReact);
|
|
83
|
+
};
|
|
84
|
+
return { pipeForUser: pipeForUser2, streamEnd: streamEnd2 };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
88
|
+
0 && (module.exports = {
|
|
89
|
+
createPipeWrapper
|
|
90
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var createReadableWrapper_exports = {};
|
|
20
|
+
__export(createReadableWrapper_exports, {
|
|
21
|
+
createReadableWrapper: () => createReadableWrapper
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(createReadableWrapper_exports);
|
|
24
|
+
var import_createBuffer = require("./createBuffer");
|
|
25
|
+
function createReadableWrapper(readableFromReact) {
|
|
26
|
+
const streamOperations = {
|
|
27
|
+
operations: null
|
|
28
|
+
};
|
|
29
|
+
let controllerOfUserStream;
|
|
30
|
+
let onEnded;
|
|
31
|
+
const streamEnd = new Promise((r) => {
|
|
32
|
+
onEnded = () => r();
|
|
33
|
+
});
|
|
34
|
+
const readableForUser = new ReadableStream({
|
|
35
|
+
start(controller) {
|
|
36
|
+
controllerOfUserStream = controller;
|
|
37
|
+
onReady(onEnded);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const { injectToStream, onBeforeWrite, onBeforeEnd } = (0, import_createBuffer.createBuffer)(streamOperations);
|
|
41
|
+
return { readableForUser, streamEnd, injectToStream };
|
|
42
|
+
async function onReady(onEnded2) {
|
|
43
|
+
streamOperations.operations = {
|
|
44
|
+
writeChunk(chunk) {
|
|
45
|
+
controllerOfUserStream.enqueue(encodeForWebStream(chunk));
|
|
46
|
+
},
|
|
47
|
+
flush: null
|
|
48
|
+
};
|
|
49
|
+
const reader = readableFromReact.getReader();
|
|
50
|
+
while (true) {
|
|
51
|
+
let result;
|
|
52
|
+
try {
|
|
53
|
+
result = await reader.read();
|
|
54
|
+
} catch (err) {
|
|
55
|
+
controllerOfUserStream.close();
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
const { value, done } = result;
|
|
59
|
+
if (done) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
onBeforeWrite(value);
|
|
63
|
+
streamOperations.operations.writeChunk(value);
|
|
64
|
+
}
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
onBeforeEnd();
|
|
67
|
+
controllerOfUserStream.close();
|
|
68
|
+
onEnded2();
|
|
69
|
+
}, 0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let encoder;
|
|
73
|
+
function encodeForWebStream(thing) {
|
|
74
|
+
if (!encoder) {
|
|
75
|
+
encoder = new TextEncoder();
|
|
76
|
+
}
|
|
77
|
+
if (typeof thing === "string") {
|
|
78
|
+
return encoder.encode(thing);
|
|
79
|
+
}
|
|
80
|
+
return thing;
|
|
81
|
+
}
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
createReadableWrapper
|
|
85
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { Readable as StreamNodeReadable, Writable as StreamNodeWritable } from 'stream';
|
|
3
|
+
export { loadNodeStreamModule };
|
|
4
|
+
export { nodeStreamModuleIsAvailable };
|
|
5
|
+
type StreamModule = {
|
|
6
|
+
Readable: typeof StreamNodeReadable;
|
|
7
|
+
Writable: typeof StreamNodeWritable;
|
|
8
|
+
};
|
|
9
|
+
declare function loadNodeStreamModule(): Promise<StreamModule>;
|
|
10
|
+
declare function nodeStreamModuleIsAvailable(): Promise<boolean>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var loadNodeStreamModule_exports = {};
|
|
26
|
+
__export(loadNodeStreamModule_exports, {
|
|
27
|
+
loadNodeStreamModule: () => loadNodeStreamModule,
|
|
28
|
+
nodeStreamModuleIsAvailable: () => nodeStreamModuleIsAvailable
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(loadNodeStreamModule_exports);
|
|
31
|
+
async function loadNodeStreamModule() {
|
|
32
|
+
const streamModule = await loadModule();
|
|
33
|
+
const { Readable, Writable } = streamModule;
|
|
34
|
+
return { Readable, Writable };
|
|
35
|
+
}
|
|
36
|
+
async function nodeStreamModuleIsAvailable() {
|
|
37
|
+
try {
|
|
38
|
+
await loadModule();
|
|
39
|
+
return true;
|
|
40
|
+
} catch (err) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function loadModule() {
|
|
45
|
+
return import("stream");
|
|
46
|
+
}
|
|
47
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
+
0 && (module.exports = {
|
|
49
|
+
loadNodeStreamModule,
|
|
50
|
+
nodeStreamModuleIsAvailable
|
|
51
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var resolveSeoStrategy_exports = {};
|
|
20
|
+
__export(resolveSeoStrategy_exports, {
|
|
21
|
+
resolveSeoStrategy: () => resolveSeoStrategy
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(resolveSeoStrategy_exports);
|
|
24
|
+
var import_utils = require("../utils");
|
|
25
|
+
function resolveSeoStrategy(options = {}) {
|
|
26
|
+
const seoStrategy = options.seoStrategy || "conservative";
|
|
27
|
+
if (!options.userAgent) {
|
|
28
|
+
(0, import_utils.assertWarning)(
|
|
29
|
+
false,
|
|
30
|
+
"Streaming disabled. Provide `options.userAgent` to enable streaming. (react-streaming needs the User Agent string in order to be able to disable streaming for bots, e.g. for Google Bot.) Or set `options.disable` to `true` to get rid of this warning.",
|
|
31
|
+
{ onlyOnce: true }
|
|
32
|
+
);
|
|
33
|
+
return { disableStream: true };
|
|
34
|
+
}
|
|
35
|
+
const isGoogleBot = options.userAgent.toLowerCase().includes("googlebot");
|
|
36
|
+
if (seoStrategy === "google-speed" && isGoogleBot) {
|
|
37
|
+
return { disableStream: false };
|
|
38
|
+
}
|
|
39
|
+
return { disableStream: true };
|
|
40
|
+
}
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
resolveSeoStrategy
|
|
44
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { renderToPipeableStream as RenderToPipeableStream, renderToReadableStream as RenderToReadableStream } from 'react-dom/server';
|
|
3
|
+
import { Pipe } from './renderToStream/createPipeWrapper';
|
|
4
|
+
import { SeoStrategy } from './renderToStream/resolveSeoStrategy';
|
|
5
|
+
export { renderToStream };
|
|
6
|
+
export { disable };
|
|
7
|
+
type Options = {
|
|
8
|
+
webStream?: boolean;
|
|
9
|
+
disable?: boolean;
|
|
10
|
+
seoStrategy?: SeoStrategy;
|
|
11
|
+
userAgent?: string;
|
|
12
|
+
onBoundaryError?: (err: unknown) => void;
|
|
13
|
+
renderToReadableStream?: typeof RenderToReadableStream;
|
|
14
|
+
renderToPipeableStream?: typeof RenderToPipeableStream;
|
|
15
|
+
};
|
|
16
|
+
type Result = ({
|
|
17
|
+
pipe: Pipe;
|
|
18
|
+
readable: null;
|
|
19
|
+
} | {
|
|
20
|
+
pipe: null;
|
|
21
|
+
readable: ReadableStream;
|
|
22
|
+
}) & {
|
|
23
|
+
streamEnd: Promise<boolean>;
|
|
24
|
+
disabled: boolean;
|
|
25
|
+
injectToStream: (chunk: unknown) => void;
|
|
26
|
+
};
|
|
27
|
+
declare function disable(): void;
|
|
28
|
+
declare function renderToStream(element: React.ReactNode, options?: Options): Promise<Result>;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var renderToStream_exports = {};
|
|
26
|
+
__export(renderToStream_exports, {
|
|
27
|
+
disable: () => disable,
|
|
28
|
+
renderToStream: () => renderToStream
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(renderToStream_exports);
|
|
31
|
+
var import_react = __toESM(require("react"));
|
|
32
|
+
var import_createPipeWrapper = require("./renderToStream/createPipeWrapper");
|
|
33
|
+
var import_createReadableWrapper = require("./renderToStream/createReadableWrapper");
|
|
34
|
+
var import_loadNodeStreamModule = require("./renderToStream/loadNodeStreamModule");
|
|
35
|
+
var import_resolveSeoStrategy = require("./renderToStream/resolveSeoStrategy");
|
|
36
|
+
var import_utils = require("./utils");
|
|
37
|
+
const debug = (0, import_utils.createDebugger)("react-streaming:flow");
|
|
38
|
+
const globalConfig = globalThis.__react_streaming = globalThis.__react_streaming || {
|
|
39
|
+
disable: false
|
|
40
|
+
};
|
|
41
|
+
function disable() {
|
|
42
|
+
globalConfig.disable = true;
|
|
43
|
+
}
|
|
44
|
+
async function renderToStream(element, options = {}) {
|
|
45
|
+
const buffer = [];
|
|
46
|
+
let injectToStream = (chunk) => buffer.push(chunk);
|
|
47
|
+
element = import_react.default.cloneElement(element, { injectToStream });
|
|
48
|
+
const disable2 = globalConfig.disable || (options.disable ?? (0, import_resolveSeoStrategy.resolveSeoStrategy)(options).disableStream);
|
|
49
|
+
const webStream = options.webStream ?? !await (0, import_loadNodeStreamModule.nodeStreamModuleIsAvailable)();
|
|
50
|
+
debug(`disable === ${disable2} && webStream === ${webStream}`);
|
|
51
|
+
let result;
|
|
52
|
+
const resultPartial = { disabled: disable2 };
|
|
53
|
+
if (!webStream) {
|
|
54
|
+
result = { ...resultPartial, ...await renderToNodeStream(element, disable2, options) };
|
|
55
|
+
} else {
|
|
56
|
+
result = { ...resultPartial, ...await renderToWebStream(element, disable2, options) };
|
|
57
|
+
}
|
|
58
|
+
injectToStream = result.injectToStream;
|
|
59
|
+
buffer.forEach((chunk) => injectToStream(chunk));
|
|
60
|
+
buffer.length = 0;
|
|
61
|
+
debug("promise `await renderToStream()` resolved");
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
async function renderToNodeStream(element, disable2, options) {
|
|
65
|
+
debug("creating Node.js Stream Pipe");
|
|
66
|
+
let onAllReady;
|
|
67
|
+
const allReady = new Promise((r) => {
|
|
68
|
+
onAllReady = () => r();
|
|
69
|
+
});
|
|
70
|
+
let onShellReady;
|
|
71
|
+
const shellReady = new Promise((r) => {
|
|
72
|
+
onShellReady = () => r();
|
|
73
|
+
});
|
|
74
|
+
let didError = false;
|
|
75
|
+
let firstErr = null;
|
|
76
|
+
let reactBug = null;
|
|
77
|
+
const onError = (err) => {
|
|
78
|
+
debug("[react] onError() / onShellError()");
|
|
79
|
+
didError = true;
|
|
80
|
+
firstErr ??= err;
|
|
81
|
+
onShellReady();
|
|
82
|
+
afterReactBugCatch(() => {
|
|
83
|
+
if (err !== reactBug) {
|
|
84
|
+
options.onBoundaryError?.(err);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const renderToPipeableStream = options.renderToPipeableStream ?? (await import("react-dom/server.node")).renderToPipeableStream;
|
|
89
|
+
const { pipe: pipeOriginal } = renderToPipeableStream(element, {
|
|
90
|
+
onShellReady() {
|
|
91
|
+
debug("[react] onShellReady()");
|
|
92
|
+
onShellReady();
|
|
93
|
+
},
|
|
94
|
+
onAllReady() {
|
|
95
|
+
debug("[react] onAllReady()");
|
|
96
|
+
onShellReady();
|
|
97
|
+
onAllReady();
|
|
98
|
+
},
|
|
99
|
+
onShellError: onError,
|
|
100
|
+
onError
|
|
101
|
+
});
|
|
102
|
+
let promiseResolved = false;
|
|
103
|
+
const { pipeForUser, injectToStream, streamEnd } = await (0, import_createPipeWrapper.createPipeWrapper)(pipeOriginal, {
|
|
104
|
+
onReactBug(err) {
|
|
105
|
+
debug("react bug");
|
|
106
|
+
didError = true;
|
|
107
|
+
firstErr ??= err;
|
|
108
|
+
reactBug = err;
|
|
109
|
+
if (reactBug !== firstErr || promiseResolved) {
|
|
110
|
+
console.error(reactBug);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
await shellReady;
|
|
115
|
+
if (didError)
|
|
116
|
+
throw firstErr;
|
|
117
|
+
if (disable2)
|
|
118
|
+
await allReady;
|
|
119
|
+
if (didError)
|
|
120
|
+
throw firstErr;
|
|
121
|
+
promiseResolved = true;
|
|
122
|
+
return {
|
|
123
|
+
pipe: pipeForUser,
|
|
124
|
+
readable: null,
|
|
125
|
+
streamEnd: wrapStreamEnd(streamEnd, didError),
|
|
126
|
+
injectToStream
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function renderToWebStream(element, disable2, options) {
|
|
130
|
+
debug("creating Web Stream Pipe");
|
|
131
|
+
let didError = false;
|
|
132
|
+
let firstErr = null;
|
|
133
|
+
let reactBug = null;
|
|
134
|
+
const onError = (err) => {
|
|
135
|
+
didError = true;
|
|
136
|
+
firstErr = firstErr || err;
|
|
137
|
+
afterReactBugCatch(() => {
|
|
138
|
+
if (err !== reactBug) {
|
|
139
|
+
options.onBoundaryError?.(err);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
const renderToReadableStream = options.renderToReadableStream ?? (await import("react-dom/server.browser")).renderToReadableStream;
|
|
144
|
+
const readableOriginal = await renderToReadableStream(element, { onError });
|
|
145
|
+
const { allReady } = readableOriginal;
|
|
146
|
+
let promiseResolved = false;
|
|
147
|
+
allReady.catch((err) => {
|
|
148
|
+
debug("react bug");
|
|
149
|
+
didError = true;
|
|
150
|
+
firstErr = firstErr || err;
|
|
151
|
+
reactBug = err;
|
|
152
|
+
if (reactBug !== firstErr || promiseResolved) {
|
|
153
|
+
console.error(reactBug);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
if (didError)
|
|
157
|
+
throw firstErr;
|
|
158
|
+
if (disable2)
|
|
159
|
+
await allReady;
|
|
160
|
+
if (didError)
|
|
161
|
+
throw firstErr;
|
|
162
|
+
const { readableForUser, streamEnd, injectToStream } = (0, import_createReadableWrapper.createReadableWrapper)(readableOriginal);
|
|
163
|
+
promiseResolved = true;
|
|
164
|
+
return {
|
|
165
|
+
readable: readableForUser,
|
|
166
|
+
pipe: null,
|
|
167
|
+
streamEnd: wrapStreamEnd(streamEnd, didError),
|
|
168
|
+
injectToStream
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function afterReactBugCatch(fn) {
|
|
172
|
+
setTimeout(() => {
|
|
173
|
+
fn();
|
|
174
|
+
}, 0);
|
|
175
|
+
}
|
|
176
|
+
function wrapStreamEnd(streamEnd, didError) {
|
|
177
|
+
return streamEnd.then(() => new Promise((r) => setTimeout(r, 0))).then(() => !didError);
|
|
178
|
+
}
|
|
179
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
180
|
+
0 && (module.exports = {
|
|
181
|
+
disable,
|
|
182
|
+
renderToStream
|
|
183
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var initData_exports = {};
|
|
20
|
+
__export(initData_exports, {
|
|
21
|
+
initDataHtmlClass: () => initDataHtmlClass
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(initData_exports);
|
|
24
|
+
const initDataHtmlClass = "react-streaming_initData";
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
initDataHtmlClass
|
|
28
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var key_exports = {};
|
|
20
|
+
__export(key_exports, {
|
|
21
|
+
assertKey: () => assertKey,
|
|
22
|
+
stringifyKey: () => stringifyKey
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(key_exports);
|
|
25
|
+
var import_isCallable = require("../utils/isCallable");
|
|
26
|
+
var import_utils = require("./utils");
|
|
27
|
+
function stringifyKey(key) {
|
|
28
|
+
const keyString = JSON.stringify(key);
|
|
29
|
+
return keyString;
|
|
30
|
+
}
|
|
31
|
+
function assertKey(keyValue) {
|
|
32
|
+
(0, import_utils.assertUsage)(
|
|
33
|
+
keyValue,
|
|
34
|
+
`[useAsync(key, asyncFn)] You provided a \`key\` with the value \`${keyValue}\` which is forbidden.`
|
|
35
|
+
);
|
|
36
|
+
(0, import_utils.assertUsage)(
|
|
37
|
+
!(0, import_isCallable.isCallable)(keyValue),
|
|
38
|
+
`[useAsync(key, asyncFn)] You provided a \`key\` that is a function which is forbidden.`
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
assertKey,
|
|
44
|
+
stringifyKey
|
|
45
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var utils_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(utils_exports);
|
|
18
|
+
__reExport(utils_exports, require("../utils/assert"), module.exports);
|
|
19
|
+
__reExport(utils_exports, require("../utils/getGlobalVariable"), module.exports);
|
|
20
|
+
__reExport(utils_exports, require("../utils/isPromise"), module.exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export { useStream };
|
|
3
|
+
export { StreamProvider };
|
|
4
|
+
export type { StreamUtils };
|
|
5
|
+
type StreamUtils = {
|
|
6
|
+
injectToStream: (htmlChunk: string) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const StreamProvider: React.Provider<StreamUtils | null>;
|
|
9
|
+
declare function useStream(): StreamUtils | null;
|