@norcy/react-native-toolkit 0.1.93 → 0.1.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","obj","__esModule","default","EventEmitter","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","exports","LastLoginType","key","type","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","AsyncStorage","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiE,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjE,MAAMG,YAAY,GAAGJ,OAAO,CAAC,QAAQ,CAAC,CAACI,YAAY;AACnD,MAAMC,YAAY,GAAG,IAAID,YAAY,CAAC,CAAC;AAEvC,IAAIE,YAAY,GAAG,KAAK;AAYxB,MAAMC,UAAkC,GAAG,CAAC,CAAC;AAEtC,MAAMC,YAAuB,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACrCE,aAAa,EAAE;IACbC,GAAG,EAAE,mBAAmB;IACxBC,IAAI,EAAE,KAAK;IACXT,OAAO,EAAE,CAAC;EACZ,CAAC;EACDU,MAAM,EAAE;IACNF,GAAG,EAAE,YAAY;IACjBC,IAAI,EAAE,KAAK;IACXT,OAAO,EAAE;EACX,CAAC;EACDW,SAAS,EAAE;IACTH,GAAG,EAAE,eAAe;IACpBC,IAAI,EAAE,KAAK;IACXT,OAAO,EAAE;EACX,CAAC;EACDY,eAAe,EAAE;IACfJ,GAAG,EAAE,qBAAqB;IAC1BC,IAAI,EAAE,QAAQ;IACdT,OAAO,EAAE,CAAC;EACZ,CAAC;EACDa,QAAQ,EAAE;IACRL,GAAG,EAAE,cAAc;IACnBC,IAAI,EAAE,OAAO;IACbT,OAAO,EAAE;EACX,CAAC;EACDc,UAAU,EAAE;IACVN,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,OAAO;IACbT,OAAO,EAAE;EACX,CAAC;EACDe,oBAAoB,EAAE;IACpBP,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,MAAM;IACZT,OAAO,EAAE;EACX,CAAC;EACDgB,YAAY,EAAE;IACZR,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,KAAK;IACXT,OAAO,EAAE;EACX,CAAC;EACDiB,WAAW,EAAE;IACXT,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,KAAK;IACXT,OAAO,EAAE;EACX,CAAC;EACDkB,OAAO,EAAE;IACPV,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,MAAM;IACZT,OAAO,EAAE;EACX;AACF,CAAC;AAED,MAAMmB,YAAY,GAAGA,CAACC,KAAgB,EAAEZ,GAAW,KAAK;EACtD,KAAK,MAAMa,SAAS,IAAID,KAAK,EAAE;IAC7B,IAAIA,KAAK,CAACC,SAAS,CAAC,CAACb,GAAG,KAAKA,GAAG,EAAE;MAChC,OAAOY,KAAK,CAACC,SAAS,CAAC;IACzB;EACF;EACA,OAAO,IAAI;AACb,CAAC;AAEM,MAAMC,QAAQ,GAAAhB,OAAA,CAAAgB,QAAA,GAAG;EACtBC,IAAI,EAAE,MAAOC,SAAoB,IAAK;IACpCC,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;IACnB,IAAIC,IAAI,GAAG,EAAE;IACb,MAAMP,KAAK,GAAG;MAAE,GAAGf,YAAY;MAAE,GAAGmB;IAAU,CAAC;IAC/C,KAAK,MAAMI,IAAI,IAAIR,KAAK,EAAE;MACxBO,IAAI,CAACE,IAAI,CAACT,KAAK,CAACQ,IAAI,CAAC,CAACpB,GAAG,CAAC;IAC5B;IACA,MAAMsB,MAAM,GAAG,MAAMC,aAAa,CAACJ,IAAI,CAAC;IAExC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACtC,MAAMxB,GAAG,GAAGsB,MAAM,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC;MACxB,MAAME,KAAK,GAAGJ,MAAM,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,MAAMJ,IAAI,GAAGT,YAAY,CAACC,KAAK,EAAEZ,GAAG,CAAC;MACrC,IAAI,CAACoB,IAAI,EAAE;QACT;MACF;MACA;MACA,IAAI,CAACM,KAAK,EAAE;QACV9B,UAAU,CAACI,GAAG,CAAC,GAAGoB,IAAI,CAAC5B,OAAO;MAChC,CAAC,MAAM,IAAI4B,IAAI,CAACnB,IAAI,KAAK,QAAQ,IAAImB,IAAI,CAACnB,IAAI,KAAK,OAAO,EAAE;QAC1DL,UAAU,CAACI,GAAG,CAAC,GAAG2B,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC;MACrC,CAAC,MAAM,IAAIN,IAAI,CAACnB,IAAI,KAAK,KAAK,EAAE;QAC9BL,UAAU,CAACI,GAAG,CAAC,GAAG6B,QAAQ,CAACH,KAAK,EAAE,EAAE,CAAC;MACvC,CAAC,MAAM,IAAIN,IAAI,CAACnB,IAAI,KAAK,MAAM,EAAE;QAC/BL,UAAU,CAACI,GAAG,CAAC,GAAG2B,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC;MACrC,CAAC,MAAM;QACL9B,UAAU,CAACI,GAAG,CAAC,GAAG0B,KAAK;MACzB;;MAEA;MACA;MACA;MACA;MACA;MACA;IACF;;IAEAT,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;IACrBvB,YAAY,GAAG,IAAI;IACnBD,YAAY,CAACoC,IAAI,CAAC,MAAM,CAAC;EAC3B,CAAC;EAEDC,QAAQ,EAAGX,IAAc,IAAK;IAC5B,OAAOxB,UAAU,CAACwB,IAAI,CAACpB,GAAG,CAAC;EAC7B,CAAC;EAEDgC,QAAQ,EAAE,MAAAA,CAAOZ,IAAc,EAAEM,KAAU,KAAK;IAC9C,MAAM1B,GAAG,GAAGoB,IAAI,CAACpB,GAAG;IACpB,IAAIiC,UAAkB;IACtBrC,UAAU,CAACI,GAAG,CAAC,GAAG0B,KAAK;IACvB,IAAIN,IAAI,CAACnB,IAAI,KAAK,QAAQ,IAAImB,IAAI,CAACnB,IAAI,KAAK,OAAO,EAAE;MACnDgC,UAAU,GAAGN,IAAI,CAACO,SAAS,CAACR,KAAK,CAAC;IACpC,CAAC,MAAM,IAAIN,IAAI,CAACnB,IAAI,KAAK,KAAK,EAAE;MAC9BgC,UAAU,GAAGP,KAAK,CAACS,QAAQ,CAAC,CAAC;IAC/B,CAAC,MAAM,IAAIf,IAAI,CAACnB,IAAI,KAAK,MAAM,EAAE;MAC/BgC,UAAU,GAAGP,KAAK,CAACS,QAAQ,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLF,UAAU,GAAGP,KAAK;IACpB;IAEA,MAAMU,SAAS,CAACpC,GAAG,EAAEiC,UAAU,CAAC;EAClC,CAAC;EAEDI,WAAW,EAAGC,QAAkB,IAAK;IACnC,IAAI3C,YAAY,EAAE;MAChB2C,QAAQ,IAAIA,QAAQ,CAAC,CAAC;MACtB;IACF;IACA5C,YAAY,CAAC6C,EAAE,CAAC,MAAM,EAAED,QAAQ,CAAC;EACnC,CAAC;EAEDE,eAAe,EAAGF,QAAkB,IAAK;IACvC,IAAI3C,YAAY,EAAE;MAChB2C,QAAQ,IAAIA,QAAQ,CAAC,CAAC;MACtB;IACF;IACA5C,YAAY,CAAC+C,IAAI,CAAC,MAAM,EAAEH,QAAQ,CAAC;EACrC;AACF,CAAC;AAED,MAAMF,SAAS,GAAG,MAAAA,CAAOpC,GAAW,EAAE0B,KAAa,KAAK;EACtD,IAAI;IACF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BT,OAAO,CAACyB,KAAK,CAAC,YAAY,CAAC;IAC7B;IACA;IACA,MAAMC,qBAAY,CAACC,OAAO,CAAC5C,GAAG,EAAE0B,KAAK,CAAC;EACxC,CAAC,CAAC,OAAOmB,CAAC,EAAE;IACV5B,OAAO,CAACyB,KAAK,CAACG,CAAC,CAAC;EAClB;AACF,CAAC;AAED,MAAMtB,aAAa,GAAG,MAAOJ,IAAc,IAAK;EAC9C,IAAI;IACF,MAAMG,MAAM,GAAG,MAAMqB,qBAAY,CAACG,QAAQ,CAAC3B,IAAI,CAAC;IAChD;IACA,OAAOG,MAAM;EACf,CAAC,CAAC,OAAOuB,CAAC,EAAE;IACV5B,OAAO,CAACyB,KAAK,CAACG,CAAC,CAAC;IAChB,OAAO,EAAE;EACX;AACF,CAAC"}
1
+ {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","obj","__esModule","default","EventEmitter","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","exports","LastLoginType","key","type","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","AsyncStorage","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
@@ -8,7 +8,6 @@ var _cameraroll = _interopRequireDefault(require("@react-native-community/camera
8
8
  var _react = require("react");
9
9
  var _reactNative = require("react-native");
10
10
  var _reactNativeSimpleToast = _interopRequireDefault(require("react-native-simple-toast"));
11
- var _rnFetchBlob = _interopRequireDefault(require("rn-fetch-blob"));
12
11
  var _PrefData = require("./PrefData");
13
12
  var _ReportUtil = require("./ReportUtil");
14
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -146,7 +145,8 @@ const Tool = exports.Tool = {
146
145
  }
147
146
  });
148
147
  } else {
149
- _reactNative.Linking.openURL(ToolkitConfig.AppWebsite);
148
+ // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网
149
+ _reactNative.Linking.openURL(ToolkitConfig.AppWebsiteAlias);
150
150
  }
151
151
  },
152
152
  notifyMe: async text => {
@@ -216,7 +216,11 @@ const Tool = exports.Tool = {
216
216
  // 安卓远程图片需要下载
217
217
  const extension = Tool.get_url_extension(url);
218
218
  try {
219
- const res = await _rnFetchBlob.default.config({
219
+ let RNFetchBlob = require('rn-fetch-blob');
220
+ if (!RNFetchBlob) {
221
+ RNFetchBlob = require('react-native-blob-util');
222
+ }
223
+ const res = await RNFetchBlob.config({
220
224
  fileCache: true,
221
225
  appendExt: extension
222
226
  }).fetch('GET', url, {});
@@ -1 +1 @@
1
- {"version":3,"names":["_cameraroll","_interopRequireDefault","require","_react","_reactNative","_reactNativeSimpleToast","_rnFetchBlob","_PrefData","_ReportUtil","obj","__esModule","default","ToolkitConfig","exports","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","undefined","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","useState","showToast","toast","Toast","showWithGravity","SHORT","CENTER","goAppStoreReview","ReportUtil","report","Platform","OS","Linking","canOpenURL","then","supported","openURL","iOSReviewUrl","NativeModules","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsite","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PermissionsAndroid","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","CameraRoll","save","type","album","AppName","error","JSON","stringify","extension","res","RNFetchBlob","fileCache","appendExt","path","e1","setVibrateEnable","enable","PrefData","BuildInPrefs","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","Vibration"],"sources":["Tool.ts"],"sourcesContent":["import CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport Toast from 'react-native-simple-toast';\nimport RNFetchBlob from 'rn-fetch-blob';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n Linking.openURL(ToolkitConfig.AppWebsite);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n const res = await RNFetchBlob.config({\n fileCache: true,\n appendExt: extension,\n }).fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_cameraroll","_interopRequireDefault","require","_react","_reactNative","_reactNativeSimpleToast","_PrefData","_ReportUtil","obj","__esModule","default","ToolkitConfig","exports","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","undefined","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","useState","showToast","toast","Toast","showWithGravity","SHORT","CENTER","goAppStoreReview","ReportUtil","report","Platform","OS","Linking","canOpenURL","then","supported","openURL","iOSReviewUrl","NativeModules","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PermissionsAndroid","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","CameraRoll","save","type","album","AppName","error","JSON","stringify","extension","RNFetchBlob","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","PrefData","BuildInPrefs","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","Vibration"],"sources":["Tool.ts"],"sourcesContent":["import CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport Toast from 'react-native-simple-toast';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppWebsiteAlias: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网\n Linking.openURL(ToolkitConfig.AppWebsiteAlias);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n let RNFetchBlob = require('rn-fetch-blob');\n if (!RNFetchBlob) {\n RNFetchBlob = require('react-native-blob-util');\n }\n const res = await RNFetchBlob.config({\n fileCache: true,\n appendExt: extension,\n }).fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["AsyncStorage","EventEmitter","require","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","LastLoginType","key","type","default","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["AsyncStorage","EventEmitter","require","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","LastLoginType","key","type","default","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
@@ -2,7 +2,6 @@ import CameraRoll from '@react-native-community/cameraroll';
2
2
  import { useState } from 'react';
3
3
  import { Linking, NativeModules, PermissionsAndroid, Platform, Vibration } from 'react-native';
4
4
  import Toast from 'react-native-simple-toast';
5
- import RNFetchBlob from 'rn-fetch-blob';
6
5
  import { BuildInPrefs, PrefData } from './PrefData';
7
6
  import { ReportUtil } from './ReportUtil';
8
7
  export let ToolkitConfig;
@@ -138,7 +137,8 @@ export const Tool = {
138
137
  }
139
138
  });
140
139
  } else {
141
- Linking.openURL(ToolkitConfig.AppWebsite);
140
+ // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网
141
+ Linking.openURL(ToolkitConfig.AppWebsiteAlias);
142
142
  }
143
143
  },
144
144
  notifyMe: async text => {
@@ -208,6 +208,10 @@ export const Tool = {
208
208
  // 安卓远程图片需要下载
209
209
  const extension = Tool.get_url_extension(url);
210
210
  try {
211
+ let RNFetchBlob = require('rn-fetch-blob');
212
+ if (!RNFetchBlob) {
213
+ RNFetchBlob = require('react-native-blob-util');
214
+ }
211
215
  const res = await RNFetchBlob.config({
212
216
  fileCache: true,
213
217
  appendExt: extension
@@ -1 +1 @@
1
- {"version":3,"names":["CameraRoll","useState","Linking","NativeModules","PermissionsAndroid","Platform","Vibration","Toast","RNFetchBlob","BuildInPrefs","PrefData","ReportUtil","ToolkitConfig","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","undefined","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","showToast","toast","showWithGravity","SHORT","CENTER","goAppStoreReview","report","OS","canOpenURL","then","supported","openURL","iOSReviewUrl","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsite","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","save","type","album","AppName","error","JSON","stringify","extension","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration"],"sources":["Tool.ts"],"sourcesContent":["import CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport Toast from 'react-native-simple-toast';\nimport RNFetchBlob from 'rn-fetch-blob';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n Linking.openURL(ToolkitConfig.AppWebsite);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n const res = await RNFetchBlob.config({\n fileCache: true,\n appendExt: extension,\n }).fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["CameraRoll","useState","Linking","NativeModules","PermissionsAndroid","Platform","Vibration","Toast","BuildInPrefs","PrefData","ReportUtil","ToolkitConfig","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","undefined","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","showToast","toast","showWithGravity","SHORT","CENTER","goAppStoreReview","report","OS","canOpenURL","then","supported","openURL","iOSReviewUrl","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","save","type","album","AppName","error","JSON","stringify","extension","RNFetchBlob","require","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration"],"sources":["Tool.ts"],"sourcesContent":["import CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport Toast from 'react-native-simple-toast';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppWebsiteAlias: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网\n Linking.openURL(ToolkitConfig.AppWebsiteAlias);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n let RNFetchBlob = require('rn-fetch-blob');\n if (!RNFetchBlob) {\n RNFetchBlob = require('react-native-blob-util');\n }\n const res = await RNFetchBlob.config({\n fileCache: true,\n appendExt: extension,\n }).fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n};\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface ToolkitConfigType {
7
7
  AndroidPackageName: string;
8
8
  AppName: string;
9
9
  AppWebsite: string;
10
+ AppWebsiteAlias: string;
10
11
  AppScheme: string;
11
12
  PolicyUrl: string;
12
13
  TermsUrl: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.93",
3
+ "version": "0.1.95",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -71,12 +71,12 @@
71
71
  "query-string": "^8.0.0",
72
72
  "react": "16.11.0",
73
73
  "react-native": "0.62.2",
74
+ "react-native-blob-util": "^0.19.11",
74
75
  "react-native-device-info": "^10.0.2",
75
76
  "react-native-purchases": "5.6.0",
76
77
  "react-native-simple-toast": "^1.1.3",
77
78
  "react-native-wechat-lib": "^1.1.26",
78
79
  "release-it": "^13.5.8",
79
- "rn-fetch-blob": "^0.12.0",
80
80
  "typescript": "^5.0.2"
81
81
  },
82
82
  "peerDependencies": {
@@ -93,11 +93,11 @@
93
93
  "query-string": "^8.0.0",
94
94
  "react": "*",
95
95
  "react-native": "*",
96
+ "react-native-blob-util": "*",
96
97
  "react-native-device-info": "*",
97
98
  "react-native-purchases": "*",
98
99
  "react-native-simple-toast": "*",
99
- "react-native-wechat-lib": "*",
100
- "rn-fetch-blob": "*"
100
+ "react-native-wechat-lib": "*"
101
101
  },
102
102
  "jest": {
103
103
  "preset": "react-native",
package/src/PrefData.ts CHANGED
@@ -82,7 +82,7 @@ const getPrefByKey = (Prefs: PrefsType, key: string) => {
82
82
  export const PrefData = {
83
83
  load: async (initPrefs: PrefsType) => {
84
84
  console.log('读取配置');
85
- let keys = [];
85
+ let keys: string[] = [];
86
86
  const Prefs = { ...BuildInPrefs, ...initPrefs };
87
87
  for (const pref in Prefs) {
88
88
  keys.push(Prefs[pref].key);
package/src/Tool.ts CHANGED
@@ -8,7 +8,6 @@ import {
8
8
  Vibration,
9
9
  } from 'react-native';
10
10
  import Toast from 'react-native-simple-toast';
11
- import RNFetchBlob from 'rn-fetch-blob';
12
11
  import { BuildInPrefs, PrefData } from './PrefData';
13
12
  import { ReportUtil } from './ReportUtil';
14
13
 
@@ -22,6 +21,7 @@ export interface ToolkitConfigType {
22
21
 
23
22
  AppName: string;
24
23
  AppWebsite: string;
24
+ AppWebsiteAlias: string;
25
25
  AppScheme: string;
26
26
 
27
27
  PolicyUrl: string;
@@ -216,7 +216,8 @@ export const Tool = {
216
216
  }
217
217
  });
218
218
  } else {
219
- Linking.openURL(ToolkitConfig.AppWebsite);
219
+ // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网
220
+ Linking.openURL(ToolkitConfig.AppWebsiteAlias);
220
221
  }
221
222
  },
222
223
 
@@ -287,6 +288,10 @@ export const Tool = {
287
288
  // 安卓远程图片需要下载
288
289
  const extension = Tool.get_url_extension(url);
289
290
  try {
291
+ let RNFetchBlob = require('rn-fetch-blob');
292
+ if (!RNFetchBlob) {
293
+ RNFetchBlob = require('react-native-blob-util');
294
+ }
290
295
  const res = await RNFetchBlob.config({
291
296
  fileCache: true,
292
297
  appendExt: extension,
package/yarn.lock CHANGED
@@ -1408,6 +1408,18 @@
1408
1408
  resolved "https://registry.yarnpkg.com/@invertase/react-native-apple-authentication/-/react-native-apple-authentication-2.2.2.tgz#1d3b6d22ba1fab8ef8a285396acdbf0778ab071b"
1409
1409
  integrity sha512-uNZcUn9WbAQP5zSOFXI1+kEUokLwZG9imUulFdt5t22CU2ozGq6zyPm+BAVVg8D5eUUXduX/dJFhbuOpJxiEhQ==
1410
1410
 
1411
+ "@isaacs/cliui@^8.0.2":
1412
+ version "8.0.2"
1413
+ resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
1414
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
1415
+ dependencies:
1416
+ string-width "^5.1.2"
1417
+ string-width-cjs "npm:string-width@^4.2.0"
1418
+ strip-ansi "^7.0.1"
1419
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
1420
+ wrap-ansi "^8.1.0"
1421
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
1422
+
1411
1423
  "@istanbuljs/load-nyc-config@^1.0.0":
1412
1424
  version "1.1.0"
1413
1425
  resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -1875,6 +1887,11 @@
1875
1887
  dependencies:
1876
1888
  "@octokit/openapi-types" "^12.11.0"
1877
1889
 
1890
+ "@pkgjs/parseargs@^0.11.0":
1891
+ version "0.11.0"
1892
+ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
1893
+ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
1894
+
1878
1895
  "@react-native-community/async-storage@^1.12.0":
1879
1896
  version "1.12.1"
1880
1897
  resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.12.1.tgz#25f821b4f6b13abe005ad67e47c6f1cee9f27b24"
@@ -2812,6 +2829,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1:
2812
2829
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
2813
2830
  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
2814
2831
 
2832
+ ansi-regex@^6.0.1:
2833
+ version "6.0.1"
2834
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
2835
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
2836
+
2815
2837
  ansi-styles@^3.2.0, ansi-styles@^3.2.1:
2816
2838
  version "3.2.1"
2817
2839
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2826,6 +2848,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
2826
2848
  dependencies:
2827
2849
  color-convert "^2.0.1"
2828
2850
 
2851
+ ansi-styles@^6.1.0:
2852
+ version "6.2.1"
2853
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
2854
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
2855
+
2829
2856
  ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
2830
2857
  version "0.1.0"
2831
2858
  resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
@@ -4556,6 +4583,11 @@ duplexer3@^0.1.4:
4556
4583
  resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e"
4557
4584
  integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
4558
4585
 
4586
+ eastasianwidth@^0.2.0:
4587
+ version "0.2.0"
4588
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
4589
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
4590
+
4559
4591
  ee-first@1.1.1:
4560
4592
  version "1.1.1"
4561
4593
  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -4588,6 +4620,11 @@ emoji-regex@^8.0.0:
4588
4620
  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
4589
4621
  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
4590
4622
 
4623
+ emoji-regex@^9.2.2:
4624
+ version "9.2.2"
4625
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
4626
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
4627
+
4591
4628
  encodeurl@~1.0.2:
4592
4629
  version "1.0.2"
4593
4630
  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -5408,6 +5445,14 @@ for-in@^1.0.2:
5408
5445
  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
5409
5446
  integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
5410
5447
 
5448
+ foreground-child@^3.1.0:
5449
+ version "3.3.0"
5450
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
5451
+ integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
5452
+ dependencies:
5453
+ cross-spawn "^7.0.0"
5454
+ signal-exit "^4.0.1"
5455
+
5411
5456
  form-data@3.0.0:
5412
5457
  version "3.0.0"
5413
5458
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
@@ -5680,17 +5725,17 @@ glob-parent@^5.1.2:
5680
5725
  dependencies:
5681
5726
  is-glob "^4.0.1"
5682
5727
 
5683
- glob@7.0.6:
5684
- version "7.0.6"
5685
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
5686
- integrity sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==
5728
+ glob@^10.3.10:
5729
+ version "10.4.5"
5730
+ resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
5731
+ integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
5687
5732
  dependencies:
5688
- fs.realpath "^1.0.0"
5689
- inflight "^1.0.4"
5690
- inherits "2"
5691
- minimatch "^3.0.2"
5692
- once "^1.3.0"
5693
- path-is-absolute "^1.0.0"
5733
+ foreground-child "^3.1.0"
5734
+ jackspeak "^3.1.2"
5735
+ minimatch "^9.0.4"
5736
+ minipass "^7.1.2"
5737
+ package-json-from-dist "^1.0.0"
5738
+ path-scurry "^1.11.1"
5694
5739
 
5695
5740
  glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
5696
5741
  version "7.2.3"
@@ -6781,6 +6826,15 @@ iterator.prototype@^1.1.2:
6781
6826
  reflect.getprototypeof "^1.0.4"
6782
6827
  set-function-name "^2.0.1"
6783
6828
 
6829
+ jackspeak@^3.1.2:
6830
+ version "3.4.3"
6831
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
6832
+ integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
6833
+ dependencies:
6834
+ "@isaacs/cliui" "^8.0.2"
6835
+ optionalDependencies:
6836
+ "@pkgjs/parseargs" "^0.11.0"
6837
+
6784
6838
  jake@^10.8.5:
6785
6839
  version "10.8.7"
6786
6840
  resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f"
@@ -7701,6 +7755,11 @@ lowercase-keys@^2.0.0:
7701
7755
  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
7702
7756
  integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
7703
7757
 
7758
+ lru-cache@^10.2.0:
7759
+ version "10.4.3"
7760
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
7761
+ integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
7762
+
7704
7763
  lru-cache@^4.0.1:
7705
7764
  version "4.1.5"
7706
7765
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -8171,7 +8230,7 @@ min-indent@^1.0.0:
8171
8230
  resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
8172
8231
  integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
8173
8232
 
8174
- minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
8233
+ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
8175
8234
  version "3.1.2"
8176
8235
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
8177
8236
  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -8185,6 +8244,13 @@ minimatch@^5.0.1:
8185
8244
  dependencies:
8186
8245
  brace-expansion "^2.0.1"
8187
8246
 
8247
+ minimatch@^9.0.4:
8248
+ version "9.0.5"
8249
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
8250
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
8251
+ dependencies:
8252
+ brace-expansion "^2.0.1"
8253
+
8188
8254
  minimist-options@4.1.0:
8189
8255
  version "4.1.0"
8190
8256
  resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
@@ -8207,6 +8273,11 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
8207
8273
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
8208
8274
  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
8209
8275
 
8276
+ "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
8277
+ version "7.1.2"
8278
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
8279
+ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
8280
+
8210
8281
  miniprogram-api-typings@^2.10.2:
8211
8282
  version "2.12.0"
8212
8283
  resolved "https://registry.yarnpkg.com/miniprogram-api-typings/-/miniprogram-api-typings-2.12.0.tgz#7a29c90f3e5efa36588422d1f01e22d3394aaaa1"
@@ -8729,6 +8800,11 @@ p-try@^2.0.0:
8729
8800
  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
8730
8801
  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
8731
8802
 
8803
+ package-json-from-dist@^1.0.0:
8804
+ version "1.0.0"
8805
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
8806
+ integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
8807
+
8732
8808
  package-json@^6.3.0:
8733
8809
  version "6.5.0"
8734
8810
  resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
@@ -8834,6 +8910,14 @@ path-parse@^1.0.7:
8834
8910
  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
8835
8911
  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
8836
8912
 
8913
+ path-scurry@^1.11.1:
8914
+ version "1.11.1"
8915
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
8916
+ integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
8917
+ dependencies:
8918
+ lru-cache "^10.2.0"
8919
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
8920
+
8837
8921
  path-type@^3.0.0:
8838
8922
  version "3.0.0"
8839
8923
  resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -9185,6 +9269,14 @@ react-is@^17.0.1:
9185
9269
  resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
9186
9270
  integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
9187
9271
 
9272
+ react-native-blob-util@^0.19.11:
9273
+ version "0.19.11"
9274
+ resolved "https://registry.yarnpkg.com/react-native-blob-util/-/react-native-blob-util-0.19.11.tgz#20c0ca589e975fee849cba1cdba712cc6adb4f59"
9275
+ integrity sha512-lxaeDzFLYffR6lbRiOce0oTYO6pE3/PyT8Sa7qiz8B+IT9oe4G85SlVCdl5F9xMJh/Zer2onBLw7u+B1AS+GFA==
9276
+ dependencies:
9277
+ base-64 "0.1.0"
9278
+ glob "^10.3.10"
9279
+
9188
9280
  react-native-device-info@^10.0.2:
9189
9281
  version "10.11.0"
9190
9282
  resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-10.11.0.tgz#2c9f378f1c3c5eb9aafa803d015b84325991a9aa"
@@ -9657,14 +9749,6 @@ rimraf@~2.2.6:
9657
9749
  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
9658
9750
  integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==
9659
9751
 
9660
- rn-fetch-blob@^0.12.0:
9661
- version "0.12.0"
9662
- resolved "https://registry.yarnpkg.com/rn-fetch-blob/-/rn-fetch-blob-0.12.0.tgz#ec610d2f9b3f1065556b58ab9c106eeb256f3cba"
9663
- integrity sha512-+QnR7AsJ14zqpVVUbzbtAjq0iI8c9tCg49tIoKO2ezjzRunN7YL6zFSFSWZm6d+mE/l9r+OeDM3jmb2tBb2WbA==
9664
- dependencies:
9665
- base-64 "0.1.0"
9666
- glob "7.0.6"
9667
-
9668
9752
  rsvp@^4.8.4:
9669
9753
  version "4.8.5"
9670
9754
  resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
@@ -9972,6 +10056,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
9972
10056
  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
9973
10057
  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
9974
10058
 
10059
+ signal-exit@^4.0.1:
10060
+ version "4.1.0"
10061
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
10062
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
10063
+
9975
10064
  simple-plist@^1.0.0, simple-plist@^1.1.0:
9976
10065
  version "1.3.1"
9977
10066
  resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017"
@@ -10219,6 +10308,15 @@ string-natural-compare@^3.0.1:
10219
10308
  resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
10220
10309
  integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
10221
10310
 
10311
+ "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
10312
+ version "4.2.3"
10313
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
10314
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
10315
+ dependencies:
10316
+ emoji-regex "^8.0.0"
10317
+ is-fullwidth-code-point "^3.0.0"
10318
+ strip-ansi "^6.0.1"
10319
+
10222
10320
  string-width@^1.0.1:
10223
10321
  version "1.0.2"
10224
10322
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -10245,14 +10343,14 @@ string-width@^3.0.0, string-width@^3.1.0:
10245
10343
  is-fullwidth-code-point "^2.0.0"
10246
10344
  strip-ansi "^5.1.0"
10247
10345
 
10248
- string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
10249
- version "4.2.3"
10250
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
10251
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
10346
+ string-width@^5.0.1, string-width@^5.1.2:
10347
+ version "5.1.2"
10348
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
10349
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
10252
10350
  dependencies:
10253
- emoji-regex "^8.0.0"
10254
- is-fullwidth-code-point "^3.0.0"
10255
- strip-ansi "^6.0.1"
10351
+ eastasianwidth "^0.2.0"
10352
+ emoji-regex "^9.2.2"
10353
+ strip-ansi "^7.0.1"
10256
10354
 
10257
10355
  string.prototype.matchall@^4.0.8:
10258
10356
  version "4.0.10"
@@ -10310,6 +10408,13 @@ string_decoder@~1.1.1:
10310
10408
  dependencies:
10311
10409
  safe-buffer "~5.1.0"
10312
10410
 
10411
+ "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
10412
+ version "6.0.1"
10413
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
10414
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
10415
+ dependencies:
10416
+ ansi-regex "^5.0.1"
10417
+
10313
10418
  strip-ansi@^3.0.0, strip-ansi@^3.0.1:
10314
10419
  version "3.0.1"
10315
10420
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -10331,12 +10436,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
10331
10436
  dependencies:
10332
10437
  ansi-regex "^4.1.0"
10333
10438
 
10334
- strip-ansi@^6.0.0, strip-ansi@^6.0.1:
10335
- version "6.0.1"
10336
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
10337
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
10439
+ strip-ansi@^7.0.1:
10440
+ version "7.1.0"
10441
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
10442
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
10338
10443
  dependencies:
10339
- ansi-regex "^5.0.1"
10444
+ ansi-regex "^6.0.1"
10340
10445
 
10341
10446
  strip-bom@^3.0.0:
10342
10447
  version "3.0.0"
@@ -11195,6 +11300,15 @@ wordwrap@^1.0.0:
11195
11300
  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
11196
11301
  integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
11197
11302
 
11303
+ "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
11304
+ version "7.0.0"
11305
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
11306
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
11307
+ dependencies:
11308
+ ansi-styles "^4.0.0"
11309
+ string-width "^4.1.0"
11310
+ strip-ansi "^6.0.0"
11311
+
11198
11312
  wrap-ansi@^2.0.0:
11199
11313
  version "2.1.0"
11200
11314
  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -11221,14 +11335,14 @@ wrap-ansi@^6.2.0:
11221
11335
  string-width "^4.1.0"
11222
11336
  strip-ansi "^6.0.0"
11223
11337
 
11224
- wrap-ansi@^7.0.0:
11225
- version "7.0.0"
11226
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
11227
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
11338
+ wrap-ansi@^8.1.0:
11339
+ version "8.1.0"
11340
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
11341
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
11228
11342
  dependencies:
11229
- ansi-styles "^4.0.0"
11230
- string-width "^4.1.0"
11231
- strip-ansi "^6.0.0"
11343
+ ansi-styles "^6.1.0"
11344
+ string-width "^5.0.1"
11345
+ strip-ansi "^7.0.1"
11232
11346
 
11233
11347
  wrappy@1:
11234
11348
  version "1.0.2"