{"version":3,"file":"makeSerovalPlugin.cjs","names":[],"sources":["../../../../src/ssr/serializer/makeSerovalPlugin.ts"],"sourcesContent":["import { createPlugin } from 'seroval'\nimport type { AdapterNode, AnySerializationAdapter } from './transformer'\nimport type { Plugin } from 'seroval'\n\n/** Create a Seroval plugin for client/server symmetric (de)serialization. */\n/* @__NO_SIDE_EFFECTS__ */\nexport function makeSerovalPlugin(\n  serializationAdapter: AnySerializationAdapter,\n): Plugin<any, AdapterNode> {\n  return /* @__PURE__ */ createPlugin<any, AdapterNode>({\n    tag: '$TSR/t/' + serializationAdapter.key,\n    test: serializationAdapter.test,\n    parse: {\n      sync(value, ctx) {\n        return { v: ctx.parse(serializationAdapter.toSerializable(value)) }\n      },\n      async async(value, ctx) {\n        return {\n          v: await ctx.parse(serializationAdapter.toSerializable(value)),\n        }\n      },\n      stream(value, ctx) {\n        return { v: ctx.parse(serializationAdapter.toSerializable(value)) }\n      },\n    },\n    serialize: undefined as never,\n    deserialize(node, ctx) {\n      return serializationAdapter.fromSerializable(ctx.deserialize(node.v))\n    },\n  })\n}\n"],"mappings":";;;;AAMA,SAAgB,kBACd,sBAC0B;CAC1B,OAAuB,iBAAA,GAAA,QAAA,cAA+B;EACpD,KAAK,YAAY,qBAAqB;EACtC,MAAM,qBAAqB;EAC3B,OAAO;GACL,KAAK,OAAO,KAAK;IACf,OAAO,EAAE,GAAG,IAAI,MAAM,qBAAqB,eAAe,KAAK,CAAC,EAAE;GACpE;GACA,MAAM,MAAM,OAAO,KAAK;IACtB,OAAO,EACL,GAAG,MAAM,IAAI,MAAM,qBAAqB,eAAe,KAAK,CAAC,EAC/D;GACF;GACA,OAAO,OAAO,KAAK;IACjB,OAAO,EAAE,GAAG,IAAI,MAAM,qBAAqB,eAAe,KAAK,CAAC,EAAE;GACpE;EACF;EACA,WAAW,KAAA;EACX,YAAY,MAAM,KAAK;GACrB,OAAO,qBAAqB,iBAAiB,IAAI,YAAY,KAAK,CAAC,CAAC;EACtE;CACF,CAAC;AACH"}