@react-native-firebase/app-check 23.8.0 → 23.8.2

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +788 -0
  2. package/RNFBAppCheck.podspec +50 -0
  3. package/android/.editorconfig +10 -0
  4. package/android/build.gradle +110 -0
  5. package/android/lint.xml +5 -0
  6. package/android/settings.gradle +1 -0
  7. package/android/src/main/AndroidManifest.xml +7 -0
  8. package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckModule.java +281 -0
  9. package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckPackage.java +41 -0
  10. package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProvider.java +97 -0
  11. package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProviderFactory.java +67 -0
  12. package/app.plugin.js +1 -0
  13. package/dist/commonjs/version.js +1 -1
  14. package/dist/commonjs/web/RNFBAppCheckModule.android.js +3 -2
  15. package/dist/commonjs/web/RNFBAppCheckModule.android.js.map +1 -2
  16. package/dist/commonjs/web/RNFBAppCheckModule.ios.js +3 -2
  17. package/dist/commonjs/web/RNFBAppCheckModule.ios.js.map +1 -2
  18. package/dist/commonjs/web/RNFBAppCheckModule.js +5 -11
  19. package/dist/commonjs/web/RNFBAppCheckModule.js.map +1 -1
  20. package/dist/module/version.js +1 -1
  21. package/dist/module/web/RNFBAppCheckModule.android.js +3 -2
  22. package/dist/module/web/RNFBAppCheckModule.android.js.map +1 -2
  23. package/dist/module/web/RNFBAppCheckModule.ios.js +3 -2
  24. package/dist/module/web/RNFBAppCheckModule.ios.js.map +1 -2
  25. package/dist/module/web/RNFBAppCheckModule.js +6 -7
  26. package/dist/module/web/RNFBAppCheckModule.js.map +1 -1
  27. package/dist/typescript/commonjs/lib/namespaced.d.ts +1 -1
  28. package/dist/typescript/commonjs/lib/version.d.ts +1 -1
  29. package/dist/typescript/module/lib/namespaced.d.ts +1 -1
  30. package/dist/typescript/module/lib/version.d.ts +1 -1
  31. package/ios/RNFBAppCheck/RNFBAppCheckModule.h +30 -0
  32. package/ios/RNFBAppCheck/RNFBAppCheckModule.m +171 -0
  33. package/ios/RNFBAppCheck/RNFBAppCheckProvider.h +33 -0
  34. package/ios/RNFBAppCheck/RNFBAppCheckProvider.m +90 -0
  35. package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.h +28 -0
  36. package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.m +61 -0
  37. package/ios/RNFBAppCheck.xcodeproj/project.pbxproj +349 -0
  38. package/ios/RNFBAppCheck.xcodeproj/xcshareddata/IDETemplateMacros.plist +24 -0
  39. package/lib/version.ts +1 -1
  40. package/package.json +5 -15
  41. package/plugin/build/index.d.ts +3 -0
  42. package/plugin/build/index.js +15 -0
  43. package/plugin/build/ios/appDelegate.d.ts +6 -0
  44. package/plugin/build/ios/appDelegate.js +137 -0
  45. package/plugin/build/ios/index.d.ts +2 -0
  46. package/plugin/build/ios/index.js +5 -0
  47. package/plugin/tsconfig.tsbuildinfo +1 -0
  48. package/lib/web/RNFBAppCheckModule.android.js +0 -2
  49. package/lib/web/RNFBAppCheckModule.ios.js +0 -2
  50. package/lib/web/RNFBAppCheckModule.js +0 -95
@@ -5,5 +5,5 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.version = void 0;
7
7
  // Generated by genversion.
8
- const version = exports.version = '23.8.0';
8
+ const version = exports.version = '23.8.2';
9
9
  //# sourceMappingURL=version.js.map
@@ -5,5 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  // No-op for android.
8
- var _default = exports.default = {};
9
- //# sourceMappingURL=RNFBAppCheckModule.android.js.mapheckModule.android.js.map
8
+ const _module = {};
9
+ var _default = exports.default = _module;
10
+ //# sourceMappingURL=RNFBAppCheckModule.android.js.map
@@ -1,2 +1 @@
1
- {"version":3,"names":["_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.js"],"mappings":";;;;;;AAAA;AAAA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe,CAAC,CAAC","ignoreList":[]}
2
- AC,OAAA,GAE1BH,OAAM","ignoreList":[]}
1
+ {"version":3,"names":["module","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,OAA6B,GAAG,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1BH,OAAM","ignoreList":[]}
@@ -5,5 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  // No-op for ios.
8
- var _default = exports.default = {};
9
- //# sourceMappingURL=RNFBAppCheckModule.ios.js.mapAppCheckModule.ios.js.map
8
+ const _module = {};
9
+ var _default = exports.default = _module;
10
+ //# sourceMappingURL=RNFBAppCheckModule.ios.js.map
@@ -1,2 +1 @@
1
- {"version":3,"names":["_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.js"],"mappings":";;;;;;AAAA;AAAA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe,CAAC,CAAC","ignoreList":[]}
2
- AC,OAAA,GAE1BH,OAAM","ignoreList":[]}
1
+ {"version":3,"names":["module","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,OAA6B,GAAG,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1BH,OAAM","ignoreList":[]}
@@ -14,14 +14,13 @@ function getAppCheckInstanceForApp(appName) {
14
14
  }
15
15
  return appCheckInstances[appName];
16
16
  }
17
-
18
17
  /**
19
18
  * This is a 'NativeModule' for the web platform.
20
19
  * Methods here are identical to the ones found in
21
20
  * the native android/ios modules e.g. `@ReactMethod` annotated
22
21
  * java methods on Android.
23
22
  */
24
- var _default = exports.default = {
23
+ const _module = {
25
24
  initializeAppCheck(appName, options) {
26
25
  (0, _firebaseAppCheck.makeIDBAvailable)();
27
26
  return (0, _utils.guard)(async () => {
@@ -34,21 +33,22 @@ var _default = exports.default = {
34
33
  } = options;
35
34
  const _provider = new _firebaseAppCheck.CustomProvider({
36
35
  getToken() {
37
- return provider.getToken();
36
+ if ('getToken' in provider && typeof provider.getToken === 'function') {
37
+ return provider.getToken();
38
+ }
39
+ throw new Error('Provider does not have a getToken method');
38
40
  }
39
41
  });
40
42
  appCheckInstances[appName] = (0, _firebaseAppCheck.initializeAppCheck)((0, _firebaseAppCheck.getApp)(appName), {
41
43
  provider: _provider,
42
44
  isTokenAutoRefreshEnabled
43
45
  });
44
- return null;
45
46
  });
46
47
  },
47
48
  setTokenAutoRefreshEnabled(appName, isTokenAutoRefreshEnabled) {
48
49
  return (0, _utils.guard)(async () => {
49
50
  const instance = getAppCheckInstanceForApp(appName);
50
51
  (0, _firebaseAppCheck.setTokenAutoRefreshEnabled)(instance, isTokenAutoRefreshEnabled);
51
- return null;
52
52
  });
53
53
  },
54
54
  getLimitedUseToken(appName) {
@@ -75,7 +75,6 @@ var _default = exports.default = {
75
75
  ...tokenResult
76
76
  });
77
77
  });
78
- return null;
79
78
  });
80
79
  },
81
80
  removeAppCheckListener(appName) {
@@ -85,11 +84,6 @@ var _default = exports.default = {
85
84
  }
86
85
  listenersForApp[appName]();
87
86
  delete listenersForApp[appName];
88
- return null;
89
- });
90
- }
91
- };
92
- //# sourceMappingURL=RNFBAppCheckModule.js.mappp[appName];
93
87
  });
94
88
  }
95
89
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_firebaseAppCheck","require","_utils","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","_default","exports","default","initializeAppCheck","options","makeIDBAvailable","guard","provider","isTokenAutoRefreshEnabled","_provider","CustomProvider","getToken","getApp","setTokenAutoRefreshEnabled","instance","getLimitedUseToken","forceRefresh","addAppCheckListener","onTokenChanged","tokenResult","emitEvent","removeAppCheckListener"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.js"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAUA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAIE,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAIC,eAAe,GAAG,CAAC,CAAC;AAExB,SAASC,yBAAyBA,CAACC,OAAO,EAAE;EAC1C,IAAI,CAACH,iBAAiB,CAACG,OAAO,CAAC,EAAE;IAC/B,MAAM,IAAIC,KAAK,CACb,sCAAsCD,OAAO,+EAC/C,CAAC;EACH;EACA,OAAOH,iBAAiB,CAACG,OAAO,CAAC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AALA,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMe;EACbC,kBAAkBA,CAACL,OAAO,EAAEM,OAAO,EAAE;IACnC,IAAAC,kCAAgB,EAAC,CAAC;IAClB,OAAO,IAAAC,YAAK,EAAC,YAAY;MACvB,IAAIX,iBAAiB,CAACG,OAAO,CAAC,EAAE;QAC9B;MACF;MACA,MAAM;QAAES,QAAQ;QAAEC;MAA0B,CAAC,GAAGJ,OAAO;MACvD,MAAMK,SAAS,GAAG,IAAIC,gCAAc,CAAC;QACnCC,QAAQA,CAAA,EAAG;UACT,OAAOJ,QAAQ,CAACI,QAAQ,CAAC,CAAC;QAC5B;MACF,CAAC,CAAC;MACFhB,iBAAiB,CAACG,OAAO,CAAC,GAAG,IAAAK,oCAAkB,EAAC,IAAAS,wBAAM,EAACd,OAAO,CAAC,EAAE;QAC/DS,QAAQ,EAAEE,SAAS;QACnBD;MACF,CAAC,CAAC;MACF,OAAO,IAAI;IACb,CAAC,CAAC;EACJ,CAAC;EACDK,0BAA0BA,CAACf,OAAO,EAAEU,yBAAyB,EAAE;IAC7D,OAAO,IAAAF,YAAK,EAAC,YAAY;MACvB,MAAMQ,QAAQ,GAAGjB,yBAAyB,CAACC,OAAO,CAAC;MACnD,IAAAe,4CAA0B,EAACC,QAAQ,EAAEN,yBAAyB,CAAC;MAC/D,OAAO,IAAI;IACb,CAAC,CAAC;EACJ,CAAC;EACDO,kBAAkBA,CAACjB,OAAO,EAAE;IAC1B,OAAO,IAAAQ,YAAK,EAAC,YAAY;MACvB,MAAMQ,QAAQ,GAAGjB,yBAAyB,CAACC,OAAO,CAAC;MACnD,OAAO,IAAAiB,oCAAkB,EAACD,QAAQ,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC;EACDH,QAAQA,CAACb,OAAO,EAAEkB,YAAY,EAAE;IAC9B,OAAO,IAAAV,YAAK,EAAC,YAAY;MACvB,MAAMQ,QAAQ,GAAGjB,yBAAyB,CAACC,OAAO,CAAC;MACnD,OAAO,IAAAa,0BAAQ,EAACG,QAAQ,EAAEE,YAAY,CAAC;IACzC,CAAC,CAAC;EACJ,CAAC;EACDC,mBAAmBA,CAACnB,OAAO,EAAE;IAC3B,OAAO,IAAAQ,YAAK,EAAC,YAAY;MACvB,IAAIV,eAAe,CAACE,OAAO,CAAC,EAAE;QAC5B;MACF;MACA,MAAMgB,QAAQ,GAAGjB,yBAAyB,CAACC,OAAO,CAAC;MACnDF,eAAe,CAACE,OAAO,CAAC,GAAG,IAAAoB,gCAAc,EAACJ,QAAQ,EAAEK,WAAW,IAAI;QACjE,IAAAC,gBAAS,EAAC,wBAAwB,EAAE;UAClCtB,OAAO;UACP,GAAGqB;QACL,CAAC,CAAC;MACJ,CAAC,CAAC;MACF,OAAO,IAAI;IACb,CAAC,CAAC;EACJ,CAAC;EACDE,sBAAsBA,CAACvB,OAAO,EAAE;IAC9B,OAAO,IAAAQ,YAAK,EAAC,YAAY;MACvB,IAAI,CAACV,eAAe,CAACE,OAAO,CAAC,EAAE;QAC7B;MACF;MACAF,eAAe,CAACE,OAAO,CAAC,CAAC,CAAC;MAC1B,OAAOF,eAAe,CAACE,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb,CAAC,CAAC;EACJ;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_firebaseAppCheck","require","_utils","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","module","initializeAppCheck","options","makeIDBAvailable","guard","provider","isTokenAutoRefreshEnabled","_provider","CustomProvider","getToken","getApp","setTokenAutoRefreshEnabled","instance","getLimitedUseToken","forceRefresh","addAppCheckListener","onTokenChanged","tokenResult","emitEvent","removeAppCheckListener","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  // Generated by genversion.
4
- export const version = '23.8.0';
4
+ export const version = '23.8.2';
5
5
  //# sourceMappingURL=version.js.map
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  // No-op for android.
4
- export default {};
5
- //# sourceMappingURL=RNFBAppCheckModule.android.js.mapckModule.android.js.map
4
+ const module = {};
5
+ export default module;
6
+ //# sourceMappingURL=RNFBAppCheckModule.android.js.map
@@ -1,2 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.js"],"mappings":";;AAAA;AACA,eAAe,CAAC,CAAC","ignoreList":[]}
2
- C;AAExC,eAAeA,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["module"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.ts"],"mappings":";;AAAA;AACA,MAAMA,MAA6B,GAAG,CAAC,CAAC;AAExC,eAAeA,MAAM","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  // No-op for ios.
4
- export default {};
5
- //# sourceMappingURL=RNFBAppCheckModule.ios.js.mappCheckModule.ios.js.map
4
+ const module = {};
5
+ export default module;
6
+ //# sourceMappingURL=RNFBAppCheckModule.ios.js.map
@@ -1,2 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.js"],"mappings":";;AAAA;AACA,eAAe,CAAC,CAAC","ignoreList":[]}
2
- C;AAExC,eAAeA,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["module"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.ts"],"mappings":";;AAAA;AACA,MAAMA,MAA6B,GAAG,CAAC,CAAC;AAExC,eAAeA,MAAM","ignoreList":[]}
@@ -10,14 +10,13 @@ function getAppCheckInstanceForApp(appName) {
10
10
  }
11
11
  return appCheckInstances[appName];
12
12
  }
13
-
14
13
  /**
15
14
  * This is a 'NativeModule' for the web platform.
16
15
  * Methods here are identical to the ones found in
17
16
  * the native android/ios modules e.g. `@ReactMethod` annotated
18
17
  * java methods on Android.
19
18
  */
20
- export default {
19
+ const module = {
21
20
  initializeAppCheck(appName, options) {
22
21
  makeIDBAvailable();
23
22
  return guard(async () => {
@@ -30,21 +29,22 @@ export default {
30
29
  } = options;
31
30
  const _provider = new CustomProvider({
32
31
  getToken() {
33
- return provider.getToken();
32
+ if ('getToken' in provider && typeof provider.getToken === 'function') {
33
+ return provider.getToken();
34
+ }
35
+ throw new Error('Provider does not have a getToken method');
34
36
  }
35
37
  });
36
38
  appCheckInstances[appName] = initializeAppCheck(getApp(appName), {
37
39
  provider: _provider,
38
40
  isTokenAutoRefreshEnabled
39
41
  });
40
- return null;
41
42
  });
42
43
  },
43
44
  setTokenAutoRefreshEnabled(appName, isTokenAutoRefreshEnabled) {
44
45
  return guard(async () => {
45
46
  const instance = getAppCheckInstanceForApp(appName);
46
47
  setTokenAutoRefreshEnabled(instance, isTokenAutoRefreshEnabled);
47
- return null;
48
48
  });
49
49
  },
50
50
  getLimitedUseToken(appName) {
@@ -71,7 +71,6 @@ export default {
71
71
  ...tokenResult
72
72
  });
73
73
  });
74
- return null;
75
74
  });
76
75
  },
77
76
  removeAppCheckListener(appName) {
@@ -81,8 +80,8 @@ export default {
81
80
  }
82
81
  listenersForApp[appName]();
83
82
  delete listenersForApp[appName];
84
- return null;
85
83
  });
86
84
  }
87
85
  };
86
+ export default module;
88
87
  //# sourceMappingURL=RNFBAppCheckModule.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getApp","initializeAppCheck","getToken","getLimitedUseToken","setTokenAutoRefreshEnabled","CustomProvider","onTokenChanged","makeIDBAvailable","guard","emitEvent","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","options","provider","isTokenAutoRefreshEnabled","_provider","instance","forceRefresh","addAppCheckListener","tokenResult","removeAppCheckListener"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.js"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getApp","initializeAppCheck","getToken","getLimitedUseToken","setTokenAutoRefreshEnabled","CustomProvider","onTokenChanged","makeIDBAvailable","guard","emitEvent","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","module","options","provider","isTokenAutoRefreshEnabled","_provider","instance","forceRefresh","addAppCheckListener","tokenResult","removeAppCheckListener"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ts"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ export declare class CustomProvider implements AppCheckProvider {
5
5
  constructor(_customProviderOptions: CustomProviderOptions);
6
6
  getToken(): Promise<import(".").AppCheckToken>;
7
7
  }
8
- export declare const SDK_VERSION = "23.8.0";
8
+ export declare const SDK_VERSION = "23.8.2";
9
9
  type AppCheckNamespace = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics> & {
10
10
  appCheck: ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics>;
11
11
  firebase: ReactNativeFirebase.Module;
@@ -1,2 +1,2 @@
1
- export declare const version = "23.8.0";
1
+ export declare const version = "23.8.2";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -5,7 +5,7 @@ export declare class CustomProvider implements AppCheckProvider {
5
5
  constructor(_customProviderOptions: CustomProviderOptions);
6
6
  getToken(): Promise<import(".").AppCheckToken>;
7
7
  }
8
- export declare const SDK_VERSION = "23.8.0";
8
+ export declare const SDK_VERSION = "23.8.2";
9
9
  type AppCheckNamespace = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics> & {
10
10
  appCheck: ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics>;
11
11
  firebase: ReactNativeFirebase.Module;
@@ -1,2 +1,2 @@
1
- export declare const version = "23.8.0";
1
+ export declare const version = "23.8.2";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <Foundation/Foundation.h>
19
+
20
+ #import <React/RCTBridgeModule.h>
21
+
22
+ #import "RNFBAppCheckProviderFactory.h"
23
+
24
+ @interface RNFBAppCheckModule : NSObject <RCTBridgeModule>
25
+
26
+ @property RNFBAppCheckProviderFactory* _Nullable providerFactory;
27
+
28
+ + (_Nonnull instancetype)sharedInstance;
29
+
30
+ @end
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <Firebase/Firebase.h>
19
+ #import <FirebaseAppCheck/FIRAppCheck.h>
20
+
21
+ #import <React/RCTUtils.h>
22
+
23
+ #import "RNFBApp/RNFBSharedUtils.h"
24
+ #import "RNFBAppCheckModule.h"
25
+
26
+ @implementation RNFBAppCheckModule
27
+ #pragma mark -
28
+ #pragma mark Module Setup
29
+
30
+ RCT_EXPORT_MODULE();
31
+
32
+ - (dispatch_queue_t)methodQueue {
33
+ return dispatch_get_main_queue();
34
+ }
35
+
36
+ + (instancetype)sharedInstance {
37
+ static dispatch_once_t once;
38
+ __strong static RNFBAppCheckModule *sharedInstance;
39
+ dispatch_once(&once, ^{
40
+ sharedInstance = [[RNFBAppCheckModule alloc] init];
41
+ sharedInstance.providerFactory = [[RNFBAppCheckProviderFactory alloc] init];
42
+ [FIRAppCheck setAppCheckProviderFactory:sharedInstance.providerFactory];
43
+ });
44
+ return sharedInstance;
45
+ }
46
+
47
+ #pragma mark -
48
+ #pragma mark Firebase AppCheck Methods
49
+
50
+ RCT_EXPORT_METHOD(activate
51
+ : (FIRApp *)firebaseApp
52
+ : (nonnull NSString *)siteKeyOrProvider
53
+ : (BOOL)isTokenAutoRefreshEnabled
54
+ : (RCTPromiseResolveBlock)resolve rejecter
55
+ : (RCTPromiseRejectBlock)reject) {
56
+ DLog(@"deprecated API, provider will be deviceCheck / token refresh %d for app %@",
57
+ isTokenAutoRefreshEnabled, firebaseApp.name);
58
+ [[RNFBAppCheckModule sharedInstance].providerFactory configure:firebaseApp
59
+ providerName:@"deviceCheck"
60
+ debugToken:nil];
61
+
62
+ FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
63
+ appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
64
+ resolve([NSNull null]);
65
+ }
66
+
67
+ RCT_EXPORT_METHOD(configureProvider
68
+ : (FIRApp *)firebaseApp
69
+ : (nonnull NSString *)providerName
70
+ : (nullable NSString *)debugToken
71
+ : (RCTPromiseResolveBlock)resolve rejecter
72
+ : (RCTPromiseRejectBlock)reject) {
73
+ DLog(@"appName/providerName/debugToken: %@/%@/%@", firebaseApp.name, providerName,
74
+ (debugToken == nil ? @"null" : @"(not shown)"));
75
+ [[RNFBAppCheckModule sharedInstance].providerFactory configure:firebaseApp
76
+ providerName:providerName
77
+ debugToken:debugToken];
78
+ resolve([NSNull null]);
79
+ }
80
+
81
+ RCT_EXPORT_METHOD(setTokenAutoRefreshEnabled
82
+ : (FIRApp *)firebaseApp
83
+ : (BOOL)isTokenAutoRefreshEnabled) {
84
+ DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
85
+ FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
86
+ appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
87
+ }
88
+
89
+ // Not present in JS or Android - it is iOS-specific so we only call this in testing - it is not in
90
+ // index.d.ts
91
+ RCT_EXPORT_METHOD(isTokenAutoRefreshEnabled
92
+ : (FIRApp *)firebaseApp
93
+ : (RCTPromiseResolveBlock)resolve rejecter
94
+ : (RCTPromiseRejectBlock)reject) {
95
+ FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
96
+ BOOL isTokenAutoRefreshEnabled = appCheck.isTokenAutoRefreshEnabled;
97
+ DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
98
+ resolve([NSNumber numberWithBool:isTokenAutoRefreshEnabled]);
99
+ }
100
+
101
+ RCT_EXPORT_METHOD(getToken
102
+ : (FIRApp *)firebaseApp
103
+ : (BOOL)forceRefresh
104
+ : (RCTPromiseResolveBlock)resolve
105
+ : (RCTPromiseRejectBlock)reject) {
106
+ FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
107
+ DLog(@"appName %@", firebaseApp.name);
108
+ [appCheck
109
+ tokenForcingRefresh:forceRefresh
110
+ completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
111
+ if (error != nil) {
112
+ // Handle any errors if the token was not retrieved.
113
+ DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token: %@", error);
114
+ [RNFBSharedUtils rejectPromiseWithUserInfo:reject
115
+ userInfo:(NSMutableDictionary *)@{
116
+ @"code" : @"token-error",
117
+ @"message" : [error localizedDescription],
118
+ }];
119
+ return;
120
+ }
121
+ if (token == nil) {
122
+ DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token.");
123
+ [RNFBSharedUtils rejectPromiseWithUserInfo:reject
124
+ userInfo:(NSMutableDictionary *)@{
125
+ @"code" : @"token-null",
126
+ @"message" : @"no token fetched",
127
+ }];
128
+ return;
129
+ }
130
+
131
+ NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
132
+ tokenResultDictionary[@"token"] = token.token;
133
+ resolve(tokenResultDictionary);
134
+ }];
135
+ }
136
+
137
+ RCT_EXPORT_METHOD(getLimitedUseToken
138
+ : (FIRApp *)firebaseApp
139
+ : (RCTPromiseResolveBlock)resolve
140
+ : (RCTPromiseRejectBlock)reject) {
141
+ FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
142
+ DLog(@"appName %@", firebaseApp.name);
143
+ [appCheck limitedUseTokenWithCompletion:^(FIRAppCheckToken *_Nullable token,
144
+ NSError *_Nullable error) {
145
+ if (error != nil) {
146
+ // Handle any errors if the token was not retrieved.
147
+ DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token: %@", error);
148
+ [RNFBSharedUtils rejectPromiseWithUserInfo:reject
149
+ userInfo:(NSMutableDictionary *)@{
150
+ @"code" : @"token-error",
151
+ @"message" : [error localizedDescription],
152
+ }];
153
+ return;
154
+ }
155
+ if (token == nil) {
156
+ DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token.");
157
+ [RNFBSharedUtils rejectPromiseWithUserInfo:reject
158
+ userInfo:(NSMutableDictionary *)@{
159
+ @"code" : @"token-null",
160
+ @"message" : @"no token fetched",
161
+ }];
162
+ return;
163
+ }
164
+
165
+ NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
166
+ tokenResultDictionary[@"token"] = token.token;
167
+ resolve(tokenResultDictionary);
168
+ }];
169
+ }
170
+
171
+ @end
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) 2023-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <Firebase/Firebase.h>
19
+ #import <FirebaseAppCheck/FIRAppCheck.h>
20
+
21
+ @interface RNFBAppCheckProvider : NSObject <FIRAppCheckProvider>
22
+
23
+ @property FIRApp *app;
24
+
25
+ @property id<FIRAppCheckProvider> delegateProvider;
26
+
27
+ - (void)configure:(FIRApp *)app
28
+ providerName:(NSString *)providerName
29
+ debugToken:(NSString *)debugToken;
30
+
31
+ - (id)initWithApp:(FIRApp *)app;
32
+
33
+ @end
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Copyright (c) 2023-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+ #import "RNFBAppCheckProvider.h"
18
+ #import "RNFBApp/RNFBSharedUtils.h"
19
+
20
+ @implementation RNFBAppCheckProvider
21
+
22
+ - (id)initWithApp:app {
23
+ DLog(@"RNFBAppCheck init with app %@", [app name]);
24
+ self = [super init];
25
+ if (self) {
26
+ self.app = app;
27
+ }
28
+ return self;
29
+ }
30
+
31
+ - (void)configure:(FIRApp *)app
32
+ providerName:(NSString *)providerName
33
+ debugToken:(NSString *)debugToken {
34
+ DLog(@"appName/providerName/debugToken: %@/%@/%@", app.name, providerName,
35
+ (debugToken == nil ? @"null" : @"(not shown)"));
36
+
37
+ DLog(@"appName %@", app.name);
38
+
39
+ // - determine if debugToken is provided via nullable arg
40
+ if ([providerName isEqualToString:@"debug"]) {
41
+ // The firebase-ios-sdk debug app check provider will take a token from environment if it
42
+ // exists:
43
+ if (debugToken != nil) {
44
+ // We have a debug token, so just need to stuff it in the environment and it will hook up
45
+ char *key = "FIRAAppCheckDebugToken", *value = (char *)[debugToken UTF8String];
46
+ int overwrite = 1;
47
+ setenv(key, value, overwrite);
48
+ }
49
+
50
+ self.delegateProvider = [[FIRAppCheckDebugProvider alloc] initWithApp:app];
51
+ }
52
+
53
+ if ([providerName isEqualToString:@"deviceCheck"]) {
54
+ self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app];
55
+ }
56
+
57
+ if ([providerName isEqualToString:@"appAttest"]) {
58
+ if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) {
59
+ self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app];
60
+ } else {
61
+ // This is not a valid configuration.
62
+ DLog(@"AppAttest unavailable: it requires iOS14+, macOS 11+, macCatalyst14+ or tvOS15+. "
63
+ @"Installing "
64
+ @"debug provider to guarantee invalid tokens in this invalid configuration.");
65
+ self.delegateProvider = [[FIRAppCheckDebugProvider alloc] initWithApp:app];
66
+ }
67
+ }
68
+
69
+ if ([providerName isEqualToString:@"appAttestWithDeviceCheckFallback"]) {
70
+ if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) {
71
+ self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app];
72
+ } else {
73
+ self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app];
74
+ }
75
+ }
76
+ }
77
+
78
+ - (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
79
+ NSError *_Nullable))handler {
80
+ DLog(@"proxying getTokenWithCompletion to delegateProvider...");
81
+ [self.delegateProvider getTokenWithCompletion:handler];
82
+ }
83
+
84
+ - (void)getLimitedUseTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
85
+ NSError *_Nullable))handler {
86
+ DLog(@"proxying getLimitedUseTokenWithCompletion to delegateProvider...");
87
+ [self.delegateProvider getLimitedUseTokenWithCompletion:handler];
88
+ }
89
+
90
+ @end
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) 2023-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import "RNFBAppCheckProvider.h"
19
+
20
+ @interface RNFBAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
21
+
22
+ @property NSMutableDictionary *_Nullable providers;
23
+
24
+ - (void)configure:(FIRApp *_Nonnull)app
25
+ providerName:(NSString *_Nonnull)providerName
26
+ debugToken:(NSString *_Nullable)debugToken;
27
+
28
+ @end