react-native-bootsplash 6.3.0 → 6.3.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.
package/src/expo.ts CHANGED
@@ -5,18 +5,18 @@ import { mergeContents } from "@expo/config-plugins/build/utils/generateCode";
5
5
  import path from "path";
6
6
  import { dedent } from "ts-dedent";
7
7
  import { Manifest } from ".";
8
- import { cleanIOSAssets, getExpoConfig, hfs } from "./generate";
8
+ import { cleanIOSAssets, getExpoConfig, hfs, log } from "./generate";
9
9
 
10
- type ExpoPlugin = Expo.ConfigPlugin<{
10
+ type Props = {
11
11
  assetsDir?: string;
12
12
  android?: {
13
13
  parentTheme?: "TransparentStatus" | "EdgeToEdge";
14
14
  darkContentBarsStyle?: boolean;
15
15
  };
16
- }>;
16
+ };
17
17
 
18
18
  const withExpoVersionCheck =
19
- (platform: "android" | "ios"): ExpoPlugin =>
19
+ (platform: "android" | "ios"): Expo.ConfigPlugin<Props> =>
20
20
  (config) =>
21
21
  Expo.withDangerousMod(config, [
22
22
  platform,
@@ -26,7 +26,7 @@ const withExpoVersionCheck =
26
26
  },
27
27
  ]);
28
28
 
29
- const withAndroidAssets: ExpoPlugin = (config, props) =>
29
+ const withAndroidAssets: Expo.ConfigPlugin<Props> = (config, props) =>
30
30
  Expo.withDangerousMod(config, [
31
31
  "android",
32
32
  (config) => {
@@ -35,6 +35,12 @@ const withAndroidAssets: ExpoPlugin = (config, props) =>
35
35
 
36
36
  const srcDir = path.resolve(projectRoot, assetsDir, "android");
37
37
 
38
+ if (!hfs.exists(srcDir)) {
39
+ const error = `"${path.relative(projectRoot, srcDir)}" doesn't exist. Did you ran the asset generation command?`;
40
+ log.error(error);
41
+ process.exit(1);
42
+ }
43
+
38
44
  const destDir = path.resolve(
39
45
  platformProjectRoot,
40
46
  "app",
@@ -47,13 +53,15 @@ const withAndroidAssets: ExpoPlugin = (config, props) =>
47
53
  const srcDrawableDir = path.join(srcDir, drawableDir);
48
54
  const destDrawableDir = path.join(destDir, drawableDir);
49
55
 
50
- hfs.ensureDir(destDrawableDir);
56
+ if (hfs.isDir(srcDrawableDir)) {
57
+ hfs.ensureDir(destDrawableDir);
51
58
 
52
- for (const file of hfs.readDir(srcDrawableDir)) {
53
- hfs.copy(
54
- path.join(srcDrawableDir, file),
55
- path.join(destDrawableDir, file),
56
- );
59
+ for (const file of hfs.readDir(srcDrawableDir)) {
60
+ hfs.copy(
61
+ path.join(srcDrawableDir, file),
62
+ path.join(destDrawableDir, file),
63
+ );
64
+ }
57
65
  }
58
66
  }
59
67
 
@@ -61,7 +69,7 @@ const withAndroidAssets: ExpoPlugin = (config, props) =>
61
69
  },
62
70
  ]);
63
71
 
64
- const withAndroidManifest: ExpoPlugin = (config) =>
72
+ const withAndroidManifest: Expo.ConfigPlugin<Props> = (config) =>
65
73
  Expo.withAndroidManifest(config, (config) => {
66
74
  config.modResults.manifest.application?.forEach((application) => {
67
75
  if (application.$["android:name"] === ".MainApplication") {
@@ -78,7 +86,7 @@ const withAndroidManifest: ExpoPlugin = (config) =>
78
86
  return config;
79
87
  });
80
88
 
81
- const withMainActivity: ExpoPlugin = (config) =>
89
+ const withMainActivity: Expo.ConfigPlugin<Props> = (config) =>
82
90
  Expo.withMainActivity(config, (config) => {
83
91
  const { modResults } = config;
84
92
  const { language } = modResults;
@@ -113,7 +121,7 @@ const withMainActivity: ExpoPlugin = (config) =>
113
121
  };
114
122
  });
115
123
 
116
- const withAndroidStyles: ExpoPlugin = (config, props) =>
124
+ const withAndroidStyles: Expo.ConfigPlugin<Props> = (config, props) =>
117
125
  Expo.withAndroidStyles(config, async (config) => {
118
126
  const { assetsDir = "assets/bootsplash", android = {} } = props;
119
127
  const { parentTheme, darkContentBarsStyle } = android;
@@ -182,7 +190,7 @@ const withAndroidStyles: ExpoPlugin = (config, props) =>
182
190
  };
183
191
  });
184
192
 
185
- const withAndroidColors: ExpoPlugin = (config, props) =>
193
+ const withAndroidColors: Expo.ConfigPlugin<Props> = (config, props) =>
186
194
  Expo.withAndroidColors(config, async (config) => {
187
195
  const { assetsDir = "assets/bootsplash" } = props;
188
196
  const { projectRoot } = config.modRequest;
@@ -199,7 +207,7 @@ const withAndroidColors: ExpoPlugin = (config, props) =>
199
207
  return config;
200
208
  });
201
209
 
202
- const withAndroidColorsNight: ExpoPlugin = (config, props) =>
210
+ const withAndroidColorsNight: Expo.ConfigPlugin<Props> = (config, props) =>
203
211
  Expo.withAndroidColorsNight(config, async (config) => {
204
212
  const { assetsDir = "assets/bootsplash" } = props;
205
213
  const { projectRoot } = config.modRequest;
@@ -218,7 +226,7 @@ const withAndroidColorsNight: ExpoPlugin = (config, props) =>
218
226
  return config;
219
227
  });
220
228
 
221
- const withIOSAssets: ExpoPlugin = (config, props) =>
229
+ const withIOSAssets: Expo.ConfigPlugin<Props> = (config, props) =>
222
230
  Expo.withDangerousMod(config, [
223
231
  "ios",
224
232
  (config) => {
@@ -233,6 +241,12 @@ const withIOSAssets: ExpoPlugin = (config, props) =>
233
241
  const srcDir = path.resolve(projectRoot, assetsDir, "ios");
234
242
  const destDir = path.resolve(platformProjectRoot, projectName);
235
243
 
244
+ if (!hfs.exists(srcDir)) {
245
+ const error = `"${path.relative(projectRoot, srcDir)}" doesn't exist. Did you ran the asset generation command?`;
246
+ log.error(error);
247
+ process.exit(1);
248
+ }
249
+
236
250
  cleanIOSAssets(destDir);
237
251
 
238
252
  hfs.copy(
@@ -244,13 +258,15 @@ const withIOSAssets: ExpoPlugin = (config, props) =>
244
258
  const srcXcassetsDir = path.join(srcDir, xcassetsDir);
245
259
  const destXcassetsDir = path.join(destDir, xcassetsDir);
246
260
 
247
- hfs.ensureDir(destXcassetsDir);
261
+ if (hfs.isDir(srcXcassetsDir)) {
262
+ hfs.ensureDir(destXcassetsDir);
248
263
 
249
- for (const file of hfs.readDir(srcXcassetsDir)) {
250
- hfs.copy(
251
- path.join(srcXcassetsDir, file),
252
- path.join(destXcassetsDir, file),
253
- );
264
+ for (const file of hfs.readDir(srcXcassetsDir)) {
265
+ hfs.copy(
266
+ path.join(srcXcassetsDir, file),
267
+ path.join(destXcassetsDir, file),
268
+ );
269
+ }
254
270
  }
255
271
  }
256
272
 
@@ -258,7 +274,7 @@ const withIOSAssets: ExpoPlugin = (config, props) =>
258
274
  },
259
275
  ]);
260
276
 
261
- const withAppDelegate: ExpoPlugin = (config) =>
277
+ const withAppDelegate: Expo.ConfigPlugin<Props> = (config) =>
262
278
  Expo.withAppDelegate(config, (config) => {
263
279
  const { modResults } = config;
264
280
  const { language } = modResults;
@@ -301,13 +317,13 @@ const withAppDelegate: ExpoPlugin = (config) =>
301
317
  };
302
318
  });
303
319
 
304
- const withInfoPlist: ExpoPlugin = (config) =>
320
+ const withInfoPlist: Expo.ConfigPlugin<Props> = (config) =>
305
321
  Expo.withInfoPlist(config, (config) => {
306
322
  config.modResults["UILaunchStoryboardName"] = "BootSplash";
307
323
  return config;
308
324
  });
309
325
 
310
- const withXcodeProject: ExpoPlugin = (config) =>
326
+ const withXcodeProject: Expo.ConfigPlugin<Props> = (config) =>
311
327
  Expo.withXcodeProject(config, (config) => {
312
328
  const { projectName = "" } = config.modRequest;
313
329
 
@@ -328,14 +344,14 @@ const withXcodeProject: ExpoPlugin = (config) =>
328
344
  return config;
329
345
  });
330
346
 
331
- const withoutExpoSplashScreen: ExpoPlugin = Expo.createRunOncePlugin(
332
- (config) => config,
333
- "expo-splash-screen",
334
- "skip",
335
- );
347
+ const withoutExpoSplashScreen: Expo.ConfigPlugin<Props> =
348
+ Expo.createRunOncePlugin((config) => config, "expo-splash-screen", "skip");
336
349
 
337
- export const withBootSplash: ExpoPlugin = (config, props = {}) => {
338
- const plugins: ExpoPlugin[] = [];
350
+ export const withBootSplash: Expo.ConfigPlugin<Props | undefined> = (
351
+ config,
352
+ props = {},
353
+ ) => {
354
+ const plugins: Expo.ConfigPlugin<Props>[] = [];
339
355
  const { platforms = [] } = config;
340
356
 
341
357
  plugins.push(withoutExpoSplashScreen);
@@ -1,78 +0,0 @@
1
-
2
- /**
3
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
- *
5
- * Do not edit this file as changes may cause incorrect behavior and will be lost
6
- * once the code is regenerated.
7
- *
8
- * @generated by codegen project: GenerateModuleJavaSpec.js
9
- *
10
- * @nolint
11
- */
12
-
13
- package com.facebook.fbreact.specs;
14
-
15
- import com.facebook.proguard.annotations.DoNotStrip;
16
- import com.facebook.react.bridge.Promise;
17
- import com.facebook.react.bridge.ReactApplicationContext;
18
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
19
- import com.facebook.react.bridge.ReactMethod;
20
- import com.facebook.react.common.build.ReactBuildConfig;
21
- import com.facebook.react.turbomodule.core.interfaces.TurboModule;
22
- import java.util.Arrays;
23
- import java.util.HashSet;
24
- import java.util.Map;
25
- import java.util.Set;
26
- import javax.annotation.Nonnull;
27
- import javax.annotation.Nullable;
28
-
29
- public abstract class NativeRNBootSplashSpec extends ReactContextBaseJavaModule implements TurboModule {
30
- public static final String NAME = "RNBootSplash";
31
-
32
- public NativeRNBootSplashSpec(ReactApplicationContext reactContext) {
33
- super(reactContext);
34
- }
35
-
36
- @Override
37
- public @Nonnull String getName() {
38
- return NAME;
39
- }
40
-
41
- protected abstract Map<String, Object> getTypedExportedConstants();
42
-
43
- @Override
44
- @DoNotStrip
45
- public final @Nullable Map<String, Object> getConstants() {
46
- Map<String, Object> constants = getTypedExportedConstants();
47
- if (ReactBuildConfig.DEBUG || ReactBuildConfig.IS_INTERNAL_BUILD) {
48
- Set<String> obligatoryFlowConstants = new HashSet<>(Arrays.asList(
49
- "darkModeEnabled"
50
- ));
51
- Set<String> optionalFlowConstants = new HashSet<>(Arrays.asList(
52
- "logoSizeRatio",
53
- "navigationBarHeight",
54
- "statusBarHeight"
55
- ));
56
- Set<String> undeclaredConstants = new HashSet<>(constants.keySet());
57
- undeclaredConstants.removeAll(obligatoryFlowConstants);
58
- undeclaredConstants.removeAll(optionalFlowConstants);
59
- if (!undeclaredConstants.isEmpty()) {
60
- throw new IllegalStateException(String.format("Native Module Flow doesn't declare constants: %s", undeclaredConstants));
61
- }
62
- undeclaredConstants = obligatoryFlowConstants;
63
- undeclaredConstants.removeAll(constants.keySet());
64
- if (!undeclaredConstants.isEmpty()) {
65
- throw new IllegalStateException(String.format("Native Module doesn't fill in constants: %s", undeclaredConstants));
66
- }
67
- }
68
- return constants;
69
- }
70
-
71
- @ReactMethod
72
- @DoNotStrip
73
- public abstract void hide(boolean fade, Promise promise);
74
-
75
- @ReactMethod
76
- @DoNotStrip
77
- public abstract void isVisible(Promise promise);
78
- }
@@ -1,36 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- #
3
- # This source code is licensed under the MIT license found in the
4
- # LICENSE file in the root directory of this source tree.
5
-
6
- cmake_minimum_required(VERSION 3.13)
7
- set(CMAKE_VERBOSE_MAKEFILE on)
8
-
9
- file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/RNBootSplashSpec/*.cpp)
10
-
11
- add_library(
12
- react_codegen_RNBootSplashSpec
13
- OBJECT
14
- ${react_codegen_SRCS}
15
- )
16
-
17
- target_include_directories(react_codegen_RNBootSplashSpec PUBLIC . react/renderer/components/RNBootSplashSpec)
18
-
19
- target_link_libraries(
20
- react_codegen_RNBootSplashSpec
21
- fbjni
22
- jsi
23
- # We need to link different libraries based on whether we are building rncore or not, that's necessary
24
- # because we want to break a circular dependency between react_codegen_rncore and reactnative
25
- reactnative
26
- )
27
-
28
- target_compile_options(
29
- react_codegen_RNBootSplashSpec
30
- PRIVATE
31
- -DLOG_TAG=\"ReactNative\"
32
- -fexceptions
33
- -frtti
34
- -std=c++20
35
- -Wall
36
- )
@@ -1,44 +0,0 @@
1
-
2
- /**
3
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
- *
5
- * Do not edit this file as changes may cause incorrect behavior and will be lost
6
- * once the code is regenerated.
7
- *
8
- * @generated by codegen project: GenerateModuleJniCpp.js
9
- */
10
-
11
- #include "RNBootSplashSpec.h"
12
-
13
- namespace facebook::react {
14
-
15
- static facebook::jsi::Value __hostFunction_NativeRNBootSplashSpecJSI_getConstants(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
16
- static jmethodID cachedMethodId = nullptr;
17
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, ObjectKind, "getConstants", "()Ljava/util/Map;", args, count, cachedMethodId);
18
- }
19
-
20
- static facebook::jsi::Value __hostFunction_NativeRNBootSplashSpecJSI_hide(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
21
- static jmethodID cachedMethodId = nullptr;
22
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "hide", "(ZLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
23
- }
24
-
25
- static facebook::jsi::Value __hostFunction_NativeRNBootSplashSpecJSI_isVisible(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
26
- static jmethodID cachedMethodId = nullptr;
27
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "isVisible", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
28
- }
29
-
30
- NativeRNBootSplashSpecJSI::NativeRNBootSplashSpecJSI(const JavaTurboModule::InitParams &params)
31
- : JavaTurboModule(params) {
32
- methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeRNBootSplashSpecJSI_getConstants};
33
- methodMap_["hide"] = MethodMetadata {1, __hostFunction_NativeRNBootSplashSpecJSI_hide};
34
- methodMap_["isVisible"] = MethodMetadata {0, __hostFunction_NativeRNBootSplashSpecJSI_isVisible};
35
- }
36
-
37
- std::shared_ptr<TurboModule> RNBootSplashSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params) {
38
- if (moduleName == "RNBootSplash") {
39
- return std::make_shared<NativeRNBootSplashSpecJSI>(params);
40
- }
41
- return nullptr;
42
- }
43
-
44
- } // namespace facebook::react
@@ -1,31 +0,0 @@
1
-
2
- /**
3
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
- *
5
- * Do not edit this file as changes may cause incorrect behavior and will be lost
6
- * once the code is regenerated.
7
- *
8
- * @generated by codegen project: GenerateModuleJniH.js
9
- */
10
-
11
- #pragma once
12
-
13
- #include <ReactCommon/JavaTurboModule.h>
14
- #include <ReactCommon/TurboModule.h>
15
- #include <jsi/jsi.h>
16
-
17
- namespace facebook::react {
18
-
19
- /**
20
- * JNI C++ class for module 'NativeRNBootSplash'
21
- */
22
- class JSI_EXPORT NativeRNBootSplashSpecJSI : public JavaTurboModule {
23
- public:
24
- NativeRNBootSplashSpecJSI(const JavaTurboModule::InitParams &params);
25
- };
26
-
27
-
28
- JSI_EXPORT
29
- std::shared_ptr<TurboModule> RNBootSplashSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params);
30
-
31
- } // namespace facebook::react
@@ -1,39 +0,0 @@
1
- /**
2
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
- *
4
- * Do not edit this file as changes may cause incorrect behavior and will be lost
5
- * once the code is regenerated.
6
- *
7
- * @generated by codegen project: GenerateModuleCpp.js
8
- */
9
-
10
- #include "RNBootSplashSpecJSI.h"
11
-
12
- namespace facebook::react {
13
-
14
- static jsi::Value __hostFunction_NativeRNBootSplashCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
15
- return static_cast<NativeRNBootSplashCxxSpecJSI *>(&turboModule)->getConstants(
16
- rt
17
- );
18
- }
19
- static jsi::Value __hostFunction_NativeRNBootSplashCxxSpecJSI_hide(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
20
- return static_cast<NativeRNBootSplashCxxSpecJSI *>(&turboModule)->hide(
21
- rt,
22
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asBool()
23
- );
24
- }
25
- static jsi::Value __hostFunction_NativeRNBootSplashCxxSpecJSI_isVisible(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
26
- return static_cast<NativeRNBootSplashCxxSpecJSI *>(&turboModule)->isVisible(
27
- rt
28
- );
29
- }
30
-
31
- NativeRNBootSplashCxxSpecJSI::NativeRNBootSplashCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
32
- : TurboModule("RNBootSplash", jsInvoker) {
33
- methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeRNBootSplashCxxSpecJSI_getConstants};
34
- methodMap_["hide"] = MethodMetadata {1, __hostFunction_NativeRNBootSplashCxxSpecJSI_hide};
35
- methodMap_["isVisible"] = MethodMetadata {0, __hostFunction_NativeRNBootSplashCxxSpecJSI_isVisible};
36
- }
37
-
38
-
39
- } // namespace facebook::react
@@ -1,85 +0,0 @@
1
- /**
2
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
- *
4
- * Do not edit this file as changes may cause incorrect behavior and will be lost
5
- * once the code is regenerated.
6
- *
7
- * @generated by codegen project: GenerateModuleH.js
8
- */
9
-
10
- #pragma once
11
-
12
- #include <ReactCommon/TurboModule.h>
13
- #include <react/bridging/Bridging.h>
14
-
15
- namespace facebook::react {
16
-
17
-
18
- class JSI_EXPORT NativeRNBootSplashCxxSpecJSI : public TurboModule {
19
- protected:
20
- NativeRNBootSplashCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
21
-
22
- public:
23
- virtual jsi::Object getConstants(jsi::Runtime &rt) = 0;
24
- virtual jsi::Value hide(jsi::Runtime &rt, bool fade) = 0;
25
- virtual jsi::Value isVisible(jsi::Runtime &rt) = 0;
26
-
27
- };
28
-
29
- template <typename T>
30
- class JSI_EXPORT NativeRNBootSplashCxxSpec : public TurboModule {
31
- public:
32
- jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
33
- return delegate_.get(rt, propName);
34
- }
35
-
36
- static constexpr std::string_view kModuleName = "RNBootSplash";
37
-
38
- protected:
39
- NativeRNBootSplashCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
40
- : TurboModule(std::string{NativeRNBootSplashCxxSpec::kModuleName}, jsInvoker),
41
- delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
42
-
43
-
44
- private:
45
- class Delegate : public NativeRNBootSplashCxxSpecJSI {
46
- public:
47
- Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
48
- NativeRNBootSplashCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
49
-
50
- }
51
-
52
- jsi::Object getConstants(jsi::Runtime &rt) override {
53
- static_assert(
54
- bridging::getParameterCount(&T::getConstants) == 1,
55
- "Expected getConstants(...) to have 1 parameters");
56
-
57
- return bridging::callFromJs<jsi::Object>(
58
- rt, &T::getConstants, jsInvoker_, instance_);
59
- }
60
- jsi::Value hide(jsi::Runtime &rt, bool fade) override {
61
- static_assert(
62
- bridging::getParameterCount(&T::hide) == 2,
63
- "Expected hide(...) to have 2 parameters");
64
-
65
- return bridging::callFromJs<jsi::Value>(
66
- rt, &T::hide, jsInvoker_, instance_, std::move(fade));
67
- }
68
- jsi::Value isVisible(jsi::Runtime &rt) override {
69
- static_assert(
70
- bridging::getParameterCount(&T::isVisible) == 1,
71
- "Expected isVisible(...) to have 1 parameters");
72
-
73
- return bridging::callFromJs<jsi::Value>(
74
- rt, &T::isVisible, jsInvoker_, instance_);
75
- }
76
-
77
- private:
78
- friend class NativeRNBootSplashCxxSpec;
79
- T *instance_;
80
- };
81
-
82
- Delegate delegate_;
83
- };
84
-
85
- } // namespace facebook::react