Files
SnowLuma/.pnpm-store/v11/files/4a/2cc299c335e4a39140bfd2fe32e6c31eb27ac544201b55a62640ee7b800eec27e0e4bcfe8a6f408e9bc53b380afd7a0bbc54ea5f49ccad32f8debb43b5a0a1
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

53 lines
1.8 KiB
Plaintext

import { GLOBAL_TSR } from "../constants.js";
import { createPlugin } from "seroval";
//#region src/ssr/serializer/transformer.ts
/**
* Create a strongly-typed serialization adapter for SSR hydration.
* Use to register custom types with the router serializer.
*/
function createSerializationAdapter(opts) {
return opts;
}
/** Create a Seroval plugin for server-side serialization only. */
/* @__NO_SIDE_EFFECTS__ */
function makeSsrSerovalPlugin(serializationAdapter, options) {
return /* @__PURE__ */ createPlugin({
tag: "$TSR/t/" + serializationAdapter.key,
test: serializationAdapter.test,
parse: { stream(value, ctx, _data) {
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
} },
serialize(node, ctx, _data) {
options.didRun = true;
return GLOBAL_TSR + ".t.get(\"" + serializationAdapter.key + "\")(" + ctx.serialize(node.v) + ")";
},
deserialize: void 0
});
}
/** Create a Seroval plugin for client/server symmetric (de)serialization. */
/* @__NO_SIDE_EFFECTS__ */
function makeSerovalPlugin(serializationAdapter) {
return /* @__PURE__ */ createPlugin({
tag: "$TSR/t/" + serializationAdapter.key,
test: serializationAdapter.test,
parse: {
sync(value, ctx, _data) {
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
},
async async(value, ctx, _data) {
return { v: await ctx.parse(serializationAdapter.toSerializable(value)) };
},
stream(value, ctx, _data) {
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
}
},
serialize: void 0,
deserialize(node, ctx, _data) {
return serializationAdapter.fromSerializable(ctx.deserialize(node.v));
}
});
}
//#endregion
export { createSerializationAdapter, makeSerovalPlugin, makeSsrSerovalPlugin };
//# sourceMappingURL=transformer.js.map