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,393 +8,349 @@ 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
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
13
  };
41
14
  Object.defineProperty(exports, "__esModule", { value: true });
42
- var util = require('util');
43
- var utilities_1 = require("../utilities");
44
- var constants_1 = require("../constants");
45
- var types_1 = require("../types");
46
- var clearStylingPackages_1 = __importDefault(require("../utilities/clearStylingPackages"));
47
- var validateProjectName_1 = require("../utilities/validateProjectName");
48
- var prompts_1 = require("@clack/prompts");
49
- var clearNavigationPackages_1 = __importDefault(require("../utilities/clearNavigationPackages"));
50
- var navigationValidationError = "You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer+tabs options";
51
- var projectNameValidationError = "A project with the name";
52
- var bunInstallationError = 'User cancelled to install recommended version of Bun.';
53
- var command = {
15
+ const util = require('util');
16
+ const utilities_1 = require("../utilities");
17
+ const constants_1 = require("../constants");
18
+ const types_1 = require("../types");
19
+ const clearStylingPackages_1 = __importDefault(require("../utilities/clearStylingPackages"));
20
+ const validateProjectName_1 = require("../utilities/validateProjectName");
21
+ const prompts_1 = require("@clack/prompts");
22
+ const clearNavigationPackages_1 = __importDefault(require("../utilities/clearNavigationPackages"));
23
+ const navigationValidationError = `You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer+tabs options`;
24
+ const projectNameValidationError = `A project with the name`;
25
+ const bunInstallationError = 'User cancelled to install recommended version of Bun.';
26
+ const command = {
54
27
  name: 'create-expo-stack',
55
28
  description: 'Create a new Expo project',
56
- run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
57
- var _a, exists, removeAsync, _b, first, options, _c, error, info, highlight, success, warning, prompt, printSomethingWentWrong, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, cliResults, name, pathSegments, err_1, generateRerunScript, packageManager, packages, authenticationPackage, navigationPackage, stylingPackage, internalizationPackage, files, formattedFiles, err_2;
58
- return __generator(this, function (_d) {
59
- switch (_d.label) {
60
- case 0:
61
- _a = toolbox.filesystem, exists = _a.exists, removeAsync = _a.removeAsync, _b = toolbox.parameters, first = _b.first, options = _b.options, _c = toolbox.print, error = _c.error, info = _c.info, highlight = _c.highlight, success = _c.success, warning = _c.warning, prompt = toolbox.prompt;
62
- printSomethingWentWrong = function () {
63
- info("\nOops, something went wrong while creating your project \uD83D\uDE22");
64
- info("\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback");
65
- info('');
66
- };
67
- if (options.help || options.h) {
68
- (0, utilities_1.showHelp)(info, highlight, warning);
69
- return [2 /*return*/];
70
- }
71
- useDefault = (options.default !== undefined && options.default) || (options.d !== undefined && options.d);
72
- skipCLI = options.nonInteractive;
73
- useBlankTypescript = options.nativewindui == undefined ? options.blank || false : (options.blank && options.nativewindui) || false;
74
- optionsPassedIn = types_1.availablePackages.some(function (condition) { return options[condition] !== undefined; });
75
- cliResults = constants_1.defaultOptions;
76
- cliResults.flags.packageManager = (0, utilities_1.getPackageManager)(toolbox, cliResults);
77
- _d.label = 1;
78
- case 1:
79
- _d.trys.push([1, 7, , 9]);
80
- // Validation: check if the user passed in the tabs/drawer option without passing in either expo router or react navigation. If so, throw an error
81
- if ((options.tabs || options['drawer+tabs']) &&
82
- !options.reactNavigation &&
83
- !options['react-navigation'] &&
84
- !options.reactnavigation &&
85
- !options.expoRouter &&
86
- !options['expo-router'] &&
87
- !options.exporouter) {
88
- // throw an error without a stack trace
89
- throw navigationValidationError;
90
- }
91
- return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)];
92
- case 2:
93
- _d.sent();
94
- (0, prompts_1.intro)("Let's get started!");
95
- if (!(!first && (options.ignite || !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)))) return [3 /*break*/, 4];
96
- return [4 /*yield*/, (0, prompts_1.text)({
97
- message: 'What do you want to name your project?',
98
- placeholder: constants_1.DEFAULT_APP_NAME
99
- })];
100
- case 3:
101
- name = _d.sent();
102
- if ((0, prompts_1.isCancel)(name)) {
103
- (0, prompts_1.cancel)('Cancelled... 👋');
104
- return [2 /*return*/, process.exit(0)];
105
- }
106
- // if name is undefined or empty string, use default name
107
- cliResults.projectName = (name && name.toString()) || constants_1.DEFAULT_APP_NAME;
108
- return [3 /*break*/, 5];
109
- case 4:
110
- // Destructure the results but set the projectName if the first param is passed in
111
- cliResults.projectName = first || constants_1.DEFAULT_APP_NAME;
112
- pathSegments = cliResults.projectName.split('/');
113
- cliResults.projectName = pathSegments.pop(); // get last segment as the project name
114
- _d.label = 5;
115
- case 5:
116
- // Validate the provided project name; check if the directory already exists
117
- // - We may or may not be interactive, so conditionally pass in prompt.
118
- // - Ignore validation if the overwrite option is passed in.
119
- if (options.overwrite) {
120
- cliResults.flags.overwrite = true;
121
- }
122
- if (options.eas) {
123
- cliResults.flags.eas = true;
124
- }
125
- return [4 /*yield*/, (0, validateProjectName_1.validateProjectName)(exists, removeAsync, !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript) ? prompt : null, cliResults.projectName, cliResults.flags.overwrite)];
126
- case 6:
127
- _d.sent();
128
- return [3 /*break*/, 9];
129
- case 7:
130
- err_1 = _d.sent();
131
- if (err_1 === '') {
132
- // user cancelled/exited the interactive CLI
133
- return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
134
- }
135
- if (err_1 === navigationValidationError) {
136
- // user tried passing in tabs/drawer option without passing in either expo router or react navigation
137
- return [2 /*return*/, void error("\n".concat(navigationValidationError, "\n"))];
138
- }
139
- if (err_1.message.includes(projectNameValidationError)) {
140
- return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
141
- }
142
- // Delete all files with projectName
143
- return [4 /*yield*/, removeAsync(cliResults.projectName)];
144
- case 8:
145
- // Delete all files with projectName
146
- _d.sent();
147
- printSomethingWentWrong();
148
- throw err_1;
149
- case 9:
150
- _d.trys.push([9, 16, , 18]);
151
- if (!options.ignite) return [3 /*break*/, 11];
152
- return [4 /*yield*/, (0, utilities_1.runIgnite)(toolbox, cliResults.projectName, cliResults)];
153
- case 10:
154
- _d.sent();
155
- return [3 /*break*/, 15];
156
- case 11:
157
- // Check if the user wants to not install dependencies and/or not initialize git, update cliResults accordingly
158
- cliResults.flags.noInstall =
159
- options.noInstall || (typeof options.install === 'boolean' && !options.install) || false;
160
- cliResults.flags.noGit = options.noGit || (typeof options.git === 'boolean' && !options.git) || false;
161
- // Validate import alias string forward slash and asterisk
162
- if (typeof options.importAlias === 'string') {
163
- if (!options.importAlias.endsWith('/*')) {
164
- throw new Error('Import alias must end in `/*`, for example: `@/*` or `~/`');
165
- }
29
+ run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
30
+ const { filesystem: { exists, removeAsync }, parameters: { first, options }, print: { error, info, highlight, success, warning }, prompt } = toolbox;
31
+ const printSomethingWentWrong = () => {
32
+ info(`\nOops, something went wrong while creating your project 😢`);
33
+ info(`\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback`);
34
+ info('');
35
+ };
36
+ if (options.help || options.h) {
37
+ (0, utilities_1.showHelp)(info, highlight, warning);
38
+ return;
39
+ }
40
+ // Conditionally skip running the CLI
41
+ const useDefault = (options.default !== undefined && options.default) || (options.d !== undefined && options.d);
42
+ const skipCLI = options.nonInteractive;
43
+ const useBlankTypescript = options.nativewindui == undefined ? options.blank || false : (options.blank && options.nativewindui) || false;
44
+ // Check if any of the options were passed in via the command
45
+ const optionsPassedIn = types_1.availablePackages.some((condition) => options[condition] !== undefined);
46
+ // Set the default options
47
+ let cliResults = constants_1.defaultOptions;
48
+ cliResults.flags.packageManager = (0, utilities_1.getPackageManager)(toolbox, cliResults);
49
+ // START INPUT VALIDATION
50
+ try {
51
+ // Validation: check if the user passed in the tabs/drawer option without passing in either expo router or react navigation. If so, throw an error
52
+ if ((options.tabs || options['drawer+tabs']) &&
53
+ !options.reactNavigation &&
54
+ !options['react-navigation'] &&
55
+ !options.reactnavigation &&
56
+ !options.expoRouter &&
57
+ !options['expo-router'] &&
58
+ !options.exporouter) {
59
+ // throw an error without a stack trace
60
+ throw navigationValidationError;
61
+ }
62
+ yield (0, utilities_1.renderTitle)(toolbox);
63
+ (0, prompts_1.intro)(`Let's get started!`);
64
+ // Prompt the user for the project name if it is not passed in via the command
65
+ // - TODO: simplify this if statement to clarify what is being checked
66
+ if (!first && (options.ignite || !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript))) {
67
+ const name = yield (0, prompts_1.text)({
68
+ message: 'What do you want to name your project?',
69
+ placeholder: constants_1.DEFAULT_APP_NAME
70
+ });
71
+ if ((0, prompts_1.isCancel)(name)) {
72
+ (0, prompts_1.cancel)('Cancelled... 👋');
73
+ return process.exit(0);
74
+ }
75
+ // if name is undefined or empty string, use default name
76
+ cliResults.projectName = (name && name.toString()) || constants_1.DEFAULT_APP_NAME;
77
+ }
78
+ else {
79
+ // Destructure the results but set the projectName if the first param is passed in
80
+ cliResults.projectName = first || constants_1.DEFAULT_APP_NAME;
81
+ const pathSegments = cliResults.projectName.split('/');
82
+ cliResults.projectName = pathSegments.pop(); // get last segment as the project name
83
+ }
84
+ // Validate the provided project name; check if the directory already exists
85
+ // - We may or may not be interactive, so conditionally pass in prompt.
86
+ // - Ignore validation if the overwrite option is passed in.
87
+ if (options.overwrite) {
88
+ cliResults.flags.overwrite = true;
89
+ }
90
+ if (options.eas) {
91
+ cliResults.flags.eas = true;
92
+ }
93
+ yield (0, validateProjectName_1.validateProjectName)(exists, removeAsync, !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript) ? prompt : null, cliResults.projectName, cliResults.flags.overwrite);
94
+ }
95
+ catch (err) {
96
+ if (err === '') {
97
+ // user cancelled/exited the interactive CLI
98
+ return void success(`\nCancelled... 👋 \n`);
99
+ }
100
+ if (err === navigationValidationError) {
101
+ // user tried passing in tabs/drawer option without passing in either expo router or react navigation
102
+ return void error(`\n${navigationValidationError}\n`);
103
+ }
104
+ if (err.message.includes(projectNameValidationError)) {
105
+ return void success(`\nCancelled... 👋 \n`);
106
+ }
107
+ // Delete all files with projectName
108
+ yield removeAsync(cliResults.projectName);
109
+ printSomethingWentWrong();
110
+ throw err;
111
+ }
112
+ // END INPUT VALIDATION
113
+ // Determine remaining options, run interactive CLI if necessary, and generate project
114
+ try {
115
+ // Check if user wants to create an opinionated stack prior to running the configurable CLI
116
+ if (options.ignite) {
117
+ yield (0, utilities_1.runIgnite)(toolbox, cliResults.projectName, cliResults);
118
+ }
119
+ else {
120
+ // Check if the user wants to not install dependencies and/or not initialize git, update cliResults accordingly
121
+ cliResults.flags.noInstall =
122
+ options.noInstall || (typeof options.install === 'boolean' && !options.install) || false;
123
+ cliResults.flags.noGit = options.noGit || (typeof options.git === 'boolean' && !options.git) || false;
124
+ // Validate import alias string forward slash and asterisk
125
+ if (typeof options.importAlias === 'string') {
126
+ if (!options.importAlias.endsWith('/*')) {
127
+ throw new Error('Import alias must end in `/*`, for example: `@/*` or `~/`');
166
128
  }
167
- cliResults.flags.importAlias = options.importAlias !== false && options['import-alias'] !== false;
168
- if (!!(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)) return [3 /*break*/, 13];
169
- return [4 /*yield*/, (0, utilities_1.runCLI)(toolbox, cliResults.projectName)];
170
- case 12:
129
+ }
130
+ cliResults.flags.importAlias = options.importAlias !== false && options['import-alias'] !== false;
131
+ if (!(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)) {
171
132
  // Run the CLI to prompt the user for input
172
- cliResults = _d.sent();
173
- _d.label = 13;
174
- case 13:
175
- // Update the cliResults with the options passed in via the command
176
- // Navigation packages
177
- if (options.reactNavigation || options['react-navigation'] || options.reactnavigation) {
178
- // Add react-navigation package
179
- cliResults.packages.push({
180
- name: 'react-navigation',
181
- type: 'navigation',
182
- options: {
183
- type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
184
- }
185
- });
186
- }
187
- if (options.expoRouter || options['expo-router'] || options.exporouter) {
188
- // Add expo-router package
189
- cliResults.packages.push({
190
- name: 'expo-router',
191
- type: 'navigation',
192
- options: {
193
- type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
194
- }
195
- });
196
- }
197
- // Styling packages
198
- if (options.nativewind) {
199
- // Check if there is already a styling library added and remove it if so
200
- cliResults = (0, clearStylingPackages_1.default)(cliResults);
201
- // Add nativewind package
202
- cliResults.packages.push({
203
- name: 'nativewind',
204
- type: 'styling'
205
- });
206
- }
207
- else if (options.nativewindui) {
208
- cliResults = (0, clearStylingPackages_1.default)(cliResults);
209
- cliResults = (0, clearNavigationPackages_1.default)(cliResults);
210
- cliResults.packages.push({
211
- name: 'nativewindui',
212
- type: 'styling',
213
- options: {
214
- selectedComponents: options.blank
215
- ? []
216
- : [
217
- 'action-sheet',
218
- 'activity-indicator',
219
- 'activity-view',
220
- 'alert',
221
- 'avatar',
222
- 'bottom-sheet',
223
- 'context-menu',
224
- 'date-picker',
225
- 'dropdown-menu',
226
- 'picker',
227
- 'progress-indicator',
228
- 'ratings-indicator',
229
- 'segmented-control',
230
- 'selectable-text',
231
- 'slider',
232
- 'text',
233
- 'toggle'
234
- ]
235
- }
236
- });
237
- cliResults.packages.push({
238
- name: 'expo-router',
239
- type: 'navigation',
240
- options: {
241
- type: 'drawer + tabs'
242
- }
243
- });
244
- }
245
- else if (options.tamagui) {
246
- cliResults = (0, clearStylingPackages_1.default)(cliResults);
247
- // Add tamagui package
248
- cliResults.packages.push({
249
- name: 'tamagui',
250
- type: 'styling'
251
- });
252
- }
253
- else if (options.unistyles) {
254
- cliResults = (0, clearStylingPackages_1.default)(cliResults);
255
- // Add unistyles package
256
- cliResults.packages.push({
257
- name: 'unistyles',
258
- type: 'styling'
259
- });
260
- }
261
- else if (options.stylesheet) {
133
+ cliResults = yield (0, utilities_1.runCLI)(toolbox, cliResults.projectName);
134
+ }
135
+ // Update the cliResults with the options passed in via the command
136
+ // Navigation packages
137
+ if (options.reactNavigation || options['react-navigation'] || options.reactnavigation) {
138
+ // Add react-navigation package
139
+ cliResults.packages.push({
140
+ name: 'react-navigation',
141
+ type: 'navigation',
142
+ options: {
143
+ type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
144
+ }
145
+ });
146
+ }
147
+ if (options.expoRouter || options['expo-router'] || options.exporouter) {
148
+ // Add expo-router package
149
+ cliResults.packages.push({
150
+ name: 'expo-router',
151
+ type: 'navigation',
152
+ options: {
153
+ type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
154
+ }
155
+ });
156
+ }
157
+ // Styling packages
158
+ if (options.nativewind) {
159
+ // Check if there is already a styling library added and remove it if so
160
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
161
+ // Add nativewind package
162
+ cliResults.packages.push({
163
+ name: 'nativewind',
164
+ type: 'styling'
165
+ });
166
+ }
167
+ else if (options.nativewindui) {
168
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
169
+ cliResults = (0, clearNavigationPackages_1.default)(cliResults);
170
+ cliResults.packages.push({
171
+ name: 'nativewindui',
172
+ type: 'styling',
173
+ options: {
174
+ selectedComponents: options.blank
175
+ ? []
176
+ : [
177
+ 'action-sheet',
178
+ 'activity-indicator',
179
+ 'activity-view',
180
+ 'alert',
181
+ 'avatar',
182
+ 'bottom-sheet',
183
+ 'context-menu',
184
+ 'date-picker',
185
+ 'dropdown-menu',
186
+ 'picker',
187
+ 'progress-indicator',
188
+ 'ratings-indicator',
189
+ 'segmented-control',
190
+ 'selectable-text',
191
+ 'slider',
192
+ 'text',
193
+ 'toggle'
194
+ ]
195
+ }
196
+ });
197
+ cliResults.packages.push({
198
+ name: 'expo-router',
199
+ type: 'navigation',
200
+ options: {
201
+ type: 'drawer + tabs'
202
+ }
203
+ });
204
+ }
205
+ else if (options.tamagui) {
206
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
207
+ // Add tamagui package
208
+ cliResults.packages.push({
209
+ name: 'tamagui',
210
+ type: 'styling'
211
+ });
212
+ }
213
+ else if (options.unistyles) {
214
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
215
+ // Add unistyles package
216
+ cliResults.packages.push({
217
+ name: 'unistyles',
218
+ type: 'styling'
219
+ });
220
+ }
221
+ else if (options.stylesheet) {
222
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
223
+ // Add stylesheet package
224
+ cliResults.packages.push({
225
+ name: 'stylesheet',
226
+ type: 'styling'
227
+ });
228
+ }
229
+ else if (options.restyle) {
230
+ try {
262
231
  cliResults = (0, clearStylingPackages_1.default)(cliResults);
263
232
  // Add stylesheet package
264
233
  cliResults.packages.push({
265
- name: 'stylesheet',
234
+ name: 'restyle',
266
235
  type: 'styling'
267
236
  });
268
237
  }
269
- else if (options.restyle) {
270
- try {
271
- cliResults = (0, clearStylingPackages_1.default)(cliResults);
272
- // Add stylesheet package
273
- cliResults.packages.push({
274
- name: 'restyle',
275
- type: 'styling'
276
- });
277
- }
278
- catch (error) {
279
- console.log({ error: error });
238
+ catch (error) {
239
+ console.log({ error });
240
+ }
241
+ }
242
+ // if there is no style package, add stylesheet
243
+ else if (cliResults.packages.find((p) => p.type === 'styling') === undefined) {
244
+ cliResults.packages.push({
245
+ name: 'stylesheet',
246
+ type: 'styling'
247
+ });
248
+ }
249
+ // Authentication packages
250
+ if (options.supabase) {
251
+ // Add supabase package
252
+ cliResults.packages.push({
253
+ name: 'supabase',
254
+ type: 'authentication'
255
+ });
256
+ }
257
+ if (options.firebase) {
258
+ // Add firebase package
259
+ cliResults.packages.push({
260
+ name: 'firebase',
261
+ type: 'authentication'
262
+ });
263
+ }
264
+ // Internalization packages
265
+ if (options.i18next) {
266
+ cliResults.packages.push({
267
+ name: 'i18next',
268
+ type: 'internationalization'
269
+ });
270
+ }
271
+ // By this point, all cliResults should be set
272
+ info('');
273
+ highlight('Your project configuration:');
274
+ info(`${util.inspect(cliResults, false, null, true /* enable colors */)}`);
275
+ info('');
276
+ highlight('To recreate this project, run:');
277
+ // Function that outputs a string given the CLI results and the packageManager. The outputted string should be a command that can be run to recreate the project
278
+ const generateRerunScript = (cliResults) => {
279
+ let script = `npx create-expo-stack ${cliResults.projectName} `;
280
+ if (cliResults.packages.length > 0 && cliResults.packages[0].name === 'nativewindui') {
281
+ script += '--nativewindui ';
282
+ if (cliResults.packages[0].options.selectedComponents.length === 0) {
283
+ script += '--blank ';
280
284
  }
281
285
  }
282
- // if there is no style package, add stylesheet
283
- else if (cliResults.packages.find(function (p) { return p.type === 'styling'; }) === undefined) {
284
- cliResults.packages.push({
285
- name: 'stylesheet',
286
- type: 'styling'
286
+ else {
287
+ // Add the packages
288
+ cliResults.packages.forEach((p) => {
289
+ var _a, _b;
290
+ script += `--${p.name} `;
291
+ // If the package is a navigation package, add the type if it is tabs
292
+ if (p.type === 'navigation') {
293
+ if (((_a = p.options) === null || _a === void 0 ? void 0 : _a.type) === 'tabs') {
294
+ script += '--tabs ';
295
+ }
296
+ else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer + tabs') {
297
+ script += '--drawer+tabs ';
298
+ }
299
+ }
287
300
  });
288
301
  }
289
- // Authentication packages
290
- if (options.supabase) {
291
- // Add supabase package
292
- cliResults.packages.push({
293
- name: 'supabase',
294
- type: 'authentication'
295
- });
302
+ // Check if the user wants to skip installing packages
303
+ if (cliResults.flags.noInstall) {
304
+ script += '--no-install ';
296
305
  }
297
- if (options.firebase) {
298
- // Add firebase package
299
- cliResults.packages.push({
300
- name: 'firebase',
301
- type: 'authentication'
302
- });
306
+ // Check if the user wants to skip initializing git
307
+ if (cliResults.flags.noGit) {
308
+ script += '--no-git ';
303
309
  }
304
- // Internalization packages
305
- if (options.i18next) {
306
- cliResults.packages.push({
307
- name: 'i18next',
308
- type: 'internationalization'
309
- });
310
+ // Check if the user wants to overwrite the project directory
311
+ if (!cliResults.flags.importAlias) {
312
+ script += '--no-import-alias ';
310
313
  }
311
- // By this point, all cliResults should be set
312
- info('');
313
- highlight('Your project configuration:');
314
- info("".concat(util.inspect(cliResults, false, null, true /* enable colors */)));
315
- info('');
316
- highlight('To recreate this project, run:');
317
- generateRerunScript = function (cliResults) {
318
- var script = "npx create-expo-stack ".concat(cliResults.projectName, " ");
319
- if (cliResults.packages.length > 0 && cliResults.packages[0].name === 'nativewindui') {
320
- script += '--nativewindui ';
321
- if (cliResults.packages[0].options.selectedComponents.length === 0) {
322
- script += '--blank ';
323
- }
324
- }
325
- else {
326
- // Add the packages
327
- cliResults.packages.forEach(function (p) {
328
- var _a, _b;
329
- script += "--".concat(p.name, " ");
330
- // If the package is a navigation package, add the type if it is tabs
331
- if (p.type === 'navigation') {
332
- if (((_a = p.options) === null || _a === void 0 ? void 0 : _a.type) === 'tabs') {
333
- script += '--tabs ';
334
- }
335
- else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer + tabs') {
336
- script += '--drawer+tabs ';
337
- }
338
- }
339
- });
340
- }
341
- // Check if the user wants to skip installing packages
342
- if (cliResults.flags.noInstall) {
343
- script += '--no-install ';
344
- }
345
- // Check if the user wants to skip initializing git
346
- if (cliResults.flags.noGit) {
347
- script += '--no-git ';
348
- }
349
- // Check if the user wants to overwrite the project directory
350
- if (!cliResults.flags.importAlias) {
351
- script += '--no-import-alias ';
352
- }
353
- // Add the package manager
354
- if (cliResults.flags.packageManager !== 'npm') {
355
- script += "--".concat(cliResults.flags.packageManager);
356
- }
357
- if (cliResults.flags.eas) {
358
- script += " --eas";
359
- }
360
- return script;
361
- };
362
- packageManager = (0, utilities_1.getPackageManager)(toolbox, cliResults);
363
- warning(" ".concat(generateRerunScript(cliResults)));
364
- packages = cliResults.packages;
365
- authenticationPackage = packages.find(function (p) { return p.type === 'authentication'; }) || undefined;
366
- navigationPackage = packages.find(function (p) { return p.type === 'navigation'; }) || undefined;
367
- stylingPackage = packages.find(function (p) { return p.type === 'styling'; });
368
- internalizationPackage = packages.find(function (p) { return p.type === 'internationalization'; });
369
- files = [];
370
- files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, toolbox, cliResults, internalizationPackage);
371
- formattedFiles = [];
372
- formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, packageManager, stylingPackage, toolbox, internalizationPackage);
373
- return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox, stylingPackage)];
374
- case 14:
375
- _d.sent();
376
- _d.label = 15;
377
- case 15: return [3 /*break*/, 18];
378
- case 16:
379
- err_2 = _d.sent();
380
- if (err_2 === '') {
381
- // user cancelled/exited the interactive CLI
382
- return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
314
+ // Add the package manager
315
+ if (cliResults.flags.packageManager !== 'npm') {
316
+ script += `--${cliResults.flags.packageManager}`;
383
317
  }
384
- if (err_2.message.includes(bunInstallationError)) {
385
- return [2 /*return*/, void success("\nUser cancelled to install recommended version of Bun... \uD83D\uDC4B \n")];
318
+ if (cliResults.flags.eas) {
319
+ script += ` --eas`;
386
320
  }
387
- // Delete all files with projectName
388
- return [4 /*yield*/, removeAsync(cliResults.projectName)];
389
- case 17:
390
- // Delete all files with projectName
391
- _d.sent();
392
- printSomethingWentWrong();
393
- throw err_2;
394
- case 18: return [2 /*return*/];
321
+ return script;
322
+ };
323
+ const packageManager = (0, utilities_1.getPackageManager)(toolbox, cliResults);
324
+ warning(` ${generateRerunScript(cliResults)}`);
325
+ const { packages } = cliResults;
326
+ // Define props to be passed into the templates
327
+ const authenticationPackage = packages.find((p) => p.type === 'authentication') || undefined;
328
+ const navigationPackage = packages.find((p) => p.type === 'navigation') || undefined;
329
+ // if there is no styling package, add the stylesheet package
330
+ const stylingPackage = packages.find((p) => p.type === 'styling');
331
+ const internalizationPackage = packages.find((p) => p.type === 'internationalization');
332
+ let files = [];
333
+ files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, toolbox, cliResults, internalizationPackage);
334
+ // Once all the files are defined, format and generate them
335
+ let formattedFiles = [];
336
+ formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, packageManager, stylingPackage, toolbox, internalizationPackage);
337
+ yield (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox, stylingPackage);
338
+ }
339
+ }
340
+ catch (err) {
341
+ if (err === '') {
342
+ // user cancelled/exited the interactive CLI
343
+ return void success(`\nCancelled... 👋 \n`);
344
+ }
345
+ if (err.message.includes(bunInstallationError)) {
346
+ return void success(`\nUser cancelled to install recommended version of Bun... 👋 \n`);
395
347
  }
396
- });
397
- }); }
348
+ // Delete all files with projectName
349
+ yield removeAsync(cliResults.projectName);
350
+ printSomethingWentWrong();
351
+ throw err;
352
+ }
353
+ })
398
354
  };
399
355
  exports.default = command;
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUN2RSwwQ0FBK0Q7QUFDL0QsaUdBQTJFO0FBRTNFLElBQU0seUJBQXlCLEdBQUcsb0hBQW9ILENBQUM7QUFDdkosSUFBTSwwQkFBMEIsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxJQUFNLG9CQUFvQixHQUFHLHVEQUF1RCxDQUFDO0FBRXJGLElBQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLFVBQU8sT0FBTzs7Ozs7b0JBRWYsS0FJRSxPQUFPLFdBSjBCLEVBQXJCLE1BQU0sWUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFDakMsS0FHRSxPQUFPLFdBSHFCLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUVFLE9BQU8sTUFGMEMsRUFBMUMsS0FBSyxXQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLEVBQ2pELE1BQU0sR0FDSixPQUFPLE9BREgsQ0FDSTtvQkFFTix1QkFBdUIsR0FBRzt3QkFDOUIsSUFBSSxDQUFDLHVFQUE2RCxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQzt3QkFDRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDO29CQUNGLElBQUksT0FB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
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsNENBU3NCO0FBQ3RCLDRDQUFnRTtBQUNoRSxvQ0FBeUQ7QUFDekQsNkZBQXFFO0FBQ3JFLDBFQUF1RTtBQUN2RSw0Q0FBK0Q7QUFDL0QsbUdBQTJFO0FBRTNFLE1BQU0seUJBQXlCLEdBQUcsb0hBQW9ILENBQUM7QUFDdkosTUFBTSwwQkFBMEIsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxNQUFNLG9CQUFvQixHQUFHLHVEQUF1RCxDQUFDO0FBRXJGLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLENBQU8sT0FBTyxFQUFFLEVBQUU7UUFDckIsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFDbkMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUM5QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ25ELE1BQU0sRUFDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQztZQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQztRQUNGLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBQSxv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