UNPKG

4.7 kBSource Map (JSON)View Raw
1{"version":3,"sources":["supported-platform-info.ts"],"names":["Platform","memo","clearMemo","getSupportedFunction","supportedPlatforms","getter","defaultGetter","supportedMap","filter","key","OS","forEach","select","default","getSupportedPlatformInfoSync","defaultValue","memoKey","undefined","output","getSupportedPlatformInfoAsync","Promise","resolve","getSupportedPlatformInfoFunctions","syncGetter","asyncParams"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AAWA;AACA,IAAIC,IAAc,GAAG,EAArB;AAEA,OAAO,SAASC,SAAT,GAAqB;AAC1BD,EAAAA,IAAI,GAAG,EAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,oBAAT,CACEC,kBADF,EAEEC,MAFF,EAGEC,aAHF,EAIa;AACX,MAAIC,YAAiB,GAAG,EAAxB;AACAH,EAAAA,kBAAkB,CACfI,MADH,CACWC,GAAD,IAAST,QAAQ,CAACU,EAAT,IAAeD,GADlC,EAEGE,OAFH,CAEYF,GAAD,IAAUF,YAAY,CAACE,GAAD,CAAZ,GAAoBJ,MAFzC;AAGA,SAAOL,QAAQ,CAACY,MAAT,CAAgB,EACrB,GAAGL,YADkB;AAErBM,IAAAA,OAAO,EAAEP;AAFY,GAAhB,CAAP;AAID;AAED;AACA;AACA;AACA;;;AACA,OAAO,SAASQ,4BAAT,CAAyC;AAC9CT,EAAAA,MAD8C;AAE9CD,EAAAA,kBAF8C;AAG9CW,EAAAA,YAH8C;AAI9CC,EAAAA;AAJ8C,CAAzC,EAKsC;AAC3C,MAAIA,OAAO,IAAIf,IAAI,CAACe,OAAD,CAAJ,IAAiBC,SAAhC,EAA2C;AACzC,WAAOhB,IAAI,CAACe,OAAD,CAAX;AACD,GAFD,MAEO;AACL,UAAME,MAAM,GAAGf,oBAAoB,CAACC,kBAAD,EAAqBC,MAArB,EAA6B,MAAMU,YAAnC,CAApB,EAAf;;AACA,QAAIC,OAAJ,EAAa;AACXf,MAAAA,IAAI,CAACe,OAAD,CAAJ,GAAgBE,MAAhB;AACD;;AACD,WAAOA,MAAP;AACD;AACF;AAED;AACA;AACA;AACA;;AACA,OAAO,eAAeC,6BAAf,CAAgD;AACrDd,EAAAA,MADqD;AAErDD,EAAAA,kBAFqD;AAGrDW,EAAAA,YAHqD;AAIrDC,EAAAA;AAJqD,CAAhD,EAKgD;AACrD,MAAIA,OAAO,IAAIf,IAAI,CAACe,OAAD,CAAJ,IAAiBC,SAAhC,EAA2C;AACzC,WAAOhB,IAAI,CAACe,OAAD,CAAX;AACD,GAFD,MAEO;AACL,UAAME,MAAM,GAAG,MAAMf,oBAAoB,CAACC,kBAAD,EAAqBC,MAArB,EAA6B,MACpEe,OAAO,CAACC,OAAR,CAAgBN,YAAhB,CADuC,CAApB,EAArB;;AAGA,QAAIC,OAAJ,EAAa;AACXf,MAAAA,IAAI,CAACe,OAAD,CAAJ,GAAgBE,MAAhB;AACD;;AAED,WAAOA,MAAP;AACD;AACF;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASI,iCAAT,CAA8C;AACnDC,EAAAA,UADmD;AAEnD,KAAGC;AAFgD,CAA9C,EAGyE;AAC9E,SAAO,CACL,MAAML,6BAA6B,CAACK,WAAD,CAD9B,EAEL,MAAMV,4BAA4B,CAAC,EAAE,GAAGU,WAAL;AAAkBnB,IAAAA,MAAM,EAAEkB;AAA1B,GAAD,CAF7B,CAAP;AAID","sourcesContent":["import { Platform } from 'react-native';\n\nimport {\n PlatformArray,\n Getter,\n GetSupportedPlatformInfoAsyncParams,\n GetSupportedPlatformInfoSyncParams,\n GetSupportedPlatformInfoFunctionsParams,\n} from './privateTypes';\n\ntype MemoType = { [key: string]: any };\n// centralized memo object\nlet memo: MemoType = {};\n\nexport function clearMemo() {\n memo = {};\n}\n\n/**\n * function returns the proper getter based current platform X supported platforms\n * @param supportedPlatforms array of supported platforms (OS)\n * @param getter desired function used to get info\n * @param defaultGetter getter that returns a default value if desired getter is not supported by current platform\n */\nfunction getSupportedFunction<T>(\n supportedPlatforms: PlatformArray,\n getter: Getter<T>,\n defaultGetter: Getter<T>\n): Getter<T> {\n let supportedMap: any = {};\n supportedPlatforms\n .filter((key) => Platform.OS == key)\n .forEach((key) => (supportedMap[key] = getter));\n return Platform.select({\n ...supportedMap,\n default: defaultGetter,\n });\n}\n\n/**\n * function used to get desired info synchronously — with optional memoization\n * @param param0\n */\nexport function getSupportedPlatformInfoSync<T>({\n getter,\n supportedPlatforms,\n defaultValue,\n memoKey,\n}: GetSupportedPlatformInfoSyncParams<T>): T {\n if (memoKey && memo[memoKey] != undefined) {\n return memo[memoKey];\n } else {\n const output = getSupportedFunction(supportedPlatforms, getter, () => defaultValue)();\n if (memoKey) {\n memo[memoKey] = output;\n }\n return output;\n }\n}\n\n/**\n * function used to get desired info asynchronously — with optional memoization\n * @param param0\n */\nexport async function getSupportedPlatformInfoAsync<T>({\n getter,\n supportedPlatforms,\n defaultValue,\n memoKey,\n}: GetSupportedPlatformInfoAsyncParams<T>): Promise<T> {\n if (memoKey && memo[memoKey] != undefined) {\n return memo[memoKey];\n } else {\n const output = await getSupportedFunction(supportedPlatforms, getter, () =>\n Promise.resolve(defaultValue)\n )();\n if (memoKey) {\n memo[memoKey] = output;\n }\n\n return output;\n }\n}\n\n/**\n * function that returns array of getter functions [async, sync]\n * @param param0\n */\nexport function getSupportedPlatformInfoFunctions<T>({\n syncGetter,\n ...asyncParams\n}: GetSupportedPlatformInfoFunctionsParams<T>): [Getter<Promise<T>>, Getter<T>] {\n return [\n () => getSupportedPlatformInfoAsync(asyncParams),\n () => getSupportedPlatformInfoSync({ ...asyncParams, getter: syncGetter }),\n ];\n}\n"]}
\No newline at end of file