react-native-bootsplash 6.2.6 → 6.3.0

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/README.md CHANGED
@@ -37,15 +37,15 @@ _⚠️  Don't forget going into the `ios` directory to execute a `pod install
37
37
  In order to speed up the setup, we provide a **CLI** to generate assets, create the Android Drawable XML file and the iOS Storyboard file automatically ✨.
38
38
 
39
39
  ```bash
40
- $ npx react-native generate-bootsplash --help
40
+ $ npx react-native-bootsplash generate --help
41
41
  # --- or ---
42
- $ yarn react-native generate-bootsplash --help
42
+ $ yarn react-native-bootsplash generate --help
43
43
  ```
44
44
 
45
45
  The command can take multiple arguments:
46
46
 
47
47
  ```bash
48
- Usage: react-native generate-bootsplash [options] <logo>
48
+ Usage: react-native-bootsplash generate [options] <logo>
49
49
 
50
50
  Generate a launch screen using a logo file path (PNG or SVG)
51
51
 
@@ -82,7 +82,7 @@ _📍 This license key grants unlimited and unrestricted usage of the generator
82
82
 
83
83
  ```bash
84
84
  # Without license key
85
- yarn react-native generate-bootsplash svgs/light-logo.svg \
85
+ yarn react-native-bootsplash generate svgs/light-logo.svg \
86
86
  --platforms=android,ios,web \
87
87
  --background=F5FCFF \
88
88
  --logo-width=100 \
@@ -91,7 +91,7 @@ yarn react-native generate-bootsplash svgs/light-logo.svg \
91
91
  --html=public/index.html
92
92
 
93
93
  # With license key 🔑
94
- yarn react-native generate-bootsplash svgs/light-logo.svg \
94
+ yarn react-native-bootsplash generate svgs/light-logo.svg \
95
95
  --platforms=android,ios,web \
96
96
  --background=F5FCFF \
97
97
  --logo-width=100 \
@@ -0,0 +1,78 @@
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
+ }
@@ -0,0 +1,36 @@
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
+ )
@@ -0,0 +1,44 @@
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
@@ -0,0 +1,31 @@
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
@@ -0,0 +1,39 @@
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
@@ -0,0 +1,85 @@
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
package/cli.js ADDED
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { Command } = require("commander");
4
+
5
+ const program = new Command();
6
+ const pkg = require("./package.json");
7
+
8
+ const validProjectTypes = ["detect", "bare", "expo"];
9
+ const validPlatforms = ["android", "ios", "web"];
10
+
11
+ program
12
+ .name(pkg.name)
13
+ .description(pkg.description)
14
+ .version(pkg.version)
15
+ .command("generate", { isDefault: true })
16
+ .description("Generate a launch screen using a logo file path (PNG or SVG)")
17
+ .argument("<logo>", "Logo file path (PNG or SVG)")
18
+ .option(
19
+ "--project-type <string>",
20
+ 'Project type ("detect", "bare" or "expo")',
21
+ "detect",
22
+ )
23
+ .option(
24
+ "--platforms <list>",
25
+ "Platforms to generate for, separated by a comma",
26
+ validPlatforms.join(","),
27
+ )
28
+ .option(
29
+ "--background <string>",
30
+ "Background color (in hexadecimal format)",
31
+ "#fff",
32
+ )
33
+ .option(
34
+ "--logo-width <number>",
35
+ "Logo width at @1x (in dp - we recommend approximately ~100)",
36
+ 100,
37
+ )
38
+ .option(
39
+ "--assets-output <string>",
40
+ "Assets output directory path",
41
+ "assets/bootsplash",
42
+ )
43
+ .option(
44
+ "--flavor <string>",
45
+ "Android flavor build variant (where your resource directory is)",
46
+ "main",
47
+ )
48
+ .option(
49
+ "--html <string>",
50
+ "HTML template file path (your web app entry point)",
51
+ "public/index.html",
52
+ )
53
+ .option(
54
+ "--license-key <string>",
55
+ "License key to enable brand and dark mode assets generation",
56
+ )
57
+ .option("--brand <string>", "Brand file path (PNG or SVG)")
58
+ .option(
59
+ "--brand-width <number>",
60
+ "Brand width at @1x (in dp - we recommend approximately ~80)",
61
+ 80,
62
+ )
63
+ .option(
64
+ "--dark-background <string>",
65
+ "[dark mode] Background color (in hexadecimal format)",
66
+ )
67
+ .option("--dark-logo <string>", "[dark mode] Logo file path (PNG or SVG)")
68
+ .option("--dark-brand <string>", "[dark mode] Brand file path (PNG or SVG)")
69
+ .action((logo, options) => {
70
+ const { projectType, platforms, logoWidth, brandWidth, ...rest } = options;
71
+
72
+ const args = {
73
+ ...rest,
74
+
75
+ projectType: validProjectTypes.includes(projectType.toLowerCase())
76
+ ? projectType.toLowerCase()
77
+ : "detect",
78
+
79
+ platforms: [
80
+ ...new Set(
81
+ platforms
82
+ .toLowerCase()
83
+ .split(/[ ,;|]/)
84
+ .map((platform) => platform.trim())
85
+ .filter((item) => validPlatforms.includes(item)),
86
+ ),
87
+ ],
88
+
89
+ logoWidth: Number.parseInt(logoWidth, 10),
90
+ brandWidth: Number.parseInt(brandWidth, 10),
91
+ };
92
+
93
+ const { generate } = require("./dist/commonjs/generate");
94
+
95
+ generate({ logo, ...args }).catch((error) => {
96
+ console.error(error);
97
+ process.exit(1);
98
+ });
99
+ });
100
+
101
+ program.parse(process.argv);