@tanstack/router-core
Version:
Modern and scalable routing for React applications
46 lines (45 loc) • 1.87 kB
JavaScript
const require_RawStream = require("./RawStream.cjs");
const require_rawStreamCodec = require("./rawStreamCodec.cjs");
let seroval = require("seroval");
//#region src/ssr/serializer/RawStreamJSONPlugin.ts
/**
* Serializes a RawStream into JSON requests and static-cache responses.
* The optional signal stops the source pump when the request is aborted.
*/
/* @__NO_SIDE_EFFECTS__ */
function createRawStreamJSONPlugin(signal) {
return /* @__PURE__ */ (0, seroval.createPlugin)({
tag: "tss/RawStream",
test: (value) => value instanceof require_RawStream.RawStream,
parse: { async: async (value, ctx) => {
const text = await ctx.parse(value.hint === "text");
const [stream] = require_rawStreamCodec.pumpEncodedStream(value.stream, value.hint === "text" ? require_rawStreamCodec.encodeText : require_rawStreamCodec.toBase64, signal);
return {
text,
stream: await ctx.parse(stream)
};
} },
serialize: void 0,
deserialize: void 0
});
}
const RawStreamJSONPlugin = /* @__PURE__ */ createRawStreamJSONPlugin();
/**
* Deserializes the JSON shape above back into a `ReadableStream<Uint8Array>`.
* `test` never matches, so this plugin is inert during serialization and can
* share a plugin list with `RawStreamJSONPlugin`.
*/
const RawStreamJSONDeserializePlugin = /* @__PURE__ */ (0, seroval.createPlugin)({
tag: "tss/RawStream",
test: () => false,
parse: {},
serialize: void 0,
deserialize(node, ctx) {
return require_rawStreamCodec.fromEncodedStream(ctx.deserialize(node.stream), ctx.deserialize(node.text) ? require_rawStreamCodec.decodeText : require_rawStreamCodec.fromBase64);
}
});
//#endregion
exports.RawStreamJSONDeserializePlugin = RawStreamJSONDeserializePlugin;
exports.RawStreamJSONPlugin = RawStreamJSONPlugin;
exports.createRawStreamJSONPlugin = createRawStreamJSONPlugin;
//# sourceMappingURL=RawStreamJSONPlugin.cjs.map