create-expo-stack 2.10.4 → 2.10.5-next.08640a3

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 (29) hide show
  1. package/README.md +50 -50
  2. package/build/cli.js +21 -51
  3. package/build/commands/create-expo-stack.js +320 -364
  4. package/build/templates/base/components/Button.tsx.ejs +2 -3
  5. package/build/templates/packages/nativewind/components/Button.tsx.ejs +4 -5
  6. package/build/templates/packages/nativewindui/components/Button.tsx.ejs +2 -3
  7. package/build/templates/packages/restyle/components/Button.tsx.ejs +7 -3
  8. package/build/templates/packages/tamagui/components/Button.tsx.ejs +11 -5
  9. package/build/templates/packages/tamagui/tamagui.config.ts.ejs +24 -25
  10. package/build/templates/packages/unistyles/components/Button.tsx.ejs +8 -3
  11. package/build/types/utilities/configAnalytics.d.ts +17 -0
  12. package/build/utilities/bumpVersion.js +6 -6
  13. package/build/utilities/clearNavigationPackages.js +2 -2
  14. package/build/utilities/clearStylingPackages.js +2 -2
  15. package/build/utilities/configAnalytics.js +70 -0
  16. package/build/utilities/configStorage.js +31 -88
  17. package/build/utilities/configureProjectFiles.js +98 -83
  18. package/build/utilities/copyBaseAssets.js +4 -36
  19. package/build/utilities/generateProjectFiles.js +16 -16
  20. package/build/utilities/getPackageManager.js +7 -7
  21. package/build/utilities/printOutput.js +156 -211
  22. package/build/utilities/renderTitle.js +22 -62
  23. package/build/utilities/runCLI.js +334 -393
  24. package/build/utilities/runEasConfigure.js +61 -106
  25. package/build/utilities/runIgnite.js +9 -45
  26. package/build/utilities/systemCommand.js +11 -48
  27. package/build/utilities/usePackage.js +2 -2
  28. package/build/utilities/validateProjectName.js +27 -64
  29. package/package.json +70 -69
@@ -8,413 +8,354 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
11
  Object.defineProperty(exports, "__esModule", { value: true });
39
12
  exports.runCLI = void 0;
40
- var prompts_1 = require("@clack/prompts");
41
- var constants_1 = require("../constants");
42
- var getPackageManager_1 = require("./getPackageManager");
43
- var configStorage_1 = require("./configStorage");
44
- var recommendedBunVersion = '1.0.22';
13
+ const prompts_1 = require("@clack/prompts");
14
+ const constants_1 = require("../constants");
15
+ const getPackageManager_1 = require("./getPackageManager");
16
+ const configStorage_1 = require("./configStorage");
17
+ const recommendedBunVersion = '1.0.22';
45
18
  function runCLI(toolbox, projectName) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var options, _a, info, success, warning, cliResults, savedConfigs, useSavedConfig, savedConfigSelect_1, selectedConfig, shouldUseTypescript, defaultPackageManagerVersion, shouldUseDefaultPackageManager, packageManagerSelect, packageManagerSelect, navigationSelect, navigationType, shouldContinue, shouldContinue, stylingSelect, selectedComponents, authenticationSelect, easEnabled, shouldSaveConfig, name;
48
- return __generator(this, function (_b) {
49
- switch (_b.label) {
50
- case 0:
51
- options = toolbox.parameters.options, _a = toolbox.print, info = _a.info, success = _a.success, warning = _a.warning;
52
- cliResults = constants_1.defaultOptions;
53
- // Project name already validated, just set cliResults
54
- cliResults.projectName = projectName;
55
- cliResults.flags.overwrite = !!options.overwrite;
56
- cliResults.flags.eas = !!options.eas;
57
- // Clear default packages
58
- cliResults.packages = [];
59
- return [4 /*yield*/, (0, configStorage_1.loadConfigs)()];
60
- case 1:
61
- savedConfigs = _b.sent();
62
- if (!(savedConfigs.length > 0)) return [3 /*break*/, 4];
63
- return [4 /*yield*/, (0, prompts_1.confirm)({
64
- message: 'Would you like to use a saved configuration?',
65
- initialValue: false
66
- })];
67
- case 2:
68
- useSavedConfig = _b.sent();
69
- if ((0, prompts_1.isCancel)(useSavedConfig)) {
70
- (0, prompts_1.cancel)('Cancelled... 👋');
71
- return [2 /*return*/, process.exit(0)];
72
- }
73
- if (!useSavedConfig) return [3 /*break*/, 4];
74
- return [4 /*yield*/, (0, prompts_1.select)({
75
- message: 'Which saved configuration would you like to use?',
76
- options: savedConfigs.map(function (config) { return ({ value: config.name, label: config.name }); })
77
- })];
78
- case 3:
79
- savedConfigSelect_1 = _b.sent();
80
- if ((0, prompts_1.isCancel)(savedConfigSelect_1)) {
81
- (0, prompts_1.cancel)('Cancelled... 👋');
82
- return [2 /*return*/, process.exit(0)];
83
- }
84
- selectedConfig = savedConfigs.find(function (config) { return config.name === savedConfigSelect_1; });
85
- if (selectedConfig) {
86
- cliResults.packages = selectedConfig.cliResults.packages;
87
- cliResults.flags = selectedConfig.cliResults.flags;
88
- success("Using saved configuration: ".concat(selectedConfig.name));
89
- return [2 /*return*/, cliResults];
90
- }
91
- else {
92
- warning('Saved configuration not found, continuing with default configuration.');
93
- }
94
- _b.label = 4;
95
- case 4: return [4 /*yield*/, (0, prompts_1.confirm)({
96
- message: 'Would you like to use TypeScript with this project?',
97
- initialValue: true
98
- })];
99
- case 5:
100
- shouldUseTypescript = _b.sent();
101
- if ((0, prompts_1.isCancel)(shouldUseTypescript)) {
102
- (0, prompts_1.cancel)('Cancelled... 👋');
103
- return [2 /*return*/, process.exit(0)];
104
- }
105
- if (shouldUseTypescript) {
106
- success('Good call, now using TypeScript! 🚀');
107
- }
108
- else {
109
- success("Wrong answer, we're gonna use Typescript.");
110
- }
111
- defaultPackageManagerVersion = (0, getPackageManager_1.getDefaultPackageManagerVersion)();
112
- if (!cliResults.flags.packageManager) return [3 /*break*/, 10];
113
- if (!(options.bun || options.pnpm || options.npm || options.yarn)) return [3 /*break*/, 6];
114
- cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
115
- return [3 /*break*/, 9];
116
- case 6: return [4 /*yield*/, (0, prompts_1.confirm)({
117
- message: "\nWe've detected ".concat(cliResults.flags.packageManager, " ").concat(defaultPackageManagerVersion ? "v".concat(defaultPackageManagerVersion) : '', " as your preferred package manager.\nWould you like to continue using it?"),
118
- initialValue: true
119
- })];
120
- case 7:
121
- shouldUseDefaultPackageManager = _b.sent();
122
- if ((0, prompts_1.isCancel)(shouldUseDefaultPackageManager)) {
123
- (0, prompts_1.cancel)('Cancelled... 👋');
124
- return [2 /*return*/, process.exit(0)];
125
- }
126
- if (!!shouldUseDefaultPackageManager) return [3 /*break*/, 9];
127
- return [4 /*yield*/, (0, prompts_1.select)({
128
- message: 'Gotcha! Which package manager would you like to use?',
129
- options: [
130
- { value: 'npm', label: 'npm' },
131
- { value: 'yarn', label: 'yarn' },
132
- { value: 'pnpm', label: 'pnpm' },
133
- { value: 'bun', label: 'bun' }
134
- ],
135
- initialValue: 'npm'
136
- })];
137
- case 8:
138
- packageManagerSelect = _b.sent();
139
- if ((0, prompts_1.isCancel)(packageManagerSelect)) {
140
- (0, prompts_1.cancel)('Cancelled... 👋');
141
- return [2 /*return*/, process.exit(0)];
142
- }
143
- cliResults.flags.packageManager = packageManagerSelect;
144
- _b.label = 9;
145
- case 9: return [3 /*break*/, 13];
146
- case 10:
147
- if (!(options.bun || options.pnpm || options.npm || options.yarn)) return [3 /*break*/, 11];
148
- cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
149
- return [3 /*break*/, 13];
150
- case 11: return [4 /*yield*/, (0, prompts_1.select)({
151
- message: 'Which package manager would you like to use?',
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const { parameters: { options }, print: { info, success, warning } } = toolbox;
21
+ // Set the default options
22
+ const cliResults = constants_1.defaultOptions;
23
+ // Project name already validated, just set cliResults
24
+ cliResults.projectName = projectName;
25
+ cliResults.flags.overwrite = !!options.overwrite;
26
+ cliResults.flags.eas = !!options.eas;
27
+ // Clear default packages
28
+ cliResults.packages = [];
29
+ // Check whether the user has any saved create expo stack configurations
30
+ const savedConfigs = yield (0, configStorage_1.loadConfigs)();
31
+ // If the user has saved configurations, ask if they would like to use them
32
+ if (savedConfigs.length > 0) {
33
+ const useSavedConfig = yield (0, prompts_1.confirm)({
34
+ message: 'Would you like to use a saved configuration?',
35
+ initialValue: false
36
+ });
37
+ if ((0, prompts_1.isCancel)(useSavedConfig)) {
38
+ (0, prompts_1.cancel)('Cancelled... 👋');
39
+ return process.exit(0);
40
+ }
41
+ if (useSavedConfig) {
42
+ const savedConfigSelect = yield (0, prompts_1.select)({
43
+ message: 'Which saved configuration would you like to use?',
44
+ options: savedConfigs.map((config) => ({ value: config.name, label: config.name }))
45
+ });
46
+ if ((0, prompts_1.isCancel)(savedConfigSelect)) {
47
+ (0, prompts_1.cancel)('Cancelled... 👋');
48
+ return process.exit(0);
49
+ }
50
+ const selectedConfig = savedConfigs.find((config) => config.name === savedConfigSelect);
51
+ if (selectedConfig) {
52
+ cliResults.packages = selectedConfig.cliResults.packages;
53
+ cliResults.flags = selectedConfig.cliResults.flags;
54
+ success(`Using saved configuration: ${selectedConfig.name}`);
55
+ return cliResults;
56
+ }
57
+ else {
58
+ warning('Saved configuration not found, continuing with default configuration.');
59
+ }
60
+ }
61
+ }
62
+ // Ask about TypeScript
63
+ const shouldUseTypescript = yield (0, prompts_1.confirm)({
64
+ message: 'Would you like to use TypeScript with this project?',
65
+ initialValue: true
66
+ });
67
+ if ((0, prompts_1.isCancel)(shouldUseTypescript)) {
68
+ (0, prompts_1.cancel)('Cancelled... 👋');
69
+ return process.exit(0);
70
+ }
71
+ if (shouldUseTypescript) {
72
+ success('Good call, now using TypeScript! 🚀');
73
+ }
74
+ else {
75
+ success(`Wrong answer, we're gonna use Typescript.`);
76
+ }
77
+ const defaultPackageManagerVersion = (0, getPackageManager_1.getDefaultPackageManagerVersion)();
78
+ if (cliResults.flags.packageManager) {
79
+ if (options.bun || options.pnpm || options.npm || options.yarn) {
80
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
81
+ }
82
+ else {
83
+ const shouldUseDefaultPackageManager = yield (0, prompts_1.confirm)({
84
+ message: `\nWe've detected ${cliResults.flags.packageManager} ${defaultPackageManagerVersion ? `v${defaultPackageManagerVersion}` : ''} as your preferred package manager.\nWould you like to continue using it?`,
85
+ initialValue: true
86
+ });
87
+ if ((0, prompts_1.isCancel)(shouldUseDefaultPackageManager)) {
88
+ (0, prompts_1.cancel)('Cancelled... 👋');
89
+ return process.exit(0);
90
+ }
91
+ if (!shouldUseDefaultPackageManager) {
92
+ const packageManagerSelect = yield (0, prompts_1.select)({
93
+ message: 'Gotcha! Which package manager would you like to use?',
152
94
  options: [
153
95
  { value: 'npm', label: 'npm' },
154
96
  { value: 'yarn', label: 'yarn' },
155
97
  { value: 'pnpm', label: 'pnpm' },
156
98
  { value: 'bun', label: 'bun' }
157
- ]
158
- })];
159
- case 12:
160
- packageManagerSelect = _b.sent();
161
- if ((0, prompts_1.isCancel)(packageManagerSelect)) {
162
- (0, prompts_1.cancel)('Cancelled... 👋');
163
- return [2 /*return*/, process.exit(0)];
164
- }
165
- cliResults.flags.packageManager = packageManagerSelect;
166
- _b.label = 13;
167
- case 13: return [4 /*yield*/, (0, prompts_1.select)({
168
- message: 'What would you like to use for Navigation?',
169
- options: [
170
- { value: 'react-navigation', label: 'React Navigation' },
171
- { value: 'expo-router', label: 'Expo Router' },
172
- { value: undefined, label: 'None' }
173
99
  ],
174
- initialValue: 'expo-router'
175
- })];
176
- case 14:
177
- navigationSelect = _b.sent();
178
- if ((0, prompts_1.isCancel)(navigationSelect)) {
179
- (0, prompts_1.cancel)('Cancelled... 👋');
180
- return [2 /*return*/, process.exit(0)];
181
- }
182
- if (!navigationSelect) return [3 /*break*/, 20];
183
- return [4 /*yield*/, (0, prompts_1.select)({
184
- message: 'What type of navigation would you like to use?',
185
- options: [
186
- { value: 'stack', label: 'Stack' },
187
- { value: 'tabs', label: 'Tabs' },
188
- { value: 'drawer + tabs', label: 'Drawer + Tabs' }
189
- ]
190
- })];
191
- case 15:
192
- navigationType = _b.sent();
193
- if ((0, prompts_1.isCancel)(navigationType)) {
194
- (0, prompts_1.cancel)('Cancelled... 👋');
195
- return [2 /*return*/, process.exit(0)];
196
- }
197
- cliResults.packages.push({
198
- name: navigationSelect,
199
- type: 'navigation',
200
- options: {
201
- type: navigationType
202
- }
203
- });
204
- if (!(cliResults.flags.packageManager === 'bun' &&
205
- defaultPackageManagerVersion &&
206
- defaultPackageManagerVersion !== recommendedBunVersion)) return [3 /*break*/, 17];
207
- warning('⚠️' + ' ' + " We've detected you're using Bun v".concat(defaultPackageManagerVersion, "."));
208
- info('');
209
- warning("Some packages may not work correctly if you continue. We recommend using Bun v".concat(recommendedBunVersion, " until peerDependencies are properly resolved with bun install."));
210
- warning("For more information, visit https://github.com/oven-sh/bun/issues/4946");
211
- info('');
212
- warning("To switch to Bun v".concat(recommendedBunVersion, ", run:"));
213
- info('');
214
- warning("\tcurl -fsSL https://bun.sh/install | bash -s \"bun-v".concat(recommendedBunVersion, "\""));
215
- info('');
216
- warning("or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).");
217
- info('');
218
- return [4 /*yield*/, (0, prompts_1.confirm)({
219
- message: "Would you like to continue without switching to Bun v".concat(recommendedBunVersion, "?"),
220
- initialValue: false
221
- })];
222
- case 16:
223
- shouldContinue = _b.sent();
224
- if ((0, prompts_1.isCancel)(shouldContinue)) {
225
- (0, prompts_1.cancel)('Cancelled... 👋');
226
- return [2 /*return*/, process.exit(0)];
227
- }
228
- success("Great, we'll use ".concat(navigationSelect, "!"));
229
- return [3 /*break*/, 19];
230
- case 17:
231
- if (!(cliResults.flags.packageManager === 'bun' && !defaultPackageManagerVersion)) return [3 /*break*/, 19];
232
- warning('⚠️' + ' ' + " We've detected you're using Bun but we are unable to determine which version you are using.");
233
- info('');
234
- warning("We recommend using Bun v".concat(recommendedBunVersion, " until peerDependencies are properly resolved with bun install. If you continue with a version that is not v").concat(recommendedBunVersion, ", some packages may not work correctly."));
235
- warning("For more information, visit https://github.com/oven-sh/bun/issues/4946");
236
- info('');
237
- warning("To check your version of Bun, run:");
238
- info('');
239
- warning("\tbun -version");
240
- info('');
241
- warning("To switch to Bun v".concat(recommendedBunVersion, ", run:"));
242
- info('');
243
- warning("\tcurl -fsSL https://bun.sh/install | bash -s \"bun-v".concat(recommendedBunVersion, "\""));
244
- info('');
245
- warning("or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).");
246
- info('');
247
- return [4 /*yield*/, (0, prompts_1.confirm)({
248
- message: "Would you like to continue with your current version of Bun?",
249
- initialValue: false
250
- })];
251
- case 18:
252
- shouldContinue = _b.sent();
253
- if ((0, prompts_1.isCancel)(shouldContinue)) {
254
- (0, prompts_1.cancel)('Cancelled... 👋');
255
- return [2 /*return*/, process.exit(0)];
256
- }
257
- success("Great, we'll use ".concat(navigationSelect, "!"));
258
- _b.label = 19;
259
- case 19: return [3 /*break*/, 21];
260
- case 20:
261
- success("No problem, skipping navigation for now.");
262
- _b.label = 21;
263
- case 21: return [4 /*yield*/, (0, prompts_1.select)({
264
- message: 'What would you like to use for styling?',
265
- options: navigationSelect === 'expo-router'
266
- ? [
267
- { value: 'nativewindui', label: 'NativeWindUI' },
268
- { value: 'nativewind', label: 'NativeWind' },
269
- { value: 'restyle', label: 'Restyle' },
270
- { value: 'stylesheet', label: 'StyleSheet' },
271
- { value: 'tamagui', label: 'Tamagui (experimental)' },
272
- { value: 'unistyles', label: 'Unistyles' }
273
- ]
274
- : [
275
- { value: 'nativewind', label: 'NativeWind' },
276
- { value: 'restyle', label: 'Restyle' },
277
- { value: 'stylesheet', label: 'StyleSheet' },
278
- { value: 'tamagui', label: 'Tamagui (experimental)' },
279
- { value: 'unistyles', label: 'Unistyles' }
280
- ],
281
- initialValue: navigationSelect === 'expo-router' ? 'nativewindui' : 'nativewind'
282
- })];
283
- case 22:
284
- stylingSelect = _b.sent();
285
- if ((0, prompts_1.isCancel)(stylingSelect)) {
286
- (0, prompts_1.cancel)('Cancelled... 👋');
287
- return [2 /*return*/, process.exit(0)];
288
- }
289
- if (!(stylingSelect === 'nativewindui')) return [3 /*break*/, 24];
290
- selectedComponents = [];
291
- return [4 /*yield*/, (0, prompts_1.multiselect)({
292
- message: 'Which components would you like to explore?',
293
- options: [
294
- { value: 'action-sheet', label: 'Action Sheet' },
295
- { value: 'activity-indicator', label: 'Activity Indicator' },
296
- { value: 'activity-view', label: 'Activity View' },
297
- { value: 'alert', label: 'Alert' },
298
- { value: 'avatar', label: 'Avatar' },
299
- { value: 'bottom-sheet', label: 'Bottom Sheet' },
300
- { value: 'context-menu', label: 'Context Menu' },
301
- { value: 'date-picker', label: 'Date Picker' },
302
- { value: 'dropdown-menu', label: 'Dropdown Menu' },
303
- { value: 'picker', label: 'Picker' },
304
- { value: 'progress-indicator', label: 'Progress Indicator' },
305
- { value: 'ratings-indicator', label: 'Ratings Indicator' },
306
- { value: 'segmented-control', label: 'Segmented Control' },
307
- { value: 'selectable-text', label: 'Selectable Text' },
308
- { value: 'slider', label: 'Slider' },
309
- { value: 'text', label: 'Text' },
310
- { value: 'toggle', label: 'Toggle' }
311
- ],
312
- required: false,
313
- initialValues: [
314
- 'action-sheet',
315
- 'activity-indicator',
316
- 'activity-view',
317
- 'alert',
318
- 'avatar',
319
- 'bottom-sheet',
320
- 'context-menu',
321
- 'date-picker',
322
- 'dropdown-menu',
323
- 'picker',
324
- 'progress-indicator',
325
- 'ratings-indicator',
326
- 'segmented-control',
327
- 'selectable-text',
328
- 'slider',
329
- 'text',
330
- 'toggle'
331
- ]
332
- })];
333
- case 23:
334
- selectedComponents = (_b.sent());
335
- if ((0, prompts_1.isCancel)(selectedComponents)) {
336
- (0, prompts_1.cancel)('Cancelled... 👋');
337
- return [2 /*return*/, process.exit(0)];
338
- }
339
- cliResults.packages.push({
340
- name: 'nativewindui',
341
- type: 'styling',
342
- options: {
343
- selectedComponents: selectedComponents
344
- }
100
+ initialValue: 'npm'
345
101
  });
346
- success("You'll be styling with ease using NativeWindUI!");
347
- return [3 /*break*/, 25];
348
- case 24:
349
- cliResults.packages.push({ name: stylingSelect, type: 'styling' });
350
- success("You'll be styling with ease using ".concat(stylingSelect.toString().charAt(0).toUpperCase() + stylingSelect.toString().slice(1), "!"));
351
- _b.label = 25;
352
- case 25: return [4 /*yield*/, (0, prompts_1.select)({
353
- message: 'What would you like to use for authentication?',
354
- options: [
355
- { value: undefined, label: 'None' },
356
- { value: 'supabase', label: 'Supabase' },
357
- { value: 'firebase', label: 'Firebase' }
358
- ]
359
- })];
360
- case 26:
361
- authenticationSelect = _b.sent();
362
- if ((0, prompts_1.isCancel)(authenticationSelect)) {
363
- (0, prompts_1.cancel)('Cancelled... 👋');
364
- return [2 /*return*/, process.exit(0)];
365
- }
366
- if (authenticationSelect) {
367
- cliResults.packages.push({ name: authenticationSelect, type: 'authentication' });
368
- }
369
- else {
370
- success("No problem, skipping authentication for now.");
371
- }
372
- return [4 /*yield*/, (0, prompts_1.confirm)({
373
- message: "Do you want to setup EAS",
374
- initialValue: false
375
- })];
376
- case 27:
377
- easEnabled = _b.sent();
378
- if ((0, prompts_1.isCancel)(easEnabled)) {
379
- (0, prompts_1.cancel)('Cancelled... 👋');
380
- return [2 /*return*/, process.exit(0)];
381
- }
382
- if (easEnabled) {
383
- cliResults.flags.eas = true;
384
- success("We'll setup EAS for you.");
385
- }
386
- else {
387
- success("No problem, skipping eas for now.");
388
- }
389
- return [4 /*yield*/, (0, prompts_1.confirm)({
390
- message: 'Would you like to save this configuration for future use?',
391
- initialValue: false
392
- })];
393
- case 28:
394
- shouldSaveConfig = _b.sent();
395
- if ((0, prompts_1.isCancel)(shouldSaveConfig)) {
396
- (0, prompts_1.cancel)('Cancelled... 👋');
397
- return [2 /*return*/, process.exit(0)];
398
- }
399
- if (!shouldSaveConfig) return [3 /*break*/, 31];
400
- return [4 /*yield*/, (0, prompts_1.text)({
401
- message: 'What do you want to name this configuration?',
402
- placeholder: 'Default'
403
- })];
404
- case 29:
405
- name = _b.sent();
406
- if ((0, prompts_1.isCancel)(name)) {
102
+ if ((0, prompts_1.isCancel)(packageManagerSelect)) {
407
103
  (0, prompts_1.cancel)('Cancelled... 👋');
408
- return [2 /*return*/, process.exit(0)];
104
+ return process.exit(0);
409
105
  }
410
- return [4 /*yield*/, (0, configStorage_1.saveConfig)({ name: name, cliResults: cliResults })];
411
- case 30:
412
- _b.sent();
413
- _b.label = 31;
414
- case 31: return [2 /*return*/, cliResults];
106
+ cliResults.flags.packageManager = packageManagerSelect;
107
+ }
108
+ }
109
+ }
110
+ else {
111
+ if (options.bun || options.pnpm || options.npm || options.yarn) {
112
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
113
+ }
114
+ else {
115
+ const packageManagerSelect = yield (0, prompts_1.select)({
116
+ message: 'Which package manager would you like to use?',
117
+ options: [
118
+ { value: 'npm', label: 'npm' },
119
+ { value: 'yarn', label: 'yarn' },
120
+ { value: 'pnpm', label: 'pnpm' },
121
+ { value: 'bun', label: 'bun' }
122
+ ]
123
+ });
124
+ if ((0, prompts_1.isCancel)(packageManagerSelect)) {
125
+ (0, prompts_1.cancel)('Cancelled... 👋');
126
+ return process.exit(0);
127
+ }
128
+ cliResults.flags.packageManager = packageManagerSelect;
129
+ }
130
+ }
131
+ const navigationSelect = yield (0, prompts_1.select)({
132
+ message: 'What would you like to use for Navigation?',
133
+ options: [
134
+ { value: 'react-navigation', label: 'React Navigation' },
135
+ { value: 'expo-router', label: 'Expo Router' },
136
+ { value: undefined, label: 'None' }
137
+ ],
138
+ initialValue: 'expo-router'
139
+ });
140
+ if ((0, prompts_1.isCancel)(navigationSelect)) {
141
+ (0, prompts_1.cancel)('Cancelled... 👋');
142
+ return process.exit(0);
143
+ }
144
+ if (navigationSelect) {
145
+ const navigationType = yield (0, prompts_1.select)({
146
+ message: 'What type of navigation would you like to use?',
147
+ options: [
148
+ { value: 'stack', label: 'Stack' },
149
+ { value: 'tabs', label: 'Tabs' },
150
+ { value: 'drawer + tabs', label: 'Drawer + Tabs' }
151
+ ]
152
+ });
153
+ if ((0, prompts_1.isCancel)(navigationType)) {
154
+ (0, prompts_1.cancel)('Cancelled... 👋');
155
+ return process.exit(0);
156
+ }
157
+ cliResults.packages.push({
158
+ name: navigationSelect,
159
+ type: 'navigation',
160
+ options: {
161
+ type: navigationType
162
+ }
163
+ });
164
+ // If the user is using a version of bun that is anything but version 1.0.22, communicate a message
165
+ if (cliResults.flags.packageManager === 'bun' &&
166
+ defaultPackageManagerVersion &&
167
+ defaultPackageManagerVersion !== recommendedBunVersion) {
168
+ warning('⚠️' + ' ' + ` We've detected you're using Bun v${defaultPackageManagerVersion}.`);
169
+ info('');
170
+ warning(`Some packages may not work correctly if you continue. We recommend using Bun v${recommendedBunVersion} until peerDependencies are properly resolved with bun install.`);
171
+ warning(`For more information, visit https://github.com/oven-sh/bun/issues/4946`);
172
+ info('');
173
+ warning(`To switch to Bun v${recommendedBunVersion}, run:`);
174
+ info('');
175
+ warning(`\tcurl -fsSL https://bun.sh/install | bash -s "bun-v${recommendedBunVersion}"`);
176
+ info('');
177
+ warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
178
+ info('');
179
+ const shouldContinue = yield (0, prompts_1.confirm)({
180
+ message: `Would you like to continue without switching to Bun v${recommendedBunVersion}?`,
181
+ initialValue: false
182
+ });
183
+ if ((0, prompts_1.isCancel)(shouldContinue)) {
184
+ (0, prompts_1.cancel)('Cancelled... 👋');
185
+ return process.exit(0);
186
+ }
187
+ success(`Great, we'll use ${navigationSelect}!`);
188
+ }
189
+ else if (cliResults.flags.packageManager === 'bun' && !defaultPackageManagerVersion) {
190
+ warning('⚠️' + ' ' + ` We've detected you're using Bun but we are unable to determine which version you are using.`);
191
+ info('');
192
+ warning(`We recommend using Bun v${recommendedBunVersion} until peerDependencies are properly resolved with bun install. If you continue with a version that is not v${recommendedBunVersion}, some packages may not work correctly.`);
193
+ warning(`For more information, visit https://github.com/oven-sh/bun/issues/4946`);
194
+ info('');
195
+ warning(`To check your version of Bun, run:`);
196
+ info('');
197
+ warning(`\tbun -version`);
198
+ info('');
199
+ warning(`To switch to Bun v${recommendedBunVersion}, run:`);
200
+ info('');
201
+ warning(`\tcurl -fsSL https://bun.sh/install | bash -s "bun-v${recommendedBunVersion}"`);
202
+ info('');
203
+ warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
204
+ info('');
205
+ const shouldContinue = yield (0, prompts_1.confirm)({
206
+ message: `Would you like to continue with your current version of Bun?`,
207
+ initialValue: false
208
+ });
209
+ if ((0, prompts_1.isCancel)(shouldContinue)) {
210
+ (0, prompts_1.cancel)('Cancelled... 👋');
211
+ return process.exit(0);
212
+ }
213
+ success(`Great, we'll use ${navigationSelect}!`);
214
+ }
215
+ }
216
+ else {
217
+ success(`No problem, skipping navigation for now.`);
218
+ }
219
+ const stylingSelect = yield (0, prompts_1.select)({
220
+ message: 'What would you like to use for styling?',
221
+ options: navigationSelect === 'expo-router'
222
+ ? [
223
+ { value: 'nativewindui', label: 'NativeWindUI' },
224
+ { value: 'nativewind', label: 'NativeWind' },
225
+ { value: 'restyle', label: 'Restyle' },
226
+ { value: 'stylesheet', label: 'StyleSheet' },
227
+ { value: 'tamagui', label: 'Tamagui (experimental)' },
228
+ { value: 'unistyles', label: 'Unistyles' }
229
+ ]
230
+ : [
231
+ { value: 'nativewind', label: 'NativeWind' },
232
+ { value: 'restyle', label: 'Restyle' },
233
+ { value: 'stylesheet', label: 'StyleSheet' },
234
+ { value: 'tamagui', label: 'Tamagui (experimental)' },
235
+ { value: 'unistyles', label: 'Unistyles' }
236
+ ],
237
+ initialValue: navigationSelect === 'expo-router' ? 'nativewindui' : 'nativewind'
238
+ });
239
+ if ((0, prompts_1.isCancel)(stylingSelect)) {
240
+ (0, prompts_1.cancel)('Cancelled... 👋');
241
+ return process.exit(0);
242
+ }
243
+ if (stylingSelect === 'nativewindui') {
244
+ let selectedComponents = [];
245
+ selectedComponents = (yield (0, prompts_1.multiselect)({
246
+ message: 'Which components would you like to explore?',
247
+ options: [
248
+ { value: 'action-sheet', label: 'Action Sheet' },
249
+ { value: 'activity-indicator', label: 'Activity Indicator' },
250
+ { value: 'activity-view', label: 'Activity View' },
251
+ { value: 'alert', label: 'Alert' },
252
+ { value: 'avatar', label: 'Avatar' },
253
+ { value: 'bottom-sheet', label: 'Bottom Sheet' },
254
+ { value: 'context-menu', label: 'Context Menu' },
255
+ { value: 'date-picker', label: 'Date Picker' },
256
+ { value: 'dropdown-menu', label: 'Dropdown Menu' },
257
+ { value: 'picker', label: 'Picker' },
258
+ { value: 'progress-indicator', label: 'Progress Indicator' },
259
+ { value: 'ratings-indicator', label: 'Ratings Indicator' },
260
+ { value: 'segmented-control', label: 'Segmented Control' },
261
+ { value: 'selectable-text', label: 'Selectable Text' },
262
+ { value: 'slider', label: 'Slider' },
263
+ { value: 'text', label: 'Text' },
264
+ { value: 'toggle', label: 'Toggle' }
265
+ ],
266
+ required: false,
267
+ initialValues: [
268
+ 'action-sheet',
269
+ 'activity-indicator',
270
+ 'activity-view',
271
+ 'alert',
272
+ 'avatar',
273
+ 'bottom-sheet',
274
+ 'context-menu',
275
+ 'date-picker',
276
+ 'dropdown-menu',
277
+ 'picker',
278
+ 'progress-indicator',
279
+ 'ratings-indicator',
280
+ 'segmented-control',
281
+ 'selectable-text',
282
+ 'slider',
283
+ 'text',
284
+ 'toggle'
285
+ ]
286
+ }));
287
+ if ((0, prompts_1.isCancel)(selectedComponents)) {
288
+ (0, prompts_1.cancel)('Cancelled... 👋');
289
+ return process.exit(0);
415
290
  }
291
+ cliResults.packages.push({
292
+ name: 'nativewindui',
293
+ type: 'styling',
294
+ options: {
295
+ selectedComponents: selectedComponents
296
+ }
297
+ });
298
+ success(`You'll be styling with ease using NativeWindUI!`);
299
+ }
300
+ else {
301
+ cliResults.packages.push({ name: stylingSelect, type: 'styling' });
302
+ success(`You'll be styling with ease using ${stylingSelect.toString().charAt(0).toUpperCase() + stylingSelect.toString().slice(1)}!`);
303
+ }
304
+ const authenticationSelect = yield (0, prompts_1.select)({
305
+ message: 'What would you like to use for authentication?',
306
+ options: [
307
+ { value: undefined, label: 'None' },
308
+ { value: 'supabase', label: 'Supabase' },
309
+ { value: 'firebase', label: 'Firebase' }
310
+ ]
311
+ });
312
+ if ((0, prompts_1.isCancel)(authenticationSelect)) {
313
+ (0, prompts_1.cancel)('Cancelled... 👋');
314
+ return process.exit(0);
315
+ }
316
+ if (authenticationSelect) {
317
+ cliResults.packages.push({ name: authenticationSelect, type: 'authentication' });
318
+ }
319
+ else {
320
+ success(`No problem, skipping authentication for now.`);
321
+ }
322
+ const easEnabled = yield (0, prompts_1.confirm)({
323
+ message: `Do you want to setup EAS`,
324
+ initialValue: false
416
325
  });
326
+ if ((0, prompts_1.isCancel)(easEnabled)) {
327
+ (0, prompts_1.cancel)('Cancelled... 👋');
328
+ return process.exit(0);
329
+ }
330
+ if (easEnabled) {
331
+ cliResults.flags.eas = true;
332
+ success(`We'll setup EAS for you.`);
333
+ }
334
+ else {
335
+ success(`No problem, skipping eas for now.`);
336
+ }
337
+ // Offer user ability to save configuration
338
+ const shouldSaveConfig = yield (0, prompts_1.confirm)({
339
+ message: 'Would you like to save this configuration for future use?',
340
+ initialValue: false
341
+ });
342
+ if ((0, prompts_1.isCancel)(shouldSaveConfig)) {
343
+ (0, prompts_1.cancel)('Cancelled... 👋');
344
+ return process.exit(0);
345
+ }
346
+ if (shouldSaveConfig) {
347
+ const name = yield (0, prompts_1.text)({
348
+ message: 'What do you want to name this configuration?',
349
+ placeholder: 'Default'
350
+ });
351
+ if ((0, prompts_1.isCancel)(name)) {
352
+ (0, prompts_1.cancel)('Cancelled... 👋');
353
+ return process.exit(0);
354
+ }
355
+ yield (0, configStorage_1.saveConfig)({ name, cliResults });
356
+ }
357
+ return cliResults;
417
358
  });
418
359
  }
419
360
  exports.runCLI = runCLI;
420
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQXNGO0FBRXRGLDBDQUE4QztBQVU5Qyx5REFBc0U7QUFDdEUsaURBQTBEO0FBRTFELElBQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBRXZDLFNBQXNCLE1BQU0sQ0FBQyxPQUFnQixFQUFFLFdBQW1COzs7Ozs7b0JBRWhELE9BQU8sR0FFbkIsT0FBTyxtQkFGWSxFQUNyQixLQUNFLE9BQU8sTUFEd0IsRUFBeEIsSUFBSSxVQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLENBQ3JCO29CQUdOLFVBQVUsR0FBRywwQkFBYyxDQUFDO29CQUVsQyxzREFBc0Q7b0JBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUNyQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7b0JBRXJDLHlCQUF5QjtvQkFDekIsVUFBVSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBR0oscUJBQU0sSUFBQSwyQkFBVyxHQUFFLEVBQUE7O29CQUFsQyxZQUFZLEdBQUcsU0FBbUI7eUJBR3BDLENBQUEsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUEsRUFBdkIsd0JBQXVCO29CQUNGLHFCQUFNLElBQUEsaUJBQU8sRUFBQzs0QkFDbkMsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsWUFBWSxFQUFFLEtBQUs7eUJBQ3BCLENBQUMsRUFBQTs7b0JBSEksY0FBYyxHQUFHLFNBR3JCO29CQUVGLElBQUksSUFBQSxrQkFBUSxFQUFD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
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsNENBQXNGO0FBRXRGLDRDQUE4QztBQVU5QywyREFBc0U7QUFDdEUsbURBQTBEO0FBRTFELE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBRXZDLFNBQXNCLE1BQU0sQ0FBQyxPQUFnQixFQUFFLFdBQW1COztRQUNoRSxNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQ3ZCLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ2xDLEdBQUcsT0FBTyxDQUFDO1FBRVosMEJBQTBCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLDBCQUFjLENBQUM7UUFFbEMsc0RBQXNEO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRXJDLHlCQUF5QjtRQUN6QixVQUFVLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUV6Qix3RUFBd0U7UUFDeEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLDJCQUFXLEdBQUUsQ0FBQztRQUV6QywyRUFBMkU7UUFDM0UsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDO2dCQUNuQyxPQUFPLEVBQUUsOENBQThDO2dCQUN2RCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFB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