create-rock 0.0.1 → 0.9.0

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 (74) hide show
  1. package/README.md +67 -0
  2. package/dist/e2e/e2e.test.d.ts +1 -0
  3. package/dist/e2e/e2e.test.d.ts.map +1 -0
  4. package/dist/e2e/e2e.test.js +98 -0
  5. package/dist/e2e/e2e.test.js.map +1 -0
  6. package/dist/src/bin.d.ts +2 -0
  7. package/dist/src/bin.d.ts.map +1 -0
  8. package/dist/src/bin.js +10 -0
  9. package/dist/src/bin.js.map +1 -0
  10. package/dist/src/index.d.ts +1 -0
  11. package/dist/src/index.d.ts.map +1 -0
  12. package/dist/src/index.js +2 -0
  13. package/dist/src/index.js.map +1 -0
  14. package/dist/src/lib/bin.d.ts +4 -0
  15. package/dist/src/lib/bin.d.ts.map +1 -0
  16. package/dist/src/lib/bin.js +210 -0
  17. package/dist/src/lib/bin.js.map +1 -0
  18. package/dist/src/lib/steps/git-init.d.ts +3 -0
  19. package/dist/src/lib/steps/git-init.d.ts.map +1 -0
  20. package/dist/src/lib/steps/git-init.js +51 -0
  21. package/dist/src/lib/steps/git-init.js.map +1 -0
  22. package/dist/src/lib/templates.d.ts +23 -0
  23. package/dist/src/lib/templates.d.ts.map +1 -0
  24. package/dist/src/lib/templates.js +122 -0
  25. package/dist/src/lib/templates.js.map +1 -0
  26. package/dist/src/lib/utils/edit-template.d.ts +10 -0
  27. package/dist/src/lib/utils/edit-template.d.ts.map +1 -0
  28. package/dist/src/lib/utils/edit-template.js +48 -0
  29. package/dist/src/lib/utils/edit-template.js.map +1 -0
  30. package/dist/src/lib/utils/fs.d.ts +10 -0
  31. package/dist/src/lib/utils/fs.d.ts.map +1 -0
  32. package/dist/src/lib/utils/fs.js +49 -0
  33. package/dist/src/lib/utils/fs.js.map +1 -0
  34. package/dist/src/lib/utils/getPkgManager.d.ts +1 -0
  35. package/dist/src/lib/utils/getPkgManager.js +21 -0
  36. package/dist/src/lib/utils/getPkgManager.js.map +1 -0
  37. package/dist/src/lib/utils/initInExistingProject.d.ts +1 -0
  38. package/dist/src/lib/utils/initInExistingProject.js +243 -0
  39. package/dist/src/lib/utils/initInExistingProject.js.map +1 -0
  40. package/dist/src/lib/utils/isRnefProject.d.ts +1 -0
  41. package/dist/src/lib/utils/isRnefProject.js +2 -0
  42. package/dist/src/lib/utils/isRnefProject.js.map +1 -0
  43. package/dist/src/lib/utils/migrateRnefProject.d.ts +2 -0
  44. package/dist/src/lib/utils/migrateRnefProject.js +206 -0
  45. package/dist/src/lib/utils/migrateRnefProject.js.map +1 -0
  46. package/dist/src/lib/utils/package-json.d.ts +2 -0
  47. package/dist/src/lib/utils/package-json.d.ts.map +1 -0
  48. package/dist/src/lib/utils/package-json.js +65 -0
  49. package/dist/src/lib/utils/package-json.js.map +1 -0
  50. package/dist/src/lib/utils/parse-cli-options.d.ts +14 -0
  51. package/dist/src/lib/utils/parse-cli-options.d.ts.map +1 -0
  52. package/dist/src/lib/utils/parse-cli-options.js +35 -0
  53. package/dist/src/lib/utils/parse-cli-options.js.map +1 -0
  54. package/dist/src/lib/utils/parsers.d.ts +10 -0
  55. package/dist/src/lib/utils/parsers.d.ts.map +1 -0
  56. package/dist/src/lib/utils/parsers.js +22 -0
  57. package/dist/src/lib/utils/parsers.js.map +1 -0
  58. package/dist/src/lib/utils/project-name.d.ts +8 -0
  59. package/dist/src/lib/utils/project-name.d.ts.map +1 -0
  60. package/dist/src/lib/utils/project-name.js +88 -0
  61. package/dist/src/lib/utils/project-name.js.map +1 -0
  62. package/dist/src/lib/utils/prompts.d.ts +14 -0
  63. package/dist/src/lib/utils/prompts.d.ts.map +1 -0
  64. package/dist/src/lib/utils/prompts.js +141 -0
  65. package/dist/src/lib/utils/prompts.js.map +1 -0
  66. package/dist/src/lib/utils/tarball.d.ts +8 -0
  67. package/dist/src/lib/utils/tarball.d.ts.map +1 -0
  68. package/dist/src/lib/utils/tarball.js +47 -0
  69. package/dist/src/lib/utils/tarball.js.map +1 -0
  70. package/dist/src/lib/utils/version.d.ts +1 -0
  71. package/dist/src/lib/utils/version.d.ts.map +1 -0
  72. package/dist/src/lib/utils/version.js +18 -0
  73. package/dist/src/lib/utils/version.js.map +1 -0
  74. package/package.json +34 -6
@@ -0,0 +1,206 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { color, logger, note, outro, spawn, spinner } from '@rock-js/tools';
4
+ import { getPkgManager } from './getPkgManager.js';
5
+ async function migrateRnefProject(projectRoot) {
6
+ const pkgManager = getPkgManager();
7
+ const loader = spinner();
8
+ const packagesMap = {
9
+ '@rnef/cli': 'rock',
10
+ '@rnef/platform-android': '@rock-js/platform-android',
11
+ '@rnef/platform-ios': '@rock-js/platform-ios',
12
+ '@rnef/plugin-metro': '@rock-js/plugin-metro',
13
+ '@rnef/plugin-repack': '@rock-js/plugin-repack',
14
+ '@rnef/provider-github': '@rock-js/provider-github',
15
+ '@rnef/provider-s3': '@rock-js/provider-s3',
16
+ '@rnef/welcome-screen': '@rock-js/welcome-screen',
17
+ };
18
+ const rnefDependencies = collectCurrentRnefDependencies(projectRoot);
19
+ // 1) Remove RNEF packages and add Rock counterparts
20
+ loader.start(`Removing ${color.bold('RNEF')} packages`);
21
+ await removeDependencies(projectRoot, pkgManager, rnefDependencies);
22
+ loader.stop(`Removed ${color.bold('RNEF')} packages`);
23
+ loader.start(`Adding ${color.bold('Rock')} packages with ${color.bold(pkgManager)}`);
24
+ await addDevDependencies(projectRoot, pkgManager, rnefDependencies.map((dependency) => packagesMap[dependency]));
25
+ loader.stop(`Added ${color.bold('Rock')} packages`);
26
+ // 2) Update .gitignore
27
+ loader.start(`Updating ${color.bold('.gitignore')}`);
28
+ updateGitignore(projectRoot);
29
+ loader.stop(`Updated ${color.bold('.gitignore')}`);
30
+ // 3) Rename .rnef/ directory to .rock/
31
+ loader.start(`Updating cache`);
32
+ renameRnefDirectory(projectRoot);
33
+ updateCacheFilenames(projectRoot);
34
+ loader.stop(`Updated cache`);
35
+ // 4) Rename and update rnef.config.mjs
36
+ loader.start(`Renaming and updating ${color.bold('rnef.config.mjs')} to ${color.bold('rock.config.mjs')}`);
37
+ renameAndUpdateConfig(projectRoot);
38
+ loader.stop(`Renamed and updated ${color.bold('rnef.config.mjs')} to ${color.bold('rock.config.mjs')}`);
39
+ // 5) Update Android build.gradle
40
+ loader.start(`Updating ${color.bold('android/app/build.gradle')}`);
41
+ updateAndroidBuildGradle(projectRoot);
42
+ loader.stop(`Updated ${color.bold('android/app/build.gradle')}`);
43
+ // 6) Update iOS Podfile
44
+ loader.start(`Updating ${color.bold('ios/Podfile')}`);
45
+ updatePodfile(projectRoot);
46
+ loader.stop(`Updated ${color.bold('ios/Podfile')}`);
47
+ // 7) Update Android settings.gradle
48
+ loader.start(`Updating ${color.bold('android/settings.gradle')}`);
49
+ updateAndroidSettingsGradle(projectRoot);
50
+ loader.stop(`Updated ${color.bold('android/settings.gradle')}`);
51
+ // 8) Update Xcode project.pbxproj
52
+ loader.start(`Updating ${color.bold('ios/project.pbxproj')}`);
53
+ updateXcodeProject(projectRoot);
54
+ loader.stop(`Updated ${color.bold('ios/project.pbxproj')}`);
55
+ // 9) Update package.json scripts
56
+ loader.start(`Updating ${color.bold('package.json')} scripts`);
57
+ updatePackageJsonScripts(projectRoot);
58
+ loader.stop(`Updated ${color.bold('package.json')} scripts`);
59
+ note([
60
+ `1. Run ${color.bold('git diff')} to see the changes. Adjust as necessary e.g.:`,
61
+ ` - paths in monorepo`,
62
+ ` - commands in shell scripts`,
63
+ ` - commands in CI workflows`,
64
+ `2. Run the dev server as you would normally do`,
65
+ `3. Run iOS and Android apps as you would normally do`,
66
+ `4. Setup Remote Cache: ${color.bold('https://rockjs.dev/docs/configuration#remote-cache-configuration')}`,
67
+ ].join('\n'), 'Next steps');
68
+ outro('RNEF to Rock migration completed successfully 🎉.');
69
+ }
70
+ function collectCurrentRnefDependencies(projectRoot) {
71
+ const packageJsonPath = path.join(projectRoot, 'package.json');
72
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
73
+ const rnefDependencies = Object.keys(packageJson.dependencies).filter((dependency) => dependency.startsWith('@rnef/'));
74
+ const rnefDevDependencies = Object.keys(packageJson.devDependencies).filter((dependency) => dependency.startsWith('@rnef/'));
75
+ return [...rnefDependencies, ...rnefDevDependencies];
76
+ }
77
+ function updateGitignore(projectRoot) {
78
+ const gitignorePath = path.join(projectRoot, '.gitignore');
79
+ if (fs.existsSync(gitignorePath)) {
80
+ let content = fs.readFileSync(gitignorePath, 'utf8');
81
+ content = content.replace(/\.rnef\//g, '.rock/');
82
+ fs.writeFileSync(gitignorePath, content);
83
+ }
84
+ }
85
+ function renameRnefDirectory(projectRoot) {
86
+ const rnefPath = path.join(projectRoot, '.rnef');
87
+ const rockPath = path.join(projectRoot, '.rock');
88
+ if (fs.existsSync(rnefPath)) {
89
+ if (fs.existsSync(rockPath)) {
90
+ // If .rock already exists, remove it first
91
+ fs.rmSync(rockPath, { recursive: true, force: true });
92
+ }
93
+ fs.renameSync(rnefPath, rockPath);
94
+ }
95
+ }
96
+ function updateCacheFilenames(projectRoot) {
97
+ const cachePath = path.join(projectRoot, '.rock', 'cache', 'remote-build');
98
+ if (!fs.existsSync(cachePath)) {
99
+ return;
100
+ }
101
+ const files = fs.readdirSync(cachePath);
102
+ files.forEach((file) => {
103
+ if (file.includes('rnef')) {
104
+ const newName = file.replace(/rnef/g, 'rock');
105
+ const oldPath = path.join(cachePath, file);
106
+ const newPath = path.join(cachePath, newName);
107
+ fs.renameSync(oldPath, newPath);
108
+ }
109
+ });
110
+ }
111
+ function renameAndUpdateConfig(projectRoot) {
112
+ const rnefConfigPath = path.join(projectRoot, 'rnef.config.mjs');
113
+ const rockConfigPath = path.join(projectRoot, 'rock.config.mjs');
114
+ if (fs.existsSync(rnefConfigPath)) {
115
+ let content = fs.readFileSync(rnefConfigPath, 'utf8');
116
+ // Replace package names
117
+ content = content.replace(/@rnef\//g, '@rock-js/');
118
+ content = content.replace(/@rnef\/cli/g, 'rock');
119
+ // Write to new file
120
+ fs.writeFileSync(rockConfigPath, content);
121
+ // Remove old file
122
+ fs.unlinkSync(rnefConfigPath);
123
+ }
124
+ }
125
+ function updateAndroidBuildGradle(projectRoot) {
126
+ const filePath = path.join(projectRoot, 'android', 'app', 'build.gradle');
127
+ if (!fs.existsSync(filePath)) {
128
+ return;
129
+ }
130
+ let content = fs.readFileSync(filePath, 'utf8');
131
+ content = content.replace(/@rnef\/cli\/dist\/src\/bin\.js/g, 'rock/dist/src/bin.js');
132
+ fs.writeFileSync(filePath, content);
133
+ }
134
+ function updatePodfile(projectRoot) {
135
+ const filePath = path.join(projectRoot, 'ios', 'Podfile');
136
+ if (!fs.existsSync(filePath)) {
137
+ return;
138
+ }
139
+ let content = fs.readFileSync(filePath, 'utf8');
140
+ content = content.replace(/rnef/g, 'rock');
141
+ fs.writeFileSync(filePath, content);
142
+ }
143
+ function updateAndroidSettingsGradle(projectRoot) {
144
+ const filePath = path.join(projectRoot, 'android', 'settings.gradle');
145
+ if (!fs.existsSync(filePath)) {
146
+ return;
147
+ }
148
+ let content = fs.readFileSync(filePath, 'utf8');
149
+ content = content.replace(/rnef/g, 'rock');
150
+ fs.writeFileSync(filePath, content);
151
+ }
152
+ function updateXcodeProject(projectRoot) {
153
+ const iosPath = path.join(projectRoot, 'ios');
154
+ if (!fs.existsSync(iosPath)) {
155
+ return;
156
+ }
157
+ const xcodeProjectFolder = fs
158
+ .readdirSync(iosPath)
159
+ .find((file) => file.endsWith('.xcodeproj'));
160
+ if (!xcodeProjectFolder) {
161
+ return;
162
+ }
163
+ const xcodeProjectPath = path.join(iosPath, xcodeProjectFolder, 'project.pbxproj');
164
+ if (!fs.existsSync(xcodeProjectPath)) {
165
+ return;
166
+ }
167
+ let content = fs.readFileSync(xcodeProjectPath, 'utf8');
168
+ content = content.replace(/@rnef\/cli/g, 'rock');
169
+ fs.writeFileSync(xcodeProjectPath, content);
170
+ }
171
+ function updatePackageJsonScripts(projectRoot) {
172
+ const packageJsonPath = path.join(projectRoot, 'package.json');
173
+ if (!fs.existsSync(packageJsonPath)) {
174
+ return;
175
+ }
176
+ let content = fs.readFileSync(packageJsonPath, 'utf8');
177
+ content = content.replace(/rnef/g, 'rock');
178
+ fs.writeFileSync(packageJsonPath, content);
179
+ }
180
+ async function addDevDependencies(projectRoot, pkgManager, packages) {
181
+ const argsByManager = {
182
+ npm: ['install', '-D', ...packages],
183
+ pnpm: ['add', '-D', ...packages],
184
+ yarn: ['add', '-D', ...packages],
185
+ bun: ['add', '-D', ...packages],
186
+ };
187
+ const args = argsByManager[pkgManager] ?? ['install', '-D', ...packages];
188
+ await spawn(pkgManager, args, { cwd: projectRoot });
189
+ }
190
+ async function removeDependencies(projectRoot, pkgManager, packages) {
191
+ const argsByManager = {
192
+ npm: ['remove', ...packages],
193
+ pnpm: ['remove', ...packages],
194
+ yarn: ['remove', ...packages],
195
+ bun: ['remove', ...packages],
196
+ };
197
+ const args = argsByManager[pkgManager] ?? ['remove', ...packages];
198
+ try {
199
+ await spawn(pkgManager, args, { cwd: projectRoot });
200
+ }
201
+ catch (error) {
202
+ logger.debug(error.message, 'Continuing with the rest of the steps\n');
203
+ }
204
+ }
205
+ export { migrateRnefProject };
206
+ //# sourceMappingURL=migrateRnefProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateRnefProject.js","sourceRoot":"","sources":["../../../../src/lib/utils/migrateRnefProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function mergePackageJsons(from: string, to: string): void;
2
+ export declare function rewritePackageJson(projectPath: string, packageName: string): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/package-json.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAczD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAoC1E"}
@@ -0,0 +1,65 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ export function mergePackageJsons(from, to) {
4
+ const src = JSON.parse(fs.readFileSync(from, 'utf-8'));
5
+ if (!fs.existsSync(to)) {
6
+ fs.copyFileSync(from, to);
7
+ }
8
+ const dist = JSON.parse(fs.readFileSync(to, 'utf-8'));
9
+ // @todo consider adding a warning when src keys are different from dist keys
10
+ dist.scripts = { ...dist.scripts, ...src.scripts };
11
+ dist.dependencies = { ...dist.dependencies, ...src.dependencies };
12
+ dist.devDependencies = { ...dist.devDependencies, ...src.devDependencies };
13
+ dist.peerDependencies = { ...dist.peerDependencies, ...src.peerDependencies };
14
+ fs.writeFileSync(to, JSON.stringify(dist, null, 2));
15
+ }
16
+ export function rewritePackageJson(projectPath, packageName) {
17
+ const packageJsonPath = path.join(projectPath, 'package.json');
18
+ if (!fs.existsSync(packageJsonPath)) {
19
+ return;
20
+ }
21
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
22
+ // Override fields from template
23
+ packageJson.name = packageName;
24
+ packageJson.version = '1.0.0';
25
+ packageJson.private = true;
26
+ delete packageJson.publishConfig;
27
+ if (packageJson.dependencies) {
28
+ packageJson.dependencies = Object.fromEntries(Object.entries(packageJson.dependencies).sort());
29
+ }
30
+ if (packageJson.devDependencies) {
31
+ packageJson.devDependencies = Object.fromEntries(Object.entries(packageJson.devDependencies).sort());
32
+ }
33
+ if (packageJson.peerDependencies) {
34
+ packageJson.peerDependencies = Object.fromEntries(Object.entries(packageJson.peerDependencies).sort());
35
+ }
36
+ fs.writeFileSync(packageJsonPath, JSON.stringify(sortPackageJson(packageJson), null, 2));
37
+ }
38
+ /**
39
+ * Sort fields in package.json to make it cleaner.
40
+ * @param packageJson
41
+ * @returns
42
+ */
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ function sortPackageJson(packageJson) {
45
+ const { name, version, private: privateValue, scripts, dependencies, devDependencies, peerDependencies, ...rest } = packageJson;
46
+ const result = {};
47
+ setField(result, 'name', name);
48
+ setField(result, 'version', version);
49
+ setField(result, 'private', privateValue);
50
+ setField(result, 'scripts', scripts);
51
+ setField(result, 'dependencies', dependencies);
52
+ setField(result, 'devDependencies', devDependencies);
53
+ setField(result, 'peerDependencies', peerDependencies);
54
+ for (const key in rest) {
55
+ result[key] = rest[key];
56
+ }
57
+ return result;
58
+ }
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ function setField(packageJson, key, value) {
61
+ if (value !== undefined) {
62
+ packageJson[key] = value;
63
+ }
64
+ }
65
+ //# sourceMappingURL=package-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../../src/lib/utils/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,EAAU;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtD,6EAA6E;IAC7E,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACnD,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAClE,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IAC3E,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC9E,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,WAAmB;IACzE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1E,gCAAgC;IAChC,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;IAC/B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;IAE3B,OAAO,WAAW,CAAC,aAAa,CAAC;IAEjC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAC3C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,WAAW,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAC9C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACjC,WAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAC/C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CACpD,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,aAAa,CACd,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,8DAA8D;AAC9D,SAAS,eAAe,CAAC,WAAgB;IACvC,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EAAE,YAAY,EACrB,OAAO,EACP,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,WAAW,CAAC;IAEhB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAEvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,QAAQ,CAAC,WAAgB,EAAE,GAAW,EAAE,KAAc;IAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type CliOptions = {
2
+ name?: string;
3
+ template?: string;
4
+ platforms?: string[];
5
+ plugins?: string[];
6
+ bundler?: string;
7
+ help: boolean;
8
+ version: boolean;
9
+ dir?: string;
10
+ override: boolean;
11
+ remoteCacheProvider?: string | undefined | false;
12
+ install: boolean;
13
+ };
14
+ export declare function parseCliOptions(argv: string[]): CliOptions;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-cli-options.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/parse-cli-options.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAeF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoB1D"}
@@ -0,0 +1,35 @@
1
+ import minimist from 'minimist';
2
+ export function parseCliOptions(argv) {
3
+ const options = minimist(argv, {
4
+ alias: { h: 'help', v: 'version', p: 'platform', t: 'template', d: 'dir' },
5
+ boolean: ['help', 'version', 'override', 'install'],
6
+ string: ['template', 'platform', 'dir', 'plugin', 'bundler'],
7
+ });
8
+ return {
9
+ name: options._[0],
10
+ template: ensureOptionalString(options.template),
11
+ platforms: ensureOpitonalArray(options.platform),
12
+ plugins: ensureOpitonalArray(options.plugin),
13
+ bundler: options.bundler,
14
+ help: options.help,
15
+ version: options.version,
16
+ dir: ensureOptionalString(options.dir),
17
+ override: options.override,
18
+ remoteCacheProvider: options['remote-cache-provider'],
19
+ install: options.install,
20
+ };
21
+ }
22
+ function ensureOptionalString(value) {
23
+ if (value == undefined) {
24
+ return undefined;
25
+ }
26
+ // Last element of the array wins
27
+ return Array.isArray(value) ? value[value.length - 1] : value;
28
+ }
29
+ function ensureOpitonalArray(value) {
30
+ if (value == undefined) {
31
+ return undefined;
32
+ }
33
+ return Array.isArray(value) ? value : [value];
34
+ }
35
+ //# sourceMappingURL=parse-cli-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-cli-options.js","sourceRoot":"","sources":["../../../../src/lib/utils/parse-cli-options.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA6BhC,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAkB,IAAI,EAAE;QAC9C,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE;QAC1E,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;QACnD,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC7D,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChD,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChD,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,OAAO,CAAC,uBAAuB,CAAsB;QAC1E,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoC;IAEpC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAI,KAA0B;IACxD,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type PackageInfo = {
2
+ packageName: string;
3
+ targetDir: string;
4
+ };
5
+ export declare function parsePackageInfo(input: string): PackageInfo;
6
+ export type PackageManagerInfo = {
7
+ name: string;
8
+ version: string;
9
+ };
10
+ export declare function parsePackageManagerFromUserAgent(userAgent: string | undefined): PackageManagerInfo | undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/parsers.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAS3D;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,kBAAkB,GAAG,SAAS,CAYhC"}
@@ -0,0 +1,22 @@
1
+ import path from 'node:path';
2
+ export function parsePackageInfo(input) {
3
+ const targetDir = input.trim().replace(/\/+$/g, '');
4
+ return {
5
+ packageName: targetDir.startsWith('@')
6
+ ? targetDir
7
+ : path.basename(targetDir),
8
+ targetDir,
9
+ };
10
+ }
11
+ export function parsePackageManagerFromUserAgent(userAgent) {
12
+ if (!userAgent) {
13
+ return undefined;
14
+ }
15
+ const pkgSpec = userAgent.split(' ')[0];
16
+ const pkgSpecArr = pkgSpec.split('/');
17
+ return {
18
+ name: pkgSpecArr[0],
19
+ version: pkgSpecArr[1],
20
+ };
21
+ }
22
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../src/lib/utils/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEpD,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YACpC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gCAAgC,CAC9C,SAA6B;IAE7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function validateProjectName(name: string): string | undefined;
2
+ /**
3
+ * Transform project name to PascalCase. The input name can be in either kebab-case or PascalCase.
4
+ *
5
+ * @param name - Project name
6
+ * @returns PascalCase project name
7
+ */
8
+ export declare function normalizeProjectName(name: string): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/project-name.ts"],"names":[],"mappings":"AA8DA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,sBAe/C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,UAQhD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Allow for alphanumeric, hyphen (kebab-case), and underscore (_).
3
+ * Has to start with a letter.
4
+ */
5
+ const NAME_REGEX = /^[A-Z][0-9A-Z_-]*$/i;
6
+ // ref: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
7
+ const javaKeywords = [
8
+ 'abstract',
9
+ 'continue',
10
+ 'for',
11
+ 'new',
12
+ 'switch',
13
+ 'assert',
14
+ 'default',
15
+ 'goto',
16
+ 'package',
17
+ 'synchronized',
18
+ 'boolean',
19
+ 'do',
20
+ 'if',
21
+ 'private',
22
+ 'this',
23
+ 'break',
24
+ 'double',
25
+ 'implements',
26
+ 'protected',
27
+ 'throw',
28
+ 'byte',
29
+ 'else',
30
+ 'import',
31
+ 'public',
32
+ 'throws',
33
+ 'case',
34
+ 'enum',
35
+ 'instanceof',
36
+ 'return',
37
+ 'transient',
38
+ 'catch',
39
+ 'extends',
40
+ 'int',
41
+ 'short',
42
+ 'try',
43
+ 'char',
44
+ 'final',
45
+ 'interface',
46
+ 'static',
47
+ 'void',
48
+ 'class',
49
+ 'finally',
50
+ 'long',
51
+ 'strictfp',
52
+ 'volatile',
53
+ 'const',
54
+ 'float',
55
+ 'native',
56
+ 'super',
57
+ 'while',
58
+ ];
59
+ const reservedNames = ['react', 'react-native', ...javaKeywords];
60
+ export function validateProjectName(name) {
61
+ if (name.length === 0) {
62
+ return 'Project name cannot be empty.';
63
+ }
64
+ if (!name.match(NAME_REGEX)) {
65
+ return `Invalid project name: "${name}". Please use a valid identifier name (alphanumeric, hyphen, underscore).`;
66
+ }
67
+ const lowerCaseName = name.toLowerCase();
68
+ if (reservedNames.includes(lowerCaseName)) {
69
+ return `Invalid project name: "${name}". Can't use reserved name. Please use another name.`;
70
+ }
71
+ return undefined;
72
+ }
73
+ /**
74
+ * Transform project name to PascalCase. The input name can be in either kebab-case or PascalCase.
75
+ *
76
+ * @param name - Project name
77
+ * @returns PascalCase project name
78
+ */
79
+ export function normalizeProjectName(name) {
80
+ if (!name)
81
+ return '';
82
+ return name
83
+ .split('-')
84
+ .filter(Boolean)
85
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
86
+ .join('');
87
+ }
88
+ //# sourceMappingURL=project-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../../src/lib/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,gFAAgF;AAChF,MAAM,YAAY,GAAG;IACnB,UAAU;IACV,UAAU;IACV,KAAK;IACL,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,cAAc;IACd,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,OAAO;IACP,KAAK;IACL,MAAM;IACN,OAAO;IACP,WAAW;IACX,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,MAAM;IACN,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;CACR,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,0BAA0B,IAAI,2EAA2E,CAAC;IACnH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,0BAA0B,IAAI,sDAAsD,CAAC;IAC9F,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type SupportedRemoteCacheProviders } from '@rock-js/tools';
2
+ import type { TemplateInfo } from '../templates.js';
3
+ export declare function printHelpMessage(templates: TemplateInfo[], platforms: TemplateInfo[]): void;
4
+ export declare function printVersionMessage(): void;
5
+ export declare function printWelcomeMessage(): void;
6
+ export declare function printByeMessage(targetDir: string, pkgManager: string, installDeps: boolean): void;
7
+ export declare function promptProjectName(name?: string): Promise<string>;
8
+ export declare function promptTemplate(templates: TemplateInfo[]): Promise<TemplateInfo>;
9
+ export declare function promptPlatforms(platforms: TemplateInfo[]): Promise<TemplateInfo[]>;
10
+ export declare function promptPlugins(plugins: TemplateInfo[]): Promise<TemplateInfo[] | null>;
11
+ export declare function promptBundlers(bundlers: TemplateInfo[]): Promise<TemplateInfo>;
12
+ export declare function promptRemoteCacheProvider(): Promise<SupportedRemoteCacheProviders | null>;
13
+ export declare function confirmOverrideFiles(targetDir: string): Promise<boolean>;
14
+ export declare function promptInstallDependencies(): Promise<boolean>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,6BAA6B,EACnC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EAAE,EACzB,SAAS,EAAE,YAAY,EAAE,QAwB1B;AAED,wBAAgB,mBAAmB,SAElC;AAED,wBAAgB,mBAAmB,SAGlC;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,QAgBrB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,YAAY,EAAE,GACxB,OAAO,CAAC,YAAY,CAAC,CAavB;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,YAAY,EAAE,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC,CAkBzB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAchC;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EAAE,GACvB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAazF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,oBAMrD;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAM5D"}