create-expo-stack 2.10.5-next.5b73b74 → 2.10.5-next.5eefd28

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 +51 -21
  3. package/build/commands/create-expo-stack.js +364 -320
  4. package/build/templates/base/components/Button.tsx.ejs +3 -2
  5. package/build/templates/packages/nativewind/components/Button.tsx.ejs +5 -4
  6. package/build/templates/packages/nativewindui/components/Button.tsx.ejs +3 -2
  7. package/build/templates/packages/restyle/components/Button.tsx.ejs +3 -7
  8. package/build/templates/packages/tamagui/components/Button.tsx.ejs +5 -11
  9. package/build/templates/packages/tamagui/tamagui.config.ts.ejs +25 -24
  10. package/build/templates/packages/unistyles/components/Button.tsx.ejs +3 -8
  11. package/build/utilities/bumpVersion.js +6 -6
  12. package/build/utilities/clearNavigationPackages.js +2 -2
  13. package/build/utilities/clearStylingPackages.js +2 -2
  14. package/build/utilities/configStorage.js +88 -31
  15. package/build/utilities/configureProjectFiles.js +83 -96
  16. package/build/utilities/copyBaseAssets.js +36 -4
  17. package/build/utilities/generateProjectFiles.js +16 -16
  18. package/build/utilities/getPackageManager.js +7 -7
  19. package/build/utilities/printOutput.js +211 -156
  20. package/build/utilities/renderTitle.js +62 -22
  21. package/build/utilities/runCLI.js +393 -334
  22. package/build/utilities/runEasConfigure.js +106 -61
  23. package/build/utilities/runIgnite.js +45 -9
  24. package/build/utilities/systemCommand.js +48 -11
  25. package/build/utilities/usePackage.js +2 -2
  26. package/build/utilities/validateProjectName.js +64 -27
  27. package/package.json +1 -1
  28. package/build/types/utilities/configAnalytics.d.ts +0 -17
  29. package/build/utilities/configAnalytics.js +0 -70
@@ -8,349 +8,393 @@ 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
+ };
11
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
40
  };
14
41
  Object.defineProperty(exports, "__esModule", { value: true });
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 = {
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 = {
27
54
  name: 'create-expo-stack',
28
55
  description: 'Create a new Expo project',
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 `~/`');
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*/];
128
70
  }
129
- }
130
- cliResults.flags.importAlias = options.importAlias !== false && options['import-alias'] !== false;
131
- if (!(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)) {
132
- // Run the CLI to prompt the user for input
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'
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 `~/`');
202
165
  }
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 {
166
+ }
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:
171
+ // 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
231
200
  cliResults = (0, clearStylingPackages_1.default)(cliResults);
232
- // Add stylesheet package
201
+ // Add nativewind package
233
202
  cliResults.packages.push({
234
- name: 'restyle',
203
+ name: 'nativewind',
235
204
  type: 'styling'
236
205
  });
237
206
  }
238
- catch (error) {
239
- console.log({ error });
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
+ });
240
244
  }
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 ';
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) {
262
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
263
+ // Add stylesheet package
264
+ cliResults.packages.push({
265
+ name: 'stylesheet',
266
+ type: 'styling'
267
+ });
268
+ }
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 });
284
280
  }
285
281
  }
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
- }
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'
300
287
  });
301
288
  }
302
- // Check if the user wants to skip installing packages
303
- if (cliResults.flags.noInstall) {
304
- script += '--no-install ';
289
+ // Authentication packages
290
+ if (options.supabase) {
291
+ // Add supabase package
292
+ cliResults.packages.push({
293
+ name: 'supabase',
294
+ type: 'authentication'
295
+ });
305
296
  }
306
- // Check if the user wants to skip initializing git
307
- if (cliResults.flags.noGit) {
308
- script += '--no-git ';
297
+ if (options.firebase) {
298
+ // Add firebase package
299
+ cliResults.packages.push({
300
+ name: 'firebase',
301
+ type: 'authentication'
302
+ });
309
303
  }
310
- // Check if the user wants to overwrite the project directory
311
- if (!cliResults.flags.importAlias) {
312
- script += '--no-import-alias ';
304
+ // Internalization packages
305
+ if (options.i18next) {
306
+ cliResults.packages.push({
307
+ name: 'i18next',
308
+ type: 'internationalization'
309
+ });
313
310
  }
314
- // Add the package manager
315
- if (cliResults.flags.packageManager !== 'npm') {
316
- script += `--${cliResults.flags.packageManager}`;
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")];
317
383
  }
318
- if (cliResults.flags.eas) {
319
- script += ` --eas`;
384
+ if (err_2.message.includes(bunInstallationError)) {
385
+ return [2 /*return*/, void success("\nUser cancelled to install recommended version of Bun... \uD83D\uDC4B \n")];
320
386
  }
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`);
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*/];
347
395
  }
348
- // Delete all files with projectName
349
- yield removeAsync(cliResults.projectName);
350
- printSomethingWentWrong();
351
- throw err;
352
- }
353
- })
396
+ });
397
+ }); }
354
398
  };
355
399
  exports.default = command;
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsNENBU3NCO0FBQ3RCLDRDQUFnRTtBQUNoRSxvQ0FBeUQ7QUFDekQsNkZBQXFFO0FBQ3JFLDBFQUF1RTtBQUN2RSw0Q0FBK0Q7QUFDL0QsbUdBQTJFO0FBRTNFLE1BQU0seUJBQXlCLEdBQUcsb0hBQW9ILENBQUM7QUFDdkosTUFBTSwwQkFBMEIsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxNQUFNLG9CQUFvQixHQUFHLHVEQUF1RCxDQUFDO0FBRXJGLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLENBQU8sT0FBTyxFQUFFLEVBQUU7UUFDckIsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFDbkMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUM5QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ25ELE1BQU0sRUFDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQztZQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQztRQUNGLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBQSxv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
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUN2RSwwQ0FBK0Q7QUFDL0QsaUdBQTJFO0FBRTNFLElBQU0seUJBQXlCLEdBQUcsb0hBQW9ILENBQUM7QUFDdkosSUFBTSwwQkFBMEIsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxJQUFNLG9CQUFvQixHQUFHLHVEQUF1RCxDQUFDO0FBRXJGLElBQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLFVBQU8sT0FBTzs7Ozs7b0JBRWYsS0FJRSxPQUFPLFdBSjBCLEVBQXJCLE1BQU0sWUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFDakMsS0FHRSxPQUFPLFdBSHFCLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUVFLE9BQU8sTUFGMEMsRUFBMUMsS0FBSyxXQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLEVBQ2pELE1BQU0sR0FDSixPQUFPLE9BREgsQ0FDSTtvQkFFTix1QkFBdUIsR0FBRzt3QkFDOUIsSUFBSSxDQUFDLHVFQUE2RCxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQzt3QkFDRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDO29CQUNGLElBQUksT0FB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