{"version":3,"file":"ErrorMarshaller.mjs","sources":["../../../../../../core/src/ErrorMarshaller.ts"],"sourcesContent":["import {\n  SDKAPIUnreachableError,\n  StytchAPIError,\n  StytchAPISchemaError,\n  StytchAPIUnreachableError,\n  StytchSDKAPIError,\n  StytchSDKSchemaError,\n} from './public';\n\n/**\n * Some errors are thrown from inside an iframe, but we can't serialize them\n * to the parent in Webkit. This class handles restoring marshalled errors\n * to their original form.\n * It preserves the error instance/class constructor by inspecting err.name\n * and calling `new` on the matching constructor.\n */\nexport class ErrorMarshaller {\n  static inflate<T extends new (...any: never[]) => Error>(ErrorClass: T, ErrorData: Record<string, unknown>): Error {\n    // !!HACK!!\n    // We make the assumption that if the error takes in a required property\n    // (StytchAPIError takes in an APIDetails obj...)\n    // that we can just pass in the error body itself to satisfy the constructor...\n    // And if the types don't work out, Object.assign(...) copies everything over anyway\n    // This is a brittle and weak assumption.\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    const err = new ErrorClass(ErrorData);\n    Object.assign(err, ErrorData);\n    Object.setPrototypeOf(err, ErrorClass.prototype);\n    return err as Error;\n  }\n\n  static unmarshall(error: Record<string, unknown>): Error {\n    if ('name' in error) {\n      switch (error.name) {\n        case 'SDKAPIUnreachableError':\n          return ErrorMarshaller.inflate(SDKAPIUnreachableError, error);\n        case 'StytchSDKSchemaError':\n          return ErrorMarshaller.inflate(StytchSDKSchemaError, error);\n        case 'StytchAPIUnreachableError':\n          return ErrorMarshaller.inflate(StytchAPIUnreachableError, error);\n        case 'StytchAPISchemaError':\n          return ErrorMarshaller.inflate(StytchAPISchemaError, error);\n        case 'StytchSDKAPIError':\n          return ErrorMarshaller.inflate(StytchSDKAPIError, error);\n        case 'StytchAPIError':\n          return ErrorMarshaller.inflate(StytchAPIError, error);\n        case 'TypeError':\n          return ErrorMarshaller.inflate(TypeError, error);\n        case 'SyntaxError':\n          return ErrorMarshaller.inflate(SyntaxError, error);\n        case 'ReferenceError':\n          return ErrorMarshaller.inflate(ReferenceError, error);\n        case 'RangeError':\n          return ErrorMarshaller.inflate(RangeError, error);\n        case 'EvalError':\n          return ErrorMarshaller.inflate(EvalError, error);\n        case 'URIError':\n          return ErrorMarshaller.inflate(URIError, error);\n      }\n    }\n    return ErrorMarshaller.inflate(Error, error);\n  }\n}\n"],"names":["ErrorMarshaller","inflate","ErrorClass","ErrorData","err","Object","assign","setPrototypeOf","prototype","unmarshall","error","name","SDKAPIUnreachableError","StytchSDKSchemaError","StytchAPIUnreachableError","StytchAPISchemaError","StytchSDKAPIError","StytchAPIError","TypeError","SyntaxError","ReferenceError","RangeError","EvalError","URIError","Error"],"mappings":";;AASA;;;;;;AAMC,IACM,MAAMA,eAAAA,CAAAA;AACX,IAAA,OAAOC,OAAAA,CAAkDC,UAAa,EAAEC,SAAkC,EAAS;;;;;;;;;QASjH,MAAMC,GAAAA,GAAM,IAAIF,UAAAA,CAAWC,SAAAA,CAAAA;QAC3BE,MAAAA,CAAOC,MAAM,CAACF,GAAAA,EAAKD,SAAAA,CAAAA;AACnBE,QAAAA,MAAAA,CAAOE,cAAc,CAACH,GAAAA,EAAKF,UAAAA,CAAWM,SAAS,CAAA;QAC/C,OAAOJ,GAAAA;AACT,IAAA;IAEA,OAAOK,UAAAA,CAAWC,KAA8B,EAAS;AACvD,QAAA,IAAI,UAAUA,KAAAA,EAAO;AACnB,YAAA,OAAQA,MAAMC,IAAI;gBAChB,KAAK,wBAAA;oBACH,OAAOX,eAAAA,CAAgBC,OAAO,CAACW,sBAAAA,EAAwBF,KAAAA,CAAAA;gBACzD,KAAK,sBAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACY,oBAAAA,EAAsBH,KAAAA,CAAAA;gBACvD,KAAK,2BAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACa,yBAAAA,EAA2BJ,KAAAA,CAAAA;gBAC5D,KAAK,sBAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACc,oBAAAA,EAAsBL,KAAAA,CAAAA;gBACvD,KAAK,mBAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACe,iBAAAA,EAAmBN,KAAAA,CAAAA;gBACpD,KAAK,gBAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACgB,cAAAA,EAAgBP,KAAAA,CAAAA;gBACjD,KAAK,WAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACiB,SAAAA,EAAWR,KAAAA,CAAAA;gBAC5C,KAAK,aAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACkB,WAAAA,EAAaT,KAAAA,CAAAA;gBAC9C,KAAK,gBAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACmB,cAAAA,EAAgBV,KAAAA,CAAAA;gBACjD,KAAK,YAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACoB,UAAAA,EAAYX,KAAAA,CAAAA;gBAC7C,KAAK,WAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACqB,SAAAA,EAAWZ,KAAAA,CAAAA;gBAC5C,KAAK,UAAA;oBACH,OAAOV,eAAAA,CAAgBC,OAAO,CAACsB,QAAAA,EAAUb,KAAAA,CAAAA;AAC7C;AACF,QAAA;QACA,OAAOV,eAAAA,CAAgBC,OAAO,CAACuB,KAAAA,EAAOd,KAAAA,CAAAA;AACxC,IAAA;AACF;;;;"}