@react-native-community/cli-config 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/build/assign.d.ts +9 -0
  2. package/build/assign.d.ts.map +1 -0
  3. package/build/assign.js +39 -0
  4. package/build/assign.js.map +1 -0
  5. package/build/commands/config.d.ts +8 -0
  6. package/build/commands/config.d.ts.map +1 -0
  7. package/build/commands/config.js +32 -0
  8. package/build/commands/config.js.map +1 -0
  9. package/build/errors.d.ts +6 -0
  10. package/build/errors.d.ts.map +1 -0
  11. package/build/errors.js +49 -0
  12. package/build/errors.js.map +1 -0
  13. package/build/findAssets.d.ts +8 -0
  14. package/build/findAssets.d.ts.map +1 -0
  15. package/build/findAssets.js +53 -0
  16. package/build/findAssets.js.map +1 -0
  17. package/build/findDependencies.d.ts +5 -0
  18. package/build/findDependencies.d.ts.map +1 -0
  19. package/build/findDependencies.js +46 -0
  20. package/build/findDependencies.js.map +1 -0
  21. package/build/index.d.ts +7 -0
  22. package/build/index.d.ts.map +1 -0
  23. package/build/index.js +23 -0
  24. package/build/index.js.map +1 -0
  25. package/build/loadConfig.d.ts +7 -0
  26. package/build/loadConfig.d.ts.map +1 -0
  27. package/build/loadConfig.js +149 -0
  28. package/build/loadConfig.js.map +1 -0
  29. package/build/merge.d.ts +6 -0
  30. package/build/merge.d.ts.map +1 -0
  31. package/build/merge.js +30 -0
  32. package/build/merge.js.map +1 -0
  33. package/build/readConfigFromDisk.d.ts +12 -0
  34. package/build/readConfigFromDisk.d.ts.map +1 -0
  35. package/build/readConfigFromDisk.js +86 -0
  36. package/build/readConfigFromDisk.js.map +1 -0
  37. package/build/resolveReactNativePath.d.ts +6 -0
  38. package/build/resolveReactNativePath.d.ts.map +1 -0
  39. package/build/resolveReactNativePath.js +39 -0
  40. package/build/resolveReactNativePath.js.map +1 -0
  41. package/build/schema.d.ts +10 -0
  42. package/build/schema.d.ts.map +1 -0
  43. package/build/schema.js +177 -0
  44. package/build/schema.js.map +1 -0
  45. package/package.json +33 -0
  46. package/src/__tests__/__snapshots__/index-test.ts.snap +185 -0
  47. package/src/__tests__/findAssets-test.ts +51 -0
  48. package/src/__tests__/findDependencies-test.ts +23 -0
  49. package/src/__tests__/index-test.ts +350 -0
  50. package/src/assign.ts +27 -0
  51. package/src/commands/config.ts +30 -0
  52. package/src/errors.ts +31 -0
  53. package/src/findAssets.ts +28 -0
  54. package/src/findDependencies.ts +24 -0
  55. package/src/index.ts +5 -0
  56. package/src/loadConfig.ts +157 -0
  57. package/src/merge.ts +12 -0
  58. package/src/readConfigFromDisk.ts +68 -0
  59. package/src/resolveReactNativePath.ts +25 -0
  60. package/src/schema.ts +201 -0
  61. package/tsconfig.json +8 -0
  62. package/tsconfig.tsbuildinfo +1957 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readConfigFromDisk = readConfigFromDisk;
7
+ exports.readDependencyConfigFromDisk = readDependencyConfigFromDisk;
8
+
9
+ function _cosmiconfig() {
10
+ const data = _interopRequireDefault(require("cosmiconfig"));
11
+
12
+ _cosmiconfig = function () {
13
+ return data;
14
+ };
15
+
16
+ return data;
17
+ }
18
+
19
+ var _errors = require("./errors");
20
+
21
+ var schema = _interopRequireWildcard(require("./schema"));
22
+
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+
25
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
+
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
+
29
+ /**
30
+ * Places to look for the configuration file.
31
+ */
32
+ const searchPlaces = ['react-native.config.js'];
33
+ /**
34
+ * Reads a project configuration as defined by the user in the current
35
+ * workspace.
36
+ */
37
+
38
+ function readConfigFromDisk(rootFolder) {
39
+ const explorer = (0, _cosmiconfig().default)('react-native', {
40
+ searchPlaces,
41
+ stopDir: rootFolder
42
+ });
43
+ const searchResult = explorer.searchSync(rootFolder);
44
+ const config = searchResult ? searchResult.config : undefined;
45
+ const result = schema.projectConfig.validate(config);
46
+
47
+ if (result.error) {
48
+ throw new _errors.JoiError(result.error);
49
+ }
50
+
51
+ return result.value;
52
+ }
53
+ /**
54
+ * Reads a dependency configuration as defined by the developer
55
+ * inside `node_modules`.
56
+ */
57
+
58
+
59
+ function readDependencyConfigFromDisk(rootFolder) {
60
+ const explorer = (0, _cosmiconfig().default)('react-native', {
61
+ stopDir: rootFolder,
62
+ searchPlaces
63
+ });
64
+ const searchResult = explorer.searchSync(rootFolder);
65
+ const config = searchResult ? searchResult.config : emptyDependencyConfig;
66
+ const result = schema.dependencyConfig.validate(config);
67
+
68
+ if (result.error) {
69
+ throw new _errors.JoiError(result.error);
70
+ }
71
+
72
+ return result.value;
73
+ }
74
+
75
+ const emptyDependencyConfig = {
76
+ dependency: {
77
+ platforms: {},
78
+ assets: [],
79
+ hooks: {},
80
+ params: []
81
+ },
82
+ commands: [],
83
+ platforms: {}
84
+ };
85
+
86
+ //# sourceMappingURL=readConfigFromDisk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/readConfigFromDisk.ts"],"names":["searchPlaces","readConfigFromDisk","rootFolder","explorer","stopDir","searchResult","searchSync","config","undefined","result","schema","projectConfig","validate","error","JoiError","value","readDependencyConfigFromDisk","emptyDependencyConfig","dependencyConfig","dependency","platforms","assets","hooks","params","commands"],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;;;;;;;;AAMA;AACA;AACA;AACA,MAAMA,YAAY,GAAG,CAAC,wBAAD,CAArB;AAEA;AACA;AACA;AACA;;AACO,SAASC,kBAAT,CAA4BC,UAA5B,EAA4D;AACjE,QAAMC,QAAQ,GAAG,4BAAY,cAAZ,EAA4B;AAC3CH,IAAAA,YAD2C;AAE3CI,IAAAA,OAAO,EAAEF;AAFkC,GAA5B,CAAjB;AAKA,QAAMG,YAAY,GAAGF,QAAQ,CAACG,UAAT,CAAoBJ,UAApB,CAArB;AACA,QAAMK,MAAM,GAAGF,YAAY,GAAGA,YAAY,CAACE,MAAhB,GAAyBC,SAApD;AACA,QAAMC,MAAM,GAAGC,MAAM,CAACC,aAAP,CAAqBC,QAArB,CAA8BL,MAA9B,CAAf;;AAEA,MAAIE,MAAM,CAACI,KAAX,EAAkB;AAChB,UAAM,IAAIC,gBAAJ,CAAaL,MAAM,CAACI,KAApB,CAAN;AACD;;AAED,SAAOJ,MAAM,CAACM,KAAd;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASC,4BAAT,CACLd,UADK,EAEiB;AACtB,QAAMC,QAAQ,GAAG,4BAAY,cAAZ,EAA4B;AAC3CC,IAAAA,OAAO,EAAEF,UADkC;AAE3CF,IAAAA;AAF2C,GAA5B,CAAjB;AAKA,QAAMK,YAAY,GAAGF,QAAQ,CAACG,UAAT,CAAoBJ,UAApB,CAArB;AACA,QAAMK,MAAM,GAAGF,YAAY,GAAGA,YAAY,CAACE,MAAhB,GAAyBU,qBAApD;AAEA,QAAMR,MAAM,GAAGC,MAAM,CAACQ,gBAAP,CAAwBN,QAAxB,CAAiCL,MAAjC,CAAf;;AAEA,MAAIE,MAAM,CAACI,KAAX,EAAkB;AAChB,UAAM,IAAIC,gBAAJ,CAAaL,MAAM,CAACI,KAApB,CAAN;AACD;;AAED,SAAOJ,MAAM,CAACM,KAAd;AACD;;AAED,MAAME,qBAAqB,GAAG;AAC5BE,EAAAA,UAAU,EAAE;AACVC,IAAAA,SAAS,EAAE,EADD;AAEVC,IAAAA,MAAM,EAAE,EAFE;AAGVC,IAAAA,KAAK,EAAE,EAHG;AAIVC,IAAAA,MAAM,EAAE;AAJE,GADgB;AAO5BC,EAAAA,QAAQ,EAAE,EAPkB;AAQ5BJ,EAAAA,SAAS,EAAE;AARiB,CAA9B","sourcesContent":["import cosmiconfig from 'cosmiconfig';\nimport {JoiError} from './errors';\nimport * as schema from './schema';\nimport {\n UserConfig,\n UserDependencyConfig,\n} from '@react-native-community/cli-types';\n\n/**\n * Places to look for the configuration file.\n */\nconst searchPlaces = ['react-native.config.js'];\n\n/**\n * Reads a project configuration as defined by the user in the current\n * workspace.\n */\nexport function readConfigFromDisk(rootFolder: string): UserConfig {\n const explorer = cosmiconfig('react-native', {\n searchPlaces,\n stopDir: rootFolder,\n });\n\n const searchResult = explorer.searchSync(rootFolder);\n const config = searchResult ? searchResult.config : undefined;\n const result = schema.projectConfig.validate(config);\n\n if (result.error) {\n throw new JoiError(result.error);\n }\n\n return result.value as UserConfig;\n}\n\n/**\n * Reads a dependency configuration as defined by the developer\n * inside `node_modules`.\n */\nexport function readDependencyConfigFromDisk(\n rootFolder: string,\n): UserDependencyConfig {\n const explorer = cosmiconfig('react-native', {\n stopDir: rootFolder,\n searchPlaces,\n });\n\n const searchResult = explorer.searchSync(rootFolder);\n const config = searchResult ? searchResult.config : emptyDependencyConfig;\n\n const result = schema.dependencyConfig.validate(config);\n\n if (result.error) {\n throw new JoiError(result.error);\n }\n\n return result.value as UserDependencyConfig;\n}\n\nconst emptyDependencyConfig = {\n dependency: {\n platforms: {},\n assets: [],\n hooks: {},\n params: [],\n },\n commands: [],\n platforms: {},\n};\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Finds path to React Native inside `node_modules` or throws
3
+ * an error otherwise.
4
+ */
5
+ export default function resolveReactNativePath(root: string): string;
6
+ //# sourceMappingURL=resolveReactNativePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveReactNativePath.d.ts","sourceRoot":"","sources":["../src/resolveReactNativePath.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAe1D"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = resolveReactNativePath;
7
+
8
+ function _cliTools() {
9
+ const data = require("@react-native-community/cli-tools");
10
+
11
+ _cliTools = function () {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ /**
19
+ * Finds path to React Native inside `node_modules` or throws
20
+ * an error otherwise.
21
+ */
22
+ function resolveReactNativePath(root) {
23
+ try {
24
+ return (0, _cliTools().resolveNodeModuleDir)(root, 'react-native');
25
+ } catch (_ignored) {
26
+ throw new (_cliTools().CLIError)(`
27
+ Unable to find React Native files looking up from ${root}. Make sure "react-native" module is installed
28
+ in your project dependencies.
29
+
30
+ If you are using React Native from a non-standard location, consider setting:
31
+ {
32
+ reactNativePath: "./path/to/react-native"
33
+ }
34
+ in your \`react-native.config.js\`.
35
+ `);
36
+ }
37
+ }
38
+
39
+ //# sourceMappingURL=resolveReactNativePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolveReactNativePath.ts"],"names":["resolveReactNativePath","root","_ignored","CLIError"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AACA;AACA;AACA;AACe,SAASA,sBAAT,CAAgCC,IAAhC,EAA8C;AAC3D,MAAI;AACF,WAAO,sCAAqBA,IAArB,EAA2B,cAA3B,CAAP;AACD,GAFD,CAEE,OAAOC,QAAP,EAAiB;AACjB,UAAM,KAAIC,oBAAJ,EAAc;AACxB,0DAA0DF,IAAK;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KATU,CAAN;AAUD;AACF","sourcesContent":["import {\n CLIError,\n resolveNodeModuleDir,\n} from '@react-native-community/cli-tools';\n\n/**\n * Finds path to React Native inside `node_modules` or throws\n * an error otherwise.\n */\nexport default function resolveReactNativePath(root: string) {\n try {\n return resolveNodeModuleDir(root, 'react-native');\n } catch (_ignored) {\n throw new CLIError(`\n Unable to find React Native files looking up from ${root}. Make sure \"react-native\" module is installed\n in your project dependencies.\n\n If you are using React Native from a non-standard location, consider setting:\n {\n reactNativePath: \"./path/to/react-native\"\n }\n in your \\`react-native.config.js\\`.\n `);\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import t from 'joi';
2
+ /**
3
+ * Schema for UserDependencyConfigT
4
+ */
5
+ export declare const dependencyConfig: t.ObjectSchema<any>;
6
+ /**
7
+ * Schema for ProjectConfigT
8
+ */
9
+ export declare const projectConfig: t.ObjectSchema<any>;
10
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAe,MAAM,KAAK,CAAC;AAoDlC;;GAEG;AACH,eAAO,MAAM,gBAAgB,qBAuDjB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,aAAa,qBAqFd,CAAC"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.projectConfig = exports.dependencyConfig = void 0;
7
+
8
+ function _joi() {
9
+ const data = _interopRequireDefault(require("joi"));
10
+
11
+ _joi = function () {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ const map = (key, value) => _joi().default.object().unknown(true).pattern(key, value);
21
+ /**
22
+ * Schema for CommandT
23
+ */
24
+
25
+
26
+ const command = _joi().default.object({
27
+ name: _joi().default.string().required(),
28
+ description: _joi().default.string(),
29
+ usage: _joi().default.string(),
30
+ func: _joi().default.func().required(),
31
+ options: _joi().default.array().items(_joi().default.object({
32
+ name: _joi().default.string().required(),
33
+ description: _joi().default.string(),
34
+ parse: _joi().default.func(),
35
+ default: _joi().default.alternatives().try(_joi().default.bool(), _joi().default.number(), _joi().default.string().allow(''), _joi().default.func())
36
+ }).rename('command', 'name', {
37
+ ignoreUndefined: true
38
+ })),
39
+ examples: _joi().default.array().items(_joi().default.object({
40
+ desc: _joi().default.string().required(),
41
+ cmd: _joi().default.string().required()
42
+ }))
43
+ });
44
+ /**
45
+ * Schema for HealthChecksT
46
+ */
47
+
48
+
49
+ const healthCheck = _joi().default.object({
50
+ label: _joi().default.string().required(),
51
+ healthchecks: _joi().default.array().items(_joi().default.object({
52
+ label: _joi().default.string().required(),
53
+ isRequired: _joi().default.bool(),
54
+ description: _joi().default.string(),
55
+ getDiagnostics: _joi().default.func(),
56
+ win32AutomaticFix: _joi().default.func(),
57
+ darwinAutomaticFix: _joi().default.func(),
58
+ linuxAutomaticFix: _joi().default.func(),
59
+ runAutomaticFix: _joi().default.func().required()
60
+ }))
61
+ });
62
+ /**
63
+ * Schema for UserDependencyConfigT
64
+ */
65
+
66
+
67
+ const dependencyConfig = _joi().default.object({
68
+ dependency: _joi().default.object({
69
+ platforms: map(_joi().default.string(), _joi().default.any()).keys({
70
+ ios: _joi().default.object({
71
+ project: _joi().default.string(),
72
+ podspecPath: _joi().default.string(),
73
+ sharedLibraries: _joi().default.array().items(_joi().default.string()),
74
+ libraryFolder: _joi().default.string(),
75
+ scriptPhases: _joi().default.array().items(_joi().default.object()),
76
+ configurations: _joi().default.array().items(_joi().default.string()).default([])
77
+ }).default({}),
78
+ android: _joi().default.object({
79
+ sourceDir: _joi().default.string(),
80
+ manifestPath: _joi().default.string(),
81
+ packageImportPath: _joi().default.string(),
82
+ packageInstance: _joi().default.string(),
83
+ dependencyConfiguration: _joi().default.string(),
84
+ buildTypes: _joi().default.array().items(_joi().default.string()).default([])
85
+ }).default({})
86
+ }).default(),
87
+ assets: _joi().default.array().items(_joi().default.string()).default([]),
88
+ hooks: map(_joi().default.string(), _joi().default.string()).default({}),
89
+ params: _joi().default.array().items(_joi().default.object({
90
+ name: _joi().default.string(),
91
+ type: _joi().default.string(),
92
+ message: _joi().default.string()
93
+ })).default([])
94
+ }).default(),
95
+ platforms: map(_joi().default.string(), _joi().default.object({
96
+ npmPackageName: _joi().default.string().optional(),
97
+ dependencyConfig: _joi().default.func(),
98
+ projectConfig: _joi().default.func(),
99
+ linkConfig: _joi().default.func()
100
+ })).default({}),
101
+ commands: _joi().default.array().items(command).default([]),
102
+ healthChecks: _joi().default.array().items(healthCheck).default([])
103
+ }).unknown(true).default();
104
+ /**
105
+ * Schema for ProjectConfigT
106
+ */
107
+
108
+
109
+ exports.dependencyConfig = dependencyConfig;
110
+
111
+ const projectConfig = _joi().default.object({
112
+ dependencies: map(_joi().default.string(), _joi().default.object({
113
+ root: _joi().default.string(),
114
+ platforms: map(_joi().default.string(), _joi().default.any()).keys({
115
+ ios: _joi().default.object({
116
+ sourceDir: _joi().default.string(),
117
+ folder: _joi().default.string(),
118
+ pbxprojPath: _joi().default.string(),
119
+ podfile: _joi().default.string(),
120
+ podspecPath: _joi().default.string(),
121
+ projectPath: _joi().default.string(),
122
+ projectName: _joi().default.string(),
123
+ libraryFolder: _joi().default.string(),
124
+ sharedLibraries: _joi().default.array().items(_joi().default.string()),
125
+ configurations: _joi().default.array().items(_joi().default.string()).default([])
126
+ }).allow(null),
127
+ android: _joi().default.object({
128
+ sourceDir: _joi().default.string(),
129
+ folder: _joi().default.string(),
130
+ packageImportPath: _joi().default.string(),
131
+ packageInstance: _joi().default.string(),
132
+ dependencyConfiguration: _joi().default.string(),
133
+ buildTypes: _joi().default.array().items(_joi().default.string()).default([])
134
+ }).allow(null)
135
+ }),
136
+ assets: _joi().default.array().items(_joi().default.string()),
137
+ hooks: map(_joi().default.string(), _joi().default.string()),
138
+ params: _joi().default.array().items(_joi().default.object({
139
+ name: _joi().default.string(),
140
+ type: _joi().default.string(),
141
+ message: _joi().default.string()
142
+ }))
143
+ }).allow(null)).default({}),
144
+ reactNativePath: _joi().default.string(),
145
+ project: map(_joi().default.string(), _joi().default.any()).keys({
146
+ ios: _joi().default.object({
147
+ project: _joi().default.string(),
148
+ sharedLibraries: _joi().default.array().items(_joi().default.string()),
149
+ libraryFolder: _joi().default.string()
150
+ }).default({}),
151
+ android: _joi().default.object({
152
+ sourceDir: _joi().default.string(),
153
+ manifestPath: _joi().default.string(),
154
+ packageName: _joi().default.string(),
155
+ packageFolder: _joi().default.string(),
156
+ mainFilePath: _joi().default.string(),
157
+ stringsPath: _joi().default.string(),
158
+ settingsGradlePath: _joi().default.string(),
159
+ assetsPath: _joi().default.string(),
160
+ buildGradlePath: _joi().default.string(),
161
+ appName: _joi().default.string(),
162
+ dependencyConfiguration: _joi().default.string()
163
+ }).default({})
164
+ }).default(),
165
+ assets: _joi().default.array().items(_joi().default.string()).default([]),
166
+ commands: _joi().default.array().items(command).default([]),
167
+ platforms: map(_joi().default.string(), _joi().default.object({
168
+ npmPackageName: _joi().default.string().optional(),
169
+ dependencyConfig: _joi().default.func(),
170
+ projectConfig: _joi().default.func(),
171
+ linkConfig: _joi().default.func()
172
+ })).default({})
173
+ }).unknown(true).default();
174
+
175
+ exports.projectConfig = projectConfig;
176
+
177
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts"],"names":["map","key","value","t","object","unknown","pattern","command","name","string","required","description","usage","func","options","array","items","parse","default","alternatives","try","bool","number","allow","rename","ignoreUndefined","examples","desc","cmd","healthCheck","label","healthchecks","isRequired","getDiagnostics","win32AutomaticFix","darwinAutomaticFix","linuxAutomaticFix","runAutomaticFix","dependencyConfig","dependency","platforms","any","keys","ios","project","podspecPath","sharedLibraries","libraryFolder","scriptPhases","configurations","android","sourceDir","manifestPath","packageImportPath","packageInstance","dependencyConfiguration","buildTypes","assets","hooks","params","type","message","npmPackageName","optional","projectConfig","linkConfig","commands","healthChecks","dependencies","root","folder","pbxprojPath","podfile","projectPath","projectName","reactNativePath","packageName","packageFolder","mainFilePath","stringsPath","settingsGradlePath","assetsPath","buildGradlePath","appName"],"mappings":"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","sourcesContent":["import t, {SchemaLike} from 'joi';\n\nconst map = (key: RegExp | SchemaLike, value: SchemaLike) =>\n t.object().unknown(true).pattern(key, value);\n\n/**\n * Schema for CommandT\n */\nconst command = t.object({\n name: t.string().required(),\n description: t.string(),\n usage: t.string(),\n func: t.func().required(),\n options: t.array().items(\n t\n .object({\n name: t.string().required(),\n description: t.string(),\n parse: t.func(),\n default: t\n .alternatives()\n .try(t.bool(), t.number(), t.string().allow(''), t.func()),\n })\n .rename('command', 'name', {ignoreUndefined: true}),\n ),\n examples: t.array().items(\n t.object({\n desc: t.string().required(),\n cmd: t.string().required(),\n }),\n ),\n});\n\n/**\n * Schema for HealthChecksT\n */\nconst healthCheck = t.object({\n label: t.string().required(),\n healthchecks: t.array().items(\n t.object({\n label: t.string().required(),\n isRequired: t.bool(),\n description: t.string(),\n getDiagnostics: t.func(),\n win32AutomaticFix: t.func(),\n darwinAutomaticFix: t.func(),\n linuxAutomaticFix: t.func(),\n runAutomaticFix: t.func().required(),\n }),\n ),\n});\n\n/**\n * Schema for UserDependencyConfigT\n */\nexport const dependencyConfig = t\n .object({\n dependency: t\n .object({\n platforms: map(t.string(), t.any())\n .keys({\n ios: t\n .object({\n project: t.string(),\n podspecPath: t.string(),\n sharedLibraries: t.array().items(t.string()),\n libraryFolder: t.string(),\n scriptPhases: t.array().items(t.object()),\n configurations: t.array().items(t.string()).default([]),\n })\n .default({}),\n android: t\n .object({\n sourceDir: t.string(),\n manifestPath: t.string(),\n packageImportPath: t.string(),\n packageInstance: t.string(),\n dependencyConfiguration: t.string(),\n buildTypes: t.array().items(t.string()).default([]),\n })\n .default({}),\n })\n .default(),\n assets: t.array().items(t.string()).default([]),\n hooks: map(t.string(), t.string()).default({}),\n params: t\n .array()\n .items(\n t.object({\n name: t.string(),\n type: t.string(),\n message: t.string(),\n }),\n )\n .default([]),\n })\n .default(),\n platforms: map(\n t.string(),\n t.object({\n npmPackageName: t.string().optional(),\n dependencyConfig: t.func(),\n projectConfig: t.func(),\n linkConfig: t.func(),\n }),\n ).default({}),\n commands: t.array().items(command).default([]),\n healthChecks: t.array().items(healthCheck).default([]),\n })\n .unknown(true)\n .default();\n\n/**\n * Schema for ProjectConfigT\n */\nexport const projectConfig = t\n .object({\n dependencies: map(\n t.string(),\n t\n .object({\n root: t.string(),\n platforms: map(t.string(), t.any()).keys({\n ios: t\n .object({\n sourceDir: t.string(),\n folder: t.string(),\n pbxprojPath: t.string(),\n podfile: t.string(),\n podspecPath: t.string(),\n projectPath: t.string(),\n projectName: t.string(),\n libraryFolder: t.string(),\n sharedLibraries: t.array().items(t.string()),\n configurations: t.array().items(t.string()).default([]),\n })\n .allow(null),\n android: t\n .object({\n sourceDir: t.string(),\n folder: t.string(),\n packageImportPath: t.string(),\n packageInstance: t.string(),\n dependencyConfiguration: t.string(),\n buildTypes: t.array().items(t.string()).default([]),\n })\n .allow(null),\n }),\n assets: t.array().items(t.string()),\n hooks: map(t.string(), t.string()),\n params: t.array().items(\n t.object({\n name: t.string(),\n type: t.string(),\n message: t.string(),\n }),\n ),\n })\n .allow(null),\n ).default({}),\n reactNativePath: t.string(),\n project: map(t.string(), t.any())\n .keys({\n ios: t\n .object({\n project: t.string(),\n sharedLibraries: t.array().items(t.string()),\n libraryFolder: t.string(),\n })\n .default({}),\n android: t\n .object({\n sourceDir: t.string(),\n manifestPath: t.string(),\n packageName: t.string(),\n packageFolder: t.string(),\n mainFilePath: t.string(),\n stringsPath: t.string(),\n settingsGradlePath: t.string(),\n assetsPath: t.string(),\n buildGradlePath: t.string(),\n appName: t.string(),\n dependencyConfiguration: t.string(),\n })\n .default({}),\n })\n .default(),\n assets: t.array().items(t.string()).default([]),\n commands: t.array().items(command).default([]),\n platforms: map(\n t.string(),\n t.object({\n npmPackageName: t.string().optional(),\n dependencyConfig: t.func(),\n projectConfig: t.func(),\n linkConfig: t.func(),\n }),\n ).default({}),\n })\n .unknown(true)\n .default();\n"]}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@react-native-community/cli-config",
3
+ "version": "7.0.1",
4
+ "license": "MIT",
5
+ "main": "build/index.js",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "types": "build/index.d.ts",
10
+ "dependencies": {
11
+ "cosmiconfig": "^5.1.0",
12
+ "deepmerge": "^3.2.0",
13
+ "@react-native-community/cli-tools": "^7.0.1",
14
+ "joi": "^17.2.1",
15
+ "glob": "^7.1.3"
16
+ },
17
+ "files": [
18
+ "build",
19
+ "!*.d.ts",
20
+ "!*.map"
21
+ ],
22
+ "devDependencies": {
23
+ "@types/cosmiconfig": "^5.0.3",
24
+ "@react-native-community/cli-types": "^7.0.1",
25
+ "@types/glob": "^7.1.1"
26
+ },
27
+ "homepage": "https://github.com/react-native-community/cli/tree/master/packages/cli-config",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/react-native-community/cli.git",
31
+ "directory": "packages/cli-config"
32
+ }
33
+ }
@@ -0,0 +1,185 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`should apply build types from dependency config 1`] = `
4
+ Object {
5
+ "assets": Array [],
6
+ "hooks": Object {},
7
+ "name": "react-native-test",
8
+ "params": Array [],
9
+ "platforms": Object {
10
+ "android": null,
11
+ "ios": Object {
12
+ "configurations": Array [
13
+ "debug",
14
+ ],
15
+ "folder": "<<REPLACED>>/node_modules/react-native-test",
16
+ "libraryFolder": "Libraries",
17
+ "pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
18
+ "plist": Array [],
19
+ "podfile": null,
20
+ "podspecPath": null,
21
+ "projectName": "HelloWorld.xcodeproj",
22
+ "projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
23
+ "scriptPhases": Array [],
24
+ "sharedLibraries": Array [],
25
+ "sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
26
+ },
27
+ },
28
+ "root": "<<REPLACED>>/node_modules/react-native-test",
29
+ }
30
+ `;
31
+
32
+ exports[`should have a valid structure by default 1`] = `
33
+ Object {
34
+ "assets": Array [],
35
+ "commands": Array [],
36
+ "dependencies": Object {},
37
+ "healthChecks": Array [],
38
+ "platforms": Object {},
39
+ "project": Object {},
40
+ "reactNativePath": "<<REPLACED>>",
41
+ "root": "<<REPLACED>>",
42
+ }
43
+ `;
44
+
45
+ exports[`should load commands from "react-native-foo" and "react-native-bar" packages 1`] = `
46
+ Array [
47
+ Object {
48
+ "func": [Function],
49
+ "name": "foo-command",
50
+ },
51
+ Object {
52
+ "func": [Function],
53
+ "name": "bar-command",
54
+ },
55
+ ]
56
+ `;
57
+
58
+ exports[`should merge project configuration with default values: snapshoting \`react-native-test\` config 1`] = `
59
+ Object {
60
+ "assets": Array [
61
+ "foo",
62
+ ],
63
+ "hooks": Object {},
64
+ "name": "react-native-test",
65
+ "params": Array [],
66
+ "platforms": Object {
67
+ "android": null,
68
+ "ios": Object {
69
+ "configurations": Array [],
70
+ "folder": "<<REPLACED>>/node_modules/react-native-test",
71
+ "libraryFolder": "Libraries",
72
+ "pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
73
+ "plist": Array [],
74
+ "podfile": null,
75
+ "podspecPath": null,
76
+ "projectName": "HelloWorld.xcodeproj",
77
+ "projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
78
+ "scriptPhases": Array [],
79
+ "sharedLibraries": Array [],
80
+ "sourceDir": "./abc",
81
+ },
82
+ },
83
+ "root": "<<REPLACED>>/node_modules/react-native-test",
84
+ }
85
+ `;
86
+
87
+ exports[`should read a config of a dependency and use it to load other settings 1`] = `
88
+ Object {
89
+ "assets": Array [],
90
+ "hooks": Object {},
91
+ "name": "react-native-test",
92
+ "params": Array [],
93
+ "platforms": Object {
94
+ "android": null,
95
+ "ios": Object {
96
+ "configurations": Array [],
97
+ "folder": "<<REPLACED>>/node_modules/react-native-test",
98
+ "libraryFolder": "Libraries",
99
+ "pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/customLocation/customProject.xcodeproj/project.pbxproj",
100
+ "plist": Array [],
101
+ "podfile": null,
102
+ "podspecPath": "<<REPLACED>>/node_modules/react-native-test/ReactNativeTest.podspec",
103
+ "projectName": "customProject.xcodeproj",
104
+ "projectPath": "<<REPLACED>>/node_modules/react-native-test/customLocation/customProject.xcodeproj",
105
+ "scriptPhases": Array [],
106
+ "sharedLibraries": Array [],
107
+ "sourceDir": "<<REPLACED>>/node_modules/react-native-test/customLocation",
108
+ },
109
+ },
110
+ "root": "<<REPLACED>>/node_modules/react-native-test",
111
+ }
112
+ `;
113
+
114
+ exports[`should return dependencies from package.json 1`] = `
115
+ Object {
116
+ "react-native": Object {
117
+ "assets": Array [],
118
+ "hooks": Object {},
119
+ "name": "react-native",
120
+ "params": Array [],
121
+ "platforms": Object {
122
+ "android": null,
123
+ "ios": null,
124
+ },
125
+ "root": "<<REPLACED>>/node_modules/react-native",
126
+ },
127
+ "react-native-test": Object {
128
+ "assets": Array [],
129
+ "hooks": Object {},
130
+ "name": "react-native-test",
131
+ "params": Array [],
132
+ "platforms": Object {
133
+ "android": null,
134
+ "ios": Object {
135
+ "configurations": Array [],
136
+ "folder": "<<REPLACED>>/node_modules/react-native-test",
137
+ "libraryFolder": "Libraries",
138
+ "pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
139
+ "plist": Array [],
140
+ "podfile": null,
141
+ "podspecPath": null,
142
+ "projectName": "HelloWorld.xcodeproj",
143
+ "projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
144
+ "scriptPhases": Array [],
145
+ "sharedLibraries": Array [],
146
+ "sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
147
+ },
148
+ },
149
+ "root": "<<REPLACED>>/node_modules/react-native-test",
150
+ },
151
+ }
152
+ `;
153
+
154
+ exports[`should skip packages that have invalid configuration: dependencies config 1`] = `Object {}`;
155
+
156
+ exports[`should skip packages that have invalid configuration: logged warning 1`] = `"warn Package react-native has been ignored because it contains invalid configuration. Reason: \\"dependency.invalidProperty\\" is not allowed"`;
157
+
158
+ exports[`supports dependencies from user configuration with custom build type 1`] = `
159
+ Object {
160
+ "assets": Array [],
161
+ "hooks": Object {},
162
+ "name": "react-native-test",
163
+ "params": Array [],
164
+ "platforms": Object {
165
+ "android": null,
166
+ "ios": Object {
167
+ "configurations": Array [
168
+ "custom_build_type",
169
+ ],
170
+ "folder": "<<REPLACED>>/node_modules/react-native-test",
171
+ "libraryFolder": "Libraries",
172
+ "pbxprojPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj/project.pbxproj",
173
+ "plist": Array [],
174
+ "podfile": null,
175
+ "podspecPath": null,
176
+ "projectName": "HelloWorld.xcodeproj",
177
+ "projectPath": "<<REPLACED>>/node_modules/react-native-test/ios/HelloWorld.xcodeproj",
178
+ "scriptPhases": Array [],
179
+ "sharedLibraries": Array [],
180
+ "sourceDir": "<<REPLACED>>/node_modules/react-native-test/ios",
181
+ },
182
+ },
183
+ "root": "<<REPLACED>>/node_modules/react-native-test",
184
+ }
185
+ `;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ * @format
8
+ * @emails oncall+javascript_foundation
9
+ */
10
+
11
+ import findAssets from '../findAssets';
12
+
13
+ jest.mock('path');
14
+ jest.mock('fs');
15
+
16
+ const fs = require('fs');
17
+
18
+ describe('findAssets', () => {
19
+ beforeEach(() => {
20
+ fs.__setMockFilesystem({
21
+ testDir: {
22
+ fonts: {
23
+ 'A.ttf': '',
24
+ 'B.ttf': '',
25
+ },
26
+ images: {
27
+ 'C.jpg': '',
28
+ },
29
+ },
30
+ });
31
+ });
32
+
33
+ it('returns an array of all files in given folders', () => {
34
+ const assets = findAssets('/testDir', ['fonts', 'images']);
35
+
36
+ expect(Array.isArray(assets)).toBeTruthy();
37
+ expect(assets).toHaveLength(3);
38
+ });
39
+
40
+ it('prepends assets paths with the folder path', () => {
41
+ const assets = findAssets('/testDir', ['fonts', 'images']);
42
+
43
+ assets.forEach((assetPath) => {
44
+ expect(assetPath).toContain('testDir');
45
+ });
46
+ });
47
+
48
+ it('returns an empty array if given assets are null', () => {
49
+ expect(findAssets('/testDir', null)).toHaveLength(0);
50
+ });
51
+ });
@@ -0,0 +1,23 @@
1
+ import findDependencies from '../findDependencies';
2
+ import {cleanup, writeFiles, getTempDirectory} from '../../../../jest/helpers';
3
+
4
+ beforeEach(async () => {
5
+ await cleanup(DIR);
6
+ jest.resetModules();
7
+ });
8
+
9
+ afterEach(async () => await cleanup(DIR));
10
+
11
+ const DIR = getTempDirectory('find_dependencies_test');
12
+
13
+ test('returns plugins from both dependencies and dev dependencies', () => {
14
+ writeFiles(DIR, {
15
+ 'package.json': `
16
+ {
17
+ "dependencies": {"rnpm-plugin-test": "*"},
18
+ "devDependencies": {"rnpm-plugin-test-2": "*"}
19
+ }
20
+ `,
21
+ });
22
+ expect(findDependencies(DIR)).toHaveLength(2);
23
+ });