@nrwl/expo 14.4.4 → 14.4.6

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 (180) hide show
  1. package/.eslintrc.json +16 -4
  2. package/CHANGELOG.md +24 -0
  3. package/LICENSE +22 -0
  4. package/README.md +13 -137
  5. package/executors.json +40 -10
  6. package/generators.json +0 -5
  7. package/migrations.json +374 -0
  8. package/package.json +24 -18
  9. package/plugins/metro-resolver.js +12 -1
  10. package/plugins/metro-resolver.js.map +1 -1
  11. package/plugins/with-nx-webpack.d.ts +1 -1
  12. package/plugins/with-nx-webpack.js +8 -60
  13. package/plugins/with-nx-webpack.js.map +1 -1
  14. package/project.json +10 -50
  15. package/src/executors/build/build.impl.js +2 -2
  16. package/src/executors/build/build.impl.js.map +1 -1
  17. package/src/executors/build/schema.json +8 -4
  18. package/src/executors/build-android/build-android.impl.js +4 -3
  19. package/src/executors/build-android/build-android.impl.js.map +1 -1
  20. package/src/executors/build-android/schema.json +8 -4
  21. package/src/executors/build-ios/build-ios.impl.js +4 -3
  22. package/src/executors/build-ios/build-ios.impl.js.map +1 -1
  23. package/src/executors/build-ios/schema.d.ts +1 -1
  24. package/src/executors/build-ios/schema.json +8 -4
  25. package/src/executors/build-list/build-list.impl.js +9 -6
  26. package/src/executors/build-list/build-list.impl.js.map +1 -1
  27. package/src/executors/build-list/schema.d.ts +1 -0
  28. package/src/executors/build-list/schema.json +9 -2
  29. package/src/executors/build-status/build-status.impl.js +3 -2
  30. package/src/executors/build-status/build-status.impl.js.map +1 -1
  31. package/src/executors/build-status/schema.json +3 -1
  32. package/src/executors/build-web/build-web.impl.js +3 -2
  33. package/src/executors/build-web/build-web.impl.js.map +1 -1
  34. package/src/executors/build-web/schema.json +3 -1
  35. package/src/executors/download/download.impl.js +2 -2
  36. package/src/executors/download/download.impl.js.map +1 -1
  37. package/src/executors/download/schema.d.ts +0 -1
  38. package/src/executors/download/schema.json +5 -2
  39. package/src/executors/ensure-symlink/ensure-symlink.impl.js +1 -1
  40. package/src/executors/ensure-symlink/ensure-symlink.impl.js.map +1 -1
  41. package/src/executors/ensure-symlink/schema.json +2 -0
  42. package/src/executors/export/compat.js +6 -0
  43. package/src/executors/export/compat.js.map +1 -0
  44. package/src/executors/export/export.impl.d.ts +6 -0
  45. package/src/executors/export/export.impl.js +69 -0
  46. package/src/executors/export/export.impl.js.map +1 -0
  47. package/src/executors/export/schema.d.ts +11 -0
  48. package/src/executors/export/schema.json +48 -0
  49. package/src/executors/install/compat.d.ts +2 -0
  50. package/src/executors/install/compat.js +6 -0
  51. package/src/executors/install/compat.js.map +1 -0
  52. package/src/executors/install/install.impl.d.ts +7 -0
  53. package/src/executors/install/install.impl.js +70 -0
  54. package/src/executors/install/install.impl.js.map +1 -0
  55. package/src/executors/install/schema.d.ts +7 -0
  56. package/src/executors/install/schema.json +34 -0
  57. package/src/executors/prebuild/compat.d.ts +2 -0
  58. package/src/executors/prebuild/compat.js +6 -0
  59. package/src/executors/prebuild/compat.js.map +1 -0
  60. package/src/executors/prebuild/prebuild.impl.d.ts +6 -0
  61. package/src/executors/{eject/eject.impl.js → prebuild/prebuild.impl.js} +19 -12
  62. package/src/executors/prebuild/prebuild.impl.js.map +1 -0
  63. package/src/executors/prebuild/schema.d.ts +10 -0
  64. package/src/executors/prebuild/schema.json +34 -0
  65. package/src/executors/publish/publish.impl.js +3 -2
  66. package/src/executors/publish/publish.impl.js.map +1 -1
  67. package/src/executors/publish/schema.json +5 -2
  68. package/src/executors/publish-set/publish-set.impl.js +2 -1
  69. package/src/executors/publish-set/publish-set.impl.js.map +1 -1
  70. package/src/executors/publish-set/schema.json +3 -1
  71. package/src/executors/rollback/rollback.impl.js +2 -1
  72. package/src/executors/rollback/rollback.impl.js.map +1 -1
  73. package/src/executors/rollback/schema.json +3 -1
  74. package/src/executors/run/run.impl.js +11 -11
  75. package/src/executors/run/run.impl.js.map +1 -1
  76. package/src/executors/run/schema.d.ts +18 -6
  77. package/src/executors/run/schema.json +21 -8
  78. package/src/executors/start/schema.d.ts +12 -4
  79. package/src/executors/start/schema.json +27 -9
  80. package/src/executors/start/start.impl.js +8 -12
  81. package/src/executors/start/start.impl.js.map +1 -1
  82. package/src/executors/sync-deps/schema.d.ts +2 -1
  83. package/src/executors/sync-deps/schema.json +17 -3
  84. package/src/executors/sync-deps/sync-deps.impl.d.ts +2 -2
  85. package/src/executors/sync-deps/sync-deps.impl.js +14 -9
  86. package/src/executors/sync-deps/sync-deps.impl.js.map +1 -1
  87. package/src/executors/update/compat.d.ts +2 -0
  88. package/src/executors/update/compat.js +6 -0
  89. package/src/executors/update/compat.js.map +1 -0
  90. package/src/executors/update/schema.d.ts +15 -0
  91. package/src/executors/update/schema.json +65 -0
  92. package/src/executors/update/update.impl.d.ts +6 -0
  93. package/src/executors/update/update.impl.js +59 -0
  94. package/src/executors/update/update.impl.js.map +1 -0
  95. package/src/generators/application/application.js +1 -1
  96. package/src/generators/application/application.js.map +1 -1
  97. package/src/generators/application/files/babel.config.js.template +1 -2
  98. package/src/generators/application/files/package.json.template +1 -10
  99. package/src/generators/application/files/src/app/App.tsx.template +227 -41
  100. package/src/generators/application/files/tsconfig.json.template +3 -2
  101. package/src/generators/application/lib/add-detox.js +1 -1
  102. package/src/generators/application/lib/add-detox.js.map +1 -1
  103. package/src/generators/application/lib/add-project.js +39 -16
  104. package/src/generators/application/lib/add-project.js.map +1 -1
  105. package/src/generators/application/lib/normalize-options.d.ts +2 -1
  106. package/src/generators/application/lib/normalize-options.js +4 -2
  107. package/src/generators/application/lib/normalize-options.js.map +1 -1
  108. package/src/generators/application/schema.d.ts +2 -0
  109. package/src/generators/application/schema.json +18 -6
  110. package/src/generators/component/lib/add-import.js +1 -1
  111. package/src/generators/component/lib/add-import.js.map +1 -1
  112. package/src/generators/component/schema.json +6 -5
  113. package/src/generators/init/init.d.ts +4 -4
  114. package/src/generators/init/init.js +18 -21
  115. package/src/generators/init/init.js.map +1 -1
  116. package/src/generators/init/lib/add-git-ignore-entry.js +1 -1
  117. package/src/generators/init/lib/add-git-ignore-entry.js.map +1 -1
  118. package/src/generators/init/lib/gitignore-entries.d.ts +1 -1
  119. package/src/generators/init/lib/gitignore-entries.js +2 -0
  120. package/src/generators/init/lib/gitignore-entries.js.map +1 -1
  121. package/src/generators/init/schema.d.ts +2 -0
  122. package/src/generators/init/schema.json +13 -2
  123. package/src/generators/library/files/lib/babel.config.json +17 -0
  124. package/src/generators/library/lib/normalize-options.js +1 -1
  125. package/src/generators/library/lib/normalize-options.js.map +1 -1
  126. package/src/generators/library/library.js +3 -17
  127. package/src/generators/library/library.js.map +1 -1
  128. package/src/generators/library/schema.d.ts +1 -1
  129. package/src/generators/library/schema.json +13 -11
  130. package/src/migrations/update-14-5-1/add-eas-update-target.d.ts +5 -0
  131. package/src/migrations/update-14-5-1/add-eas-update-target.js +27 -0
  132. package/src/migrations/update-14-5-1/add-eas-update-target.js.map +1 -0
  133. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.d.ts +9 -0
  134. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.js +66 -0
  135. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.js.map +1 -0
  136. package/src/migrations/update-15-0-3/change-jest-preset.d.ts +8 -0
  137. package/src/migrations/update-15-0-3/change-jest-preset.js +74 -0
  138. package/src/migrations/update-15-0-3/change-jest-preset.js.map +1 -0
  139. package/src/utils/add-jest.js +12 -18
  140. package/src/utils/add-jest.js.map +1 -1
  141. package/src/utils/add-linting.js +9 -13
  142. package/src/utils/add-linting.js.map +1 -1
  143. package/src/utils/ensure-node-modules-symlink.js +5 -5
  144. package/src/utils/ensure-node-modules-symlink.js.map +1 -1
  145. package/src/utils/pod-install-task.d.ts +1 -1
  146. package/src/utils/pod-install-task.js +12 -13
  147. package/src/utils/pod-install-task.js.map +1 -1
  148. package/src/utils/versions.d.ts +21 -24
  149. package/src/utils/versions.js +22 -25
  150. package/src/utils/versions.js.map +1 -1
  151. package/tsconfig.spec.json +5 -5
  152. package/.babelrc +0 -3
  153. package/src/executors/eject/compat.js +0 -6
  154. package/src/executors/eject/compat.js.map +0 -1
  155. package/src/executors/eject/eject.impl.d.ts +0 -6
  156. package/src/executors/eject/eject.impl.js.map +0 -1
  157. package/src/executors/eject/schema.d.ts +0 -6
  158. package/src/executors/eject/schema.json +0 -21
  159. package/src/generators/application/files/assets/logo.png +0 -0
  160. package/src/generators/application/files/assets/star.svg +0 -11
  161. package/src/generators/application/files/src/app/icons/blog.svg +0 -1
  162. package/src/generators/application/files/src/app/icons/book.svg +0 -1
  163. package/src/generators/application/files/src/app/icons/checkmark.svg +0 -1
  164. package/src/generators/application/files/src/app/icons/chevron-right.svg +0 -1
  165. package/src/generators/application/files/src/app/icons/courses.svg +0 -1
  166. package/src/generators/application/files/src/app/icons/github.svg +0 -1
  167. package/src/generators/application/files/src/app/icons/heart.svg +0 -1
  168. package/src/generators/application/files/src/app/icons/logo.png +0 -0
  169. package/src/generators/application/files/src/app/icons/nx-cloud.svg +0 -1
  170. package/src/generators/application/files/src/app/icons/pointer.svg +0 -1
  171. package/src/generators/application/files/src/app/icons/terminal.svg +0 -1
  172. package/src/generators/application/files/src/app/icons/vscode.svg +0 -1
  173. package/src/generators/application/files/src/app/icons/youtube.svg +0 -1
  174. package/src/generators/library/files/lib/.babelrc.template +0 -3
  175. package/src/generators/preset/preset.d.ts +0 -4
  176. package/src/generators/preset/preset.js +0 -18
  177. package/src/generators/preset/preset.js.map +0 -1
  178. package/src/generators/preset/schema.d.ts +0 -13
  179. package/src/generators/preset/schema.json +0 -62
  180. /package/src/executors/{eject → export}/compat.d.ts +0 -0
@@ -1,11 +1,23 @@
1
- // options from https://docs.expo.dev/workflow/expo-cli/#expo-runios and https://docs.expo.dev/workflow/expo-cli/#expo-runandroid
1
+ /*
2
+ * options from
3
+ * - android: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/run/android/resolveOptions.ts
4
+ * - ios: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/run/ios/options/resolveOptions.ts
5
+ */
2
6
  export interface ExpoRunOptions {
3
7
  platform: 'ios' | 'android';
4
- xcodeConfiguration: string; // iOS only, default is Debug
5
- scheme?: string; // iOS only
6
- variant: string; // android only, default is debug
8
+ sync: boolean; // default is true
9
+
10
+ // ios only
11
+ scheme?: string | boolean; // Xcode scheme to build.
12
+ xcodeConfiguration?: XcodeConfiguration; // Xcode configuration to build. Default `Debug`
13
+
14
+ // android only
15
+ variant?: string;
16
+
17
+ // shared between ios and android
18
+ device?: string | boolean;
7
19
  port: number; // default is 8081
8
20
  bundler: boolean; // default is true
9
- sync: boolean; // default is true
10
- device?: string;
21
+ install?: boolean;
22
+ buildCache?: boolean;
11
23
  }
@@ -1,20 +1,24 @@
1
1
  {
2
+ "version": 2,
3
+ "outputCapture": "direct-nodejs",
2
4
  "cli": "nx",
3
5
  "$id": "NxExpoRun",
4
6
  "$schema": "http://json-schema.org/schema",
5
7
  "title": "Run iOS or Android application",
6
- "description": "Run Expo target options",
8
+ "description": "Run Expo target options.",
7
9
  "type": "object",
8
10
  "properties": {
9
11
  "platform": {
10
12
  "description": "Platform to run for (ios, android).",
11
13
  "enum": ["ios", "android"],
12
- "default": "ios"
14
+ "default": "ios",
15
+ "alias": "p"
13
16
  },
14
17
  "xcodeConfiguration": {
15
18
  "type": "string",
16
19
  "description": "(iOS) Xcode configuration to use. Debug or Release",
17
- "default": "Debug"
20
+ "default": "Debug",
21
+ "x-priority": "important"
18
22
  },
19
23
  "scheme": {
20
24
  "type": "string",
@@ -23,7 +27,8 @@
23
27
  "variant": {
24
28
  "type": "string",
25
29
  "description": "(Android) Specify your app's build variant (e.g. debug, release).",
26
- "default": "debug"
30
+ "default": "debug",
31
+ "x-priority": "important"
27
32
  },
28
33
  "device": {
29
34
  "type": "string",
@@ -32,8 +37,9 @@
32
37
  },
33
38
  "sync": {
34
39
  "type": "boolean",
35
- "description": "Syncs npm dependencies to package.json (for React Native autolink). Always true when --install is used.",
36
- "default": true
40
+ "description": "Syncs npm dependencies to package.json (for React Native autolink).",
41
+ "default": true,
42
+ "x-priority": "internal"
37
43
  },
38
44
  "port": {
39
45
  "type": "number",
@@ -43,8 +49,15 @@
43
49
  },
44
50
  "bundler": {
45
51
  "type": "boolean",
46
- "description": "Whether to skip starting the Metro bundler. True to start it, false to skip it.",
47
- "default": true
52
+ "description": "Whether to skip starting the Metro bundler. True to start it, false to skip it."
53
+ },
54
+ "install": {
55
+ "type": "boolean",
56
+ "description": "Should install missing dependencies before building."
57
+ },
58
+ "buildCache": {
59
+ "type": "boolean",
60
+ "description": "Should use derived data for builds."
48
61
  }
49
62
  },
50
63
  "required": ["platform"]
@@ -1,6 +1,8 @@
1
- // options from https://docs.expo.dev/workflow/expo-cli/#expo-start
1
+ // options from https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/resolveOptions.ts
2
2
 
3
3
  export interface ExpoStartOptions {
4
+ forceManifestType: 'classic' | 'expo-updates';
5
+ privateKeyPath?: string;
4
6
  port: number;
5
7
  dev?: boolean;
6
8
  devClient?: boolean;
@@ -9,14 +11,20 @@ export interface ExpoStartOptions {
9
11
  clear?: boolean;
10
12
  maxWorkers?: number;
11
13
  scheme?: string;
12
- sendTo?: string;
13
14
  ios?: boolean;
14
15
  android?: boolean;
15
16
  web?: boolean;
16
- host?: string;
17
+ host?: 'localhost' | 'lan' | 'tunnel';
17
18
  lan?: boolean;
18
19
  localhost?: boolean;
19
20
  tunnel?: boolean;
20
21
  offline?: boolean;
21
- webpack?: boolean;
22
+ /**
23
+ * @deprecated
24
+ */
25
+ sendTo?: string; // deprecated from @expo/cli
26
+ /**
27
+ * @deprecated
28
+ */
29
+ webpack?: boolean; // deprecated from @expo/cli
22
30
  }
@@ -1,11 +1,22 @@
1
1
  {
2
+ "version": 2,
3
+ "outputCapture": "direct-nodejs",
2
4
  "cli": "nx",
3
5
  "$id": "NxExpoStart",
4
6
  "$schema": "http://json-schema.org/schema",
5
7
  "title": "Packager Server for Expo",
6
- "description": "Packager Server target options",
8
+ "description": "Packager Server target options.",
7
9
  "type": "object",
8
10
  "properties": {
11
+ "forceManifestType": {
12
+ "type": "string",
13
+ "description": "Override auto detection of manifest type.",
14
+ "enum": ["expo-updates", "classic"]
15
+ },
16
+ "privateKeyPath": {
17
+ "type": "string",
18
+ "description": "Path to private key for code signing. Default: 'private-key.pem' in the same directory as the certificate specified by the expo-updates configuration in app.json."
19
+ },
9
20
  "port": {
10
21
  "type": "number",
11
22
  "description": "Port to start the native Metro bundler on (does not apply to web or tunnel)",
@@ -41,11 +52,6 @@
41
52
  "type": "string",
42
53
  "description": "Custom URI protocol to use with a development build"
43
54
  },
44
- "sentTo": {
45
- "type": "string",
46
- "description": "An email address to send a link to",
47
- "alias": "s"
48
- },
49
55
  "android": {
50
56
  "type": "boolean",
51
57
  "description": "Opens your app in Expo Go on a connected Android device",
@@ -56,10 +62,15 @@
56
62
  "description": "Opens your app in Expo Go in a currently running iOS simulator on your computer",
57
63
  "alias": "i"
58
64
  },
65
+ "web": {
66
+ "type": "boolean",
67
+ "description": " Opens your app in a web browser",
68
+ "alias": "w"
69
+ },
59
70
  "host": {
60
71
  "type": "string",
61
- "description": "lan (default), tunnel, localhost. Type of host to use. \"tunnel\" allows you to view your link on other networks",
62
- "alias": "m"
72
+ "description": "lan (default), tunnel, localhost. Type of host to use. lan uses the local network; tunnel ues any network by tunnel through ngrok; localhost connects to the dev server over localhost.",
73
+ "enum": ["localhost", "lan", "tunnel"]
63
74
  },
64
75
  "tunnel": {
65
76
  "type": "boolean",
@@ -77,9 +88,16 @@
77
88
  "type": "boolean",
78
89
  "description": "Allows this command to run while offline"
79
90
  },
91
+ "sentTo": {
92
+ "type": "string",
93
+ "description": "An email address to send a link to",
94
+ "alias": "s",
95
+ "x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
96
+ },
80
97
  "webpack": {
81
98
  "type": "boolean",
82
- "description": "Start a Webpack dev server for the web app."
99
+ "description": "Start a Webpack dev server for the web app.",
100
+ "x-deprecated": "This option will be removed in v16. It is no longer supported by @expo/cli."
83
101
  }
84
102
  }
85
103
  }
@@ -9,7 +9,7 @@ const ensure_node_modules_symlink_1 = require("../../utils/ensure-node-modules-s
9
9
  let childProcess;
10
10
  function startExecutor(options, context) {
11
11
  return tslib_1.__asyncGenerator(this, arguments, function* startExecutor_1() {
12
- const projectRoot = context.workspace.projects[context.projectName].root;
12
+ const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
13
13
  (0, ensure_node_modules_symlink_1.ensureNodeModulesSymlink)(context.root, projectRoot);
14
14
  try {
15
15
  const baseUrl = `http://localhost:${options.port}`;
@@ -30,7 +30,7 @@ function startExecutor(options, context) {
30
30
  exports.default = startExecutor;
31
31
  function startAsync(workspaceRoot, projectRoot, options) {
32
32
  return new Promise((resolve, reject) => {
33
- childProcess = (0, child_process_1.fork)((0, path_1.join)(workspaceRoot, './node_modules/expo-cli/bin/expo.js'), [options.webpack ? 'web' : 'start', ...createStartOptions(options)], { cwd: (0, path_1.join)(workspaceRoot, projectRoot) });
33
+ childProcess = (0, child_process_1.fork)((0, path_1.join)(workspaceRoot, './node_modules/@expo/cli/build/bin/cli'), ['start', ...createStartOptions(options)], { cwd: (0, path_1.join)(workspaceRoot, projectRoot), env: process.env });
34
34
  // Ensure the child process is killed when the parent exits
35
35
  process.on('exit', () => childProcess.kill());
36
36
  process.on('SIGTERM', () => childProcess.kill());
@@ -47,20 +47,16 @@ function startAsync(workspaceRoot, projectRoot, options) {
47
47
  });
48
48
  });
49
49
  }
50
- const nxOptions = ['webpack'];
50
+ // options from https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/index.ts
51
51
  function createStartOptions(options) {
52
52
  return Object.keys(options).reduce((acc, k) => {
53
53
  const v = options[k];
54
- if (k === 'dev' && v === false) {
55
- acc.push(`--no-dev`);
56
- }
57
- else if (k === 'minify' && v === false) {
58
- acc.push(`--no-minify`);
59
- }
60
- else if (k === 'https' && v === false) {
61
- acc.push(`--no-https`);
54
+ if (k === 'dev') {
55
+ if (v === false) {
56
+ acc.push(`--no-dev`);
57
+ }
62
58
  }
63
- else if (!nxOptions.includes(k)) {
59
+ else {
64
60
  if (typeof v === 'boolean') {
65
61
  if (v === true) {
66
62
  // when true, does not need to pass the value true, just need to pass the flag in kebob case
@@ -1 +1 @@
1
- {"version":3,"file":"start.impl.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/start/start.impl.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,yCAA8D;AAC9D,iDAAmD;AACnD,+BAA4B;AAE5B,yFAAmF;AAQnF,IAAI,YAA0B,CAAC;AAE/B,SAA+B,aAAa,CAC1C,OAAyB,EACzB,OAAwB;;QAExB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QACzE,IAAA,sDAAwB,EAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEpD,IAAI;YACF,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC;YAE3D,sBAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA,CAAC;YAErD,4BAAM;gBACJ,OAAO;gBACP,OAAO,EAAE,IAAI;aACd,CAAA,CAAC;SACH;gBAAS;YACR,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,IAAI,EAAE,CAAC;aACrB;SACF;IACH,CAAC;CAAA;AAtBD,gCAsBC;AAED,SAAS,UAAU,CACjB,aAAqB,EACrB,WAAmB,EACnB,OAAyB;IAEzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,YAAY,GAAG,IAAA,oBAAI,EACjB,IAAA,WAAI,EAAC,aAAa,EAAE,qCAAqC,CAAC,EAC1D,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,EACnE,EAAE,GAAG,EAAE,IAAA,WAAI,EAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAC1C,CAAC;QAEF,2DAA2D;QAC3D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,CAAC;aACd;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9B,SAAS,kBAAkB,CAAC,OAAyB;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtB;aAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;YACxC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACzB;aAAM,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxB;aAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,EAAE;oBACd,4FAA4F;oBAC5F,GAAG,CAAC,IAAI,CAAC,KAAK,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACpC;aACF;iBAAM;gBACL,GAAG,CAAC,IAAI,CAAC,KAAK,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aACvC;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"start.impl.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/start/start.impl.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export interface ExpoSyncDepsOptions {
2
- include: string;
2
+ include: string[] | string; // default is an empty array []
3
+ exclude: string[] | string; // default is an empty array []
3
4
  }
@@ -1,14 +1,28 @@
1
1
  {
2
+ "version": 2,
3
+ "outputCapture": "direct-nodejs",
2
4
  "cli": "nx",
3
5
  "$id": "NxExpoSyncDeps",
4
6
  "$schema": "http://json-schema.org/schema",
5
7
  "title": "Sync Deps for Expo",
6
- "description": "Updates package.json with project dependencies",
8
+ "description": "Updates package.json with project dependencies.",
7
9
  "type": "object",
8
10
  "properties": {
9
11
  "include": {
10
- "type": "string",
11
- "description": "A comma-separated list of additional npm packages to include. e.g. 'nx sync-deps --include=react-native-gesture-handler,react-native-safe-area-context'"
12
+ "type": "array",
13
+ "items": {
14
+ "type": "string"
15
+ },
16
+ "default": [],
17
+ "description": "An array of additional npm packages to include."
18
+ },
19
+ "exclude": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "string"
23
+ },
24
+ "default": [],
25
+ "description": "An array of npm packages to exclude."
12
26
  }
13
27
  }
14
28
  }
@@ -1,8 +1,8 @@
1
- import { ExecutorContext } from '@nrwl/devkit';
1
+ import { ExecutorContext, ProjectGraph } from '@nrwl/devkit';
2
2
  import { ExpoSyncDepsOptions } from './schema';
3
3
  export interface ExpoSyncDepsOutput {
4
4
  success: boolean;
5
5
  }
6
6
  export default function syncDepsExecutor(options: ExpoSyncDepsOptions, context: ExecutorContext): AsyncGenerator<ExpoSyncDepsOutput>;
7
- export declare function syncDeps(projectName: string, projectRoot: string, include?: string): Promise<string[]>;
7
+ export declare function syncDeps(projectName: string, projectRoot: string, workspaceRoot: string, projectGraph: ProjectGraph, include?: string[], exclude?: string[]): Promise<string[]>;
8
8
  export declare function displayNewlyAddedDepsMessage(projectName: string, deps: string[]): void;
@@ -8,27 +8,32 @@ const devkit_1 = require("@nrwl/devkit");
8
8
  const find_all_npm_dependencies_1 = require("../../utils/find-all-npm-dependencies");
9
9
  function syncDepsExecutor(options, context) {
10
10
  return tslib_1.__asyncGenerator(this, arguments, function* syncDepsExecutor_1() {
11
- const projectRoot = context.workspace.projects[context.projectName].root;
12
- displayNewlyAddedDepsMessage(context.projectName, yield tslib_1.__await(syncDeps(context.projectName, projectRoot, options.include)));
11
+ const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
12
+ displayNewlyAddedDepsMessage(context.projectName, yield tslib_1.__await(syncDeps(context.projectName, projectRoot, context.root, context.projectGraph, typeof options.include === 'string'
13
+ ? options.include.split(',')
14
+ : options.include, typeof options.exclude === 'string'
15
+ ? options.exclude.split(',')
16
+ : options.exclude)));
13
17
  yield yield tslib_1.__await({ success: true });
14
18
  });
15
19
  }
16
20
  exports.default = syncDepsExecutor;
17
- function syncDeps(projectName, projectRoot, include) {
21
+ function syncDeps(projectName, projectRoot, workspaceRoot, projectGraph, include = [], exclude = []) {
18
22
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
- const graph = yield (0, devkit_1.createProjectGraphAsync)();
20
- const npmDeps = (0, find_all_npm_dependencies_1.findAllNpmDependencies)(graph, projectName);
21
- const packageJsonPath = (0, path_1.join)(projectRoot, 'package.json');
23
+ let npmDeps = (0, find_all_npm_dependencies_1.findAllNpmDependencies)(projectGraph, projectName);
24
+ const packageJsonPath = (0, path_1.join)(workspaceRoot, projectRoot, 'package.json');
22
25
  const packageJson = (0, devkit_1.readJsonFile)(packageJsonPath);
23
26
  const newDeps = [];
24
- const includeDeps = include === null || include === void 0 ? void 0 : include.split(',');
25
27
  let updated = false;
26
28
  if (!packageJson.dependencies) {
27
29
  packageJson.dependencies = {};
28
30
  updated = true;
29
31
  }
30
- if (includeDeps) {
31
- npmDeps.push(...includeDeps);
32
+ if (include && include.length) {
33
+ npmDeps.push(...include);
34
+ }
35
+ if (exclude && exclude.length) {
36
+ npmDeps = npmDeps.filter((dep) => !exclude.includes(dep));
32
37
  }
33
38
  npmDeps.forEach((dep) => {
34
39
  if (!packageJson.dependencies[dep]) {
@@ -1 +1 @@
1
- {"version":3,"file":"sync-deps.impl.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/sync-deps/sync-deps.impl.ts"],"names":[],"mappings":";;;;AAAA,+BAA4B;AAC5B,+BAA+B;AAC/B,yCAMsB;AAEtB,qFAA+E;AAQ/E,SAA+B,gBAAgB,CAC7C,OAA4B,EAC5B,OAAwB;;QAExB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QACzE,4BAA4B,CAC1B,OAAO,CAAC,WAAW,EACnB,sBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA,CAClE,CAAC;QAEF,4BAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,CAAC;IAC1B,CAAC;CAAA;AAXD,mCAWC;AAED,SAAsB,QAAQ,CAC5B,WAAmB,EACnB,WAAmB,EACnB,OAAgB;;QAEhB,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAuB,GAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,kDAAsB,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAA,qBAAY,EAAC,eAAe,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YAC7B,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;SAChB;QAED,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;gBAClC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE;YACX,IAAA,sBAAa,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;SAC7C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAnCD,4BAmCC;AAED,SAAgB,4BAA4B,CAC1C,WAAmB,EACnB,IAAc;IAEd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,eAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAC5B,MAAM,CACP,yCAAyC,WAAW;IACrD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACjE;SAAM;QACL,eAAM,CAAC,IAAI,CACT,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAChB,MAAM,CACP,sBAAsB,WAAW,oCAAoC,CACvE,CAAC;KACH;AACH,CAAC;AAhBD,oEAgBC"}
1
+ {"version":3,"file":"sync-deps.impl.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/sync-deps/sync-deps.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nrwl/devkit");
4
+ const update_impl_1 = require("./update.impl");
5
+ exports.default = (0, devkit_1.convertNxExecutor)(update_impl_1.default);
6
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/update/compat.ts"],"names":[],"mappings":";;AAAA,yCAAiD;AAEjD,+CAA0C;AAE1C,kBAAe,IAAA,0BAAiB,EAAC,qBAAa,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ // command to run https://github.com/expo/eas-cli/tree/main#eas-update
2
+ // options from github.com/expo/eas-cli/blob/main/packages/eas-cli/src/commands/update/index.ts
3
+ export interface ExpoEasUpdateOptions {
4
+ branch?: string;
5
+ message?: string;
6
+ republish: boolean; // default is false
7
+ group?: string;
8
+ inputDir: string; // default is "dist"
9
+ skipBundler: boolean; // default is false
10
+ platform: 'ios' | 'android' | 'all'; // default is "all"
11
+ json: boolean; // default is false
12
+ auto: boolean; // default is false
13
+ privateKeyPath?: string;
14
+ nonInteractive: boolean; // default is false
15
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "version": 2,
3
+ "outputCapture": "direct-nodejs",
4
+ "$schema": "http://json-schema.org/schema",
5
+ "$id": "NxExpoEasUpdate",
6
+ "cli": "nx",
7
+ "title": "Expo EAS Update executor",
8
+ "description": "Start an EAS update for your expo project.",
9
+ "type": "object",
10
+ "properties": {
11
+ "branch": {
12
+ "type": "string",
13
+ "description": "Branch to publish the update group on"
14
+ },
15
+ "message": {
16
+ "type": "string",
17
+ "description": "A short message describing the update"
18
+ },
19
+ "republish": {
20
+ "type": "boolean",
21
+ "description": "Enable JSON output, non-JSON messages will be printed to stderr",
22
+ "default": false
23
+ },
24
+ "group": {
25
+ "type": "string",
26
+ "description": "Update group to republish"
27
+ },
28
+ "inputDir": {
29
+ "type": "string",
30
+ "description": "Location of the bundle"
31
+ },
32
+ "skipBundler": {
33
+ "type": "boolean",
34
+ "description": "Skip running Expo CLI to bundle the app before publishing",
35
+ "default": false
36
+ },
37
+ "platform": {
38
+ "enum": ["ios", "android", "all"],
39
+ "alias": "p",
40
+ "description": "The platform to build the app, example values: ios, android, all.",
41
+ "default": "all",
42
+ "x-priority": "important"
43
+ },
44
+ "json": {
45
+ "type": "boolean",
46
+ "description": "Enable JSON output, non-JSON messages will be printed to stderr",
47
+ "default": false
48
+ },
49
+ "auto": {
50
+ "type": "boolean",
51
+ "description": "Use the current git branch and commit message for the EAS branch and update message",
52
+ "default": false
53
+ },
54
+ "privateKeyPath": {
55
+ "type": "string",
56
+ "description": "File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named \"private-key.pem\" in the certificate's directory."
57
+ },
58
+ "nonInteractive": {
59
+ "type": "boolean",
60
+ "description": "Run command in non-interactive mode",
61
+ "default": false
62
+ }
63
+ },
64
+ "required": []
65
+ }
@@ -0,0 +1,6 @@
1
+ import { ExecutorContext } from '@nrwl/devkit';
2
+ import { ExpoEasUpdateOptions } from './schema';
3
+ export interface ReactNativeUpdateOutput {
4
+ success: boolean;
5
+ }
6
+ export default function buildExecutor(options: ExpoEasUpdateOptions, context: ExecutorContext): AsyncGenerator<ReactNativeUpdateOutput>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ const path_1 = require("path");
6
+ const child_process_1 = require("child_process");
7
+ const ensure_node_modules_symlink_1 = require("../../utils/ensure-node-modules-symlink");
8
+ let childProcess;
9
+ function buildExecutor(options, context) {
10
+ return tslib_1.__asyncGenerator(this, arguments, function* buildExecutor_1() {
11
+ const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
12
+ (0, ensure_node_modules_symlink_1.ensureNodeModulesSymlink)(context.root, projectRoot);
13
+ try {
14
+ yield tslib_1.__await(runCliUpdate(context.root, projectRoot, options));
15
+ yield yield tslib_1.__await({ success: true });
16
+ }
17
+ finally {
18
+ if (childProcess) {
19
+ childProcess.kill();
20
+ }
21
+ }
22
+ });
23
+ }
24
+ exports.default = buildExecutor;
25
+ function runCliUpdate(workspaceRoot, projectRoot, options) {
26
+ return new Promise((resolve, reject) => {
27
+ childProcess = (0, child_process_1.fork)((0, path_1.join)(workspaceRoot, './node_modules/eas-cli/bin/run'), ['update', ...createUpdateOptions(options)], { cwd: (0, path_1.join)(workspaceRoot, projectRoot), env: process.env });
28
+ // Ensure the child process is killed when the parent exits
29
+ process.on('exit', () => childProcess.kill());
30
+ process.on('SIGTERM', () => childProcess.kill());
31
+ childProcess.on('error', (err) => {
32
+ reject(err);
33
+ });
34
+ childProcess.on('exit', (code) => {
35
+ if (code === 0) {
36
+ resolve(code);
37
+ }
38
+ else {
39
+ reject(code);
40
+ }
41
+ });
42
+ });
43
+ }
44
+ function createUpdateOptions(options) {
45
+ return Object.keys(options).reduce((acc, k) => {
46
+ const v = options[k];
47
+ if (typeof v === 'boolean') {
48
+ if (v === true) {
49
+ // when true, does not need to pass the value true, just need to pass the flag in kebob case
50
+ acc.push(`--${(0, devkit_1.names)(k).fileName}`);
51
+ }
52
+ }
53
+ else {
54
+ acc.push(`--${(0, devkit_1.names)(k).fileName}`, v);
55
+ }
56
+ return acc;
57
+ }, []);
58
+ }
59
+ //# sourceMappingURL=update.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.impl.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/executors/update/update.impl.ts"],"names":[],"mappings":";;;AAAA,yCAAsD;AACtD,+BAA4B;AAC5B,iDAAmD;AAEnD,yFAAmF;AAQnF,IAAI,YAA0B,CAAC;AAE/B,SAA+B,aAAa,CAC1C,OAA6B,EAC7B,OAAwB;;QAExB,MAAM,WAAW,GACf,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QACpE,IAAA,sDAAwB,EAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEpD,IAAI;YACF,sBAAM,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA,CAAC;YACvD,4BAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,CAAC;SACzB;gBAAS;YACR,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,IAAI,EAAE,CAAC;aACrB;SACF;IACH,CAAC;CAAA;AAhBD,gCAgBC;AAED,SAAS,YAAY,CACnB,aAAqB,EACrB,WAAmB,EACnB,OAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,YAAY,GAAG,IAAA,oBAAI,EACjB,IAAA,WAAI,EAAC,aAAa,EAAE,gCAAgC,CAAC,EACrD,CAAC,QAAQ,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAC3C,EAAE,GAAG,EAAE,IAAA,WAAI,EAAC,aAAa,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAC5D,CAAC;QAEF,2DAA2D;QAC3D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,CAAC;aACd;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA6B;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,4FAA4F;gBAC5F,GAAG,CAAC,IAAI,CAAC,KAAK,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aACpC;SACF;aAAM;YACL,GAAG,CAAC,IAAI,CAAC,KAAK,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;SACvC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -14,7 +14,7 @@ const add_detox_1 = require("./lib/add-detox");
14
14
  const create_application_files_1 = require("./lib/create-application-files");
15
15
  function expoApplicationGenerator(host, schema) {
16
16
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
- const options = (0, normalize_options_1.normalizeOptions)(schema);
17
+ const options = (0, normalize_options_1.normalizeOptions)(host, schema);
18
18
  (0, create_application_files_1.createApplicationFiles)(host, options);
19
19
  (0, add_project_1.addProject)(host, options);
20
20
  const initTask = yield (0, init_1.default)(host, Object.assign(Object.assign({}, options), { skipFormat: true }));
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/generators/application/application.ts"],"names":[],"mappings":";;;;AAAA,2FAAqF;AACrF,yCAMsB;AAEtB,yDAAqD;AACrD,mDAA+C;AAC/C,2DAAsD;AAEtD,+DAA2D;AAC3D,uCAAyC;AACzC,mDAA+C;AAC/C,+CAA2C;AAC3C,6EAAwE;AAGxE,SAAsB,wBAAwB,CAC5C,IAAU,EACV,MAAc;;QAEd,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC;QAEzC,IAAA,iDAAsB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,IAAA,wBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAa,EAAC,IAAI,kCAAO,OAAO,KAAE,UAAU,EAAE,IAAI,IAAG,CAAC;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAU,EAC/B,IAAI,EACJ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,CAAC,IAAA,0BAAiB,EAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAChE,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,uBAAuB,CAChC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAO,EAC5B,IAAI,EACJ,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,EAAE,CACX,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAA,yBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QAED,OAAO,IAAA,sCAAgB,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;CAAA;AAjCD,4DAiCC;AAED,kBAAe,wBAAwB,CAAC;AAC3B,QAAA,wBAAwB,GAAG,IAAA,2BAAkB,EACxD,wBAAwB,CACzB,CAAC"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../../../packages/expo/src/generators/application/application.ts"],"names":[],"mappings":";;;;AAAA,2FAAqF;AACrF,yCAMsB;AAEtB,yDAAqD;AACrD,mDAA+C;AAC/C,2DAAsD;AAEtD,+DAA2D;AAC3D,uCAAyC;AACzC,mDAA+C;AAC/C,+CAA2C;AAC3C,6EAAwE;AAGxE,SAAsB,wBAAwB,CAC5C,IAAU,EACV,MAAc;;QAEd,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAA,iDAAsB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,IAAA,wBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAa,EAAC,IAAI,kCAAO,OAAO,KAAE,UAAU,EAAE,IAAI,IAAG,CAAC;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAU,EAC/B,IAAI,EACJ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,CAAC,IAAA,0BAAiB,EAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAChE,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,uBAAuB,CAChC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAO,EAC5B,IAAI,EACJ,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,EAAE,CACX,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAA,yBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QAED,OAAO,IAAA,sCAAgB,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;CAAA;AAjCD,4DAiCC;AAED,kBAAe,wBAAwB,CAAC;AAC3B,QAAA,wBAAwB,GAAG,IAAA,2BAAkB,EACxD,wBAAwB,CACzB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  module.exports = function (api) {
2
2
  api.cache(true);
3
3
  return {
4
- presets: ['babel-preset-expo'],
5
- plugins: ['react-native-reanimated/plugin'],
4
+ presets: ['babel-preset-expo']
6
5
  };
7
6
  };
@@ -7,20 +7,11 @@
7
7
  "@testing-library/react-native": "*",
8
8
  "react-native": "*",
9
9
  "expo": "*",
10
- "expo-dev-client": "*",
11
- "expo-status-bar": "*",
12
- "expo-splash-screen": "*",
13
- "expo-structured-headers": "*",
14
- "expo-updates": "*",
15
- "react-native-gesture-handler": "*",
16
- "react-native-reanimated": "*",
17
- "react-native-safe-area-context": "*",
18
- "react-native-screens": "*",
19
10
  "react-native-svg": "*",
20
11
  "react-native-web": "*"
21
12
  },
22
13
  "scripts": {
23
- "eas-build-pre-install": "cd <%= offsetFromRoot %> && cp <%= packageLockFile %> ./<%= appProjectRoot %>/",
14
+ <% if (packageManager === 'npm') { %>"eas-build-pre-install": "cd <%= offsetFromRoot %> && cp <%= packageLockFile %> ./<%= appProjectRoot %>/", <% } %>
24
15
  "postinstall": "rm -r node_modules && cd <%= offsetFromRoot %> && <%= packageManager %> install && npx nx sync-deps <%= projectName %> && npx nx ensure-symlink <%= projectName %>"
25
16
  }
26
17
  }