@nx/expo 16.0.0-beta.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 (243) hide show
  1. package/.eslintrc.json +19 -0
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +22 -0
  4. package/README.md +63 -0
  5. package/collection.json +0 -0
  6. package/docs/build-list-examples.md +71 -0
  7. package/docs/prebuild-examples.md +70 -0
  8. package/docs/run-examples.md +91 -0
  9. package/docs/start-examples.md +98 -0
  10. package/executors.json +116 -0
  11. package/generators.json +61 -0
  12. package/index.d.ts +4 -0
  13. package/index.js +12 -0
  14. package/index.js.map +1 -0
  15. package/migrations.json +734 -0
  16. package/package.json +59 -0
  17. package/plugins/jest/svg-mock.d.ts +0 -0
  18. package/plugins/jest/svg-mock.js +4 -0
  19. package/plugins/jest/svg-mock.js.map +1 -0
  20. package/plugins/metro-resolver.d.ts +1 -0
  21. package/plugins/metro-resolver.js +135 -0
  22. package/plugins/metro-resolver.js.map +1 -0
  23. package/plugins/with-nx-metro.d.ts +8 -0
  24. package/plugins/with-nx-metro.js +31 -0
  25. package/plugins/with-nx-metro.js.map +1 -0
  26. package/plugins/with-nx-webpack.d.ts +5 -0
  27. package/plugins/with-nx-webpack.js +52 -0
  28. package/plugins/with-nx-webpack.js.map +1 -0
  29. package/project.json +61 -0
  30. package/src/executors/build/build.impl.d.ts +6 -0
  31. package/src/executors/build/build.impl.js +62 -0
  32. package/src/executors/build/build.impl.js.map +1 -0
  33. package/src/executors/build/compat.d.ts +2 -0
  34. package/src/executors/build/compat.js +6 -0
  35. package/src/executors/build/compat.js.map +1 -0
  36. package/src/executors/build/schema.d.ts +14 -0
  37. package/src/executors/build/schema.json +60 -0
  38. package/src/executors/build-list/build-fragment.d.ts +54 -0
  39. package/src/executors/build-list/build-list.impl.d.ts +7 -0
  40. package/src/executors/build-list/build-list.impl.js +86 -0
  41. package/src/executors/build-list/build-list.impl.js.map +1 -0
  42. package/src/executors/build-list/compat.d.ts +2 -0
  43. package/src/executors/build-list/compat.js +6 -0
  44. package/src/executors/build-list/compat.js.map +1 -0
  45. package/src/executors/build-list/schema.d.ts +25 -0
  46. package/src/executors/build-list/schema.json +79 -0
  47. package/src/executors/download/compat.d.ts +2 -0
  48. package/src/executors/download/compat.js +6 -0
  49. package/src/executors/download/compat.js.map +1 -0
  50. package/src/executors/download/download.impl.d.ts +15 -0
  51. package/src/executors/download/download.impl.js +101 -0
  52. package/src/executors/download/download.impl.js.map +1 -0
  53. package/src/executors/download/schema.d.ts +3 -0
  54. package/src/executors/download/schema.json +59 -0
  55. package/src/executors/ensure-symlink/compat.d.ts +2 -0
  56. package/src/executors/ensure-symlink/compat.js +6 -0
  57. package/src/executors/ensure-symlink/compat.js.map +1 -0
  58. package/src/executors/ensure-symlink/ensure-symlink.impl.d.ts +5 -0
  59. package/src/executors/ensure-symlink/ensure-symlink.impl.js +13 -0
  60. package/src/executors/ensure-symlink/ensure-symlink.impl.js.map +1 -0
  61. package/src/executors/ensure-symlink/schema.json +11 -0
  62. package/src/executors/export/compat.d.ts +2 -0
  63. package/src/executors/export/compat.js +6 -0
  64. package/src/executors/export/compat.js.map +1 -0
  65. package/src/executors/export/export.impl.d.ts +6 -0
  66. package/src/executors/export/export.impl.js +69 -0
  67. package/src/executors/export/export.impl.js.map +1 -0
  68. package/src/executors/export/schema.d.ts +11 -0
  69. package/src/executors/export/schema.json +48 -0
  70. package/src/executors/install/compat.d.ts +2 -0
  71. package/src/executors/install/compat.js +6 -0
  72. package/src/executors/install/compat.js.map +1 -0
  73. package/src/executors/install/install.impl.d.ts +7 -0
  74. package/src/executors/install/install.impl.js +70 -0
  75. package/src/executors/install/install.impl.js.map +1 -0
  76. package/src/executors/install/schema.d.ts +7 -0
  77. package/src/executors/install/schema.json +34 -0
  78. package/src/executors/prebuild/compat.d.ts +2 -0
  79. package/src/executors/prebuild/compat.js +6 -0
  80. package/src/executors/prebuild/compat.js.map +1 -0
  81. package/src/executors/prebuild/prebuild.impl.d.ts +7 -0
  82. package/src/executors/prebuild/prebuild.impl.js +70 -0
  83. package/src/executors/prebuild/prebuild.impl.js.map +1 -0
  84. package/src/executors/prebuild/schema.d.ts +7 -0
  85. package/src/executors/prebuild/schema.json +35 -0
  86. package/src/executors/run/compat.d.ts +2 -0
  87. package/src/executors/run/compat.js +6 -0
  88. package/src/executors/run/compat.js.map +1 -0
  89. package/src/executors/run/run.impl.d.ts +6 -0
  90. package/src/executors/run/run.impl.js +112 -0
  91. package/src/executors/run/run.impl.js.map +1 -0
  92. package/src/executors/run/schema.d.ts +25 -0
  93. package/src/executors/run/schema.json +71 -0
  94. package/src/executors/start/compat.d.ts +2 -0
  95. package/src/executors/start/compat.js +6 -0
  96. package/src/executors/start/compat.js.map +1 -0
  97. package/src/executors/start/schema.d.ts +22 -0
  98. package/src/executors/start/schema.json +93 -0
  99. package/src/executors/start/start.impl.d.ts +7 -0
  100. package/src/executors/start/start.impl.js +73 -0
  101. package/src/executors/start/start.impl.js.map +1 -0
  102. package/src/executors/sync-deps/compat.d.ts +2 -0
  103. package/src/executors/sync-deps/compat.js +6 -0
  104. package/src/executors/sync-deps/compat.js.map +1 -0
  105. package/src/executors/sync-deps/schema.d.ts +4 -0
  106. package/src/executors/sync-deps/schema.json +28 -0
  107. package/src/executors/sync-deps/sync-deps.impl.d.ts +8 -0
  108. package/src/executors/sync-deps/sync-deps.impl.js +62 -0
  109. package/src/executors/sync-deps/sync-deps.impl.js.map +1 -0
  110. package/src/executors/update/compat.d.ts +2 -0
  111. package/src/executors/update/compat.js +6 -0
  112. package/src/executors/update/compat.js.map +1 -0
  113. package/src/executors/update/schema.d.ts +15 -0
  114. package/src/executors/update/schema.json +65 -0
  115. package/src/executors/update/update.impl.d.ts +6 -0
  116. package/src/executors/update/update.impl.js +59 -0
  117. package/src/executors/update/update.impl.js.map +1 -0
  118. package/src/generators/application/application.d.ts +5 -0
  119. package/src/generators/application/application.js +33 -0
  120. package/src/generators/application/application.js.map +1 -0
  121. package/src/generators/application/files/app.json.template +33 -0
  122. package/src/generators/application/files/assets/adaptive-icon.png +0 -0
  123. package/src/generators/application/files/assets/favicon.png +0 -0
  124. package/src/generators/application/files/assets/icon.png +0 -0
  125. package/src/generators/application/files/assets/splash.png +0 -0
  126. package/src/generators/application/files/babel.config.js.template +6 -0
  127. package/src/generators/application/files/eas.json.template +28 -0
  128. package/src/generators/application/files/index.js.template +8 -0
  129. package/src/generators/application/files/metro.config.js.template +25 -0
  130. package/src/generators/application/files/package.json.template +17 -0
  131. package/src/generators/application/files/src/app/App.spec.tsx.template +9 -0
  132. package/src/generators/application/files/src/app/App.tsx.template +694 -0
  133. package/src/generators/application/files/test-setup.ts.template +1 -0
  134. package/src/generators/application/files/tsconfig.app.json.template +9 -0
  135. package/src/generators/application/files/tsconfig.json.template +26 -0
  136. package/src/generators/application/lib/add-detox.d.ts +3 -0
  137. package/src/generators/application/lib/add-detox.js +16 -0
  138. package/src/generators/application/lib/add-detox.js.map +1 -0
  139. package/src/generators/application/lib/add-project.d.ts +3 -0
  140. package/src/generators/application/lib/add-project.js +91 -0
  141. package/src/generators/application/lib/add-project.js.map +1 -0
  142. package/src/generators/application/lib/create-application-files.d.ts +3 -0
  143. package/src/generators/application/lib/create-application-files.js +24 -0
  144. package/src/generators/application/lib/create-application-files.js.map +1 -0
  145. package/src/generators/application/lib/normalize-options.d.ts +10 -0
  146. package/src/generators/application/lib/normalize-options.js +30 -0
  147. package/src/generators/application/lib/normalize-options.js.map +1 -0
  148. package/src/generators/application/schema.d.ts +19 -0
  149. package/src/generators/application/schema.json +88 -0
  150. package/src/generators/component/component.d.ts +5 -0
  151. package/src/generators/component/component.js +51 -0
  152. package/src/generators/component/component.js.map +1 -0
  153. package/src/generators/component/files/__fileName__.spec.tsx.template +11 -0
  154. package/src/generators/component/files/__fileName__.tsx.template +32 -0
  155. package/src/generators/component/lib/add-import.d.ts +3 -0
  156. package/src/generators/component/lib/add-import.js +30 -0
  157. package/src/generators/component/lib/add-import.js.map +1 -0
  158. package/src/generators/component/lib/normalize-options.d.ts +8 -0
  159. package/src/generators/component/lib/normalize-options.js +58 -0
  160. package/src/generators/component/lib/normalize-options.js.map +1 -0
  161. package/src/generators/component/schema.d.ts +15 -0
  162. package/src/generators/component/schema.json +83 -0
  163. package/src/generators/init/init.d.ts +6 -0
  164. package/src/generators/init/init.js +69 -0
  165. package/src/generators/init/init.js.map +1 -0
  166. package/src/generators/init/lib/add-git-ignore-entry.d.ts +2 -0
  167. package/src/generators/init/lib/add-git-ignore-entry.js +19 -0
  168. package/src/generators/init/lib/add-git-ignore-entry.js.map +1 -0
  169. package/src/generators/init/lib/gitignore-entries.d.ts +1 -0
  170. package/src/generators/init/lib/gitignore-entries.js +20 -0
  171. package/src/generators/init/lib/gitignore-entries.js.map +1 -0
  172. package/src/generators/init/lib/init-root-babel-config.d.ts +2 -0
  173. package/src/generators/init/lib/init-root-babel-config.js +14 -0
  174. package/src/generators/init/lib/init-root-babel-config.js.map +1 -0
  175. package/src/generators/init/schema.d.ts +7 -0
  176. package/src/generators/init/schema.json +38 -0
  177. package/src/generators/library/files/lib/README.md +7 -0
  178. package/src/generators/library/files/lib/babel.config.json +17 -0
  179. package/src/generators/library/files/lib/package.json.template +5 -0
  180. package/src/generators/library/files/lib/src/index.ts.template +0 -0
  181. package/src/generators/library/files/lib/test-setup.ts.template +1 -0
  182. package/src/generators/library/files/lib/tsconfig.json.template +16 -0
  183. package/src/generators/library/files/lib/tsconfig.lib.json.template +9 -0
  184. package/src/generators/library/lib/normalize-options.d.ts +12 -0
  185. package/src/generators/library/lib/normalize-options.js +27 -0
  186. package/src/generators/library/lib/normalize-options.js.map +1 -0
  187. package/src/generators/library/library.d.ts +5 -0
  188. package/src/generators/library/library.js +101 -0
  189. package/src/generators/library/library.js.map +1 -0
  190. package/src/generators/library/schema.d.ts +22 -0
  191. package/src/generators/library/schema.json +99 -0
  192. package/src/migrations/update-14-0-0/add-project-root-metro-config-14-0-0.d.ts +6 -0
  193. package/src/migrations/update-14-0-0/add-project-root-metro-config-14-0-0.js +35 -0
  194. package/src/migrations/update-14-0-0/add-project-root-metro-config-14-0-0.js.map +1 -0
  195. package/src/migrations/update-14-1-2/add-eject-target-14-1-2.d.ts +5 -0
  196. package/src/migrations/update-14-1-2/add-eject-target-14-1-2.js +25 -0
  197. package/src/migrations/update-14-1-2/add-eject-target-14-1-2.js.map +1 -0
  198. package/src/migrations/update-14-4-3/add-eas-build-target.d.ts +5 -0
  199. package/src/migrations/update-14-4-3/add-eas-build-target.js +42 -0
  200. package/src/migrations/update-14-4-3/add-eas-build-target.js.map +1 -0
  201. package/src/migrations/update-14-5-1/add-eas-update-target.d.ts +5 -0
  202. package/src/migrations/update-14-5-1/add-eas-update-target.js +27 -0
  203. package/src/migrations/update-14-5-1/add-eas-update-target.js.map +1 -0
  204. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.d.ts +9 -0
  205. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.js +66 -0
  206. package/src/migrations/update-15-0-3/add-new-expo-cli-targets.js.map +1 -0
  207. package/src/migrations/update-15-0-3/change-jest-preset.d.ts +8 -0
  208. package/src/migrations/update-15-0-3/change-jest-preset.js +74 -0
  209. package/src/migrations/update-15-0-3/change-jest-preset.js.map +1 -0
  210. package/src/migrations/update-15-8-3/change-webpack-to-metro.d.ts +8 -0
  211. package/src/migrations/update-15-8-3/change-webpack-to-metro.js +37 -0
  212. package/src/migrations/update-15-8-3/change-webpack-to-metro.js.map +1 -0
  213. package/src/migrations/update-16-0-0/remove-deprecated-targets.d.ts +5 -0
  214. package/src/migrations/update-16-0-0/remove-deprecated-targets.js +36 -0
  215. package/src/migrations/update-16-0-0/remove-deprecated-targets.js.map +1 -0
  216. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  217. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +13 -0
  218. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js.map +1 -0
  219. package/src/utils/add-jest.d.ts +2 -0
  220. package/src/utils/add-jest.js +39 -0
  221. package/src/utils/add-jest.js.map +1 -0
  222. package/src/utils/add-linting.d.ts +3 -0
  223. package/src/utils/add-linting.js +37 -0
  224. package/src/utils/add-linting.js.map +1 -0
  225. package/src/utils/ensure-node-modules-symlink.d.ts +9 -0
  226. package/src/utils/ensure-node-modules-symlink.js +29 -0
  227. package/src/utils/ensure-node-modules-symlink.js.map +1 -0
  228. package/src/utils/find-all-npm-dependencies.d.ts +2 -0
  229. package/src/utils/find-all-npm-dependencies.js +26 -0
  230. package/src/utils/find-all-npm-dependencies.js.map +1 -0
  231. package/src/utils/pod-install-task.d.ts +8 -0
  232. package/src/utils/pod-install-task.js +53 -0
  233. package/src/utils/pod-install-task.js.map +1 -0
  234. package/src/utils/symlink-task.d.ts +2 -0
  235. package/src/utils/symlink-task.js +19 -0
  236. package/src/utils/symlink-task.js.map +1 -0
  237. package/src/utils/versions.d.ts +20 -0
  238. package/src/utils/versions.js +24 -0
  239. package/src/utils/versions.js.map +1 -0
  240. package/tsconfig.json +13 -0
  241. package/tsconfig.lib.json +11 -0
  242. package/tsconfig.spec.json +20 -0
  243. package/typings/svg.d.ts +6 -0
@@ -0,0 +1,694 @@
1
+ /* eslint-disable jsx-a11y/accessible-emoji */
2
+ import React, { useRef, useState } from 'react';
3
+ import {
4
+ SafeAreaView,
5
+ StyleSheet,
6
+ ScrollView,
7
+ View,
8
+ Text,
9
+ StatusBar,
10
+ TouchableOpacity,
11
+ Linking,
12
+ } from 'react-native';
13
+ import Svg, { Path } from 'react-native-svg';
14
+
15
+ export const App = () => {
16
+ const [whatsNextYCoord, setWhatsNextYCoord] = useState<number>(0);
17
+ const scrollViewRef = useRef<null | ScrollView>(null);
18
+
19
+ return (
20
+ <>
21
+ <StatusBar barStyle="dark-content" />
22
+ <SafeAreaView>
23
+ <ScrollView
24
+ ref={(ref) => {
25
+ scrollViewRef.current = ref;
26
+ }}
27
+ contentInsetAdjustmentBehavior="automatic"
28
+ style={styles.scrollView}
29
+ >
30
+ <View style={styles.section}>
31
+ <Text style={styles.textLg}>Hello there,</Text>
32
+ <Text style={[styles.textXL, styles.appTitleText]} testID="heading">
33
+ Welcome <%= displayName %> 👋
34
+ </Text>
35
+ </View>
36
+ <View style={styles.section}>
37
+ <View style={styles.hero}>
38
+ <View style={styles.heroTitle}>
39
+ <Svg
40
+ width={32}
41
+ height={32}
42
+ stroke="hsla(162, 47%, 50%, 1)"
43
+ fill="none"
44
+ viewBox="0 0 24 24"
45
+ >
46
+ <Path
47
+ strokeLinecap="round"
48
+ strokeLinejoin="round"
49
+ strokeWidth="2"
50
+ d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"
51
+ />
52
+ </Svg>
53
+ <Text style={[styles.textLg, styles.heroTitleText]}>
54
+ You're up and running
55
+ </Text>
56
+ </View>
57
+ <TouchableOpacity
58
+ style={styles.whatsNextButton}
59
+ onPress={() => {
60
+ scrollViewRef.current?.scrollTo({
61
+ x: 0,
62
+ y: whatsNextYCoord,
63
+ });
64
+ }}
65
+ >
66
+ <Text style={[styles.textMd, styles.textCenter]}>
67
+ What's next?
68
+ </Text>
69
+ </TouchableOpacity>
70
+ </View>
71
+ </View>
72
+ <View style={styles.section}>
73
+ <View style={[styles.shadowBox]}>
74
+ <Text style={[styles.marginBottomMd, styles.textLg]}>
75
+ Learning materials
76
+ </Text>
77
+ <TouchableOpacity
78
+ style={[styles.listItem, styles.learning]}
79
+ onPress={() =>
80
+ Linking.openURL(
81
+ 'https://nx.dev/getting-started/intro?utm_source=nx-project'
82
+ )
83
+ }
84
+ >
85
+ <Svg
86
+ width={24}
87
+ height={24}
88
+ stroke="#000000"
89
+ fill="none"
90
+ viewBox="0 0 24 24"
91
+ >
92
+ <Path
93
+ strokeLinecap="round"
94
+ strokeLinejoin="round"
95
+ strokeWidth="2"
96
+ d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"
97
+ />
98
+ </Svg>
99
+ <View style={styles.listItemTextContainer}>
100
+ <Text style={[styles.textMd]}>Documentation</Text>
101
+ <Text style={[styles.text2XS, styles.textSubtle]}>
102
+ Everything is in there
103
+ </Text>
104
+ </View>
105
+ <Svg
106
+ width={18}
107
+ height={18}
108
+ stroke="#000000"
109
+ fill="none"
110
+ viewBox="0 0 24 24"
111
+ >
112
+ <Path
113
+ strokeLinecap="round"
114
+ strokeLinejoin="round"
115
+ strokeWidth="2"
116
+ d="M9 5l7 7-7 7"
117
+ />
118
+ </Svg>
119
+ </TouchableOpacity>
120
+ <TouchableOpacity
121
+ style={[styles.listItem, styles.learning]}
122
+ onPress={() =>
123
+ Linking.openURL('https://blog.nrwl.io/?utm_source=nx-project')
124
+ }
125
+ >
126
+ <Svg
127
+ width={24}
128
+ height={24}
129
+ stroke="#000000"
130
+ fill="none"
131
+ viewBox="0 0 24 24"
132
+ >
133
+ <Path
134
+ strokeLinecap="round"
135
+ strokeLinejoin="round"
136
+ strokeWidth="2"
137
+ d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"
138
+ />
139
+ </Svg>
140
+ <View style={styles.listItemTextContainer}>
141
+ <Text style={[styles.textMd]}>Blog</Text>
142
+ <Text style={[styles.text2XS, styles.textSubtle]}>
143
+ Changelog, features & events
144
+ </Text>
145
+ </View>
146
+ <Svg
147
+ width={18}
148
+ height={18}
149
+ stroke="#000000"
150
+ fill="none"
151
+ viewBox="0 0 24 24"
152
+ >
153
+ <Path
154
+ strokeLinecap="round"
155
+ strokeLinejoin="round"
156
+ strokeWidth="2"
157
+ d="M9 5l7 7-7 7"
158
+ />
159
+ </Svg>
160
+ </TouchableOpacity>
161
+ <TouchableOpacity
162
+ style={[styles.listItem, styles.learning]}
163
+ onPress={() =>
164
+ Linking.openURL(
165
+ 'https://www.youtube.com/@NxDevtools/videos?utm_source=nx-project'
166
+ )
167
+ }
168
+ >
169
+ <Svg width={24} height={24} fill="#000000" viewBox="0 0 24 24">
170
+ <Path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" />
171
+ </Svg>
172
+ <View style={styles.listItemTextContainer}>
173
+ <Text style={[styles.textMd]}>Youtube channel</Text>
174
+ <Text style={[styles.text2XS, styles.textSubtle]}>
175
+ Nx Show, talks & tutorials
176
+ </Text>
177
+ </View>
178
+ <Svg
179
+ width={18}
180
+ height={18}
181
+ stroke="#000000"
182
+ fill="none"
183
+ viewBox="0 0 24 24"
184
+ >
185
+ <Path
186
+ strokeLinecap="round"
187
+ strokeLinejoin="round"
188
+ strokeWidth="2"
189
+ d="M9 5l7 7-7 7"
190
+ />
191
+ </Svg>
192
+ </TouchableOpacity>
193
+ <TouchableOpacity
194
+ style={[styles.listItem, styles.learning]}
195
+ onPress={() =>
196
+ Linking.openURL(
197
+ 'https://nx.dev/react-tutorial/1-code-generation?utm_source=nx-project'
198
+ )
199
+ }
200
+ >
201
+ <Svg
202
+ width={24}
203
+ height={24}
204
+ stroke="#000000"
205
+ fill="none"
206
+ viewBox="0 0 24 24"
207
+ >
208
+ <Path
209
+ strokeLinecap="round"
210
+ strokeLinejoin="round"
211
+ strokeWidth="2"
212
+ d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"
213
+ />
214
+ </Svg>
215
+ <View style={styles.listItemTextContainer}>
216
+ <Text style={[styles.textMd]}>Interactive tutorials</Text>
217
+ <Text style={[styles.text2XS, styles.textSubtle]}>
218
+ Create an app, step by step
219
+ </Text>
220
+ </View>
221
+ <Svg
222
+ width={18}
223
+ height={18}
224
+ stroke="#000000"
225
+ fill="none"
226
+ viewBox="0 0 24 24"
227
+ >
228
+ <Path
229
+ strokeLinecap="round"
230
+ strokeLinejoin="round"
231
+ strokeWidth="2"
232
+ d="M9 5l7 7-7 7"
233
+ ></Path>
234
+ </Svg>
235
+ </TouchableOpacity>
236
+ <TouchableOpacity
237
+ style={[styles.listItem, styles.learning]}
238
+ onPress={() =>
239
+ Linking.openURL(
240
+ 'https://nxplaybook.com/?utm_source=nx-project'
241
+ )
242
+ }
243
+ >
244
+ <Svg
245
+ width={24}
246
+ height={24}
247
+ stroke="#000000"
248
+ fill="none"
249
+ viewBox="0 0 24 24"
250
+ >
251
+ <Path d="M12 14l9-5-9-5-9 5 9 5z"></Path>
252
+ <Path d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z"></Path>
253
+ <Path
254
+ strokeLinecap="round"
255
+ strokeLinejoin="round"
256
+ strokeWidth="2"
257
+ d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222"
258
+ ></Path>
259
+ </Svg>
260
+ <View style={styles.listItemTextContainer}>
261
+ <Text style={[styles.textMd]}>Video courses</Text>
262
+ <Text style={[styles.text2XS, styles.textSubtle]}>
263
+ Nx custom courses
264
+ </Text>
265
+ </View>
266
+ <Svg
267
+ width={18}
268
+ height={18}
269
+ stroke="#000000"
270
+ fill="none"
271
+ viewBox="0 0 24 24"
272
+ >
273
+ <Path
274
+ strokeLinecap="round"
275
+ strokeLinejoin="round"
276
+ strokeWidth="2"
277
+ d="M9 5l7 7-7 7"
278
+ ></Path>
279
+ </Svg>
280
+ </TouchableOpacity>
281
+ </View>
282
+ </View>
283
+ <View style={[styles.section, styles.shadowBox]}>
284
+ <TouchableOpacity
285
+ onPress={() =>
286
+ Linking.openURL(
287
+ 'https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console&utm_source=nx-project'
288
+ )
289
+ }
290
+ >
291
+ <View style={[styles.listItem, styles.learning]}>
292
+ <Svg
293
+ width={48}
294
+ height={48}
295
+ fill="rgba(0, 122, 204, 1)"
296
+ viewBox="0 0 24 24"
297
+ >
298
+ <Path d="M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z" />
299
+ </Svg>
300
+ <View style={styles.listItemTextContainer}>
301
+ <Text
302
+ style={[
303
+ styles.textMd,
304
+ styles.textBold,
305
+ styles.marginBottomSm,
306
+ ]}
307
+ >
308
+ Install Nx Console for VSCode
309
+ </Text>
310
+ <Text style={[styles.textXS, styles.textLight]}>
311
+ The official VSCode plugin for Nx.
312
+ </Text>
313
+ </View>
314
+ </View>
315
+ </TouchableOpacity>
316
+ <TouchableOpacity
317
+ onPress={() =>
318
+ Linking.openURL(
319
+ 'https://plugins.jetbrains.com/plugin/21060-nx-console'
320
+ )
321
+ }
322
+ >
323
+ <View style={[styles.listItem, styles.learning]}>
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" />
331
+ </Svg>
332
+ <View style={styles.listItemTextContainer}>
333
+ <Text
334
+ style={[
335
+ styles.textMd,
336
+ styles.textBold,
337
+ styles.marginBottomSm,
338
+ ]}
339
+ >
340
+ Install Nx Console for JetBrains
341
+ </Text>
342
+ <Text style={[styles.textXS, styles.textLight]}>
343
+ Available for WebStorm, Intellij IDEA Ultimate and more!
344
+ </Text>
345
+ </View>
346
+ </View>
347
+ </TouchableOpacity>
348
+ </View>
349
+ <View style={styles.section}>
350
+ <TouchableOpacity
351
+ onPress={() =>
352
+ Linking.openURL('https://nx.app/?utm_source=nx-project')
353
+ }
354
+ >
355
+ <View style={styles.shadowBox}>
356
+ <View style={[styles.listItem, styles.marginBottomMd]}>
357
+ <Svg width={48} height={48} viewBox="0 0 24 24" stroke="currentColor" fill="transparent">
358
+ <Path strokeWidth="2" d="M23 3.75V6.5c-3.036 0-5.5 2.464-5.5 5.5s-2.464 5.5-5.5 5.5-5.5 2.464-5.5 5.5H3.75C2.232 23 1 21.768 1 20.25V3.75C1 2.232 2.232 1 3.75 1h16.5C21.768 1 23 2.232 23 3.75Z" />
359
+ <Path strokeWidth="2" d="M23 6v14.1667C23 21.7307 21.7307 23 20.1667 23H6c0-3.128 2.53867-5.6667 5.6667-5.6667 3.128 0 5.6666-2.5386 5.6666-5.6666C17.3333 8.53867 19.872 6 23 6Z" />
360
+ </Svg>
361
+ <View style={styles.listItemTextContainer}>
362
+ <Text
363
+ style={[
364
+ styles.textMd,
365
+ styles.textBold,
366
+ styles.marginBottomSm,
367
+ ]}
368
+ >
369
+ Nx Cloud
370
+ </Text>
371
+ <Text style={[styles.textXS, styles.textLight]}>
372
+ Enable faster CI & better DX
373
+ </Text>
374
+ </View>
375
+ </View>
376
+ <View style={styles.codeBlock}>
377
+ <Text style={[styles.monospace]}>nx connect-to-nx-cloud</Text>
378
+ </View>
379
+ </View>
380
+ </TouchableOpacity>
381
+ </View>
382
+ <View style={styles.section}>
383
+ <TouchableOpacity
384
+ onPress={() =>
385
+ Linking.openURL('https://nx.app/?utm_source=nx-project')
386
+ }
387
+ >
388
+ <View style={[styles.listItem, styles.shadowBox]}>
389
+ <Svg width={48} height={48} fill="#000000" viewBox="0 0 24 24">
390
+ <Path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
391
+ </Svg>
392
+ <View style={styles.listItemTextContainer}>
393
+ <Text
394
+ style={[
395
+ styles.textMd,
396
+ styles.textBold,
397
+ styles.marginBottomSm,
398
+ ]}
399
+ >
400
+ Nx is open source
401
+ </Text>
402
+ <Text style={[styles.textXS, styles.textLight]}>
403
+ Love Nx? Give us a star!
404
+ </Text>
405
+ </View>
406
+ </View>
407
+ </TouchableOpacity>
408
+ </View>
409
+ <View
410
+ style={styles.section}
411
+ onLayout={(event) => {
412
+ const layout = event.nativeEvent.layout;
413
+ setWhatsNextYCoord(layout.y);
414
+ }}
415
+ >
416
+ <View style={styles.shadowBox}>
417
+ <Text style={[styles.textLg, styles.marginBottomMd]}>
418
+ Next steps
419
+ </Text>
420
+ <Text
421
+ style={[styles.textSm, styles.textLight, styles.marginBottomMd]}
422
+ >
423
+ Here are some things you can do with Nx:
424
+ </Text>
425
+ <View style={styles.listItem}>
426
+ <Svg
427
+ width={24}
428
+ height={24}
429
+ stroke="#000000"
430
+ fill="none"
431
+ viewBox="0 0 24 24"
432
+ >
433
+ <Path
434
+ strokeLinecap="round"
435
+ strokeLinejoin="round"
436
+ strokeWidth="2"
437
+ 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"
438
+ />
439
+ </Svg>
440
+ <View style={styles.listItemTextContainer}>
441
+ <Text style={styles.textSm}>Add UI library</Text>
442
+ </View>
443
+ </View>
444
+ <View style={[styles.codeBlock, styles.marginBottomLg]}>
445
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
446
+ # Generate UI lib
447
+ </Text>
448
+ <Text
449
+ style={[
450
+ styles.textXS,
451
+ styles.monospace,
452
+ styles.marginBottomMd,
453
+ ]}
454
+ >
455
+ nx g @nrwl/expo:lib ui
456
+ </Text>
457
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
458
+ # Add a component
459
+ </Text>
460
+ <Text style={[styles.textXS, styles.monospace]}>nx g \</Text>
461
+ <Text style={[styles.textXS, styles.monospace]}>
462
+ @nrwl/expo:component \
463
+ </Text>
464
+ <Text style={[styles.textXS, styles.monospace]}>
465
+ button --project ui
466
+ </Text>
467
+ </View>
468
+ <View style={styles.listItem}>
469
+ <Svg
470
+ width={24}
471
+ height={24}
472
+ stroke="#000000"
473
+ fill="none"
474
+ viewBox="0 0 24 24"
475
+ >
476
+ <Path
477
+ strokeLinecap="round"
478
+ strokeLinejoin="round"
479
+ strokeWidth="2"
480
+ 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"
481
+ />
482
+ </Svg>
483
+ <View style={styles.listItemTextContainer}>
484
+ <Text style={styles.textSm}>
485
+ View interactive project graph
486
+ </Text>
487
+ </View>
488
+ </View>
489
+ <View style={[styles.codeBlock, styles.marginBottomLg]}>
490
+ <Text style={[styles.textXS, styles.monospace]}>nx graph</Text>
491
+ </View>
492
+ <View style={styles.listItem}>
493
+ <Svg
494
+ width={24}
495
+ height={24}
496
+ stroke="#000000"
497
+ fill="none"
498
+ viewBox="0 0 24 24"
499
+ >
500
+ <Path
501
+ strokeLinecap="round"
502
+ strokeLinejoin="round"
503
+ strokeWidth="2"
504
+ 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"
505
+ />
506
+ </Svg>
507
+ <View style={styles.listItemTextContainer}>
508
+ <Text style={styles.textSm}>Run affected commands</Text>
509
+ </View>
510
+ </View>
511
+ <View style={styles.codeBlock}>
512
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
513
+ # See what's affected by changes
514
+ </Text>
515
+ <Text
516
+ style={[
517
+ styles.textXS,
518
+ styles.monospace,
519
+ styles.marginBottomMd,
520
+ ]}
521
+ >
522
+ nx affected:graph
523
+ </Text>
524
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
525
+ # run tests for current changes
526
+ </Text>
527
+ <Text
528
+ style={[
529
+ styles.textXS,
530
+ styles.monospace,
531
+ styles.marginBottomMd,
532
+ ]}
533
+ >
534
+ nx affected:text
535
+ </Text>
536
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
537
+ # run e2e tests for current
538
+ </Text>
539
+ <Text style={[styles.textXS, styles.monospace, styles.comment]}>
540
+ # changes
541
+ </Text>
542
+ <Text style={[styles.textXS, styles.monospace]}>
543
+ nx affected:e2e
544
+ </Text>
545
+ </View>
546
+ </View>
547
+ <View style={[styles.listItem, styles.love]}>
548
+ <Text style={styles.textSubtle}>Carefully crafted with </Text>
549
+ <Svg
550
+ width={24}
551
+ height={24}
552
+ fill="rgba(252, 165, 165, 1)"
553
+ stroke="none"
554
+ viewBox="0 0 24 24"
555
+ >
556
+ <Path
557
+ strokeLinecap="round"
558
+ strokeLinejoin="round"
559
+ strokeWidth="2"
560
+ d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"
561
+ />
562
+ </Svg>
563
+ </View>
564
+ </View>
565
+ </ScrollView>
566
+ </SafeAreaView>
567
+ </>
568
+ );
569
+ };
570
+ const styles = StyleSheet.create({
571
+ scrollView: {
572
+ backgroundColor: '#ffffff',
573
+ },
574
+ codeBlock: {
575
+ backgroundColor: 'rgba(55, 65, 81, 1)',
576
+ marginVertical: 12,
577
+ padding: 12,
578
+ borderRadius: 4,
579
+ },
580
+ monospace: {
581
+ color: '#ffffff',
582
+ fontFamily: 'Courier New',
583
+ marginVertical: 4,
584
+ },
585
+ comment: {
586
+ color: '#cccccc',
587
+ },
588
+ marginBottomSm: {
589
+ marginBottom: 6,
590
+ },
591
+ marginBottomMd: {
592
+ marginBottom: 18,
593
+ },
594
+ marginBottomLg: {
595
+ marginBottom: 24,
596
+ },
597
+ textLight: {
598
+ fontWeight: '300',
599
+ },
600
+ textBold: {
601
+ fontWeight: '500',
602
+ },
603
+ textCenter: {
604
+ textAlign: 'center',
605
+ },
606
+ text2XS: {
607
+ fontSize: 12,
608
+ },
609
+ textXS: {
610
+ fontSize: 14,
611
+ },
612
+ textSm: {
613
+ fontSize: 16,
614
+ },
615
+ textMd: {
616
+ fontSize: 18,
617
+ },
618
+ textLg: {
619
+ fontSize: 24,
620
+ },
621
+ textXL: {
622
+ fontSize: 48,
623
+ },
624
+ textContainer: {
625
+ marginVertical: 12,
626
+ },
627
+ textSubtle: {
628
+ color: '#6b7280',
629
+ },
630
+ section: {
631
+ marginVertical: 24,
632
+ marginHorizontal: 12,
633
+ },
634
+ shadowBox: {
635
+ backgroundColor: 'white',
636
+ borderRadius: 24,
637
+ shadowColor: 'black',
638
+ shadowOpacity: 0.15,
639
+ shadowOffset: {
640
+ width: 1,
641
+ height: 4,
642
+ },
643
+ shadowRadius: 12,
644
+ padding: 24,
645
+ marginBottom: 24,
646
+ },
647
+ listItem: {
648
+ display: 'flex',
649
+ flexDirection: 'row',
650
+ alignItems: 'center',
651
+ },
652
+ listItemTextContainer: {
653
+ marginLeft: 12,
654
+ flex: 1,
655
+ },
656
+ appTitleText: {
657
+ paddingTop: 12,
658
+ fontWeight: '500',
659
+ },
660
+ hero: {
661
+ borderRadius: 12,
662
+ backgroundColor: '#143055',
663
+ padding: 36,
664
+ marginBottom: 24,
665
+ },
666
+ heroTitle: {
667
+ flex: 1,
668
+ flexDirection: 'row',
669
+ },
670
+ heroTitleText: {
671
+ color: '#ffffff',
672
+ marginLeft: 12,
673
+ },
674
+ heroText: {
675
+ color: '#ffffff',
676
+ marginVertical: 12,
677
+ },
678
+ whatsNextButton: {
679
+ backgroundColor: '#ffffff',
680
+ paddingVertical: 16,
681
+ borderRadius: 8,
682
+ width: '50%',
683
+ marginTop: 24,
684
+ },
685
+ learning: {
686
+ marginVertical: 12,
687
+ },
688
+ love: {
689
+ marginTop: 12,
690
+ justifyContent: 'center',
691
+ },
692
+ });
693
+
694
+ export default App;
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-native/extend-expect';