@callstack/brownfield-cli 3.13.1 → 3.13.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/CHANGELOG.md +10 -0
- package/dist/brownfield/commands/packageAndroid.d.ts.map +1 -1
- package/dist/brownfield/commands/packageAndroid.js +3 -1
- package/dist/brownfield/commands/packageIos.d.ts.map +1 -1
- package/dist/brownfield/commands/packageIos.js +4 -2
- package/dist/brownfield/commands/publishAndroid.d.ts.map +1 -1
- package/dist/brownfield/commands/publishAndroid.js +3 -1
- package/dist/brownfield/utils/project.d.ts.map +1 -1
- package/dist/brownfield/utils/project.js +20 -9
- package/dist/brownie/config.js +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -7
- package/dist/expoPluginConfig.d.ts +74 -0
- package/dist/expoPluginConfig.d.ts.map +1 -0
- package/dist/expoPluginConfig.js +103 -0
- package/dist/types.d.ts +92 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -6
- package/schema.json +94 -9
- package/src/brownfield/commands/packageAndroid.ts +4 -1
- package/src/brownfield/commands/packageIos.ts +5 -3
- package/src/brownfield/commands/publishAndroid.ts +4 -1
- package/src/brownfield/utils/project.ts +33 -14
- package/src/brownie/config.ts +1 -1
- package/src/config.ts +12 -8
- package/src/expoPluginConfig.ts +195 -0
- package/src/types.ts +109 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @callstack/brownfield-cli
|
|
2
2
|
|
|
3
|
+
## 3.13.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#398](https://github.com/callstack/react-native-brownfield/pull/398) [`8e90842`](https://github.com/callstack/react-native-brownfield/commit/8e90842291348dcb0542a6787f5cfbb1017532dd) Thanks [@artus9033](https://github.com/artus9033)! - feat: support brownfield unified config file in Expo
|
|
8
|
+
|
|
9
|
+
- [#402](https://github.com/callstack/react-native-brownfield/pull/402) [`3475c3d`](https://github.com/callstack/react-native-brownfield/commit/3475c3db375988ebd63ce01bfd93f4dbb1a55e8d) Thanks [@artus9033](https://github.com/artus9033)! - feat: support local BGP in Expo config plugin
|
|
10
|
+
|
|
11
|
+
- [#397](https://github.com/callstack/react-native-brownfield/pull/397) [`4088c01`](https://github.com/callstack/react-native-brownfield/commit/4088c01a069306565dd3e279d9132f5dbe861d0b) Thanks [@artus9033](https://github.com/artus9033)! - fix: generate config schema with descriptions, add more descriptions
|
|
12
|
+
|
|
3
13
|
## 3.13.1
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageAndroid.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/packageAndroid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,EACL,YAAY,EAGb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"packageAndroid.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/packageAndroid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,EACL,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAQ/B,eAAO,MAAM,qBAAqB,SAyBjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,cAGjC,CAAC"}
|
|
@@ -3,17 +3,19 @@ import { packageAarOptions, } from '@rock-js/platform-android';
|
|
|
3
3
|
import { packageAarAction } from '@rock-js/plugin-brownfield-android';
|
|
4
4
|
import { ExampleUsage, actionRunner, curryOptions, } from '../../shared/index.js';
|
|
5
5
|
import { runExpoPrebuildIfNeeded } from '../utils/expo.js';
|
|
6
|
+
import { findProjectRoot } from '../utils/paths.js';
|
|
6
7
|
import { getProjectInfo } from '../utils/project.js';
|
|
7
8
|
import { runBrownieCodegenIfApplicable } from '../../brownie/helpers/runBrownieCodegenIfApplicable.js';
|
|
8
9
|
import { runNavigationCodegenIfApplicable } from '../../navigation/helpers/runNavigationCodegenIfApplicable.js';
|
|
9
10
|
import { mergeBrownfieldConfigWithOptions } from '../../config.js';
|
|
10
11
|
export const packageAndroidCommand = curryOptions(new Command('package:android').description('Build Android AAR'), packageAarOptions).action(actionRunner(async (cliOptions) => {
|
|
11
12
|
const options = mergeBrownfieldConfigWithOptions(cliOptions, 'android');
|
|
12
|
-
const
|
|
13
|
+
const projectRoot = findProjectRoot();
|
|
13
14
|
await runExpoPrebuildIfNeeded({
|
|
14
15
|
projectRoot,
|
|
15
16
|
platform: 'android',
|
|
16
17
|
});
|
|
18
|
+
const { platformConfig } = getProjectInfo('android');
|
|
17
19
|
await runBrownieCodegenIfApplicable(projectRoot, 'kotlin');
|
|
18
20
|
await runNavigationCodegenIfApplicable(projectRoot);
|
|
19
21
|
await packageAarAction({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageIos.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/packageIos.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"packageIos.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/packageIos.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,OAAO,EAGL,YAAY,EACb,MAAM,uBAAuB,CAAC;AAiB/B,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,OAAO,GACtB,OAAO,CAcT;AAcD,eAAO,MAAM,iBAAiB,SAqQ3B,CAAC;AAEJ,eAAO,MAAM,iBAAiB,cAG7B,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { packageIosAction } from '@rock-js/plugin-brownfield-ios';
|
|
|
5
5
|
import { RockError, colorLink, getReactNativeVersion, logger, relativeToCwd, } from '@rock-js/tools';
|
|
6
6
|
import { Command, Option } from 'commander';
|
|
7
7
|
import { runExpoPrebuildIfNeeded } from '../utils/expo.js';
|
|
8
|
+
import { findProjectRoot } from '../utils/paths.js';
|
|
8
9
|
import { getProjectInfo } from '../utils/project.js';
|
|
9
10
|
import { supportsPrebuiltRNCore } from '../utils/supportsPrebuiltRNCore.js';
|
|
10
11
|
import { actionRunner, curryOptions, ExampleUsage, } from '../../shared/index.js';
|
|
@@ -51,7 +52,9 @@ export const packageIosCommand = curryOptions(new Command('package:ios').descrip
|
|
|
51
52
|
.addOption(new Option('--add-spm-package', 'Generate a local Swift Package Manager manifest next to the packaged XCFramework outputs'))
|
|
52
53
|
.action(actionRunner(async (cliOptions) => {
|
|
53
54
|
const options = mergeBrownfieldConfigWithOptions(cliOptions, 'ios');
|
|
54
|
-
const
|
|
55
|
+
const projectRoot = findProjectRoot();
|
|
56
|
+
await runExpoPrebuildIfNeeded({ projectRoot, platform: 'ios' });
|
|
57
|
+
const { platformConfig, userConfig } = getProjectInfo('ios');
|
|
55
58
|
const prebuiltRNCoreSupport = supportsPrebuiltRNCore({ projectRoot });
|
|
56
59
|
// version-aware default when the flag is omitted (see ios.mdx "React Native Prebuilts")
|
|
57
60
|
options.usePrebuiltRnCore ??= prebuiltRNCoreSupport.supported
|
|
@@ -67,7 +70,6 @@ export const packageIosCommand = curryOptions(new Command('package:ios').descrip
|
|
|
67
70
|
if (options.usePrebuiltRnCore && !prebuiltRNCoreSupport.supported) {
|
|
68
71
|
throw new RockError(prebuiltRNCoreSupport.reason);
|
|
69
72
|
}
|
|
70
|
-
await runExpoPrebuildIfNeeded({ projectRoot, platform: 'ios' });
|
|
71
73
|
if (!userConfig.project.ios) {
|
|
72
74
|
throw new Error('iOS project not found.');
|
|
73
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishAndroid.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/publishAndroid.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAGL,YAAY,EACb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"publishAndroid.d.ts","sourceRoot":"","sources":["../../../src/brownfield/commands/publishAndroid.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAGL,YAAY,EACb,MAAM,uBAAuB,CAAC;AAQ/B,eAAO,MAAM,qBAAqB,SA0BjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,cAGjC,CAAC"}
|
|
@@ -3,17 +3,19 @@ import { publishLocalAarOptions, } from '@rock-js/platform-android';
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { actionRunner, curryOptions, ExampleUsage, } from '../../shared/index.js';
|
|
5
5
|
import { getProjectInfo } from '../utils/project.js';
|
|
6
|
+
import { findProjectRoot } from '../utils/paths.js';
|
|
6
7
|
import { runExpoPrebuildIfNeeded } from '../utils/expo.js';
|
|
7
8
|
import { runBrownieCodegenIfApplicable } from '../../brownie/helpers/runBrownieCodegenIfApplicable.js';
|
|
8
9
|
import { runNavigationCodegenIfApplicable } from '../../navigation/helpers/runNavigationCodegenIfApplicable.js';
|
|
9
10
|
import { mergeBrownfieldConfigWithOptions } from '../../config.js';
|
|
10
11
|
export const publishAndroidCommand = curryOptions(new Command('publish:android').description('Publish Android package to Maven local'), publishLocalAarOptions).action(actionRunner(async (cliOptions) => {
|
|
11
12
|
const options = mergeBrownfieldConfigWithOptions(cliOptions, 'android');
|
|
12
|
-
const
|
|
13
|
+
const projectRoot = findProjectRoot();
|
|
13
14
|
await runExpoPrebuildIfNeeded({
|
|
14
15
|
projectRoot,
|
|
15
16
|
platform: 'android',
|
|
16
17
|
});
|
|
18
|
+
const { platformConfig } = getProjectInfo('android');
|
|
17
19
|
await runBrownieCodegenIfApplicable(projectRoot, 'kotlin');
|
|
18
20
|
await runNavigationCodegenIfApplicable(projectRoot);
|
|
19
21
|
await publishLocalAarAction({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/brownfield/utils/project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAEL,KAAK,aAAa,IAAI,iBAAiB,EACxC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/brownfield/utils/project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAEL,KAAK,aAAa,IAAI,iBAAiB,EACxC,MAAM,cAAc,CAAC;AAiCtB;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,4BAYxD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,aAAa,EACb,UAAU,EAAE,EAAE,GAAG,EAAE,EACnB,WAAW,GACZ,EAAE;IACD,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,8BAA8B;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAE9B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB,QAuBA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAS,KAAK,GAAG,SAAS,EAC/D,QAAQ,EAAE,QAAQ,GACjB;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;CACzC,CAeA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;CAC7B,GAAG,UAAU,CAuBb;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,eAAe,EACrB,aAAa,EAAE,oBAAoB;;;EAQpC"}
|
|
@@ -7,16 +7,34 @@ const cliConfig = typeof cliConfigImport === 'function'
|
|
|
7
7
|
? cliConfigImport
|
|
8
8
|
: // @ts-expect-error: interop default
|
|
9
9
|
cliConfigImport.default;
|
|
10
|
+
function hasExpoAppConfig(projectRoot) {
|
|
11
|
+
return (fs.existsSync(path.join(projectRoot, 'app.json')) ||
|
|
12
|
+
fs.existsSync(path.join(projectRoot, 'app.config.js')) ||
|
|
13
|
+
fs.existsSync(path.join(projectRoot, 'app.config.ts')) ||
|
|
14
|
+
fs.existsSync(path.join(projectRoot, 'app.config.mjs')));
|
|
15
|
+
}
|
|
16
|
+
function projectDependsOnExpo(projectRoot) {
|
|
17
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
18
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
22
|
+
return ['dependencies', 'peerDependencies', 'devDependencies'].some((key) => packageJson[key]?.expo);
|
|
23
|
+
}
|
|
10
24
|
/**
|
|
11
25
|
* Gets the Expo config if the project is an Expo project
|
|
12
26
|
* @param projectRoot The project root path
|
|
13
27
|
* @returns The Expo config if the project is an Expo project, null otherwise
|
|
14
28
|
*/
|
|
15
29
|
export function getExpoConfigIfIsExpo(projectRoot) {
|
|
30
|
+
const hasAppConfig = hasExpoAppConfig(projectRoot);
|
|
16
31
|
try {
|
|
17
32
|
return getConfig(projectRoot, { skipSDKVersionRequirement: true });
|
|
18
33
|
}
|
|
19
|
-
catch {
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (hasAppConfig) {
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
20
38
|
return null;
|
|
21
39
|
}
|
|
22
40
|
}
|
|
@@ -27,14 +45,7 @@ export function getExpoConfigIfIsExpo(projectRoot) {
|
|
|
27
45
|
* @returns Whether the project is an Expo project
|
|
28
46
|
*/
|
|
29
47
|
export function isExpoProject(projectRoot) {
|
|
30
|
-
|
|
31
|
-
// additionally, it is needed to check if the project depends on Expo packages explicitly
|
|
32
|
-
// to prevent false positives in a monorepo setup
|
|
33
|
-
const rnProjectRoot = findProjectRoot();
|
|
34
|
-
const packageJsonPath = path.join(rnProjectRoot, 'package.json');
|
|
35
|
-
const dependsOnExpo = fs.existsSync(packageJsonPath) &&
|
|
36
|
-
['dependencies', 'peerDependencies', 'devDependencies'].some((key) => JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))[key]?.expo);
|
|
37
|
-
return hasExpoConfig && dependsOnExpo;
|
|
48
|
+
return hasExpoAppConfig(projectRoot) && projectDependsOnExpo(projectRoot);
|
|
38
49
|
}
|
|
39
50
|
export function getExpoSdkMajor(projectRoot) {
|
|
40
51
|
const rawExpoVersion = getExpoConfigIfIsExpo(projectRoot)?.exp.sdkVersion;
|
package/dist/brownie/config.js
CHANGED
|
@@ -66,7 +66,7 @@ export function resolveBrownieCodegenConfig({ brownie, projectRoot = findProject
|
|
|
66
66
|
const legacyConfig = hasLegacyConfig(projectRoot)
|
|
67
67
|
? loadConfig(projectRoot)
|
|
68
68
|
: undefined;
|
|
69
|
-
const brownfieldBrownie = loadBrownfieldConfig(projectRoot)
|
|
69
|
+
const brownfieldBrownie = loadBrownfieldConfig(projectRoot)?.brownie;
|
|
70
70
|
if (legacyConfig !== undefined && (brownie ?? brownfieldBrownie)) {
|
|
71
71
|
throw new Error(LEGACY_AND_NEW_BROWNIE_CONFIG_ERROR);
|
|
72
72
|
}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { BrownfieldConfig } from './types.js';
|
|
2
|
+
export declare const CONFIG_BASE_NAME = "brownfield";
|
|
3
|
+
export declare const JS_CONFIG_FILE_NAME = "brownfield.config.js";
|
|
4
|
+
export declare const JSON_CONFIG_FILE_NAME = "brownfield.config.json";
|
|
2
5
|
export declare function validateBrownfieldCLIConfig(config: unknown): void;
|
|
3
|
-
export declare function loadBrownfieldConfig(projectRoot?: string): BrownfieldConfig;
|
|
6
|
+
export declare function loadBrownfieldConfig(projectRoot?: string): BrownfieldConfig | null;
|
|
4
7
|
type BrownfieldPlatform = 'android' | 'ios';
|
|
5
8
|
export declare function mergeBrownfieldConfigWithOptions<T extends object>(options: T, platform: BrownfieldPlatform): T;
|
|
6
9
|
export {};
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,mBAAmB,yBAAkC,CAAC;AACnE,eAAO,MAAM,qBAAqB,2BAAoC,CAAC;AAOvE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAMjE;AAED,wBAAgB,oBAAoB,CAClC,WAAW,GAAE,MAA0B,GACtC,gBAAgB,GAAG,IAAI,CA+BzB;AAED,KAAK,kBAAkB,GAAG,SAAS,GAAG,KAAK,CAAC;AAe5C,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,MAAM,EAC/D,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,kBAAkB,GAC3B,CAAC,CAwCH"}
|
package/dist/config.js
CHANGED
|
@@ -5,11 +5,11 @@ import Ajv from 'ajv';
|
|
|
5
5
|
import { findProjectRoot } from './brownfield/utils/paths.js';
|
|
6
6
|
import BrownfieldSchema from '../schema.json' with { type: 'json' };
|
|
7
7
|
import { logger } from '@rock-js/tools';
|
|
8
|
-
const CONFIG_BASE_NAME = 'brownfield';
|
|
9
|
-
const JS_CONFIG_FILE_NAME = `${CONFIG_BASE_NAME}.config.js`;
|
|
10
|
-
const JSON_CONFIG_FILE_NAME = `${CONFIG_BASE_NAME}.config.json`;
|
|
8
|
+
export const CONFIG_BASE_NAME = 'brownfield';
|
|
9
|
+
export const JS_CONFIG_FILE_NAME = `${CONFIG_BASE_NAME}.config.js`;
|
|
10
|
+
export const JSON_CONFIG_FILE_NAME = `${CONFIG_BASE_NAME}.config.json`;
|
|
11
11
|
const SEPARATOR = '\n● ';
|
|
12
|
-
const ajv = new Ajv({ allErrors: true });
|
|
12
|
+
const ajv = new Ajv({ allErrors: true, allowUnionTypes: true });
|
|
13
13
|
const validateBrownfieldConfig = ajv.compile(BrownfieldSchema);
|
|
14
14
|
export function validateBrownfieldCLIConfig(config) {
|
|
15
15
|
if (!validateBrownfieldConfig(config)) {
|
|
@@ -25,7 +25,7 @@ export function loadBrownfieldConfig(projectRoot = findProjectRoot()) {
|
|
|
25
25
|
if ([
|
|
26
26
|
fs.existsSync(jsConfigFilePath),
|
|
27
27
|
fs.existsSync(jsonConfigFilePath),
|
|
28
|
-
packageJson
|
|
28
|
+
CONFIG_BASE_NAME in packageJson,
|
|
29
29
|
].filter(Boolean).length > 1) {
|
|
30
30
|
throw new Error('Project has multiple Brownfield configuration files');
|
|
31
31
|
}
|
|
@@ -35,7 +35,10 @@ export function loadBrownfieldConfig(projectRoot = findProjectRoot()) {
|
|
|
35
35
|
if (fs.existsSync(jsonConfigFilePath)) {
|
|
36
36
|
return require(jsonConfigFilePath);
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
if (CONFIG_BASE_NAME in packageJson) {
|
|
39
|
+
return packageJson[CONFIG_BASE_NAME] ?? {};
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
39
42
|
}
|
|
40
43
|
function getSharedConfig(config) {
|
|
41
44
|
return config.verbose === undefined ? {} : { verbose: config.verbose };
|
|
@@ -47,7 +50,7 @@ function areConfigValuesEqual(configValue, optionValue) {
|
|
|
47
50
|
return JSON.stringify(configValue) === JSON.stringify(optionValue);
|
|
48
51
|
}
|
|
49
52
|
export function mergeBrownfieldConfigWithOptions(options, platform) {
|
|
50
|
-
const reactNativeBrownfieldConfig = loadBrownfieldConfig();
|
|
53
|
+
const reactNativeBrownfieldConfig = loadBrownfieldConfig() ?? {};
|
|
51
54
|
validateBrownfieldCLIConfig(reactNativeBrownfieldConfig);
|
|
52
55
|
const platformConfig = {
|
|
53
56
|
...getSharedConfig(reactNativeBrownfieldConfig),
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { BrownfieldConfig } from './types.js';
|
|
2
|
+
export { loadBrownfieldConfig } from './config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Legacy Expo config plugin props shape accepted via app.json plugins tuple.
|
|
5
|
+
*/
|
|
6
|
+
export type BrownfieldPluginProps = {
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
ios?: {
|
|
9
|
+
frameworkName?: string;
|
|
10
|
+
bundleIdentifier?: string;
|
|
11
|
+
buildSettings?: Record<string, string | boolean | number>;
|
|
12
|
+
deploymentTarget?: string;
|
|
13
|
+
frameworkVersion?: string;
|
|
14
|
+
};
|
|
15
|
+
android?: {
|
|
16
|
+
moduleName?: string;
|
|
17
|
+
packageName?: string;
|
|
18
|
+
minSdkVersion?: number;
|
|
19
|
+
targetSdkVersion?: number;
|
|
20
|
+
compileSdkVersion?: number;
|
|
21
|
+
groupId?: string;
|
|
22
|
+
artifactId?: string;
|
|
23
|
+
version?: string;
|
|
24
|
+
useLocalGradlePlugin?: boolean;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type ResolvedBrownfieldPluginAndroidConfig = {
|
|
28
|
+
moduleName: string;
|
|
29
|
+
packageName: string;
|
|
30
|
+
minSdkVersion: number;
|
|
31
|
+
targetSdkVersion: number;
|
|
32
|
+
compileSdkVersion: number;
|
|
33
|
+
groupId: string;
|
|
34
|
+
artifactId: string;
|
|
35
|
+
version: string;
|
|
36
|
+
useLocalGradlePlugin: boolean;
|
|
37
|
+
};
|
|
38
|
+
export type ResolvedBrownfieldPluginIosConfig = {
|
|
39
|
+
frameworkName: string;
|
|
40
|
+
bundleIdentifier: string;
|
|
41
|
+
buildSettings: Record<string, string | boolean | number>;
|
|
42
|
+
deploymentTarget: string;
|
|
43
|
+
frameworkVersion: string;
|
|
44
|
+
};
|
|
45
|
+
export type ResolvedBrownfieldPluginConfig = {
|
|
46
|
+
debug: boolean;
|
|
47
|
+
ios: ResolvedBrownfieldPluginIosConfig | null;
|
|
48
|
+
android: ResolvedBrownfieldPluginAndroidConfig | null;
|
|
49
|
+
};
|
|
50
|
+
type BrownfieldExpoConfig = {
|
|
51
|
+
ios?: {
|
|
52
|
+
bundleIdentifier?: string;
|
|
53
|
+
};
|
|
54
|
+
android?: {
|
|
55
|
+
package?: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Asserts that there is no overlap between the file config and the plugin props.
|
|
60
|
+
* @param fileConfig - The loaded file config, or null when no config source exists.
|
|
61
|
+
* @param pluginProps - The plugin props to check for overlap.
|
|
62
|
+
* @throws An error if there is overlap.
|
|
63
|
+
* @returns void
|
|
64
|
+
*/
|
|
65
|
+
export declare function assertNoConfigFilePluginOverlap(fileConfig: BrownfieldConfig | null, pluginProps: BrownfieldPluginProps): void;
|
|
66
|
+
/**
|
|
67
|
+
* Resolves the plugin config from the file config and the plugin props.
|
|
68
|
+
* @param pluginProps - The plugin props to resolve.
|
|
69
|
+
* @param fileConfig - The file config to resolve.
|
|
70
|
+
* @param expoConfig - The Expo plugin config to resolve.
|
|
71
|
+
* @returns The resolved plugin config.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveBrownfieldPluginConfig(pluginProps: BrownfieldPluginProps, fileConfig: BrownfieldConfig | null, expoConfig: BrownfieldExpoConfig): ResolvedBrownfieldPluginConfig;
|
|
74
|
+
//# sourceMappingURL=expoPluginConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expoPluginConfig.d.ts","sourceRoot":"","sources":["../src/expoPluginConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE;QACJ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;QAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,iCAAiC,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,qCAAqC,GAAG,IAAI,CAAC;CACvD,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,GAAG,CAAC,EAAE;QACJ,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AA0DF;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,gBAAgB,GAAG,IAAI,EACnC,WAAW,EAAE,qBAAqB,GACjC,IAAI,CAQN;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,qBAAqB,EAClC,UAAU,EAAE,gBAAgB,GAAG,IAAI,EACnC,UAAU,EAAE,oBAAoB,GAC/B,8BAA8B,CA2ChC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export { loadBrownfieldConfig } from './config.js';
|
|
2
|
+
const CONFIG_FILE_PLUGIN_OVERLAP_ERROR = 'Brownfield configuration is defined in both a brownfield config file and app.json plugin options. ' +
|
|
3
|
+
'Use only one source: either brownfield.config.js, brownfield.config.json, package.json#brownfield, or the plugin options in app.json.';
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the plugin props are non-empty.
|
|
6
|
+
* @param props - The plugin props to check.
|
|
7
|
+
* @returns True if the plugin props are non-empty, false otherwise.
|
|
8
|
+
*/
|
|
9
|
+
function isPluginPropsNonEmpty(props) {
|
|
10
|
+
if (props.debug !== undefined) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if (props.ios && Object.keys(props.ios).length > 0) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if (props.android && Object.keys(props.android).length > 0) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converts the file config to plugin props.
|
|
23
|
+
* @param fileConfig - The file config to convert to plugin props.
|
|
24
|
+
* @returns The plugin props.
|
|
25
|
+
*/
|
|
26
|
+
function fileConfigToPluginProps(fileConfig) {
|
|
27
|
+
const props = {};
|
|
28
|
+
if (fileConfig.verbose !== undefined) {
|
|
29
|
+
props.debug = fileConfig.verbose;
|
|
30
|
+
}
|
|
31
|
+
if (fileConfig.android) {
|
|
32
|
+
props.android = {
|
|
33
|
+
moduleName: fileConfig.android.moduleName,
|
|
34
|
+
...fileConfig.android.expo,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (fileConfig.ios) {
|
|
38
|
+
props.ios = {
|
|
39
|
+
frameworkName: fileConfig.ios.scheme,
|
|
40
|
+
...fileConfig.ios.expo,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return props;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Asserts that there is no overlap between the file config and the plugin props.
|
|
47
|
+
* @param fileConfig - The loaded file config, or null when no config source exists.
|
|
48
|
+
* @param pluginProps - The plugin props to check for overlap.
|
|
49
|
+
* @throws An error if there is overlap.
|
|
50
|
+
* @returns void
|
|
51
|
+
*/
|
|
52
|
+
export function assertNoConfigFilePluginOverlap(fileConfig, pluginProps) {
|
|
53
|
+
if (fileConfig === null) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (isPluginPropsNonEmpty(pluginProps)) {
|
|
57
|
+
throw new Error(CONFIG_FILE_PLUGIN_OVERLAP_ERROR);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolves the plugin config from the file config and the plugin props.
|
|
62
|
+
* @param pluginProps - The plugin props to resolve.
|
|
63
|
+
* @param fileConfig - The file config to resolve.
|
|
64
|
+
* @param expoConfig - The Expo plugin config to resolve.
|
|
65
|
+
* @returns The resolved plugin config.
|
|
66
|
+
*/
|
|
67
|
+
export function resolveBrownfieldPluginConfig(pluginProps, fileConfig, expoConfig) {
|
|
68
|
+
const effectiveProps = fileConfig !== null ? fileConfigToPluginProps(fileConfig) : pluginProps;
|
|
69
|
+
const androidPackage = expoConfig.android?.package;
|
|
70
|
+
/**
|
|
71
|
+
* Below: android.moduleName may be provided in the fully-qualified Gradle format
|
|
72
|
+
* (e.g. :BrownfieldLib — this is shown in the CLI example usage).
|
|
73
|
+
* The Expo prebuild side expects a raw module folder/name (it later
|
|
74
|
+
* prepends : itself and uses it as a path), so a leading : is removed.
|
|
75
|
+
*/
|
|
76
|
+
const androidModuleName = (effectiveProps.android?.moduleName ?? 'brownfieldlib').replace(/^:/, '');
|
|
77
|
+
return {
|
|
78
|
+
debug: effectiveProps.debug ?? false,
|
|
79
|
+
ios: expoConfig.ios
|
|
80
|
+
? {
|
|
81
|
+
frameworkName: effectiveProps.ios?.frameworkName ?? 'BrownfieldLib',
|
|
82
|
+
bundleIdentifier: effectiveProps.ios?.bundleIdentifier ??
|
|
83
|
+
`${expoConfig.ios.bundleIdentifier}.brownfield`,
|
|
84
|
+
buildSettings: effectiveProps.ios?.buildSettings ?? {},
|
|
85
|
+
deploymentTarget: effectiveProps.ios?.deploymentTarget ?? '15.0',
|
|
86
|
+
frameworkVersion: effectiveProps.ios?.frameworkVersion ?? '1',
|
|
87
|
+
}
|
|
88
|
+
: null,
|
|
89
|
+
android: androidPackage
|
|
90
|
+
? {
|
|
91
|
+
moduleName: androidModuleName,
|
|
92
|
+
packageName: effectiveProps.android?.packageName ?? androidPackage,
|
|
93
|
+
minSdkVersion: effectiveProps.android?.minSdkVersion ?? 24,
|
|
94
|
+
targetSdkVersion: effectiveProps.android?.targetSdkVersion ?? 35,
|
|
95
|
+
compileSdkVersion: effectiveProps.android?.compileSdkVersion ?? 35,
|
|
96
|
+
groupId: effectiveProps.android?.groupId ?? androidPackage,
|
|
97
|
+
artifactId: effectiveProps.android?.artifactId ?? androidModuleName,
|
|
98
|
+
version: effectiveProps.android?.version ?? '0.0.1-SNAPSHOT',
|
|
99
|
+
useLocalGradlePlugin: effectiveProps.android?.useLocalGradlePlugin ?? false,
|
|
100
|
+
}
|
|
101
|
+
: null,
|
|
102
|
+
};
|
|
103
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,16 +2,25 @@ import type { PublishLocalAarFlags, PackageAarFlags } from '@rock-js/platform-an
|
|
|
2
2
|
import type { BuildFlags as AppleBuildFlags } from '@rock-js/platform-apple-helpers';
|
|
3
3
|
export type Platform = 'swift' | 'kotlin';
|
|
4
4
|
export type BrownfieldCommonOptions = Partial<{
|
|
5
|
+
/**
|
|
6
|
+
* Enables verbose CLI logging.
|
|
7
|
+
*/
|
|
5
8
|
verbose: boolean;
|
|
6
9
|
}>;
|
|
7
10
|
export type BrownfieldConfigMetadata = Partial<{
|
|
8
11
|
$schema: string;
|
|
9
12
|
}>;
|
|
10
13
|
export type BrownieConfig = {
|
|
14
|
+
/**
|
|
15
|
+
* The output path to generate Kotlin Brownie store files at.
|
|
16
|
+
*/
|
|
11
17
|
kotlin?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The package name for the Kotlin source code.
|
|
20
|
+
*/
|
|
12
21
|
kotlinPackageName?: string;
|
|
13
22
|
};
|
|
14
|
-
export type PackageIosOptions = AppleBuildFlags & {
|
|
23
|
+
export type PackageIosOptions = Omit<AppleBuildFlags, 'archive' | 'local'> & {
|
|
15
24
|
/** Set when `--use-prebuilt-rn-core` is passed; omitted when the flag is absent (Rock applies RN version defaults). */
|
|
16
25
|
usePrebuiltRnCore?: boolean;
|
|
17
26
|
/** When set, generate a local Swift Package Manager manifest next to the packaged XCFramework outputs. */
|
|
@@ -20,11 +29,91 @@ export type PackageIosOptions = AppleBuildFlags & {
|
|
|
20
29
|
export type BrownfieldPackageAndroidOptions = BrownfieldCommonOptions & Partial<PackageAarFlags>;
|
|
21
30
|
export type BrownfieldPublishAndroidOptions = BrownfieldCommonOptions & Partial<PublishLocalAarFlags>;
|
|
22
31
|
export type BrownfieldPackageIosOptions = BrownfieldCommonOptions & Partial<PackageIosOptions>;
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Expo config plugin options for Android prebuild scaffolding.
|
|
34
|
+
*/
|
|
35
|
+
export type BrownfieldExpoAndroidConfig = {
|
|
36
|
+
/**
|
|
37
|
+
* The package name for the Android library module.
|
|
38
|
+
*/
|
|
39
|
+
packageName?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Minimum SDK version for the Android library.
|
|
42
|
+
*/
|
|
43
|
+
minSdkVersion?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Target SDK version for the Android library.
|
|
46
|
+
*/
|
|
47
|
+
targetSdkVersion?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Compile SDK version for the Android library.
|
|
50
|
+
*/
|
|
51
|
+
compileSdkVersion?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Maven group ID used when publishing the AAR.
|
|
54
|
+
*/
|
|
55
|
+
groupId?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Maven artifact ID used when publishing the AAR.
|
|
58
|
+
*/
|
|
59
|
+
artifactId?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Maven version used when publishing the AAR.
|
|
62
|
+
*/
|
|
63
|
+
version?: string;
|
|
64
|
+
/**
|
|
65
|
+
* When true, load the Brownfield Gradle plugin from
|
|
66
|
+
* `@callstack/react-native-brownfield/gradle-plugin/brownfield` via
|
|
67
|
+
* `includeBuild` instead of adding the Maven classpath dependency.
|
|
68
|
+
* Disabled by default.
|
|
69
|
+
*/
|
|
70
|
+
useLocalGradlePlugin?: boolean;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Expo config plugin options for iOS prebuild scaffolding.
|
|
74
|
+
*/
|
|
75
|
+
export type BrownfieldExpoIosConfig = {
|
|
76
|
+
/**
|
|
77
|
+
* The bundle identifier for the framework.
|
|
78
|
+
*/
|
|
79
|
+
bundleIdentifier?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Custom build settings applied when building the framework.
|
|
82
|
+
*/
|
|
83
|
+
buildSettings?: Record<string, string | boolean | number>;
|
|
84
|
+
/**
|
|
85
|
+
* Minimum iOS deployment target for the generated framework.
|
|
86
|
+
*/
|
|
87
|
+
deploymentTarget?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Framework version used for Apple build settings.
|
|
90
|
+
*/
|
|
91
|
+
frameworkVersion?: string;
|
|
92
|
+
};
|
|
93
|
+
export type BrownfieldAndroidConfig = Omit<Partial<PackageAarFlags> & Partial<PublishLocalAarFlags>, keyof BrownfieldCommonOptions> & {
|
|
94
|
+
/**
|
|
95
|
+
* Expo config plugin options for Android Expo prebuild phase.
|
|
96
|
+
*/
|
|
97
|
+
expo?: BrownfieldExpoAndroidConfig;
|
|
98
|
+
};
|
|
99
|
+
export type BrownfieldIosConfig = Omit<Partial<PackageIosOptions>, keyof BrownfieldCommonOptions> & {
|
|
100
|
+
/**
|
|
101
|
+
* Expo config plugin options for iOS Expo prebuild phase.
|
|
102
|
+
*/
|
|
103
|
+
expo?: BrownfieldExpoIosConfig;
|
|
104
|
+
};
|
|
25
105
|
export type BrownfieldConfig = BrownfieldConfigMetadata & BrownfieldCommonOptions & Partial<{
|
|
106
|
+
/**
|
|
107
|
+
* Brownfield Android configuration.
|
|
108
|
+
*/
|
|
26
109
|
android: BrownfieldAndroidConfig;
|
|
110
|
+
/**
|
|
111
|
+
* Brownfield iOS configuration.
|
|
112
|
+
*/
|
|
27
113
|
ios: BrownfieldIosConfig;
|
|
114
|
+
/**
|
|
115
|
+
* Brownie (state library) configuration.
|
|
116
|
+
*/
|
|
28
117
|
brownie: BrownieConfig;
|
|
29
118
|
}>;
|
|
30
119
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAErF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAErF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC3E,uHAAuH;IACvH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,0GAA0G;IAC1G,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,uBAAuB,GACnE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC3B,MAAM,MAAM,+BAA+B,GAAG,uBAAuB,GACnE,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAChC,MAAM,MAAM,2BAA2B,GAAG,uBAAuB,GAC/D,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IAE1D;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,EACxD,MAAM,uBAAuB,CAC9B,GAAG;IACF;;OAEG;IACH,IAAI,CAAC,EAAE,2BAA2B,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,OAAO,CAAC,iBAAiB,CAAC,EAC1B,MAAM,uBAAuB,CAC9B,GAAG;IACF;;OAEG;IACH,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GACrD,uBAAuB,GACvB,OAAO,CAAC;IACN;;OAEG;IACH,OAAO,EAAE,uBAAuB,CAAC;IAEjC;;OAEG;IACH,GAAG,EAAE,mBAAmB,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@callstack/brownfield-cli",
|
|
3
|
-
"version": "3.13.
|
|
3
|
+
"version": "3.13.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Artur Morys-Magiera <artus9033@gmail.com>",
|
|
6
6
|
"bin": {
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"types": "./dist/types.d.ts",
|
|
43
43
|
"default": "./dist/types.js"
|
|
44
44
|
},
|
|
45
|
+
"./expo-plugin-config": {
|
|
46
|
+
"source": "./src/expoPluginConfig.ts",
|
|
47
|
+
"types": "./dist/expoPluginConfig.d.ts",
|
|
48
|
+
"default": "./dist/expoPluginConfig.js"
|
|
49
|
+
},
|
|
45
50
|
"./package.json": "./package.json"
|
|
46
51
|
},
|
|
47
52
|
"scripts": {
|
|
@@ -83,11 +88,11 @@
|
|
|
83
88
|
"@expo/config": "^12.0.13",
|
|
84
89
|
"@react-native-community/cli-config": "^20.0.0",
|
|
85
90
|
"@react-native-community/cli-config-android": "^20.0.0",
|
|
86
|
-
"@rock-js/platform-android": "^0.13.
|
|
87
|
-
"@rock-js/platform-apple-helpers": "^0.13.
|
|
88
|
-
"@rock-js/plugin-brownfield-android": "^0.13.
|
|
89
|
-
"@rock-js/plugin-brownfield-ios": "^0.13.
|
|
90
|
-
"@rock-js/tools": "^0.13.
|
|
91
|
+
"@rock-js/platform-android": "^0.13.5",
|
|
92
|
+
"@rock-js/platform-apple-helpers": "^0.13.5",
|
|
93
|
+
"@rock-js/plugin-brownfield-android": "^0.13.5",
|
|
94
|
+
"@rock-js/plugin-brownfield-ios": "^0.13.5",
|
|
95
|
+
"@rock-js/tools": "^0.13.5",
|
|
91
96
|
"ajv": "^8.20.0",
|
|
92
97
|
"commander": "^14.0.3",
|
|
93
98
|
"quicktype-core": "^23.2.6",
|
|
@@ -108,6 +113,7 @@
|
|
|
108
113
|
"eslint": "^9.39.3",
|
|
109
114
|
"globals": "^17.3.0",
|
|
110
115
|
"nodemon": "^3.1.14",
|
|
116
|
+
"prettier": "^3.8.1",
|
|
111
117
|
"ts-json-schema-generator": "^2.9.0",
|
|
112
118
|
"typescript": "5.9.3",
|
|
113
119
|
"vitest": "^4.1.4"
|