@react-native/core-cli-utils 0.76.0-nightly-20240715-2eb7bcb8d → 0.76.0-nightly-20240720-3a5eb1973

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.
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.tasks = void 0;
7
+ var _utils = require("./utils");
8
+ var _execa = _interopRequireDefault(require("execa"));
9
+ var _fs = _interopRequireDefault(require("fs"));
10
+ var _path = _interopRequireDefault(require("path"));
11
+ function _interopRequireDefault(obj) {
12
+ return obj && obj.__esModule ? obj : { default: obj };
13
+ }
14
+ function checkPodfileInSyncWithManifest(lockfilePath, manifestLockfilePath) {
15
+ try {
16
+ const expected = _fs.default.readFileSync(lockfilePath, "utf8");
17
+ const found = _fs.default.readFileSync(manifestLockfilePath, "utf8");
18
+ if (expected !== found) {
19
+ throw new Error(
20
+ "Please run: yarn bootstrap ios, Podfile.lock and Pods/Manifest.lock are out of sync"
21
+ );
22
+ }
23
+ } catch (e) {
24
+ throw new Error("Please run: yarn run boostrap ios: " + e.message);
25
+ }
26
+ }
27
+ const FIRST = 1,
28
+ SECOND = 2,
29
+ THIRD = 3;
30
+ const tasks = {
31
+ bootstrap: (options) => ({
32
+ validate: (0, _utils.task)(
33
+ FIRST,
34
+ "Check Cocoapods and bundle are available",
35
+ () => {
36
+ (0, _utils.assertDependencies)(
37
+ (0, _utils.isOnPath)("pod", "CocoaPods"),
38
+ (0, _utils.isOnPath)("bundle", "Bundler to manage Ruby's gems")
39
+ );
40
+ }
41
+ ),
42
+ installRubyGems: (0, _utils.task)(SECOND, "Install Ruby Gems", () =>
43
+ (0, _execa.default)("bundle", ["install"], {
44
+ cwd: options.cwd,
45
+ })
46
+ ),
47
+ installDependencies: (0, _utils.task)(
48
+ THIRD,
49
+ "Install CocoaPods dependencies",
50
+ () => {
51
+ const env = {
52
+ RCT_NEW_ARCH_ENABLED: options.newArchitecture ? "1" : "0",
53
+ USE_FRAMEWORKS: options.frameworks,
54
+ USE_HERMES: options.hermes ? "1" : "0",
55
+ };
56
+ if (options.frameworks == null) {
57
+ delete env.USE_FRAMEWORKS;
58
+ }
59
+ return (0, _execa.default)("bundle", ["exec", "pod", "install"], {
60
+ cwd: options.cwd,
61
+ env,
62
+ });
63
+ }
64
+ ),
65
+ }),
66
+ build: (options, ...args) => ({
67
+ validate: (0, _utils.task)(
68
+ FIRST,
69
+ "Check you've run xcode-select --install for xcodebuild",
70
+ () => {
71
+ (0, _utils.assertDependencies)(
72
+ (0, _utils.isOnPath)("xcodebuild", "Xcode Commandline Tools")
73
+ );
74
+ }
75
+ ),
76
+ hasPodsInstalled: (0, _utils.task)(
77
+ FIRST,
78
+ "Check Pods are installed",
79
+ () => {
80
+ for (const file of ["Podfile.lock", "Pods"]) {
81
+ try {
82
+ _fs.default.accessSync(
83
+ _path.default.join(options.cwd, file),
84
+ _fs.default.constants.F_OK | _fs.default.constants.R_OK
85
+ );
86
+ } catch (e) {
87
+ throw new Error("Please run: yarn run boostrap ios: " + e.message);
88
+ }
89
+ }
90
+ checkPodfileInSyncWithManifest(
91
+ _path.default.join(options.cwd, "Podfile.lock"),
92
+ _path.default.join(options.cwd, "Pods/Manifest.lock")
93
+ );
94
+ }
95
+ ),
96
+ build: (0, _utils.task)(SECOND, "build an app artifact", () => {
97
+ const _args = [
98
+ options.isWorkspace ? "-workspace" : "-project",
99
+ options.name,
100
+ "-configuration",
101
+ options.mode,
102
+ ];
103
+ if (options.scheme != null) {
104
+ _args.push("-scheme", options.scheme);
105
+ }
106
+ if (options.destination != null) {
107
+ switch (options.destination) {
108
+ case "simulator":
109
+ _args.push("-sdk", "iphonesimulator");
110
+ break;
111
+ case "device":
112
+ default:
113
+ _args.push("-destination", options.destination);
114
+ break;
115
+ }
116
+ }
117
+ _args.push(...args);
118
+ return (0, _execa.default)("xcodebuild", _args, {
119
+ cwd: options.cwd,
120
+ env: options.env,
121
+ });
122
+ }),
123
+ }),
124
+ ios: {
125
+ install: (options) => ({
126
+ validate: (0, _utils.task)(
127
+ FIRST,
128
+ "Check you've run xcode-select --install for xcrun",
129
+ () => {
130
+ (0, _utils.assertDependencies)(
131
+ (0, _utils.isOnPath)("xcrun", "An Xcode Commandline tool: xcrun")
132
+ );
133
+ }
134
+ ),
135
+ install: (0, _utils.task)(SECOND, "Install the app on a simulator", () =>
136
+ (0, _execa.default)(
137
+ "xcrun",
138
+ ["simctl", "install", options.device, options.appPath],
139
+ {
140
+ cwd: options.cwd,
141
+ env: options.env,
142
+ }
143
+ )
144
+ ),
145
+ }),
146
+ },
147
+ };
148
+ exports.tasks = tasks;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ import type { Task } from "./types";
13
+ import type { ExecaPromise } from "execa";
14
+
15
+ type AppleBuildMode = "Debug" | "Release";
16
+
17
+ type AppleBuildOptions = {
18
+ isWorkspace: boolean,
19
+ name: string,
20
+ mode: AppleBuildMode,
21
+ scheme?: string,
22
+ destination: "device" | "simulator" | string,
23
+ ...AppleOptions,
24
+ };
25
+
26
+ type AppleBootstrapOption = {
27
+ // Enabled by default
28
+ hermes: boolean,
29
+ newArchitecture: boolean,
30
+ frameworks?: "static" | "dynamic",
31
+ ...AppleOptions,
32
+ };
33
+
34
+ type AppleInstallApp = {
35
+ // Install the app on a simulator or device, typically this is the description from
36
+ // `xcrun simctl list devices`
37
+ device: string,
38
+ appPath: string,
39
+ bundleId: string,
40
+ ...AppleOptions,
41
+ };
42
+
43
+ type AppleOptions = {
44
+ // The directory where the Xcode project is located
45
+ cwd: string,
46
+ // The environment variables to pass to the build command
47
+ env?: { [key: string]: string | void, ... },
48
+ };
49
+
50
+ /* eslint sort-keys: "off" */
51
+ declare export const tasks: {
52
+ bootstrap: (options: AppleBootstrapOption) => {
53
+ validate: Task<void>,
54
+ installRubyGems: Task<ExecaPromise>,
55
+ installDependencies: Task<ExecaPromise>,
56
+ },
57
+ build: (
58
+ options: AppleBuildOptions,
59
+ ...args: $ReadOnlyArray<string>
60
+ ) => {
61
+ validate: Task<void>,
62
+ hasPodsInstalled: Task<void>,
63
+ build: Task<ExecaPromise>,
64
+ },
65
+ ios: {
66
+ install: (options: AppleInstallApp) => {
67
+ validate: Task<void>,
68
+ install: Task<ExecaPromise>,
69
+ },
70
+ },
71
+ };
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ import type { Task } from "./types";
13
+ import type { ExecaPromise, Options as ExecaOptions } from "execa";
14
+ /**
15
+ * Removes the contents of a directory matching a given pattern, but keeps the directory.
16
+ * @private
17
+ */
18
+ export declare function deleteDirectoryContents(
19
+ directory: string,
20
+ filePattern: RegExp
21
+ ): () => Promise<void>;
22
+ /**
23
+ * Removes a directory recursively.
24
+ * @private
25
+ */
26
+ export declare function deleteDirectory(directory: string): () => Promise<void>;
27
+ /**
28
+ * Deletes the contents of the tmp directory matching a given pattern.
29
+ * @private
30
+ */
31
+ export declare function deleteTmpDirectoryContents(
32
+ filepattern: RegExp
33
+ ): () => Promise<void>;
34
+ type CocoaPodsClean = { clean: Task<ExecaPromise> };
35
+ type AndroidClean = { validate: Task<void>; run: Task<ExecaPromise> };
36
+ type MetroClean = {
37
+ metro: Task<Promise<void>>;
38
+ haste: Task<Promise<void>>;
39
+ react_native: Task<Promise<void>>;
40
+ };
41
+ type NpmClean = {
42
+ node_modules: Task<Promise<void>>;
43
+ verify_cache: Task<ExecaPromise>;
44
+ };
45
+ type WatchmanClean = { stop: Task<ExecaPromise>; cache: Task<ExecaPromise> };
46
+ type YarnClean = { clean: Task<ExecaPromise> };
47
+ type CleanTasks = {
48
+ android: (
49
+ andoirdSrcDir: null | undefined | string,
50
+ opts?: ExecaOptions
51
+ ) => AndroidClean;
52
+ cocoapods: CocoaPodsClean;
53
+ metro: () => MetroClean;
54
+ npm: (projectRootDir: string) => NpmClean;
55
+ watchman: (projectRootDir: string) => WatchmanClean;
56
+ yarn: (projectRootDir: string) => YarnClean;
57
+ cocoapods?: (projectRootDir: string) => CocoaPodsClean;
58
+ };
59
+ export declare const tasks: CleanTasks;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.deleteDirectory = deleteDirectory;
7
+ exports.deleteDirectoryContents = deleteDirectoryContents;
8
+ exports.deleteTmpDirectoryContents = deleteTmpDirectoryContents;
9
+ exports.tasks = void 0;
10
+ var _utils = require("./utils");
11
+ var _execa = _interopRequireDefault(require("execa"));
12
+ var _fs = require("fs");
13
+ var _os = _interopRequireDefault(require("os"));
14
+ var _path = _interopRequireDefault(require("path"));
15
+ function _interopRequireDefault(obj) {
16
+ return obj && obj.__esModule ? obj : { default: obj };
17
+ }
18
+ const FIRST = 1,
19
+ SECOND = 2;
20
+ const rmrf = (pathname) => {
21
+ if (!(0, _fs.existsSync)(pathname)) {
22
+ return;
23
+ }
24
+ (0, _fs.rm)(pathname, {
25
+ force: true,
26
+ maxRetries: 3,
27
+ recursive: true,
28
+ });
29
+ };
30
+ function deleteDirectoryContents(directory, filePattern) {
31
+ return async function deleteDirectoryContentsAction() {
32
+ const base = _path.default.dirname(directory);
33
+ const files = (0, _fs.readdirSync)(base).filter((filename) =>
34
+ filePattern.test(filename)
35
+ );
36
+ for (const filename of files) {
37
+ rmrf(_path.default.join(base, filename));
38
+ }
39
+ };
40
+ }
41
+ function deleteDirectory(directory) {
42
+ return async function cleanDirectoryAction() {
43
+ rmrf(directory);
44
+ };
45
+ }
46
+ function deleteTmpDirectoryContents(filepattern) {
47
+ return deleteDirectoryContents(_os.default.tmpdir(), filepattern);
48
+ }
49
+ const platformGradlew = _utils.isWindows ? "gradlew.bat" : "gradlew";
50
+ const tasks = {
51
+ android: (androidSrcDir, opts) => ({
52
+ validate: (0, _utils.task)(FIRST, "Check gradlew is available", () => {
53
+ (0, _utils.assertDependencies)(
54
+ (0, _utils.isOnPath)(platformGradlew, "Gradle wrapper")
55
+ );
56
+ }),
57
+ run: (0, _utils.task)(SECOND, "🧹 Clean Gradle cache", () => {
58
+ const gradlew = _path.default.join(
59
+ androidSrcDir ?? "android",
60
+ platformGradlew
61
+ );
62
+ const script = _path.default.basename(gradlew);
63
+ const cwd = _path.default.dirname(gradlew);
64
+ return (0, _execa.default)(
65
+ _utils.isWindows ? script : "./" + script,
66
+ ["clean"],
67
+ {
68
+ cwd,
69
+ ...opts,
70
+ }
71
+ );
72
+ }),
73
+ }),
74
+ metro: () => ({
75
+ metro: (0, _utils.task)(
76
+ FIRST,
77
+ "🧹 Clean Metro cache",
78
+ deleteTmpDirectoryContents(/^metro-.+/)
79
+ ),
80
+ haste: (0, _utils.task)(
81
+ FIRST,
82
+ "🧹 Clean Haste cache",
83
+ deleteTmpDirectoryContents(/^haste-map-.+/)
84
+ ),
85
+ react_native: (0, _utils.task)(
86
+ FIRST,
87
+ "🧹 Clean React Native cache",
88
+ deleteTmpDirectoryContents(/^react-.+/)
89
+ ),
90
+ }),
91
+ npm: (projectRootDir) => ({
92
+ node_modules: (0, _utils.task)(
93
+ FIRST,
94
+ "🧹 Clean node_modules",
95
+ deleteDirectory(_path.default.join(projectRootDir, "node_modules"))
96
+ ),
97
+ verify_cache: (0, _utils.task)(SECOND, "🔬 Verify npm cache", (opts) =>
98
+ (0, _execa.default)("npm", ["cache", "verify"], {
99
+ cwd: projectRootDir,
100
+ ...opts,
101
+ })
102
+ ),
103
+ }),
104
+ watchman: (projectRootDir) => ({
105
+ stop: (0, _utils.task)(FIRST, "✋ Stop Watchman", (opts) =>
106
+ (0, _execa.default)(
107
+ _utils.isWindows ? "tskill" : "killall",
108
+ ["watchman"],
109
+ {
110
+ cwd: projectRootDir,
111
+ ...opts,
112
+ }
113
+ )
114
+ ),
115
+ cache: (0, _utils.task)(SECOND, "🧹 Delete Watchman cache", (opts) =>
116
+ (0, _execa.default)("watchman", ["watch-del-all"], {
117
+ cwd: projectRootDir,
118
+ ...opts,
119
+ })
120
+ ),
121
+ }),
122
+ yarn: (projectRootDir) => ({
123
+ clean: (0, _utils.task)(FIRST, "🧹 Clean Yarn cache", (opts) =>
124
+ (0, _execa.default)("yarn", ["cache", "clean"], {
125
+ cwd: projectRootDir,
126
+ ...opts,
127
+ })
128
+ ),
129
+ }),
130
+ };
131
+ exports.tasks = tasks;
132
+ if (_utils.isMacOS) {
133
+ tasks.cocoapods = (projectRootDir) => ({
134
+ clean: (0, _utils.task)(FIRST, "🧹 Clean CocoaPods pod cache", (opts) =>
135
+ (0, _execa.default)("bundle", ["exec", "pod", "deintegrate"], {
136
+ cwd: projectRootDir,
137
+ ...opts,
138
+ })
139
+ ),
140
+ });
141
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ import type { Task } from "./types";
13
+ import type { ExecaPromise, Options as ExecaOptions } from "execa";
14
+
15
+ /**
16
+ * Removes the contents of a directory matching a given pattern, but keeps the directory.
17
+ * @private
18
+ */
19
+ declare export function deleteDirectoryContents(
20
+ directory: string,
21
+ filePattern: RegExp
22
+ ): () => Promise<void>;
23
+
24
+ /**
25
+ * Removes a directory recursively.
26
+ * @private
27
+ */
28
+ declare export function deleteDirectory(directory: string): () => Promise<void>;
29
+
30
+ /**
31
+ * Deletes the contents of the tmp directory matching a given pattern.
32
+ * @private
33
+ */
34
+ declare export function deleteTmpDirectoryContents(
35
+ filepattern: RegExp
36
+ ): () => Promise<void>;
37
+
38
+ type CocoaPodsClean = {
39
+ clean: Task<ExecaPromise>,
40
+ };
41
+ type AndroidClean = {
42
+ validate: Task<void>,
43
+ run: Task<ExecaPromise>,
44
+ };
45
+ type MetroClean = {
46
+ metro: Task<Promise<void>>,
47
+ haste: Task<Promise<void>>,
48
+ react_native: Task<Promise<void>>,
49
+ };
50
+
51
+ type NpmClean = {
52
+ node_modules: Task<Promise<void>>,
53
+ verify_cache: Task<ExecaPromise>,
54
+ };
55
+
56
+ type WatchmanClean = {
57
+ stop: Task<ExecaPromise>,
58
+ cache: Task<ExecaPromise>,
59
+ };
60
+
61
+ type YarnClean = {
62
+ clean: Task<ExecaPromise>,
63
+ };
64
+
65
+ type CleanTasks = {
66
+ android: (andoirdSrcDir: ?string, opts?: ExecaOptions) => AndroidClean,
67
+ cocoapods: CocoaPodsClean,
68
+ metro: () => MetroClean,
69
+ npm: (projectRootDir: string) => NpmClean,
70
+ watchman: (projectRootDir: string) => WatchmanClean,
71
+ yarn: (projectRootDir: string) => YarnClean,
72
+ cocoapods?: (projectRootDir: string) => CocoaPodsClean,
73
+ };
74
+
75
+ // The tasks that cleanup various build artefacts.
76
+ /* eslint sort-keys: "off" */
77
+ declare export const tasks: CleanTasks;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ export type Task<R = unknown> = {
13
+ order: number;
14
+ label: string;
15
+ action: () => R;
16
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ import type { Task } from "./types";
13
+ export declare function task<R>(
14
+ order: number,
15
+ label: string,
16
+ action: Task<R>["action"]
17
+ ): Task<R>;
18
+ export declare const isWindows: any;
19
+ export declare const isMacOS: any;
20
+ export declare const toPascalCase: (label: string) => string;
21
+ type PathCheckResult = { found: boolean; dep: string; description: string };
22
+ export declare function isOnPath(
23
+ dep: string,
24
+ description: string
25
+ ): PathCheckResult;
26
+ export declare function assertDependencies(
27
+ ...deps: ReadonlyArray<ReturnType<typeof isOnPath>>
28
+ ): void;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.assertDependencies = assertDependencies;
7
+ exports.isMacOS = void 0;
8
+ exports.isOnPath = isOnPath;
9
+ exports.isWindows = void 0;
10
+ exports.task = task;
11
+ exports.toPascalCase = void 0;
12
+ var _execa = _interopRequireDefault(require("execa"));
13
+ var _os = _interopRequireDefault(require("os"));
14
+ function _interopRequireDefault(obj) {
15
+ return obj && obj.__esModule ? obj : { default: obj };
16
+ }
17
+ function task(order, label, action) {
18
+ return {
19
+ action,
20
+ label,
21
+ order,
22
+ };
23
+ }
24
+ const isWindows = _os.default.platform() === "win32";
25
+ exports.isWindows = isWindows;
26
+ const isMacOS = _os.default.platform() === "darwin";
27
+ exports.isMacOS = isMacOS;
28
+ const toPascalCase = (label) =>
29
+ label.length === 0 ? "" : label[0].toUpperCase() + label.slice(1);
30
+ exports.toPascalCase = toPascalCase;
31
+ function isOnPath(dep, description) {
32
+ const cmd = isWindows ? ["where", [dep]] : ["command", ["-v", dep]];
33
+ try {
34
+ return {
35
+ dep,
36
+ description,
37
+ found: _execa.default.sync(...cmd).exitCode === 0,
38
+ };
39
+ } catch {
40
+ return {
41
+ dep,
42
+ description,
43
+ found: false,
44
+ };
45
+ }
46
+ }
47
+ function assertDependencies(...deps) {
48
+ for (const { found, dep, description } of deps) {
49
+ if (!found) {
50
+ throw new Error(`"${dep}" not found, ${description}`);
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ import type { Task } from "./types";
13
+
14
+ declare export function task<R>(
15
+ order: number,
16
+ label: string,
17
+ action: Task<R>["action"]
18
+ ): Task<R>;
19
+
20
+ declare export const isWindows: $FlowFixMe;
21
+ declare export const isMacOS: $FlowFixMe;
22
+
23
+ declare export const toPascalCase: (label: string) => string;
24
+
25
+ type PathCheckResult = {
26
+ found: boolean,
27
+ dep: string,
28
+ description: string,
29
+ };
30
+
31
+ declare export function isOnPath(
32
+ dep: string,
33
+ description: string
34
+ ): PathCheckResult;
35
+
36
+ declare export function assertDependencies(
37
+ ...deps: $ReadOnlyArray<ReturnType<typeof isOnPath>>
38
+ ): void;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ * @format
9
+ * @oncall react_native
10
+ */
11
+
12
+ export declare const android: {
13
+ ANDROID_NDK: ">= 23.x";
14
+ ANDROID_SDK: ">= 33.x";
15
+ };
16
+ export declare const apple: { COCOAPODS: ">= 1.10.0"; XCODE: ">= 12.x" };
17
+ export declare const common: {
18
+ BUN: ">= 1.0.0";
19
+ JAVA: ">= 17 <= 20";
20
+ NODE_JS: ">= 18";
21
+ NPM: ">= 4.x";
22
+ RUBY: ">= 2.6.10";
23
+ YARN: ">= 1.10.x";
24
+ };
25
+ export declare const all: Omit<apple, keyof (android | common | {})> &
26
+ Omit<android, keyof (common | {})> &
27
+ Omit<common, keyof ({})> & {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.common = exports.apple = exports.android = exports.all = void 0;
7
+ const android = {
8
+ ANDROID_NDK: ">= 23.x",
9
+ ANDROID_SDK: ">= 33.x",
10
+ };
11
+ exports.android = android;
12
+ const apple = {
13
+ COCOAPODS: ">= 1.10.0",
14
+ XCODE: ">= 12.x",
15
+ };
16
+ exports.apple = apple;
17
+ const common = {
18
+ BUN: ">= 1.0.0",
19
+ JAVA: ">= 17 <= 20",
20
+ NODE_JS: ">= 18",
21
+ NPM: ">= 4.x",
22
+ RUBY: ">= 2.6.10",
23
+ YARN: ">= 1.10.x",
24
+ };
25
+ exports.common = common;
26
+ const all = {
27
+ ...apple,
28
+ ...android,
29
+ ...common,
30
+ };
31
+ exports.all = all;