UNPKG

based-auth

Version:

A Next.js/Node.js authentication and wallet API kit for Ethereum and Solana, with utilities for serialization and contract interaction, designed for serverless and API route usage.

1 lines 3.18 kB
{"version":3,"file":"serialize-HrEDksov.mjs","sources":["../src/utils/serialize.ts"],"sourcesContent":["import { BN } from \"@coral-xyz/anchor\";\r\nimport { PublicKey as SolanaPublicKey } from \"@solana/web3.js\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\n\r\nfunction transformObject(obj: any, replacer: (value: any) => any): any {\r\n if (Array.isArray(obj)) {\r\n return obj.map((item: any) => transformObject(item, replacer));\r\n }\r\n\r\n if (typeof obj === \"object\" && !replacer(obj)?.__type && !obj?.__type) {\r\n const result: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n result[key] = transformObject(obj[key], replacer);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n return replacer(obj);\r\n}\r\n\r\nexport const serialize = (network: NetworkSymbols, obj: any) => {\r\n const output = network === NetworkSymbols.sol ? \"BN\" : \"bigint\";\r\n return transformObject(obj, (value) => {\r\n if (value instanceof SolanaPublicKey) {\r\n return { __type: \"SolanaPublicKey\", value: value.toBase58() };\r\n }\r\n if (value instanceof Uint8Array) {\r\n return { __type: \"Uint8Array\", value: value.toString() };\r\n }\r\n if (value instanceof BN) {\r\n return { __type: output, value: value.toString() };\r\n }\r\n if (typeof value === \"bigint\") {\r\n return { __type: output, value: value.toString() };\r\n }\r\n return value;\r\n });\r\n};\r\n\r\nexport const deserialize = (obj: any) => {\r\n return transformObject(obj, (value) => {\r\n if (value?.__type === \"bigint\") {\r\n return BigInt(value.value);\r\n }\r\n if (value?.__type === \"BN\") {\r\n return new BN(value.value);\r\n }\r\n if (value?.__type === \"SolanaPublicKey\") {\r\n return new SolanaPublicKey(value.value);\r\n }\r\n if (value?.__type === \"Uint8Array\") {\r\n return new Uint8Array(value.value);\r\n }\r\n return value;\r\n });\r\n};\r\n"],"names":["transformObject","obj","replacer","item","_a","result","key","serialize","network","output","NetworkSymbols","value","SolanaPublicKey","BN","deserialize"],"mappings":";;;AAIA,SAASA,EAAgBC,GAAUC,GAAoC;;AACrE,MAAI,MAAM,QAAQD,CAAG;AACnB,WAAOA,EAAI,IAAI,CAACE,MAAcH,EAAgBG,GAAMD,CAAQ,CAAC;AAG/D,MAAI,OAAOD,KAAQ,YAAY,GAACG,IAAAF,EAASD,CAAG,MAAZ,QAAAG,EAAe,WAAU,EAACH,KAAA,QAAAA,EAAK,SAAQ;AACrE,UAAMI,IAAc,CAAA;AACpB,eAAWC,KAAOL;AAChB,MAAIA,EAAI,eAAeK,CAAG,MACxBD,EAAOC,CAAG,IAAIN,EAAgBC,EAAIK,CAAG,GAAGJ,CAAQ;AAGpD,WAAOG;AAAA,EACT;AAEA,SAAOH,EAASD,CAAG;AACrB;AAEO,MAAMM,IAAY,CAACC,GAAyBP,MAAa;AAC9D,QAAMQ,IAASD,MAAYE,EAAe,MAAM,OAAO;AACvD,SAAOV,EAAgBC,GAAK,CAACU,MACvBA,aAAiBC,IACZ,EAAE,QAAQ,mBAAmB,OAAOD,EAAM,WAAS,IAExDA,aAAiB,aACZ,EAAE,QAAQ,cAAc,OAAOA,EAAM,WAAS,IAEnDA,aAAiBE,IACZ,EAAE,QAAQJ,GAAQ,OAAOE,EAAM,WAAS,IAE7C,OAAOA,KAAU,WACZ,EAAE,QAAQF,GAAQ,OAAOE,EAAM,WAAS,IAE1CA,CACR;AACH,GAEaG,IAAc,CAACb,MACnBD,EAAgBC,GAAK,CAACU,OACvBA,KAAA,gBAAAA,EAAO,YAAW,WACb,OAAOA,EAAM,KAAK,KAEvBA,KAAA,gBAAAA,EAAO,YAAW,OACb,IAAIE,EAAGF,EAAM,KAAK,KAEvBA,KAAA,gBAAAA,EAAO,YAAW,oBACb,IAAIC,EAAgBD,EAAM,KAAK,KAEpCA,KAAA,gBAAAA,EAAO,YAAW,eACb,IAAI,WAAWA,EAAM,KAAK,IAE5BA,CACR;"}