@nx/react-native 17.0.4 → 17.0.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 (181) hide show
  1. package/.eslintrc.json +1 -7
  2. package/LICENSE +1 -1
  3. package/README.md +4 -9
  4. package/executors.json +0 -5
  5. package/generators.json +11 -12
  6. package/migrations.json +0 -126
  7. package/package.json +15 -11
  8. package/plugins/metro-resolver.js +1 -4
  9. package/plugins/with-nx-metro.js +2 -6
  10. package/src/executors/build-android/build-android.impl.js +6 -2
  11. package/src/executors/build-android/build-android.impl.ts +6 -2
  12. package/src/executors/build-android/schema.json +1 -1
  13. package/src/executors/build-ios/schema.json +1 -1
  14. package/src/executors/bundle/schema.d.ts +1 -1
  15. package/src/executors/bundle/schema.json +1 -1
  16. package/src/executors/ensure-symlink/ensure-symlink.impl.d.ts +0 -4
  17. package/src/executors/ensure-symlink/ensure-symlink.impl.js +0 -4
  18. package/src/executors/ensure-symlink/ensure-symlink.impl.ts +0 -4
  19. package/src/executors/ensure-symlink/schema.json +1 -1
  20. package/src/executors/pod-install/schema.json +1 -1
  21. package/src/executors/run-android/run-android.impl.js +17 -5
  22. package/src/executors/run-android/run-android.impl.ts +18 -9
  23. package/src/executors/run-android/schema.json +1 -1
  24. package/src/executors/run-ios/run-ios.impl.js +16 -4
  25. package/src/executors/run-ios/run-ios.impl.ts +18 -9
  26. package/src/executors/run-ios/schema.json +1 -1
  27. package/src/executors/start/schema.d.ts +1 -1
  28. package/src/executors/start/schema.json +1 -1
  29. package/src/executors/start/start.impl.js +26 -11
  30. package/src/executors/start/start.impl.ts +28 -14
  31. package/src/executors/storybook/storybook.impl.d.ts +0 -4
  32. package/src/executors/storybook/storybook.impl.js +2 -15
  33. package/src/executors/storybook/storybook.impl.ts +7 -26
  34. package/src/executors/sync-deps/schema.d.ts +0 -1
  35. package/src/executors/sync-deps/schema.json +1 -6
  36. package/src/executors/sync-deps/sync-deps.impl.d.ts +1 -2
  37. package/src/executors/sync-deps/sync-deps.impl.js +11 -33
  38. package/src/executors/sync-deps/sync-deps.impl.ts +18 -57
  39. package/src/generators/application/application.js +8 -52
  40. package/src/generators/application/application.spec.ts +2 -29
  41. package/src/generators/application/files/app/Gemfile.template +1 -2
  42. package/src/generators/application/files/app/android/app/build.gradle.template +28 -12
  43. package/src/generators/application/files/app/android/app/src/debug/AndroidManifest.xml.template +6 -2
  44. package/src/generators/application/files/app/android/app/src/debug/java/com/__lowerCaseName__/ReactNativeFlipper.java.template +75 -0
  45. package/src/generators/application/files/app/android/app/src/main/java/com/__lowerCaseName__/MainActivity.java.template +32 -0
  46. package/src/generators/application/files/app/android/app/src/main/java/com/__lowerCaseName__/MainApplication.java.template +62 -0
  47. package/src/generators/application/files/app/android/app/src/release/java/com/__lowerCaseName__/ReactNativeFlipper.java.template +20 -0
  48. package/src/generators/application/files/app/android/build.gradle.template +20 -7
  49. package/src/generators/application/files/app/android/gradle/wrapper/gradle-wrapper.properties +1 -2
  50. package/src/generators/application/files/app/android/gradle.properties +3 -0
  51. package/src/generators/application/files/app/android/gradlew.template +7 -12
  52. package/src/generators/application/files/app/android/settings.gradle.template +2 -2
  53. package/src/generators/application/files/app/babel.config.json.template +3 -0
  54. package/src/generators/application/files/app/ios/Podfile.template +7 -0
  55. package/src/generators/application/files/app/ios/__className__/AppDelegate.mm.template +0 -5
  56. package/src/generators/application/files/app/ios/__className__/Info.plist.template +8 -5
  57. package/src/generators/application/files/app/ios/__className__.xcodeproj/project.pbxproj.template +33 -11
  58. package/src/generators/application/files/app/metro.config.js.template +5 -1
  59. package/src/generators/application/files/app/src/app/App.tsx.template +13 -50
  60. package/src/generators/application/lib/add-detox.d.ts +3 -0
  61. package/src/generators/application/lib/add-detox.js +23 -0
  62. package/src/generators/application/lib/add-project.js +18 -18
  63. package/src/generators/application/lib/normalize-options.d.ts +0 -7
  64. package/src/generators/application/lib/normalize-options.js +3 -35
  65. package/src/generators/application/lib/normalize-options.spec.ts +7 -70
  66. package/src/generators/application/schema.d.ts +3 -5
  67. package/src/generators/application/schema.json +6 -14
  68. package/src/generators/component/files/__fileName__.tsx__tmpl__ +1 -1
  69. package/src/generators/component/schema.d.ts +3 -3
  70. package/src/generators/component/schema.json +4 -4
  71. package/src/generators/component-story/component-story.d.ts +8 -5
  72. package/src/generators/component-story/component-story.js +69 -8
  73. package/src/generators/component-story/component-story.spec.ts +428 -0
  74. package/src/generators/component-story/files/__componentFileName__.stories.__fileExt__ +32 -0
  75. package/src/generators/component-story/schema.d.ts +0 -1
  76. package/src/generators/component-story/schema.json +3 -11
  77. package/src/generators/init/init.d.ts +1 -2
  78. package/src/generators/init/init.js +56 -55
  79. package/src/generators/init/init.spec.ts +6 -7
  80. package/src/generators/init/schema.d.ts +3 -3
  81. package/src/generators/init/schema.json +18 -13
  82. package/src/generators/library/files/lib/babel.config.json.template +17 -0
  83. package/src/generators/library/lib/normalize-options.js +0 -5
  84. package/src/generators/library/library.js +38 -48
  85. package/src/generators/library/library.spec.ts +60 -12
  86. package/src/generators/library/schema.d.ts +0 -1
  87. package/src/generators/library/schema.json +2 -2
  88. package/src/generators/stories/schema.d.ts +0 -2
  89. package/src/generators/stories/schema.json +2 -15
  90. package/src/generators/stories/stories-app.spec.ts +128 -0
  91. package/src/generators/stories/stories-lib.spec.ts +105 -0
  92. package/src/generators/stories/stories.d.ts +2 -5
  93. package/src/generators/stories/stories.js +50 -7
  94. package/src/generators/storybook-configuration/configuration.d.ts +2 -7
  95. package/src/generators/storybook-configuration/configuration.js +48 -18
  96. package/src/generators/storybook-configuration/configuration.spec.ts +135 -0
  97. package/src/generators/storybook-configuration/files/app/storybook.ts.template +9 -0
  98. package/src/generators/storybook-configuration/files/app/toggle-storybook.tsx.template +74 -0
  99. package/src/generators/storybook-configuration/files/root/story-loader.ts.template +5 -0
  100. package/src/generators/storybook-configuration/lib/add-resolver-main-fields-to-metro-config.d.ts +6 -0
  101. package/src/generators/storybook-configuration/lib/add-resolver-main-fields-to-metro-config.js +25 -0
  102. package/src/generators/storybook-configuration/lib/add-resolver-main-fields-to-metro-config.spec.ts +161 -0
  103. package/src/generators/storybook-configuration/lib/create-storybook-files.d.ts +6 -0
  104. package/src/generators/storybook-configuration/lib/create-storybook-files.js +42 -0
  105. package/src/generators/storybook-configuration/lib/replace-app-import-with-storybook-toggle.d.ts +7 -0
  106. package/src/generators/storybook-configuration/lib/replace-app-import-with-storybook-toggle.js +29 -0
  107. package/src/generators/storybook-configuration/lib/replace-app-import-with-storybook-toggle.spec.ts +65 -0
  108. package/src/generators/storybook-configuration/schema.d.ts +2 -4
  109. package/src/generators/storybook-configuration/schema.json +12 -22
  110. package/src/generators/upgrade-native/lib/normalize-options.d.ts +1 -1
  111. package/src/generators/upgrade-native/schema.d.ts +1 -1
  112. package/src/generators/upgrade-native/schema.json +3 -3
  113. package/src/generators/upgrade-native/upgrade-native.d.ts +0 -2
  114. package/src/generators/upgrade-native/upgrade-native.js +0 -3
  115. package/src/migrations/update-16-6-0/update-metro-config.js +5 -1
  116. package/src/migrations/update-16-9-0/remove-types-react-native.js +9 -2
  117. package/src/utils/add-jest.d.ts +1 -1
  118. package/src/utils/add-jest.js +1 -13
  119. package/src/utils/add-linting.d.ts +0 -1
  120. package/src/utils/add-linting.js +1 -1
  121. package/src/utils/add-linting.spec.ts +6 -4
  122. package/src/utils/chmod-android-gradle-files.js +2 -6
  123. package/src/utils/find-all-npm-dependencies.js +3 -5
  124. package/src/utils/find-all-npm-dependencies.spec.ts +9 -17
  125. package/src/utils/symlink-task.d.ts +2 -0
  126. package/src/utils/symlink-task.js +18 -0
  127. package/src/utils/testing-generators.js +0 -1
  128. package/src/utils/versions.d.ts +13 -10
  129. package/src/utils/versions.js +14 -11
  130. package/plugin.d.ts +0 -1
  131. package/plugin.js +0 -6
  132. package/plugins/plugin.d.ts +0 -14
  133. package/plugins/plugin.js +0 -162
  134. package/src/executors/upgrade/schema.d.ts +0 -1
  135. package/src/executors/upgrade/schema.json +0 -11
  136. package/src/executors/upgrade/upgrade.impl.d.ts +0 -13
  137. package/src/executors/upgrade/upgrade.impl.js +0 -47
  138. package/src/executors/upgrade/upgrade.impl.ts +0 -64
  139. package/src/generators/application/files/app/.babelrc.js.template +0 -23
  140. package/src/generators/application/files/app/android/app/src/main/java/com/__lowerCaseName__/MainActivity.kt.template +0 -22
  141. package/src/generators/application/files/app/android/app/src/main/java/com/__lowerCaseName__/MainApplication.kt.template +0 -45
  142. package/src/generators/application/lib/add-e2e.d.ts +0 -3
  143. package/src/generators/application/lib/add-e2e.js +0 -46
  144. package/src/generators/library/files/lib/.babelrc.js.template +0 -21
  145. package/src/generators/web-configuration/files/base-vite/.babelrc.js.template +0 -23
  146. package/src/generators/web-configuration/files/base-vite/index.html__tmpl__ +0 -15
  147. package/src/generators/web-configuration/files/base-vite/public/favicon.ico +0 -0
  148. package/src/generators/web-configuration/files/base-vite/src/assets/.gitkeep +0 -0
  149. package/src/generators/web-configuration/files/base-vite/src/main-web.tsx__tmpl__ +0 -9
  150. package/src/generators/web-configuration/files/base-vite/vite.config.ts__tmpl__ +0 -82
  151. package/src/generators/web-configuration/files/base-webpack/.babelrc.js.template +0 -23
  152. package/src/generators/web-configuration/files/base-webpack/src/assets/.gitkeep +0 -0
  153. package/src/generators/web-configuration/files/base-webpack/src/favicon.ico +0 -0
  154. package/src/generators/web-configuration/files/base-webpack/src/index.html__tmpl__ +0 -14
  155. package/src/generators/web-configuration/files/base-webpack/src/main-web.tsx__tmpl__ +0 -9
  156. package/src/generators/web-configuration/files/base-webpack/webpack.config.js__tmpl__ +0 -77
  157. package/src/generators/web-configuration/lib/normalize-schema.d.ts +0 -17
  158. package/src/generators/web-configuration/lib/normalize-schema.js +0 -16
  159. package/src/generators/web-configuration/lib/webpack-targets.d.ts +0 -7
  160. package/src/generators/web-configuration/lib/webpack-targets.js +0 -75
  161. package/src/generators/web-configuration/schema.d.ts +0 -6
  162. package/src/generators/web-configuration/schema.json +0 -42
  163. package/src/generators/web-configuration/web-configuration.d.ts +0 -12
  164. package/src/generators/web-configuration/web-configuration.js +0 -87
  165. package/src/migrations/update-18-0-0/add-upgrade-target.d.ts +0 -6
  166. package/src/migrations/update-18-0-0/add-upgrade-target.js +0 -33
  167. package/src/migrations/update-18-0-0/add-web-configuration.d.ts +0 -8
  168. package/src/migrations/update-18-0-0/add-web-configuration.js +0 -33
  169. package/src/migrations/update-18-0-0/add-web-configuration.spec.ts +0 -39
  170. package/src/migrations/update-18-0-0/change-storybook-targets.d.ts +0 -5
  171. package/src/migrations/update-18-0-0/change-storybook-targets.js +0 -57
  172. package/src/migrations/update-18-0-0/remove-block-list.d.ts +0 -6
  173. package/src/migrations/update-18-0-0/remove-block-list.js +0 -28
  174. package/src/migrations/update-18-0-0/remove-block-list.spec.ts +0 -68
  175. package/src/migrations/update-18-0-0/remove-metro.d.ts +0 -14
  176. package/src/migrations/update-18-0-0/remove-metro.js +0 -29
  177. package/src/migrations/update-18-0-0/remove-symlink-target.d.ts +0 -6
  178. package/src/migrations/update-18-0-0/remove-symlink-target.js +0 -30
  179. package/src/migrations/update-18-0-0/remove-symlink-target.spec.ts +0 -40
  180. package/src/utils/ensure-dependencies.d.ts +0 -2
  181. package/src/utils/ensure-dependencies.js +0 -30
@@ -15,11 +15,6 @@
15
15
  }
16
16
 
17
17
  - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
18
- {
19
- return [self getBundleURL];
20
- }
21
-
22
- - (NSURL *)getBundleURL
23
18
  {
24
19
  #if DEBUG
25
20
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"<%= entryFileIos %>"];
@@ -26,11 +26,14 @@
26
26
  <true/>
27
27
  <key>NSAppTransportSecurity</key>
28
28
  <dict>
29
- <!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
30
- <key>NSAllowsArbitraryLoads</key>
31
- <false/>
32
- <key>NSAllowsLocalNetworking</key>
33
- <true/>
29
+ <key>NSExceptionDomains</key>
30
+ <dict>
31
+ <key>localhost</key>
32
+ <dict>
33
+ <key>NSExceptionAllowsInsecureHTTPLoads</key>
34
+ <true/>
35
+ </dict>
36
+ </dict>
34
37
  </dict>
35
38
  <key>NSLocationWhenInUseUsageDescription</key>
36
39
  <string></string>
@@ -177,6 +177,7 @@
177
177
  buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "<%= className %>" */;
178
178
  buildPhases = (
179
179
  C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
180
+ FD10A7F022414F080027D42C /* Start Packager */,
180
181
  13B07F871A680F5B00A75B9A /* Sources */,
181
182
  13B07F8C1A680F5B00A75B9A /* Frameworks */,
182
183
  13B07F8E1A680F5B00A75B9A /* Resources */,
@@ -263,7 +264,7 @@
263
264
  );
264
265
  runOnlyForDeploymentPostprocessing = 0;
265
266
  shellPath = /bin/sh;
266
- shellScript = "set -e\n\nWITH_ENVIRONMENT=\"<%= offsetFromRoot %>../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"<%= offsetFromRoot %>../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
267
+ shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
267
268
  };
268
269
  00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
269
270
  isa = PBXShellScriptBuildPhase;
@@ -377,6 +378,25 @@
377
378
  shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-<%= className %>-<%= className %>Tests/Pods-<%= className %>-<%= className %>Tests-resources.sh\"\n";
378
379
  showEnvVarsInLog = 0;
379
380
  };
381
+ FD10A7F022414F080027D42C /* Start Packager */ = {
382
+ isa = PBXShellScriptBuildPhase;
383
+ buildActionMask = 2147483647;
384
+ files = (
385
+ );
386
+ inputFileListPaths = (
387
+ );
388
+ inputPaths = (
389
+ );
390
+ name = "Start Packager";
391
+ outputFileListPaths = (
392
+ );
393
+ outputPaths = (
394
+ );
395
+ runOnlyForDeploymentPostprocessing = 0;
396
+ shellPath = /bin/sh;
397
+ shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
398
+ showEnvVarsInLog = 0;
399
+ };
380
400
  /* End PBXShellScriptBuildPhase section */
381
401
 
382
402
  /* Begin PBXSourcesBuildPhase section */
@@ -418,7 +438,7 @@
418
438
  "$(inherited)",
419
439
  );
420
440
  INFOPLIST_FILE = <%= className %>Tests/Info.plist;
421
- IPHONEOS_DEPLOYMENT_TARGET = 13.4;
441
+ IPHONEOS_DEPLOYMENT_TARGET = 12.4;
422
442
  LD_RUNPATH_SEARCH_PATHS = (
423
443
  "$(inherited)",
424
444
  "@executable_path/Frameworks",
@@ -442,7 +462,7 @@
442
462
  BUNDLE_LOADER = "$(TEST_HOST)";
443
463
  COPY_PHASE_STRIP = NO;
444
464
  INFOPLIST_FILE = <%= className %>Tests/Info.plist;
445
- IPHONEOS_DEPLOYMENT_TARGET = 13.4;
465
+ IPHONEOS_DEPLOYMENT_TARGET = 12.4;
446
466
  LD_RUNPATH_SEARCH_PATHS = (
447
467
  "$(inherited)",
448
468
  "@executable_path/Frameworks",
@@ -516,7 +536,7 @@
516
536
  buildSettings = {
517
537
  ALWAYS_SEARCH_USER_PATHS = NO;
518
538
  CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
519
- CLANG_CXX_LANGUAGE_STANDARD = "c++20";
539
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
520
540
  CLANG_CXX_LIBRARY = "libc++";
521
541
  CLANG_ENABLE_MODULES = YES;
522
542
  CLANG_ENABLE_OBJC_ARC = YES;
@@ -544,7 +564,7 @@
544
564
  COPY_PHASE_STRIP = NO;
545
565
  ENABLE_STRICT_OBJC_MSGSEND = YES;
546
566
  ENABLE_TESTABILITY = YES;
547
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
567
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
548
568
  GCC_C_LANGUAGE_STANDARD = gnu99;
549
569
  GCC_DYNAMIC_NO_PIC = NO;
550
570
  GCC_NO_COMMON_BLOCKS = YES;
@@ -560,7 +580,7 @@
560
580
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
561
581
  GCC_WARN_UNUSED_FUNCTION = YES;
562
582
  GCC_WARN_UNUSED_VARIABLE = YES;
563
- IPHONEOS_DEPLOYMENT_TARGET = 13.4;
583
+ IPHONEOS_DEPLOYMENT_TARGET = 12.4;
564
584
  LD_RUNPATH_SEARCH_PATHS = (
565
585
  /usr/lib/swift,
566
586
  "$(inherited)",
@@ -572,13 +592,14 @@
572
592
  );
573
593
  MTL_ENABLE_DEBUG_INFO = YES;
574
594
  ONLY_ACTIVE_ARCH = YES;
595
+ OTHER_CFLAGS = "$(inherited)";
575
596
  OTHER_CPLUSPLUSFLAGS = (
576
597
  "$(OTHER_CFLAGS)",
577
598
  "-DFOLLY_NO_CONFIG",
578
599
  "-DFOLLY_MOBILE=1",
579
600
  "-DFOLLY_USE_LIBCPP=1",
580
- "-DFOLLY_CFG_NO_COROUTINES=1",
581
601
  );
602
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
582
603
  SDKROOT = iphoneos;
583
604
  };
584
605
  name = Debug;
@@ -588,7 +609,7 @@
588
609
  buildSettings = {
589
610
  ALWAYS_SEARCH_USER_PATHS = NO;
590
611
  CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
591
- CLANG_CXX_LANGUAGE_STANDARD = "c++20";
612
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
592
613
  CLANG_CXX_LIBRARY = "libc++";
593
614
  CLANG_ENABLE_MODULES = YES;
594
615
  CLANG_ENABLE_OBJC_ARC = YES;
@@ -616,7 +637,7 @@
616
637
  COPY_PHASE_STRIP = YES;
617
638
  ENABLE_NS_ASSERTIONS = NO;
618
639
  ENABLE_STRICT_OBJC_MSGSEND = YES;
619
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
640
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
620
641
  GCC_C_LANGUAGE_STANDARD = gnu99;
621
642
  GCC_NO_COMMON_BLOCKS = YES;
622
643
  GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -625,7 +646,7 @@
625
646
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
626
647
  GCC_WARN_UNUSED_FUNCTION = YES;
627
648
  GCC_WARN_UNUSED_VARIABLE = YES;
628
- IPHONEOS_DEPLOYMENT_TARGET = 13.4;
649
+ IPHONEOS_DEPLOYMENT_TARGET = 12.4;
629
650
  LD_RUNPATH_SEARCH_PATHS = (
630
651
  /usr/lib/swift,
631
652
  "$(inherited)",
@@ -636,13 +657,14 @@
636
657
  "\"$(inherited)\"",
637
658
  );
638
659
  MTL_ENABLE_DEBUG_INFO = NO;
660
+ OTHER_CFLAGS = "$(inherited)";
639
661
  OTHER_CPLUSPLUSFLAGS = (
640
662
  "$(OTHER_CFLAGS)",
641
663
  "-DFOLLY_NO_CONFIG",
642
664
  "-DFOLLY_MOBILE=1",
643
665
  "-DFOLLY_USE_LIBCPP=1",
644
- "-DFOLLY_CFG_NO_COROUTINES=1",
645
666
  );
667
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
646
668
  SDKROOT = iphoneos;
647
669
  VALIDATE_PRODUCT = YES;
648
670
  };
@@ -1,5 +1,6 @@
1
1
  const { withNxMetro } = require('@nx/react-native');
2
2
  const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
3
+ const exclusionList = require('metro-config/src/defaults/exclusionList');
3
4
 
4
5
  const defaultConfig = getDefaultConfig(__dirname);
5
6
  const { assetExts, sourceExts } = defaultConfig.resolver;
@@ -16,7 +17,10 @@ const customConfig = {
16
17
  },
17
18
  resolver: {
18
19
  assetExts: assetExts.filter((ext) => ext !== 'svg'),
19
- sourceExts: [...sourceExts, 'cjs', 'mjs', 'svg'],
20
+ sourceExts: [...sourceExts, 'svg'],
21
+ blockList: exclusionList([/^(?!.*node_modules).*\/dist\/.*/]),
22
+ // unstable_enableSymlinks: true,
23
+ // unstable_enablePackageExports: true,
20
24
  },
21
25
  };
22
26
 
@@ -10,7 +10,7 @@ import {
10
10
  TouchableOpacity,
11
11
  Linking,
12
12
  } from 'react-native';
13
- import Svg, { G, Path } from 'react-native-svg';
13
+ import Svg, { Path } from 'react-native-svg';
14
14
 
15
15
  export const App = () => {
16
16
  const [whatsNextYCoord, setWhatsNextYCoord] = useState<number>(0);
@@ -19,10 +19,7 @@ export const App = () => {
19
19
  return (
20
20
  <>
21
21
  <StatusBar barStyle="dark-content" />
22
- <SafeAreaView
23
- style={{
24
- flex: 1,
25
- }}>
22
+ <SafeAreaView>
26
23
  <ScrollView
27
24
  ref={(ref) => {
28
25
  scrollViewRef.current = ref;
@@ -32,7 +29,7 @@ export const App = () => {
32
29
  >
33
30
  <View style={styles.section}>
34
31
  <Text style={styles.textLg}>Hello there,</Text>
35
- <Text style={[styles.textXL, styles.appTitleText]} testID="heading" role="heading">
32
+ <Text style={[styles.textXL, styles.appTitleText]} testID="heading">
36
33
  Welcome <%= displayName %> 👋
37
34
  </Text>
38
35
  </View>
@@ -311,14 +308,11 @@ export const App = () => {
311
308
  Install Nx Console for VSCode
312
309
  </Text>
313
310
  <Text style={[styles.textXS, styles.textLight]}>
314
- The official VSCode extension for Nx.
311
+ The official VSCode plugin for Nx.
315
312
  </Text>
316
313
  </View>
317
314
  </View>
318
315
  </TouchableOpacity>
319
- </View>
320
-
321
- <View style={[styles.section, styles.shadowBox]}>
322
316
  <TouchableOpacity
323
317
  onPress={() =>
324
318
  Linking.openURL(
@@ -327,20 +321,13 @@ export const App = () => {
327
321
  }
328
322
  >
329
323
  <View style={[styles.listItem, styles.learning]}>
330
- <Svg width={48} height={48} viewBox="20 20 60 60">
331
- <Path d="m22.5 22.5h60v60h-60z" />
332
- <G fill="#fff">
333
- <Path d="m29.03 71.25h22.5v3.75h-22.5z" />
334
- <Path d="m28.09 38 1.67-1.58a1.88 1.88 0 0 0 1.47.87c.64 0 1.06-.44 1.06-1.31v-5.98h2.58v6a3.48 3.48 0 0 1 -.87 2.6 3.56 3.56 0 0 1 -2.57.95 3.84 3.84 0 0 1 -3.34-1.55z" />
335
- <Path d="m36 30h7.53v2.19h-5v1.44h4.49v2h-4.42v1.49h5v2.21h-7.6z" />
336
- <Path d="m47.23 32.29h-2.8v-2.29h8.21v2.27h-2.81v7.1h-2.6z" />
337
- <Path d="m29.13 43.08h4.42a3.53 3.53 0 0 1 2.55.83 2.09 2.09 0 0 1 .6 1.53 2.16 2.16 0 0 1 -1.44 2.09 2.27 2.27 0 0 1 1.86 2.29c0 1.61-1.31 2.59-3.55 2.59h-4.44zm5 2.89c0-.52-.42-.8-1.18-.8h-1.29v1.64h1.24c.79 0 1.25-.26 1.25-.81zm-.9 2.66h-1.57v1.73h1.62c.8 0 1.24-.31 1.24-.86 0-.5-.4-.87-1.27-.87z" />
338
- <Path d="m38 43.08h4.1a4.19 4.19 0 0 1 3 1 2.93 2.93 0 0 1 .9 2.19 3 3 0 0 1 -1.93 2.89l2.24 3.27h-3l-1.88-2.84h-.87v2.84h-2.56zm4 4.5c.87 0 1.39-.43 1.39-1.11 0-.75-.54-1.12-1.4-1.12h-1.44v2.26z" />
339
- <Path d="m49.59 43h2.5l4 9.44h-2.79l-.67-1.69h-3.63l-.67 1.69h-2.71zm2.27 5.73-1-2.65-1.06 2.65z" />
340
- <Path d="m56.46 43.05h2.6v9.37h-2.6z" />
341
- <Path d="m60.06 43.05h2.42l3.37 5v-5h2.57v9.37h-2.26l-3.53-5.14v5.14h-2.57z" />
342
- <Path d="m68.86 51 1.45-1.73a4.84 4.84 0 0 0 3 1.13c.71 0 1.08-.24 1.08-.65 0-.4-.31-.6-1.59-.91-2-.46-3.53-1-3.53-2.93 0-1.74 1.37-3 3.62-3a5.89 5.89 0 0 1 3.86 1.25l-1.26 1.84a4.63 4.63 0 0 0 -2.62-.92c-.63 0-.94.25-.94.6 0 .42.32.61 1.63.91 2.14.46 3.44 1.16 3.44 2.91 0 1.91-1.51 3-3.79 3a6.58 6.58 0 0 1 -4.35-1.5z" />
343
- </G>
324
+ <Svg
325
+ width={48}
326
+ height={48}
327
+ fill="rgba(0, 122, 204, 1)"
328
+ viewBox="0 0 24 24"
329
+ >
330
+ <Path d="M0 0v24h24V0zm3.723 3.111h5v1.834h-1.39v6.277h1.39v1.834h-5v-1.834h1.444V4.945H3.723zm11.055 0H17v6.5c0 .612-.055 1.111-.222 1.556-.167.444-.39.777-.723 1.11-.277.279-.666.557-1.11.668a3.933 3.933 0 0 1-1.445.278c-.778 0-1.444-.167-1.944-.445a4.81 4.81 0 0 1-1.279-1.056l1.39-1.555c.277.334.555.555.833.722.277.167.611.278.945.278.389 0 .721-.111 1-.389.221-.278.333-.667.333-1.278zM2.222 19.5h9V21h-9z" />
344
331
  </Svg>
345
332
  <View style={styles.listItemTextContainer}>
346
333
  <Text
@@ -387,7 +374,7 @@ export const App = () => {
387
374
  </View>
388
375
  </View>
389
376
  <View style={styles.codeBlock}>
390
- <Text style={[styles.monospace]}>nx connect</Text>
377
+ <Text style={[styles.monospace]}>nx connect-to-nx-cloud</Text>
391
378
  </View>
392
379
  </View>
393
380
  </TouchableOpacity>
@@ -475,33 +462,9 @@ export const App = () => {
475
462
  @nx/react-native:component \
476
463
  </Text>
477
464
  <Text style={[styles.textXS, styles.monospace]}>
478
- ui/src/lib/button
465
+ button --project ui
479
466
  </Text>
480
467
  </View>
481
- <View style={styles.listItem}>
482
- <Svg
483
- width={24}
484
- height={24}
485
- stroke="#000000"
486
- fill="none"
487
- viewBox="0 0 24 24"
488
- >
489
- <Path
490
- strokeLinecap="round"
491
- strokeLinejoin="round"
492
- strokeWidth="2"
493
- d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
494
- />
495
- </Svg>
496
- <View style={styles.listItemTextContainer}>
497
- <Text style={styles.textSm}>
498
- View project details
499
- </Text>
500
- </View>
501
- </View>
502
- <View style={[styles.codeBlock, styles.marginBottomLg]}>
503
- <Text style={[styles.textXS, styles.monospace]}>nx show project <%= displayName %> --web</Text>
504
- </View>
505
468
  <View style={styles.listItem}>
506
469
  <Svg
507
470
  width={24}
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { NormalizedSchema } from './normalize-options';
3
+ export declare function addDetox(host: Tree, options: NormalizedSchema): Promise<import("@nx/devkit").GeneratorCallback>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDetox = void 0;
4
+ const detox_1 = require("@nx/detox");
5
+ const eslint_1 = require("@nx/eslint");
6
+ async function addDetox(host, options) {
7
+ if (options?.e2eTestRunner !== 'detox') {
8
+ return () => { };
9
+ }
10
+ return (0, detox_1.detoxApplicationGenerator)(host, {
11
+ ...options,
12
+ linter: eslint_1.Linter.EsLint,
13
+ e2eName: `${options.projectName}-e2e`,
14
+ e2eDirectory: `${options.appProjectRoot}-e2e`,
15
+ projectNameAndRootFormat: 'as-provided',
16
+ appProject: options.projectName,
17
+ appDisplayName: options.displayName,
18
+ appName: options.name,
19
+ framework: 'react-native',
20
+ skipFormat: true,
21
+ });
22
+ }
23
+ exports.addDetox = addDetox;
@@ -3,15 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addProject = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  function addProject(host, options) {
6
- const nxJson = (0, devkit_1.readNxJson)(host);
7
- const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string'
8
- ? p === '@nx/react-native/plugin'
9
- : p.plugin === '@nx/react-native/plugin');
10
6
  const project = {
11
7
  root: options.appProjectRoot,
12
8
  sourceRoot: `${options.appProjectRoot}/src`,
13
9
  projectType: 'application',
14
- targets: hasPlugin ? {} : getTargets(options),
10
+ targets: { ...getTargets(options) },
15
11
  tags: options.parsedTags,
16
12
  };
17
13
  (0, devkit_1.addProjectConfiguration)(host, options.projectName, {
@@ -23,19 +19,25 @@ function getTargets(options) {
23
19
  const architect = {};
24
20
  architect.start = {
25
21
  executor: '@nx/react-native:start',
26
- dependsOn: [],
22
+ dependsOn: ['ensure-symlink', 'sync-deps', 'pod-install'],
27
23
  options: {
28
24
  port: 8081,
29
25
  },
30
26
  };
27
+ architect.serve = {
28
+ executor: 'nx:run-commands',
29
+ options: {
30
+ command: `nx start ${options.projectName}`,
31
+ },
32
+ };
31
33
  architect['run-ios'] = {
32
34
  executor: '@nx/react-native:run-ios',
33
- dependsOn: [],
35
+ dependsOn: ['ensure-symlink', 'sync-deps', 'pod-install'],
34
36
  options: {},
35
37
  };
36
38
  architect['bundle-ios'] = {
37
39
  executor: '@nx/react-native:bundle',
38
- dependsOn: [],
40
+ dependsOn: ['ensure-symlink'],
39
41
  outputs: ['{options.bundleOutput}'],
40
42
  options: {
41
43
  entryFile: options.entryFile,
@@ -45,7 +47,7 @@ function getTargets(options) {
45
47
  };
46
48
  architect['run-android'] = {
47
49
  executor: '@nx/react-native:run-android',
48
- dependsOn: [],
50
+ dependsOn: ['ensure-symlink', 'sync-deps'],
49
51
  options: {},
50
52
  };
51
53
  architect['build-android'] = {
@@ -54,28 +56,22 @@ function getTargets(options) {
54
56
  `{projectRoot}/android/app/build/outputs/bundle`,
55
57
  `{projectRoot}/android/app/build/outputs/apk`,
56
58
  ],
57
- dependsOn: [],
59
+ dependsOn: ['ensure-symlink', 'sync-deps'],
58
60
  options: {},
59
61
  };
60
62
  architect['build-ios'] = {
61
63
  executor: '@nx/react-native:build-ios',
62
64
  outputs: ['{projectRoot}/ios/build/Build'],
63
- dependsOn: [],
65
+ dependsOn: ['ensure-symlink', 'sync-deps', 'pod-install'],
64
66
  options: {},
65
67
  };
66
68
  architect['pod-install'] = {
67
69
  executor: '@nx/react-native:pod-install',
68
- dependsOn: ['sync-deps'],
69
- outputs: ['{projectRoot}/ios/Pods', '{projectRoot}/ios/Podfile.lock'],
70
- options: {},
71
- };
72
- architect.upgrade = {
73
- executor: '@nx/react-native:upgrade',
74
70
  options: {},
75
71
  };
76
72
  architect['bundle-android'] = {
77
73
  executor: '@nx/react-native:bundle',
78
- dependsOn: [],
74
+ dependsOn: ['ensure-symlink'],
79
75
  outputs: ['{options.bundleOutput}'],
80
76
  options: {
81
77
  entryFile: options.entryFile,
@@ -87,5 +83,9 @@ function getTargets(options) {
87
83
  executor: '@nx/react-native:sync-deps',
88
84
  options: {},
89
85
  };
86
+ architect['ensure-symlink'] = {
87
+ executor: '@nx/react-native:ensure-symlink',
88
+ options: {},
89
+ };
90
90
  return architect;
91
91
  }
@@ -2,7 +2,6 @@ import { Tree } from '@nx/devkit';
2
2
  import { Schema } from '../schema';
3
3
  export interface NormalizedSchema extends Schema {
4
4
  className: string;
5
- fileName: string;
6
5
  projectName: string;
7
6
  appProjectRoot: string;
8
7
  lowerCaseName: string;
@@ -10,11 +9,5 @@ export interface NormalizedSchema extends Schema {
10
9
  androidProjectRoot: string;
11
10
  parsedTags: string[];
12
11
  entryFile: string;
13
- rootProject: boolean;
14
- e2eProjectName: string;
15
- e2eProjectRoot: string;
16
- e2eWebServerAddress: string;
17
- e2eWebServerTarget: string;
18
- e2ePort: number;
19
12
  }
20
13
  export declare function normalizeOptions(host: Tree, options: Schema): Promise<NormalizedSchema>;
@@ -12,45 +12,19 @@ async function normalizeOptions(host, options) {
12
12
  callingGenerator: '@nx/react-native:application',
13
13
  });
14
14
  options.projectNameAndRootFormat = projectNameAndRootFormat;
15
- const nxJson = (0, devkit_1.readNxJson)(host);
16
- const addPluginDefault = process.env.NX_ADD_PLUGINS !== 'false' &&
17
- nxJson.useInferencePlugins !== false;
18
- options.addPlugin ??= addPluginDefault;
19
- const { className, fileName } = (0, devkit_1.names)(options.name);
15
+ const { className } = (0, devkit_1.names)(options.name);
20
16
  const iosProjectRoot = (0, devkit_1.joinPathFragments)(appProjectRoot, 'ios');
21
17
  const androidProjectRoot = (0, devkit_1.joinPathFragments)(appProjectRoot, 'android');
22
- const rootProject = appProjectRoot === '.';
23
- let e2eWebServerTarget = 'start';
24
- if (options.addPlugin) {
25
- if (nxJson.plugins) {
26
- for (const plugin of nxJson.plugins) {
27
- if (options.bundler === 'vite' &&
28
- typeof plugin === 'object' &&
29
- plugin.plugin === '@nx/react-native/plugin' &&
30
- plugin.options.startTargetName) {
31
- e2eWebServerTarget = plugin.options
32
- .startTargetName;
33
- }
34
- }
35
- }
36
- }
37
- let e2ePort = 4200;
38
- if (nxJson.targetDefaults?.[e2eWebServerTarget] &&
39
- nxJson.targetDefaults?.[e2eWebServerTarget].options?.port) {
40
- e2ePort = nxJson.targetDefaults?.[e2eWebServerTarget].options?.port;
41
- }
42
- const e2eProjectName = rootProject ? 'e2e' : `${fileName}-e2e`;
43
- const e2eProjectRoot = rootProject ? 'e2e' : `${appProjectRoot}-e2e`;
44
- const e2eWebServerAddress = `http://localhost:${e2ePort}`;
45
18
  const parsedTags = options.tags
46
19
  ? options.tags.split(',').map((s) => s.trim())
47
20
  : [];
48
21
  const entryFile = options.js ? 'src/main.js' : 'src/main.tsx';
49
22
  return {
50
23
  ...options,
24
+ unitTestRunner: options.unitTestRunner || 'jest',
25
+ e2eTestRunner: options.e2eTestRunner || 'detox',
51
26
  name: projectNames.projectSimpleName,
52
27
  className,
53
- fileName,
54
28
  lowerCaseName: className.toLowerCase(),
55
29
  displayName: options.displayName || className,
56
30
  projectName: appProjectName,
@@ -59,12 +33,6 @@ async function normalizeOptions(host, options) {
59
33
  androidProjectRoot,
60
34
  parsedTags,
61
35
  entryFile,
62
- rootProject,
63
- e2eProjectName,
64
- e2eProjectRoot,
65
- e2eWebServerAddress,
66
- e2eWebServerTarget,
67
- e2ePort,
68
36
  };
69
37
  }
70
38
  exports.normalizeOptions = normalizeOptions;