UNPKG

3.48 kBSource Map (JSON)View Raw
1{"version":3,"sources":["checkSerializable.tsx"],"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","Set","key","checkSerializable"],"mappings":";;;;;;;AAAA,MAAMA,yCAAyC,GAAG,CAChDC,CADgD,EAEhDC,IAFgD,EAGhDC,QAHgD,KAUzC;AACP,MACEF,CAAC,KAAKG,SAAN,IACAH,CAAC,KAAK,IADN,IAEA,OAAOA,CAAP,KAAa,SAFb,IAGA,OAAOA,CAAP,KAAa,QAHb,IAIA,OAAOA,CAAP,KAAa,QALf,EAME;AACA,WAAO;AAAEI,MAAAA,YAAY,EAAE;AAAhB,KAAP;AACD;;AAED,MACEC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BR,CAA/B,MAAsC,iBAAtC,IACA,CAACS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAFH,EAGE;AACA,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELF,MAAAA,QAFK;AAGLS,MAAAA,MAAM,EAAE,OAAOX,CAAP,KAAa,UAAb,GAA0B,UAA1B,GAAuCY,MAAM,CAACZ,CAAD;AAHhD,KAAP;AAKD;;AAED,MAAIC,IAAI,CAACY,GAAL,CAASb,CAAT,CAAJ,EAAiB;AACf,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELO,MAAAA,MAAM,EAAE,oBAFH;AAGLT,MAAAA;AAHK,KAAP;AAKD;;AAEDD,EAAAA,IAAI,CAACa,GAAL,CAASd,CAAT;;AAEA,MAAIS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAAJ,EAAsB;AACpB,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,CAAC,CAACgB,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,YAAME,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACe,CAAD,CAD0D,EAE3D,IAAIG,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAca,CAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACE,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF,GAZD,MAYO;AACL,SAAK,MAAME,GAAX,IAAkBnB,CAAlB,EAAqB;AACnB,YAAMiB,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACmB,GAAD,CAD0D,EAE3D,IAAID,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAciB,GAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACF,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF;;AAED,SAAO;AAAEb,IAAAA,YAAY,EAAE;AAAhB,GAAP;AACD,CArED;;AAuEe,SAASgB,iBAAT,CAA2BpB,CAA3B,EAAsD;AACnE,SAAOD,yCAAyC,CAACC,CAAD,EAAI,IAAIkB,GAAJ,EAAJ,EAAoB,EAApB,CAAhD;AACD","sourcesContent":["const checkSerializableWithoutCircularReference = (\n o: { [key: string]: any },\n seen: Set<any>,\n location: (string | number)[]\n):\n | { serializable: true }\n | {\n serializable: false;\n location: (string | number)[];\n reason: string;\n } => {\n if (\n o === undefined ||\n o === null ||\n typeof o === 'boolean' ||\n typeof o === 'number' ||\n typeof o === 'string'\n ) {\n return { serializable: true };\n }\n\n if (\n Object.prototype.toString.call(o) !== '[object Object]' &&\n !Array.isArray(o)\n ) {\n return {\n serializable: false,\n location,\n reason: typeof o === 'function' ? 'Function' : String(o),\n };\n }\n\n if (seen.has(o)) {\n return {\n serializable: false,\n reason: 'Circular reference',\n location,\n };\n }\n\n seen.add(o);\n\n if (Array.isArray(o)) {\n for (let i = 0; i < o.length; i++) {\n const childResult = checkSerializableWithoutCircularReference(\n o[i],\n new Set<any>(seen),\n [...location, i]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n } else {\n for (const key in o) {\n const childResult = checkSerializableWithoutCircularReference(\n o[key],\n new Set<any>(seen),\n [...location, key]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n }\n\n return { serializable: true };\n};\n\nexport default function checkSerializable(o: { [key: string]: any }) {\n return checkSerializableWithoutCircularReference(o, new Set<any>(), []);\n}\n"]}
\No newline at end of file