@idealyst/cli 1.1.9 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.js +233 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/info.js +193 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.js +155 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/constants.js +119 -0
- package/dist/constants.js.map +1 -0
- package/dist/generators/core/index.js +23 -0
- package/dist/generators/core/index.js.map +1 -0
- package/dist/generators/core/mobile.js +286 -0
- package/dist/generators/core/mobile.js.map +1 -0
- package/dist/generators/core/shared.js +207 -0
- package/dist/generators/core/shared.js.map +1 -0
- package/dist/generators/core/web.js +377 -0
- package/dist/generators/core/web.js.map +1 -0
- package/dist/generators/extensions/api.js +223 -0
- package/dist/generators/extensions/api.js.map +1 -0
- package/dist/generators/extensions/devcontainer.js +510 -0
- package/dist/generators/extensions/devcontainer.js.map +1 -0
- package/dist/generators/extensions/graphql.js +202 -0
- package/dist/generators/extensions/graphql.js.map +1 -0
- package/dist/generators/extensions/index.js +17 -0
- package/dist/generators/extensions/index.js.map +1 -0
- package/dist/generators/extensions/prisma.js +249 -0
- package/dist/generators/extensions/prisma.js.map +1 -0
- package/dist/generators/extensions/trpc.js +258 -0
- package/dist/generators/extensions/trpc.js.map +1 -0
- package/dist/generators/index.js +106 -4
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/reactNative.js +177 -0
- package/dist/generators/reactNative.js.map +1 -0
- package/dist/generators/workspace.js +272 -0
- package/dist/generators/workspace.js.map +1 -0
- package/dist/identifiers/android.js +75 -0
- package/dist/identifiers/android.js.map +1 -0
- package/dist/identifiers/index.js +35 -0
- package/dist/identifiers/index.js.map +1 -0
- package/dist/identifiers/ios.js +65 -0
- package/dist/identifiers/ios.js.map +1 -0
- package/dist/index.js +41 -319
- package/dist/index.js.map +1 -1
- package/dist/templates/copier.js +135 -0
- package/dist/templates/copier.js.map +1 -0
- package/dist/templates/index.js +23 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/merger.js +113 -0
- package/dist/templates/merger.js.map +1 -0
- package/dist/templates/processor.js +142 -0
- package/dist/templates/processor.js.map +1 -0
- package/dist/types/commands/add.d.ts +14 -0
- package/dist/types/commands/index.d.ts +6 -0
- package/dist/types/commands/info.d.ts +10 -0
- package/dist/types/commands/init.d.ts +19 -0
- package/dist/types/constants.d.ts +76 -0
- package/dist/types/generators/core/index.d.ts +6 -0
- package/dist/types/generators/core/mobile.d.ts +13 -0
- package/dist/types/generators/core/shared.d.ts +8 -0
- package/dist/types/generators/core/web.d.ts +8 -0
- package/dist/types/generators/extensions/api.d.ts +8 -0
- package/dist/types/generators/extensions/devcontainer.d.ts +15 -0
- package/dist/types/generators/extensions/graphql.d.ts +8 -0
- package/dist/types/generators/extensions/index.d.ts +8 -0
- package/dist/types/generators/extensions/prisma.d.ts +8 -0
- package/dist/types/generators/extensions/trpc.d.ts +9 -0
- package/dist/types/generators/index.d.ts +11 -3
- package/dist/types/generators/reactNative.d.ts +19 -0
- package/dist/types/generators/workspace.d.ts +8 -0
- package/dist/types/identifiers/android.d.ts +26 -0
- package/dist/types/identifiers/index.d.ts +26 -0
- package/dist/types/identifiers/ios.d.ts +21 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/templates/copier.d.ts +24 -0
- package/dist/types/templates/index.d.ts +6 -0
- package/dist/types/templates/merger.d.ts +43 -0
- package/dist/types/templates/processor.d.ts +39 -0
- package/dist/types/types.d.ts +153 -5
- package/dist/types/utils/filesystem.d.ts +56 -0
- package/dist/types/utils/index.d.ts +7 -0
- package/dist/types/utils/logger.d.ts +58 -0
- package/dist/types/utils/shell.d.ts +35 -0
- package/dist/types/utils/validation.d.ts +32 -0
- package/dist/types/wizard/index.d.ts +20 -0
- package/dist/types/wizard/steps/apiExtension.d.ts +5 -0
- package/dist/types/wizard/steps/appDisplayName.d.ts +5 -0
- package/dist/types/wizard/steps/devcontainerExtension.d.ts +5 -0
- package/dist/types/wizard/steps/graphqlExtension.d.ts +5 -0
- package/dist/types/wizard/steps/index.d.ts +12 -0
- package/dist/types/wizard/steps/orgDomain.d.ts +5 -0
- package/dist/types/wizard/steps/prismaExtension.d.ts +5 -0
- package/dist/types/wizard/steps/projectName.d.ts +5 -0
- package/dist/types/wizard/steps/summary.d.ts +5 -0
- package/dist/types/wizard/steps/trpcExtension.d.ts +5 -0
- package/dist/types/wizard/validators.d.ts +17 -0
- package/dist/types.js +41 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/filesystem.js +173 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/index.js +24 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.js +95 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shell.js +113 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/validation.js +196 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wizard/index.js +177 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/steps/apiExtension.js +33 -0
- package/dist/wizard/steps/apiExtension.js.map +1 -0
- package/dist/wizard/steps/appDisplayName.js +53 -0
- package/dist/wizard/steps/appDisplayName.js.map +1 -0
- package/dist/wizard/steps/devcontainerExtension.js +78 -0
- package/dist/wizard/steps/devcontainerExtension.js.map +1 -0
- package/dist/wizard/steps/graphqlExtension.js +37 -0
- package/dist/wizard/steps/graphqlExtension.js.map +1 -0
- package/dist/wizard/steps/index.js +25 -0
- package/dist/wizard/steps/index.js.map +1 -0
- package/dist/wizard/steps/orgDomain.js +40 -0
- package/dist/wizard/steps/orgDomain.js.map +1 -0
- package/dist/wizard/steps/prismaExtension.js +33 -0
- package/dist/wizard/steps/prismaExtension.js.map +1 -0
- package/dist/wizard/steps/projectName.js +40 -0
- package/dist/wizard/steps/projectName.js.map +1 -0
- package/dist/wizard/steps/summary.js +107 -0
- package/dist/wizard/steps/summary.js.map +1 -0
- package/dist/wizard/steps/trpcExtension.js +37 -0
- package/dist/wizard/steps/trpcExtension.js.map +1 -0
- package/dist/wizard/validators.js +35 -0
- package/dist/wizard/validators.js.map +1 -0
- package/package.json +6 -19
- package/README.md +0 -110
- package/dist/generators/init.js +0 -268
- package/dist/generators/init.js.map +0 -1
- package/dist/generators/utils.js +0 -682
- package/dist/generators/utils.js.map +0 -1
- package/dist/scripts/configure-react-native-monorepo.js +0 -144
- package/dist/scripts/configure-react-native-monorepo.js.map +0 -1
- package/dist/template/.devcontainer/Dockerfile +0 -26
- package/dist/template/.devcontainer/devcontainer.json +0 -113
- package/dist/template/.devcontainer/docker-compose.yml +0 -59
- package/dist/template/.devcontainer/figma-mcp.sh +0 -32
- package/dist/template/.devcontainer/gitignore.template +0 -2
- package/dist/template/.devcontainer/setup.sh +0 -45
- package/dist/template/DOCKER.md +0 -0
- package/dist/template/Dockerfile +0 -111
- package/dist/template/README.md +0 -233
- package/dist/template/docker/nginx/prod.conf +0 -238
- package/dist/template/docker/nginx.conf +0 -131
- package/dist/template/docker/postgres/init.sql +0 -41
- package/dist/template/docker/prometheus/prometheus.yml +0 -52
- package/dist/template/docker-compose.prod.yml +0 -146
- package/dist/template/docker-compose.yml +0 -143
- package/dist/template/dockerignore.template +0 -151
- package/dist/template/env.example.template +0 -36
- package/dist/template/gitignore.template +0 -56
- package/dist/template/jest.config.js +0 -20
- package/dist/template/mcp.json.template +0 -8
- package/dist/template/package.json +0 -45
- package/dist/template/packages/api/README.md +0 -510
- package/dist/template/packages/api/__tests__/api.test.ts +0 -26
- package/dist/template/packages/api/env.example.template +0 -6
- package/dist/template/packages/api/gitignore.template +0 -35
- package/dist/template/packages/api/jest.config.js +0 -23
- package/dist/template/packages/api/jest.setup.js +0 -9
- package/dist/template/packages/api/package.json +0 -66
- package/dist/template/packages/api/src/context.ts +0 -52
- package/dist/template/packages/api/src/controllers/TestController.ts +0 -0
- package/dist/template/packages/api/src/graphql/builder.ts +0 -75
- package/dist/template/packages/api/src/graphql/generated.ts +0 -64
- package/dist/template/packages/api/src/graphql/index.ts +0 -75
- package/dist/template/packages/api/src/graphql/types/index.ts +0 -44
- package/dist/template/packages/api/src/graphql/types/test.ts +0 -245
- package/dist/template/packages/api/src/index.ts +0 -26
- package/dist/template/packages/api/src/lib/database.ts +0 -23
- package/dist/template/packages/api/src/router/index.ts +0 -163
- package/dist/template/packages/api/src/routers/test.ts +0 -161
- package/dist/template/packages/api/src/server.ts +0 -68
- package/dist/template/packages/api/src/trpc.ts +0 -28
- package/dist/template/packages/api/tsconfig.json +0 -44
- package/dist/template/packages/database/README.md +0 -162
- package/dist/template/packages/database/gitignore.template +0 -41
- package/dist/template/packages/database/package.json +0 -49
- package/dist/template/packages/database/prisma/seed.ts +0 -64
- package/dist/template/packages/database/schema.prisma +0 -107
- package/dist/template/packages/database/src/index.ts +0 -15
- package/dist/template/packages/database/src/validators.ts +0 -10
- package/dist/template/packages/database/tsconfig.json +0 -18
- package/dist/template/packages/mobile/README.md +0 -86
- package/dist/template/packages/mobile/__tests__/App.test.tsx +0 -156
- package/dist/template/packages/mobile/__tests__/components.test.tsx +0 -300
- package/dist/template/packages/mobile/app.json +0 -5
- package/dist/template/packages/mobile/babel.config.js +0 -10
- package/dist/template/packages/mobile/gitignore.template +0 -73
- package/dist/template/packages/mobile/index.js +0 -6
- package/dist/template/packages/mobile/jest.config.js +0 -21
- package/dist/template/packages/mobile/jest.setup.js +0 -12
- package/dist/template/packages/mobile/metro.config.js +0 -36
- package/dist/template/packages/mobile/package.json +0 -60
- package/dist/template/packages/mobile/src/App.tsx +0 -8
- package/dist/template/packages/mobile/src/utils/trpc.ts +0 -7
- package/dist/template/packages/mobile/tsconfig.json +0 -28
- package/dist/template/packages/shared/README.md +0 -135
- package/dist/template/packages/shared/__tests__/shared.test.ts +0 -51
- package/dist/template/packages/shared/gitignore.template +0 -35
- package/dist/template/packages/shared/jest.config.js +0 -22
- package/dist/template/packages/shared/package.json +0 -68
- package/dist/template/packages/shared/src/components/App.tsx +0 -57
- package/dist/template/packages/shared/src/components/HelloWorld.tsx +0 -531
- package/dist/template/packages/shared/src/components/index.ts +0 -1
- package/dist/template/packages/shared/src/graphql/client.ts +0 -34
- package/dist/template/packages/shared/src/index.ts +0 -22
- package/dist/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
- package/dist/template/packages/shared/src/trpc/client.ts +0 -44
- package/dist/template/packages/shared/tsconfig.json +0 -22
- package/dist/template/packages/web/README.md +0 -131
- package/dist/template/packages/web/__tests__/App.test.tsx +0 -342
- package/dist/template/packages/web/__tests__/components.test.tsx +0 -564
- package/dist/template/packages/web/gitignore.template +0 -35
- package/dist/template/packages/web/index.html +0 -13
- package/dist/template/packages/web/jest.config.js +0 -27
- package/dist/template/packages/web/jest.setup.js +0 -24
- package/dist/template/packages/web/package.json +0 -69
- package/dist/template/packages/web/src/App.tsx +0 -14
- package/dist/template/packages/web/src/components/TestDemo.tsx +0 -164
- package/dist/template/packages/web/src/main.tsx +0 -25
- package/dist/template/packages/web/src/utils/trpc.ts +0 -7
- package/dist/template/packages/web/tsconfig.json +0 -26
- package/dist/template/packages/web/vite.config.ts +0 -98
- package/dist/template/setup.sh +0 -30
- package/dist/template/tsconfig.json +0 -22
- package/dist/template/yarnrc.yml.template +0 -4
- package/dist/types/generators/init.d.ts +0 -5
- package/dist/types/generators/utils.d.ts +0 -45
- package/dist/types/scripts/configure-react-native-monorepo.d.ts +0 -23
- package/template/.devcontainer/Dockerfile +0 -26
- package/template/.devcontainer/devcontainer.json +0 -113
- package/template/.devcontainer/docker-compose.yml +0 -59
- package/template/.devcontainer/figma-mcp.sh +0 -32
- package/template/.devcontainer/setup.sh +0 -45
- package/template/.dockerignore +0 -151
- package/template/.env.example +0 -36
- package/template/.env.production +0 -56
- package/template/DOCKER.md +0 -0
- package/template/Dockerfile +0 -111
- package/template/README.md +0 -233
- package/template/docker/nginx/prod.conf +0 -238
- package/template/docker/nginx.conf +0 -131
- package/template/docker/postgres/init.sql +0 -41
- package/template/docker/prometheus/prometheus.yml +0 -52
- package/template/docker-compose.prod.yml +0 -146
- package/template/docker-compose.yml +0 -143
- package/template/jest.config.js +0 -20
- package/template/package.json +0 -45
- package/template/packages/api/.env.example +0 -6
- package/template/packages/api/README.md +0 -510
- package/template/packages/api/__tests__/api.test.ts +0 -26
- package/template/packages/api/jest.config.js +0 -23
- package/template/packages/api/jest.setup.js +0 -9
- package/template/packages/api/package.json +0 -66
- package/template/packages/api/src/context.ts +0 -52
- package/template/packages/api/src/controllers/TestController.ts +0 -0
- package/template/packages/api/src/graphql/builder.ts +0 -75
- package/template/packages/api/src/graphql/generated.ts +0 -64
- package/template/packages/api/src/graphql/index.ts +0 -75
- package/template/packages/api/src/graphql/types/index.ts +0 -44
- package/template/packages/api/src/graphql/types/test.ts +0 -245
- package/template/packages/api/src/index.ts +0 -26
- package/template/packages/api/src/lib/database.ts +0 -23
- package/template/packages/api/src/router/index.ts +0 -163
- package/template/packages/api/src/routers/test.ts +0 -161
- package/template/packages/api/src/server.ts +0 -68
- package/template/packages/api/src/trpc.ts +0 -28
- package/template/packages/api/tsconfig.json +0 -44
- package/template/packages/database/README.md +0 -162
- package/template/packages/database/package.json +0 -49
- package/template/packages/database/prisma/seed.ts +0 -64
- package/template/packages/database/schema.prisma +0 -107
- package/template/packages/database/src/index.ts +0 -15
- package/template/packages/database/src/validators.ts +0 -10
- package/template/packages/database/tsconfig.json +0 -18
- package/template/packages/mobile/README.md +0 -86
- package/template/packages/mobile/__tests__/App.test.tsx +0 -156
- package/template/packages/mobile/__tests__/components.test.tsx +0 -300
- package/template/packages/mobile/app.json +0 -5
- package/template/packages/mobile/babel.config.js +0 -26
- package/template/packages/mobile/index.js +0 -8
- package/template/packages/mobile/jest.config.js +0 -21
- package/template/packages/mobile/jest.setup.js +0 -12
- package/template/packages/mobile/metro.config.js +0 -36
- package/template/packages/mobile/package.json +0 -60
- package/template/packages/mobile/src/App.tsx +0 -8
- package/template/packages/mobile/src/utils/trpc.ts +0 -7
- package/template/packages/mobile/tsconfig.json +0 -28
- package/template/packages/shared/README.md +0 -135
- package/template/packages/shared/__tests__/shared.test.ts +0 -51
- package/template/packages/shared/jest.config.js +0 -22
- package/template/packages/shared/package.json +0 -68
- package/template/packages/shared/src/components/App.tsx +0 -57
- package/template/packages/shared/src/components/HelloWorld.tsx +0 -531
- package/template/packages/shared/src/components/index.ts +0 -1
- package/template/packages/shared/src/graphql/client.ts +0 -34
- package/template/packages/shared/src/index.ts +0 -25
- package/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
- package/template/packages/shared/src/trpc/client.ts +0 -44
- package/template/packages/shared/src/unistyles.ts +0 -50
- package/template/packages/shared/tsconfig.json +0 -22
- package/template/packages/web/README.md +0 -131
- package/template/packages/web/__tests__/App.test.tsx +0 -342
- package/template/packages/web/__tests__/components.test.tsx +0 -564
- package/template/packages/web/index.html +0 -13
- package/template/packages/web/jest.config.js +0 -27
- package/template/packages/web/jest.setup.js +0 -24
- package/template/packages/web/package.json +0 -69
- package/template/packages/web/src/App.tsx +0 -14
- package/template/packages/web/src/components/TestDemo.tsx +0 -164
- package/template/packages/web/src/main.tsx +0 -27
- package/template/packages/web/src/utils/trpc.ts +0 -7
- package/template/packages/web/tsconfig.json +0 -26
- package/template/packages/web/vite.config.ts +0 -114
- package/template/setup.sh +0 -30
- package/template/tsconfig.json +0 -22
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Summary wizard step
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.summaryStep = void 0;
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const identifiers_1 = require("../../identifiers");
|
|
13
|
+
exports.summaryStep = {
|
|
14
|
+
id: 'confirm',
|
|
15
|
+
async prompt(currentConfig) {
|
|
16
|
+
// Generate identifiers for display
|
|
17
|
+
const identifiers = (0, identifiers_1.generateIdentifiers)(currentConfig.orgDomain, currentConfig.projectName);
|
|
18
|
+
console.log(chalk_1.default.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
19
|
+
console.log(chalk_1.default.bold.blue(' Configuration Summary'));
|
|
20
|
+
console.log(chalk_1.default.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
21
|
+
// Basic info
|
|
22
|
+
console.log(chalk_1.default.cyan(' Basic Information:'));
|
|
23
|
+
console.log(` ${chalk_1.default.gray('Project Name:')} ${currentConfig.projectName}`);
|
|
24
|
+
console.log(` ${chalk_1.default.gray('Display Name:')} ${currentConfig.appDisplayName}`);
|
|
25
|
+
console.log(` ${chalk_1.default.gray('Organization:')} ${currentConfig.orgDomain}`);
|
|
26
|
+
console.log('');
|
|
27
|
+
// Mobile identifiers
|
|
28
|
+
console.log(chalk_1.default.cyan(' Mobile App Identifiers:'));
|
|
29
|
+
console.log(` ${chalk_1.default.gray('iOS Bundle ID:')} ${identifiers.iosBundleId}`);
|
|
30
|
+
console.log(` ${chalk_1.default.gray('Android Package:')} ${identifiers.androidPackageName}`);
|
|
31
|
+
console.log('');
|
|
32
|
+
// Core packages (always included)
|
|
33
|
+
console.log(chalk_1.default.cyan(' Core Packages:'));
|
|
34
|
+
console.log(` ${chalk_1.default.green('✓')} shared ${chalk_1.default.dim('- Shared components and utilities')}`);
|
|
35
|
+
console.log(` ${chalk_1.default.green('✓')} web ${chalk_1.default.dim('- React web application')}`);
|
|
36
|
+
console.log(` ${chalk_1.default.green('✓')} mobile ${chalk_1.default.dim('- React Native mobile application')}`);
|
|
37
|
+
console.log('');
|
|
38
|
+
// Extensions
|
|
39
|
+
const extensions = currentConfig.extensions || { api: false, prisma: false, trpc: false, graphql: false, devcontainer: false };
|
|
40
|
+
const enabledExtensions = [];
|
|
41
|
+
if (extensions.api)
|
|
42
|
+
enabledExtensions.push('api');
|
|
43
|
+
if (extensions.prisma)
|
|
44
|
+
enabledExtensions.push('prisma');
|
|
45
|
+
if (extensions.trpc)
|
|
46
|
+
enabledExtensions.push('trpc');
|
|
47
|
+
if (extensions.graphql)
|
|
48
|
+
enabledExtensions.push('graphql');
|
|
49
|
+
if (extensions.devcontainer)
|
|
50
|
+
enabledExtensions.push('devcontainer');
|
|
51
|
+
console.log(chalk_1.default.cyan(' Extensions:'));
|
|
52
|
+
if (enabledExtensions.length === 0) {
|
|
53
|
+
console.log(` ${chalk_1.default.dim('None selected')}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (extensions.api) {
|
|
57
|
+
console.log(` ${chalk_1.default.green('✓')} api ${chalk_1.default.dim('- Express API server')}`);
|
|
58
|
+
}
|
|
59
|
+
if (extensions.prisma) {
|
|
60
|
+
console.log(` ${chalk_1.default.green('✓')} database ${chalk_1.default.dim('- Prisma database layer')}`);
|
|
61
|
+
}
|
|
62
|
+
if (extensions.trpc) {
|
|
63
|
+
console.log(` ${chalk_1.default.green('✓')} tRPC ${chalk_1.default.dim('- Type-safe RPC')}`);
|
|
64
|
+
}
|
|
65
|
+
if (extensions.graphql) {
|
|
66
|
+
console.log(` ${chalk_1.default.green('✓')} GraphQL ${chalk_1.default.dim('- GraphQL API')}`);
|
|
67
|
+
}
|
|
68
|
+
if (extensions.devcontainer) {
|
|
69
|
+
const devConfig = typeof extensions.devcontainer === 'object'
|
|
70
|
+
? extensions.devcontainer
|
|
71
|
+
: null;
|
|
72
|
+
if (devConfig) {
|
|
73
|
+
// Show detailed devcontainer config
|
|
74
|
+
const services = [];
|
|
75
|
+
if (devConfig.postgres)
|
|
76
|
+
services.push('PostgreSQL');
|
|
77
|
+
if (devConfig.redis)
|
|
78
|
+
services.push('Redis');
|
|
79
|
+
if (devConfig.chrome)
|
|
80
|
+
services.push('Chrome');
|
|
81
|
+
if (devConfig.claudeCode)
|
|
82
|
+
services.push('Claude Code');
|
|
83
|
+
const serviceList = services.length > 0 ? services.join(', ') : 'Base only';
|
|
84
|
+
console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim(`- Docker dev environment (${serviceList})`)}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim('- Docker dev environment (all services)')}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log(chalk_1.default.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
93
|
+
const { confirm } = await inquirer_1.default.prompt([
|
|
94
|
+
{
|
|
95
|
+
type: 'confirm',
|
|
96
|
+
name: 'confirm',
|
|
97
|
+
message: 'Create project with this configuration?',
|
|
98
|
+
default: true,
|
|
99
|
+
},
|
|
100
|
+
]);
|
|
101
|
+
return confirm;
|
|
102
|
+
},
|
|
103
|
+
validate(value) {
|
|
104
|
+
return { valid: true };
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/wizard/steps/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* tRPC extension wizard step
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.trpcExtensionStep = void 0;
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const validators_1 = require("../validators");
|
|
13
|
+
exports.trpcExtensionStep = {
|
|
14
|
+
id: 'extensions.trpc',
|
|
15
|
+
async prompt(currentConfig) {
|
|
16
|
+
console.log(chalk_1.default.bold('\nStep 5: tRPC'));
|
|
17
|
+
console.log(chalk_1.default.dim('Type-safe RPC for end-to-end type safety between frontend and backend.'));
|
|
18
|
+
console.log(chalk_1.default.dim('Integrates with React Query for data fetching.\n'));
|
|
19
|
+
const { enableTrpc } = await inquirer_1.default.prompt([
|
|
20
|
+
{
|
|
21
|
+
type: 'confirm',
|
|
22
|
+
name: 'enableTrpc',
|
|
23
|
+
message: 'Enable tRPC?',
|
|
24
|
+
default: true,
|
|
25
|
+
},
|
|
26
|
+
]);
|
|
27
|
+
return enableTrpc;
|
|
28
|
+
},
|
|
29
|
+
validate(value) {
|
|
30
|
+
return (0, validators_1.validateBoolean)(value);
|
|
31
|
+
},
|
|
32
|
+
// Only show if API is enabled
|
|
33
|
+
shouldShow(config) {
|
|
34
|
+
return config.extensions?.api === true;
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=trpcExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trpcExtension.js","sourceRoot":"","sources":["../../../src/wizard/steps/trpcExtension.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,wDAAgC;AAChC,kDAA0B;AAE1B,8CAAgD;AAEnC,QAAA,iBAAiB,GAAwB;IACpD,EAAE,EAAE,iBAAiB;IAErB,KAAK,CAAC,MAAM,CAAC,aAAqC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAE3E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,8BAA8B;IAC9B,UAAU,CAAC,MAA8B;QACvC,OAAO,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACzC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wizard input validators
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateAppDisplayName = exports.validateOrgDomain = exports.validateProjectName = void 0;
|
|
7
|
+
exports.validateBoolean = validateBoolean;
|
|
8
|
+
exports.formatValidationError = formatValidationError;
|
|
9
|
+
const validation_1 = require("../utils/validation");
|
|
10
|
+
Object.defineProperty(exports, "validateProjectName", { enumerable: true, get: function () { return validation_1.validateProjectName; } });
|
|
11
|
+
Object.defineProperty(exports, "validateOrgDomain", { enumerable: true, get: function () { return validation_1.validateOrgDomain; } });
|
|
12
|
+
Object.defineProperty(exports, "validateAppDisplayName", { enumerable: true, get: function () { return validation_1.validateAppDisplayName; } });
|
|
13
|
+
/**
|
|
14
|
+
* Validate a boolean input
|
|
15
|
+
*/
|
|
16
|
+
function validateBoolean(value) {
|
|
17
|
+
if (typeof value !== 'boolean') {
|
|
18
|
+
return {
|
|
19
|
+
valid: false,
|
|
20
|
+
error: 'Please select Yes or No',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return { valid: true };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Display validation error to user
|
|
27
|
+
*/
|
|
28
|
+
function formatValidationError(result) {
|
|
29
|
+
let message = result.error || 'Invalid input';
|
|
30
|
+
if (result.suggestions && result.suggestions.length > 0) {
|
|
31
|
+
message += '\n' + result.suggestions.map(s => ` • ${s}`).join('\n');
|
|
32
|
+
}
|
|
33
|
+
return message;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/wizard/validators.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqBH,0CAQC;AAKD,sDAQC;AAvCD,oDAI6B;AAM3B,oGATA,gCAAmB,OASA;AACnB,kGATA,8BAAiB,OASA;AACjB,uGATA,mCAAsB,OASA;AAGxB;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,yBAAyB;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAwB;IAC5D,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC;IAE9C,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idealyst/cli",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "CLI tool for generating Idealyst Framework projects",
|
|
5
5
|
"readme": "README.md",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"idealyst": "dist/index.js"
|
|
9
|
-
"idealyst-cli": "dist/index.js"
|
|
8
|
+
"idealyst": "dist/index.js"
|
|
10
9
|
},
|
|
11
10
|
"repository": {
|
|
12
11
|
"type": "git",
|
|
13
12
|
"url": "https://github.com/IdealystIO/idealyst-framework.git",
|
|
14
13
|
"directory": "packages/cli"
|
|
15
14
|
},
|
|
16
|
-
"author": "
|
|
15
|
+
"author": "Idealyst Team",
|
|
17
16
|
"license": "MIT",
|
|
18
17
|
"publishConfig": {
|
|
19
18
|
"access": "public"
|
|
20
19
|
},
|
|
21
20
|
"scripts": {
|
|
22
21
|
"build": "node scripts/build.js",
|
|
23
|
-
"build:
|
|
24
|
-
"
|
|
25
|
-
"build:validate": "npm run build && npm run validate",
|
|
26
|
-
"copy-templates": "npm run clean-templates && cp -r templates dist/",
|
|
27
|
-
"clean-templates": "rm -rf dist/templates",
|
|
28
|
-
"validate": "node scripts/validate-build.js",
|
|
22
|
+
"build:tsc": "tsc",
|
|
23
|
+
"dev": "tsc --watch",
|
|
29
24
|
"test": "jest",
|
|
30
25
|
"test:integration": "jest __tests__/integration.test.ts",
|
|
31
|
-
"dev": "tsc --watch",
|
|
32
26
|
"clean": "rm -rf dist"
|
|
33
27
|
},
|
|
34
28
|
"dependencies": {
|
|
@@ -46,18 +40,11 @@
|
|
|
46
40
|
"@types/node": "^20.0.0",
|
|
47
41
|
"@types/validate-npm-package-name": "^4.0.0",
|
|
48
42
|
"jest": "^29.7.0",
|
|
49
|
-
"rollup": "^3.20.0",
|
|
50
|
-
"rollup-plugin-commonjs": "^10.1.0",
|
|
51
|
-
"rollup-plugin-json": "^4.0.0",
|
|
52
|
-
"rollup-plugin-node-resolve": "^5.2.0",
|
|
53
|
-
"rollup-plugin-typescript2": "^0.34.0",
|
|
54
43
|
"ts-jest": "^29.1.0",
|
|
55
44
|
"typescript": "^5.0.0"
|
|
56
45
|
},
|
|
57
46
|
"files": [
|
|
58
|
-
"dist"
|
|
59
|
-
"template",
|
|
60
|
-
"docs"
|
|
47
|
+
"dist"
|
|
61
48
|
],
|
|
62
49
|
"keywords": [
|
|
63
50
|
"cli",
|
package/README.md
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# @idealyst/cli
|
|
2
|
-
|
|
3
|
-
CLI tool for generating Idealyst Framework projects.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Install globally:
|
|
8
|
-
```bash
|
|
9
|
-
npm install -g @idealyst/cli
|
|
10
|
-
# or
|
|
11
|
-
yarn global add @idealyst/cli
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Usage
|
|
15
|
-
|
|
16
|
-
### Create a new project
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
idealyst create <project-name> [options]
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Options:
|
|
23
|
-
- `-t, --type <type>` - Project type: `native`, `web`, or `shared` (default: `native`)
|
|
24
|
-
- `-d, --directory <directory>` - Output directory (default: current directory)
|
|
25
|
-
- `--skip-install` - Skip installing dependencies
|
|
26
|
-
|
|
27
|
-
### Initialize a new workspace
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
idealyst init [options]
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Options:
|
|
34
|
-
- `-d, --directory <directory>` - Output directory (default: current directory)
|
|
35
|
-
- `--skip-install` - Skip installing dependencies
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
Create a React Native app:
|
|
40
|
-
```bash
|
|
41
|
-
idealyst create my-app --type native
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Create a React web app:
|
|
45
|
-
```bash
|
|
46
|
-
idealyst create my-web-app --type web
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Create a shared library:
|
|
50
|
-
```bash
|
|
51
|
-
idealyst create my-lib --type shared
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Initialize a new workspace:
|
|
55
|
-
```bash
|
|
56
|
-
idealyst init
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Project Types
|
|
60
|
-
|
|
61
|
-
### Native (React Native)
|
|
62
|
-
- React Native 0.80.1
|
|
63
|
-
- Idealyst Components
|
|
64
|
-
- Idealyst Navigation
|
|
65
|
-
- Idealyst Theme
|
|
66
|
-
- TypeScript configuration
|
|
67
|
-
- Metro bundler configuration
|
|
68
|
-
- Babel configuration
|
|
69
|
-
|
|
70
|
-
### Web (React + Vite)
|
|
71
|
-
- React 19.1
|
|
72
|
-
- Vite build system
|
|
73
|
-
- Idealyst Components (web-compatible)
|
|
74
|
-
- Idealyst Navigation
|
|
75
|
-
- Idealyst Theme
|
|
76
|
-
- TypeScript configuration
|
|
77
|
-
- React Native Web support
|
|
78
|
-
|
|
79
|
-
### Shared Library
|
|
80
|
-
- Cross-platform components
|
|
81
|
-
- TypeScript definitions
|
|
82
|
-
- Rollup build system
|
|
83
|
-
- Peer dependencies for React/React Native
|
|
84
|
-
- Idealyst Theme integration
|
|
85
|
-
|
|
86
|
-
### Workspace
|
|
87
|
-
- Yarn workspace configuration
|
|
88
|
-
- Monorepo structure
|
|
89
|
-
- Version management scripts
|
|
90
|
-
- Build scripts for all packages
|
|
91
|
-
|
|
92
|
-
## Development
|
|
93
|
-
|
|
94
|
-
Build the CLI:
|
|
95
|
-
```bash
|
|
96
|
-
cd packages/cli
|
|
97
|
-
yarn build
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Link for local development:
|
|
101
|
-
```bash
|
|
102
|
-
yarn link
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## Learn More
|
|
106
|
-
|
|
107
|
-
- [Idealyst Framework Documentation](https://github.com/your-username/idealyst-framework)
|
|
108
|
-
- [React Native Documentation](https://reactnative.dev/)
|
|
109
|
-
- [React Documentation](https://react.dev/)
|
|
110
|
-
- [Vite Documentation](https://vitejs.dev/)
|
package/dist/generators/init.js
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.generateFullStackProject = generateFullStackProject;
|
|
40
|
-
const path_1 = __importDefault(require("path"));
|
|
41
|
-
const fs = __importStar(require("fs-extra"));
|
|
42
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
-
const utils_1 = require("./utils");
|
|
44
|
-
/**
|
|
45
|
-
* Generate a complete full-stack workspace from the unified template
|
|
46
|
-
*/
|
|
47
|
-
async function generateFullStackProject(options) {
|
|
48
|
-
const { name, directory, skipInstall, figmaToken } = options;
|
|
49
|
-
if (!(0, utils_1.validateProjectName)(name)) {
|
|
50
|
-
throw new Error(`Invalid project name: ${name}`);
|
|
51
|
-
}
|
|
52
|
-
console.log(chalk_1.default.blue(`🚀 Creating Full-Stack Idealyst workspace: ${name}`));
|
|
53
|
-
console.log(chalk_1.default.gray(' This will generate a complete workspace with all packages integrated'));
|
|
54
|
-
const projectPath = path_1.default.join(directory, name);
|
|
55
|
-
const templatePath = path_1.default.join(__dirname, '../../template');
|
|
56
|
-
// Check if template exists
|
|
57
|
-
if (!await fs.pathExists(templatePath)) {
|
|
58
|
-
throw new Error(`Template directory not found at ${templatePath}`);
|
|
59
|
-
}
|
|
60
|
-
const templateData = (0, utils_1.getTemplateData)(name, `Full-stack Idealyst Framework workspace`, undefined, name);
|
|
61
|
-
// Copy the entire template
|
|
62
|
-
console.log(chalk_1.default.blue('📦 Copying template files...'));
|
|
63
|
-
await copyTemplateWithReplacements(templatePath, projectPath, templateData);
|
|
64
|
-
// Handle devcontainer setup
|
|
65
|
-
const devcontainerDir = path_1.default.join(projectPath, '.devcontainer');
|
|
66
|
-
const envPath = path_1.default.join(devcontainerDir, '.env');
|
|
67
|
-
const envContent = figmaToken
|
|
68
|
-
? `# Figma Integration\nFIGMA_ACCESS_TOKEN=${figmaToken.trim()}\n`
|
|
69
|
-
: `# Figma Integration\nFIGMA_ACCESS_TOKEN=\n`;
|
|
70
|
-
await fs.writeFile(envPath, envContent);
|
|
71
|
-
// Make scripts executable
|
|
72
|
-
const scriptsToMakeExecutable = [
|
|
73
|
-
path_1.default.join(devcontainerDir, 'figma-mcp.sh'),
|
|
74
|
-
path_1.default.join(projectPath, 'setup.sh'),
|
|
75
|
-
];
|
|
76
|
-
for (const script of scriptsToMakeExecutable) {
|
|
77
|
-
if (await fs.pathExists(script)) {
|
|
78
|
-
await fs.chmod(script, '755');
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Initialize React Native native folders for mobile package
|
|
82
|
-
console.log(chalk_1.default.blue('📱 Setting up React Native mobile package...'));
|
|
83
|
-
await initializeMobilePackage(projectPath, templatePath, templateData, skipInstall);
|
|
84
|
-
// Install dependencies
|
|
85
|
-
await (0, utils_1.installDependencies)(projectPath, skipInstall);
|
|
86
|
-
// Configure React Native for monorepo AFTER dependencies are installed
|
|
87
|
-
// TEMPORARILY DISABLED FOR TESTING
|
|
88
|
-
// if (!skipInstall) {
|
|
89
|
-
// const mobilePackagePath = path.join(projectPath, 'packages', 'mobile');
|
|
90
|
-
// if (await fs.pathExists(path.join(mobilePackagePath, 'android')) ||
|
|
91
|
-
// await fs.pathExists(path.join(mobilePackagePath, 'ios'))) {
|
|
92
|
-
// await configureReactNativeMonorepo(mobilePackagePath, projectPath);
|
|
93
|
-
// }
|
|
94
|
-
// }
|
|
95
|
-
console.log(chalk_1.default.green('✅ Full-stack workspace created successfully!'));
|
|
96
|
-
console.log(chalk_1.default.blue('📋 Your workspace includes:'));
|
|
97
|
-
console.log(chalk_1.default.white(' • 🗄️ Database package with Prisma'));
|
|
98
|
-
console.log(chalk_1.default.white(' • 🚀 API server with tRPC'));
|
|
99
|
-
console.log(chalk_1.default.white(' • 🌐 React web app'));
|
|
100
|
-
console.log(chalk_1.default.white(' • 📱 React Native mobile app'));
|
|
101
|
-
console.log(chalk_1.default.white(' • 📦 Shared component library'));
|
|
102
|
-
console.log(chalk_1.default.white(' • 🔗 All packages pre-integrated'));
|
|
103
|
-
console.log('');
|
|
104
|
-
console.log(chalk_1.default.green('🚀 Quick start:'));
|
|
105
|
-
console.log(chalk_1.default.white(` cd ${name}`));
|
|
106
|
-
console.log(chalk_1.default.white(' yarn db:generate # Generate Prisma client'));
|
|
107
|
-
console.log(chalk_1.default.white(' yarn dev # Start all development servers'));
|
|
108
|
-
console.log('');
|
|
109
|
-
console.log(chalk_1.default.gray('💡 Check README.md for detailed setup instructions'));
|
|
110
|
-
if (figmaToken) {
|
|
111
|
-
console.log(chalk_1.default.blue('🎨 Figma integration configured in .devcontainer/.env'));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
console.log(chalk_1.default.gray('💡 Tip: Add Figma integration later by editing .devcontainer/.env'));
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Copy template directory with template variable replacements
|
|
119
|
-
*/
|
|
120
|
-
async function copyTemplateWithReplacements(srcDir, destDir, templateData) {
|
|
121
|
-
await fs.ensureDir(destDir);
|
|
122
|
-
const files = await fs.readdir(srcDir);
|
|
123
|
-
for (const file of files) {
|
|
124
|
-
const srcPath = path_1.default.join(srcDir, file);
|
|
125
|
-
// Handle .template files (renamed dotfiles from build process)
|
|
126
|
-
let destFile = file;
|
|
127
|
-
if (file.endsWith('.template')) {
|
|
128
|
-
// Rename back to dotfile (e.g., gitignore.template -> .gitignore)
|
|
129
|
-
destFile = '.' + file.replace('.template', '');
|
|
130
|
-
}
|
|
131
|
-
const destPath = path_1.default.join(destDir, destFile);
|
|
132
|
-
// Skip excluded files
|
|
133
|
-
if (shouldExcludeFile(file)) {
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
const stat = await fs.stat(srcPath);
|
|
137
|
-
if (stat.isDirectory()) {
|
|
138
|
-
// Recursively copy directories
|
|
139
|
-
await copyTemplateWithReplacements(srcPath, destPath, templateData);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
// Check if file should be processed for template variables
|
|
143
|
-
if (shouldProcessFile(file)) {
|
|
144
|
-
let content = await fs.readFile(srcPath, 'utf8');
|
|
145
|
-
content = replaceTemplateVariables(content, templateData);
|
|
146
|
-
await fs.writeFile(destPath, content);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
// Just copy binary files or files that shouldn't be processed
|
|
150
|
-
await fs.copy(srcPath, destPath);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Determine if a file should be excluded from the generated project
|
|
157
|
-
* These are template-only files that users don't need
|
|
158
|
-
*/
|
|
159
|
-
function shouldExcludeFile(filename) {
|
|
160
|
-
const baseName = path_1.default.basename(filename);
|
|
161
|
-
// No more template variants - App.tsx is the only version now
|
|
162
|
-
// Exclude development artifacts
|
|
163
|
-
if (baseName.endsWith('.bak') || baseName.endsWith('~')) {
|
|
164
|
-
return true;
|
|
165
|
-
}
|
|
166
|
-
// Exclude template-specific documentation
|
|
167
|
-
// (Users get the main README which is customized)
|
|
168
|
-
if (baseName === '.idealystignore' || baseName === '.templateignore') {
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Determine if a file should be processed for template variables
|
|
175
|
-
*/
|
|
176
|
-
function shouldProcessFile(filename) {
|
|
177
|
-
const textExtensions = [
|
|
178
|
-
'.ts', '.tsx', '.js', '.jsx', '.json', '.md', '.txt',
|
|
179
|
-
'.yml', '.yaml', '.env', '.example', '.gitignore',
|
|
180
|
-
'.dockerignore', '.sh', '.conf', '.sql'
|
|
181
|
-
];
|
|
182
|
-
const baseName = path_1.default.basename(filename);
|
|
183
|
-
// Check if it's a known text file
|
|
184
|
-
if (textExtensions.some(ext => baseName.endsWith(ext))) {
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
// Check for files without extensions that are typically text
|
|
188
|
-
if (!baseName.includes('.') && ['Dockerfile', 'LICENSE', 'README'].some(name => baseName.includes(name))) {
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Replace template variables in content
|
|
195
|
-
*/
|
|
196
|
-
function replaceTemplateVariables(content, templateData) {
|
|
197
|
-
let result = content;
|
|
198
|
-
// Replace all template variables
|
|
199
|
-
Object.entries(templateData).forEach(([key, value]) => {
|
|
200
|
-
const placeholder = `{{${key}}}`;
|
|
201
|
-
result = result.replace(new RegExp(placeholder, 'g'), String(value));
|
|
202
|
-
});
|
|
203
|
-
return result;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Initialize React Native mobile package with native iOS/Android folders
|
|
207
|
-
*/
|
|
208
|
-
async function initializeMobilePackage(projectPath, templatePath, templateData, skipInstall) {
|
|
209
|
-
const mobilePackagePath = path_1.default.join(projectPath, 'packages', 'mobile');
|
|
210
|
-
const mobileTemplatePath = path_1.default.join(templatePath, 'packages', 'mobile');
|
|
211
|
-
// Check if mobile package exists
|
|
212
|
-
if (!await fs.pathExists(mobilePackagePath)) {
|
|
213
|
-
console.log(chalk_1.default.yellow(' ⚠️ Mobile package not found, skipping React Native initialization'));
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const displayName = templateData.appName || templateData.projectName
|
|
217
|
-
.split('-')
|
|
218
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
219
|
-
.join(' ');
|
|
220
|
-
// Try to initialize React Native project with native folders
|
|
221
|
-
const useRnCli = process.env.IDEALYST_USE_RN_CLI !== 'false';
|
|
222
|
-
if (useRnCli) {
|
|
223
|
-
try {
|
|
224
|
-
console.log(chalk_1.default.gray(' Initializing React Native with native platform support...'));
|
|
225
|
-
console.log(chalk_1.default.gray(' (This creates proper Android/iOS directories)'));
|
|
226
|
-
// Back up our Idealyst-specific files
|
|
227
|
-
const backupPath = path_1.default.join(projectPath, '.mobile-backup');
|
|
228
|
-
await fs.copy(mobilePackagePath, backupPath);
|
|
229
|
-
// Remove the mobile directory to let RN CLI create it fresh
|
|
230
|
-
await fs.remove(mobilePackagePath);
|
|
231
|
-
// Run React Native init in packages directory
|
|
232
|
-
const packagesDir = path_1.default.join(projectPath, 'packages');
|
|
233
|
-
await (0, utils_1.initializeReactNativeProject)('mobile', packagesDir, displayName, true);
|
|
234
|
-
// Overlay our Idealyst-specific files on top
|
|
235
|
-
console.log(chalk_1.default.gray(' Applying Idealyst Framework configuration...'));
|
|
236
|
-
await (0, utils_1.overlayIdealystFiles)(mobileTemplatePath, mobilePackagePath, templateData);
|
|
237
|
-
// Configure React Native for monorepo (Android/iOS paths)
|
|
238
|
-
// Only configure if we're going to install dependencies (paths need node_modules to exist)
|
|
239
|
-
if (!skipInstall) {
|
|
240
|
-
console.log(chalk_1.default.gray(' Configuring monorepo paths (will complete after dependency install)...'));
|
|
241
|
-
}
|
|
242
|
-
// Clean up backup
|
|
243
|
-
await fs.remove(backupPath);
|
|
244
|
-
console.log(chalk_1.default.green(' ✅ React Native mobile package initialized with native support'));
|
|
245
|
-
}
|
|
246
|
-
catch (rnError) {
|
|
247
|
-
console.log(chalk_1.default.yellow(' ⚠️ React Native CLI initialization failed'));
|
|
248
|
-
console.log(chalk_1.default.yellow(' The mobile package will work but may need manual setup for native platforms'));
|
|
249
|
-
console.log('');
|
|
250
|
-
console.log(chalk_1.default.gray(' You can initialize native folders later with:'));
|
|
251
|
-
console.log(chalk_1.default.gray(` cd ${path_1.default.relative(process.cwd(), mobilePackagePath)}`));
|
|
252
|
-
console.log(chalk_1.default.gray(' npx @react-native-community/cli@latest init mobile --title "' + displayName + '"'));
|
|
253
|
-
console.log('');
|
|
254
|
-
// Restore from backup if it exists
|
|
255
|
-
const backupPath = path_1.default.join(projectPath, '.mobile-backup');
|
|
256
|
-
if (await fs.pathExists(backupPath)) {
|
|
257
|
-
await fs.remove(mobilePackagePath);
|
|
258
|
-
await fs.copy(backupPath, mobilePackagePath);
|
|
259
|
-
await fs.remove(backupPath);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
console.log(chalk_1.default.gray(' ⚠️ Skipping React Native CLI (IDEALYST_USE_RN_CLI=false)'));
|
|
265
|
-
console.log(chalk_1.default.gray(' You will need to set up native platforms manually'));
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/generators/init.ts"],"names":[],"mappings":"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"}
|