@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,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* tRPC extension generator
|
|
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.applyTrpcExtension = applyTrpcExtension;
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const merger_1 = require("../../templates/merger");
|
|
13
|
+
const constants_1 = require("../../constants");
|
|
14
|
+
const logger_1 = require("../../utils/logger");
|
|
15
|
+
/**
|
|
16
|
+
* Apply tRPC extension to a workspace
|
|
17
|
+
* This adds tRPC to API, web, and mobile packages
|
|
18
|
+
*/
|
|
19
|
+
async function applyTrpcExtension(projectPath, data) {
|
|
20
|
+
logger_1.logger.info('Configuring tRPC...');
|
|
21
|
+
// Add tRPC to API package
|
|
22
|
+
await addTrpcToApi(projectPath, data);
|
|
23
|
+
// Add tRPC to web package
|
|
24
|
+
await addTrpcToWeb(projectPath, data);
|
|
25
|
+
// Add tRPC to mobile package
|
|
26
|
+
await addTrpcToMobile(projectPath, data);
|
|
27
|
+
// Add tRPC to shared package (for shared types)
|
|
28
|
+
await addTrpcToShared(projectPath, data);
|
|
29
|
+
return { success: true };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add tRPC server setup to API package
|
|
33
|
+
*/
|
|
34
|
+
async function addTrpcToApi(projectPath, data) {
|
|
35
|
+
const apiDir = path_1.default.join(projectPath, 'packages', 'api');
|
|
36
|
+
const trpcDir = path_1.default.join(apiDir, 'src', 'trpc');
|
|
37
|
+
await fs_extra_1.default.ensureDir(trpcDir);
|
|
38
|
+
// Create trpc.ts (context and initialization)
|
|
39
|
+
await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'trpc.ts'), createTrpcInit(data));
|
|
40
|
+
// Create router.ts
|
|
41
|
+
await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'router.ts'), createTrpcRouter(data));
|
|
42
|
+
// Create routers/index.ts
|
|
43
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(trpcDir, 'routers'));
|
|
44
|
+
await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'routers', 'index.ts'), createExampleRouter(data));
|
|
45
|
+
// Add dependencies
|
|
46
|
+
await (0, merger_1.addDependencies)(path_1.default.join(apiDir, 'package.json'), constants_1.DEPENDENCIES.trpcServer);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Add tRPC client to web package
|
|
50
|
+
*/
|
|
51
|
+
async function addTrpcToWeb(projectPath, data) {
|
|
52
|
+
const webDir = path_1.default.join(projectPath, 'packages', 'web');
|
|
53
|
+
const utilsDir = path_1.default.join(webDir, 'src', 'utils');
|
|
54
|
+
await fs_extra_1.default.ensureDir(utilsDir);
|
|
55
|
+
// Create trpc.ts client
|
|
56
|
+
await fs_extra_1.default.writeFile(path_1.default.join(utilsDir, 'trpc.ts'), createTrpcClient(data, 'web'));
|
|
57
|
+
// Add dependencies
|
|
58
|
+
await (0, merger_1.addDependencies)(path_1.default.join(webDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Add tRPC client to mobile package
|
|
62
|
+
*/
|
|
63
|
+
async function addTrpcToMobile(projectPath, data) {
|
|
64
|
+
const mobileDir = path_1.default.join(projectPath, 'packages', 'mobile');
|
|
65
|
+
const utilsDir = path_1.default.join(mobileDir, 'src', 'utils');
|
|
66
|
+
await fs_extra_1.default.ensureDir(utilsDir);
|
|
67
|
+
// Create trpc.ts client
|
|
68
|
+
await fs_extra_1.default.writeFile(path_1.default.join(utilsDir, 'trpc.ts'), createTrpcClient(data, 'mobile'));
|
|
69
|
+
// Add dependencies
|
|
70
|
+
await (0, merger_1.addDependencies)(path_1.default.join(mobileDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Add tRPC types to shared package
|
|
74
|
+
*/
|
|
75
|
+
async function addTrpcToShared(projectPath, data) {
|
|
76
|
+
const sharedDir = path_1.default.join(projectPath, 'packages', 'shared');
|
|
77
|
+
const trpcDir = path_1.default.join(sharedDir, 'src', 'trpc');
|
|
78
|
+
await fs_extra_1.default.ensureDir(trpcDir);
|
|
79
|
+
// Create shared tRPC client factory
|
|
80
|
+
await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'client.ts'), createSharedTrpcClient(data));
|
|
81
|
+
// Create index.ts
|
|
82
|
+
await fs_extra_1.default.writeFile(path_1.default.join(trpcDir, 'index.ts'), `export * from './client';\n`);
|
|
83
|
+
// Add dependencies
|
|
84
|
+
await (0, merger_1.addDependencies)(path_1.default.join(sharedDir, 'package.json'), constants_1.DEPENDENCIES.trpc);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create tRPC initialization (server-side)
|
|
88
|
+
*/
|
|
89
|
+
function createTrpcInit(data) {
|
|
90
|
+
return `/**
|
|
91
|
+
* tRPC initialization
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
import { initTRPC } from '@trpc/server';
|
|
95
|
+
import { ZodError } from 'zod';
|
|
96
|
+
import type { CreateExpressContextOptions } from '@trpc/server/adapters/express';
|
|
97
|
+
${data.hasPrisma ? `import { prisma } from '@${data.workspaceScope}/database';` : ''}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Create context for each request
|
|
101
|
+
*/
|
|
102
|
+
export const createContext = ({ req, res }: CreateExpressContextOptions) => {
|
|
103
|
+
return {
|
|
104
|
+
req,
|
|
105
|
+
res,
|
|
106
|
+
${data.hasPrisma ? ' prisma,' : ''}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export type Context = Awaited<ReturnType<typeof createContext>>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Initialize tRPC
|
|
114
|
+
*/
|
|
115
|
+
const t = initTRPC.context<Context>().create({
|
|
116
|
+
errorFormatter({ shape, error }) {
|
|
117
|
+
return {
|
|
118
|
+
...shape,
|
|
119
|
+
data: {
|
|
120
|
+
...shape.data,
|
|
121
|
+
zodError:
|
|
122
|
+
error.cause instanceof ZodError ? error.cause.flatten() : null,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
export const router = t.router;
|
|
129
|
+
export const publicProcedure = t.procedure;
|
|
130
|
+
export const middleware = t.middleware;
|
|
131
|
+
|
|
132
|
+
// Example protected procedure (add your auth logic)
|
|
133
|
+
// export const protectedProcedure = publicProcedure.use(({ ctx, next }) => {
|
|
134
|
+
// if (!ctx.user) {
|
|
135
|
+
// throw new TRPCError({ code: 'UNAUTHORIZED' });
|
|
136
|
+
// }
|
|
137
|
+
// return next({ ctx: { ...ctx, user: ctx.user } });
|
|
138
|
+
// });
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create tRPC router
|
|
143
|
+
*/
|
|
144
|
+
function createTrpcRouter(data) {
|
|
145
|
+
return `/**
|
|
146
|
+
* tRPC router
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
import { router, publicProcedure, createContext } from './trpc';
|
|
150
|
+
import { exampleRouter } from './routers';
|
|
151
|
+
|
|
152
|
+
export const appRouter = router({
|
|
153
|
+
// Health check
|
|
154
|
+
health: publicProcedure.query(() => ({
|
|
155
|
+
status: 'ok',
|
|
156
|
+
timestamp: new Date().toISOString(),
|
|
157
|
+
})),
|
|
158
|
+
|
|
159
|
+
// Example router
|
|
160
|
+
example: exampleRouter,
|
|
161
|
+
|
|
162
|
+
// Add more routers here
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
export type AppRouter = typeof appRouter;
|
|
166
|
+
export { createContext };
|
|
167
|
+
`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create example router
|
|
171
|
+
*/
|
|
172
|
+
function createExampleRouter(data) {
|
|
173
|
+
return `/**
|
|
174
|
+
* Example router
|
|
175
|
+
*/
|
|
176
|
+
|
|
177
|
+
import { z } from 'zod';
|
|
178
|
+
import { router, publicProcedure } from '../trpc';
|
|
179
|
+
|
|
180
|
+
export const exampleRouter = router({
|
|
181
|
+
hello: publicProcedure
|
|
182
|
+
.input(z.object({ name: z.string().optional() }))
|
|
183
|
+
.query(({ input }) => {
|
|
184
|
+
return {
|
|
185
|
+
greeting: \`Hello, \${input.name || 'World'}!\`,
|
|
186
|
+
};
|
|
187
|
+
}),
|
|
188
|
+
|
|
189
|
+
// Add more procedures here
|
|
190
|
+
});
|
|
191
|
+
`;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Create tRPC client (for web/mobile)
|
|
195
|
+
*/
|
|
196
|
+
function createTrpcClient(data, platform) {
|
|
197
|
+
const apiUrl = platform === 'mobile'
|
|
198
|
+
? 'http://10.0.2.2:3000/trpc' // Android emulator localhost
|
|
199
|
+
: 'http://localhost:3000/trpc';
|
|
200
|
+
// Web uses import.meta.env (Vite), mobile uses process.env
|
|
201
|
+
const envAccess = platform === 'web'
|
|
202
|
+
? 'import.meta.env.VITE_API_URL'
|
|
203
|
+
: 'process.env.API_URL';
|
|
204
|
+
return `/**
|
|
205
|
+
* tRPC client for ${platform}
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
import { createTRPCReact } from '@trpc/react-query';
|
|
209
|
+
import { httpBatchLink } from '@trpc/client';
|
|
210
|
+
import type { AppRouter } from '@${data.workspaceScope}/api';
|
|
211
|
+
|
|
212
|
+
export const trpc = createTRPCReact<AppRouter>();
|
|
213
|
+
|
|
214
|
+
export const trpcClient = trpc.createClient({
|
|
215
|
+
links: [
|
|
216
|
+
httpBatchLink({
|
|
217
|
+
url: ${envAccess} || '${apiUrl}',
|
|
218
|
+
}),
|
|
219
|
+
],
|
|
220
|
+
});
|
|
221
|
+
`;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create shared tRPC client factory
|
|
225
|
+
*/
|
|
226
|
+
function createSharedTrpcClient(data) {
|
|
227
|
+
return `/**
|
|
228
|
+
* Shared tRPC client factory
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
import { createTRPCReact, httpBatchLink } from '@trpc/react-query';
|
|
232
|
+
import type { AppRouter } from '@${data.workspaceScope}/api';
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Create a tRPC client with custom configuration
|
|
236
|
+
*/
|
|
237
|
+
export function createTrpcClient(options: {
|
|
238
|
+
url?: string;
|
|
239
|
+
headers?: () => Record<string, string>;
|
|
240
|
+
} = {}) {
|
|
241
|
+
const trpc = createTRPCReact<AppRouter>();
|
|
242
|
+
|
|
243
|
+
const client = trpc.createClient({
|
|
244
|
+
links: [
|
|
245
|
+
httpBatchLink({
|
|
246
|
+
url: options.url || 'http://localhost:3000/trpc',
|
|
247
|
+
headers: options.headers,
|
|
248
|
+
}),
|
|
249
|
+
],
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
return { trpc, client };
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export type { AppRouter };
|
|
256
|
+
`;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=trpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trpc.js","sourceRoot":"","sources":["../../../src/generators/extensions/trpc.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generator orchestrator - main entry point for project generation
|
|
4
|
+
*/
|
|
2
5
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
6
|
if (k2 === undefined) k2 = k;
|
|
4
7
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -13,11 +16,110 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
13
16
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
17
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
18
|
};
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
16
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
23
|
exports.generateProject = generateProject;
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
const path_1 = __importDefault(require("path"));
|
|
25
|
+
const workspace_1 = require("./workspace");
|
|
26
|
+
const core_1 = require("./core");
|
|
27
|
+
const api_1 = require("./extensions/api");
|
|
28
|
+
const prisma_1 = require("./extensions/prisma");
|
|
29
|
+
const trpc_1 = require("./extensions/trpc");
|
|
30
|
+
const graphql_1 = require("./extensions/graphql");
|
|
31
|
+
const devcontainer_1 = require("./extensions/devcontainer");
|
|
32
|
+
const shell_1 = require("../utils/shell");
|
|
33
|
+
const logger_1 = require("../utils/logger");
|
|
34
|
+
const constants_1 = require("../constants");
|
|
35
|
+
const processor_1 = require("../templates/processor");
|
|
36
|
+
/**
|
|
37
|
+
* Main generator function - orchestrates all generation
|
|
38
|
+
*/
|
|
39
|
+
async function generateProject(config) {
|
|
40
|
+
const projectPath = path_1.default.join(config.directory, config.projectName);
|
|
41
|
+
const warnings = [];
|
|
42
|
+
const nextSteps = [];
|
|
43
|
+
logger_1.logger.header(`Creating Idealyst workspace: ${config.projectName}`);
|
|
44
|
+
// Build template data
|
|
45
|
+
const templateData = (0, processor_1.buildTemplateData)(config, constants_1.IDEALYST_VERSION);
|
|
46
|
+
// Step 1: Generate workspace root
|
|
47
|
+
logger_1.logger.step('Creating workspace structure...');
|
|
48
|
+
await (0, workspace_1.generateWorkspace)(projectPath, templateData);
|
|
49
|
+
// Step 2: Generate core packages (always included)
|
|
50
|
+
logger_1.logger.step('Creating shared package...');
|
|
51
|
+
await (0, core_1.generateSharedPackage)(projectPath, templateData);
|
|
52
|
+
logger_1.logger.step('Creating web package...');
|
|
53
|
+
await (0, core_1.generateWebPackage)(projectPath, templateData);
|
|
54
|
+
// Step 3: Generate mobile package with React Native
|
|
55
|
+
logger_1.logger.step('Setting up React Native mobile package...');
|
|
56
|
+
const mobileResult = await (0, core_1.generateMobilePackage)(projectPath, {
|
|
57
|
+
...templateData,
|
|
58
|
+
bundleId: config.iosBundleId,
|
|
59
|
+
packageName: config.androidPackageName,
|
|
60
|
+
skipInstall: true, // We'll install all at once at the end
|
|
61
|
+
});
|
|
62
|
+
if (mobileResult.warning) {
|
|
63
|
+
warnings.push(mobileResult.warning);
|
|
64
|
+
}
|
|
65
|
+
// Step 4: Apply extensions
|
|
66
|
+
const packagesCreated = ['shared', 'web', 'mobile'];
|
|
67
|
+
const extensionsEnabled = [];
|
|
68
|
+
if (config.extensions.api) {
|
|
69
|
+
logger_1.logger.step('Adding API server...');
|
|
70
|
+
await (0, api_1.applyApiExtension)(projectPath, templateData);
|
|
71
|
+
packagesCreated.push('api');
|
|
72
|
+
extensionsEnabled.push('api');
|
|
73
|
+
}
|
|
74
|
+
if (config.extensions.prisma) {
|
|
75
|
+
logger_1.logger.step('Adding Prisma database...');
|
|
76
|
+
await (0, prisma_1.applyPrismaExtension)(projectPath, templateData);
|
|
77
|
+
packagesCreated.push('database');
|
|
78
|
+
extensionsEnabled.push('prisma');
|
|
79
|
+
nextSteps.push('Run `yarn db:generate` to generate Prisma client');
|
|
80
|
+
}
|
|
81
|
+
if (config.extensions.trpc) {
|
|
82
|
+
logger_1.logger.step('Configuring tRPC...');
|
|
83
|
+
await (0, trpc_1.applyTrpcExtension)(projectPath, templateData);
|
|
84
|
+
extensionsEnabled.push('trpc');
|
|
85
|
+
}
|
|
86
|
+
if (config.extensions.graphql) {
|
|
87
|
+
logger_1.logger.step('Configuring GraphQL...');
|
|
88
|
+
await (0, graphql_1.applyGraphqlExtension)(projectPath, templateData);
|
|
89
|
+
extensionsEnabled.push('graphql');
|
|
90
|
+
}
|
|
91
|
+
if (config.extensions.devcontainer) {
|
|
92
|
+
logger_1.logger.step('Setting up devcontainer...');
|
|
93
|
+
await (0, devcontainer_1.applyDevcontainerExtension)(projectPath, templateData, config.extensions.devcontainer);
|
|
94
|
+
extensionsEnabled.push('devcontainer');
|
|
95
|
+
nextSteps.push('Open in VS Code and select "Reopen in Container" to use devcontainer');
|
|
96
|
+
}
|
|
97
|
+
// Step 5: Install dependencies
|
|
98
|
+
if (!config.skipInstall) {
|
|
99
|
+
logger_1.logger.step('Installing dependencies...');
|
|
100
|
+
try {
|
|
101
|
+
await (0, shell_1.installDependencies)(projectPath);
|
|
102
|
+
logger_1.logger.success('Dependencies installed successfully!');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
warnings.push('Failed to install dependencies. Run `yarn install` manually.');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
nextSteps.unshift('Run `yarn install` to install dependencies');
|
|
110
|
+
}
|
|
111
|
+
// Add common next steps
|
|
112
|
+
nextSteps.push('Run `yarn dev` to start all development servers');
|
|
113
|
+
return {
|
|
114
|
+
success: true,
|
|
115
|
+
projectPath,
|
|
116
|
+
packagesCreated,
|
|
117
|
+
extensionsEnabled,
|
|
118
|
+
warnings,
|
|
119
|
+
nextSteps,
|
|
120
|
+
};
|
|
21
121
|
}
|
|
22
|
-
__exportStar(require("./
|
|
122
|
+
__exportStar(require("./workspace"), exports);
|
|
123
|
+
__exportStar(require("./core"), exports);
|
|
124
|
+
__exportStar(require("./reactNative"), exports);
|
|
23
125
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* React Native initialization utilities
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.initializeReactNative = initializeReactNative;
|
|
43
|
+
exports.hasNativeFolders = hasNativeFolders;
|
|
44
|
+
exports.overlayIdealystFiles = overlayIdealystFiles;
|
|
45
|
+
const path_1 = __importDefault(require("path"));
|
|
46
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
47
|
+
const shell_1 = require("../utils/shell");
|
|
48
|
+
const logger_1 = require("../utils/logger");
|
|
49
|
+
const constants_1 = require("../constants");
|
|
50
|
+
/**
|
|
51
|
+
* Initialize a React Native project with correct identifiers
|
|
52
|
+
*/
|
|
53
|
+
async function initializeReactNative(options) {
|
|
54
|
+
const { projectName, displayName, bundleId, packageName, directory, skipInstall } = options;
|
|
55
|
+
try {
|
|
56
|
+
logger_1.logger.info('Initializing React Native with native platform support...');
|
|
57
|
+
// Build the React Native CLI command
|
|
58
|
+
const args = [
|
|
59
|
+
'@react-native-community/cli@latest',
|
|
60
|
+
'init',
|
|
61
|
+
projectName,
|
|
62
|
+
'--title', displayName,
|
|
63
|
+
'--package-name', packageName, // Sets Android package name
|
|
64
|
+
'--pm', 'yarn',
|
|
65
|
+
'--skip-git-init',
|
|
66
|
+
];
|
|
67
|
+
if (skipInstall) {
|
|
68
|
+
args.push('--skip-install');
|
|
69
|
+
}
|
|
70
|
+
const result = await (0, shell_1.runCommand)('npx', args, {
|
|
71
|
+
cwd: directory,
|
|
72
|
+
timeout: constants_1.RN_TIMEOUT,
|
|
73
|
+
silent: false,
|
|
74
|
+
});
|
|
75
|
+
if (result.exitCode !== 0) {
|
|
76
|
+
throw new Error('React Native CLI failed');
|
|
77
|
+
}
|
|
78
|
+
// Update iOS bundle identifier (RN CLI only sets Android package name)
|
|
79
|
+
await updateIosBundleId(path_1.default.join(directory, projectName), bundleId, projectName);
|
|
80
|
+
// Configure Android Vector Icons
|
|
81
|
+
await configureAndroidVectorIcons(path_1.default.join(directory, projectName));
|
|
82
|
+
return { success: true };
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger_1.logger.warn('React Native CLI initialization failed');
|
|
86
|
+
logger_1.logger.dim('Native folders could not be created automatically.');
|
|
87
|
+
logger_1.logger.dim('You may need to run React Native init manually or use Expo.');
|
|
88
|
+
return {
|
|
89
|
+
success: false,
|
|
90
|
+
warning: 'Native folders could not be created. You may need to initialize React Native manually.',
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Update iOS bundle identifier in project.pbxproj
|
|
96
|
+
*/
|
|
97
|
+
async function updateIosBundleId(projectPath, bundleId, projectName) {
|
|
98
|
+
const pbxprojPath = path_1.default.join(projectPath, 'ios', `${projectName}.xcodeproj`, 'project.pbxproj');
|
|
99
|
+
if (await fs_extra_1.default.pathExists(pbxprojPath)) {
|
|
100
|
+
let content = await fs_extra_1.default.readFile(pbxprojPath, 'utf8');
|
|
101
|
+
// Replace default bundle identifier pattern
|
|
102
|
+
// RN CLI uses org.reactjs.native.example.{projectName} by default
|
|
103
|
+
content = content.replace(/PRODUCT_BUNDLE_IDENTIFIER = "[^"]+"/g, `PRODUCT_BUNDLE_IDENTIFIER = "${bundleId}"`);
|
|
104
|
+
await fs_extra_1.default.writeFile(pbxprojPath, content);
|
|
105
|
+
logger_1.logger.success(`Updated iOS bundle identifier to: ${bundleId}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Configure Android Vector Icons in build.gradle
|
|
110
|
+
*/
|
|
111
|
+
async function configureAndroidVectorIcons(projectPath) {
|
|
112
|
+
const buildGradlePath = path_1.default.join(projectPath, 'android', 'app', 'build.gradle');
|
|
113
|
+
if (await fs_extra_1.default.pathExists(buildGradlePath)) {
|
|
114
|
+
let content = await fs_extra_1.default.readFile(buildGradlePath, 'utf8');
|
|
115
|
+
// Check if vector icons is already configured
|
|
116
|
+
if (content.includes('react-native-vector-icons')) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Add vector icons configuration after the android block
|
|
120
|
+
const vectorIconsLine = 'apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle")';
|
|
121
|
+
// Find a good place to add it (after the last apply statement or at the end)
|
|
122
|
+
if (content.includes('apply plugin:')) {
|
|
123
|
+
// Add after the last apply plugin line
|
|
124
|
+
const lines = content.split('\n');
|
|
125
|
+
let lastApplyIndex = -1;
|
|
126
|
+
for (let i = 0; i < lines.length; i++) {
|
|
127
|
+
if (lines[i].includes('apply plugin:') || lines[i].includes('apply from:')) {
|
|
128
|
+
lastApplyIndex = i;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (lastApplyIndex !== -1) {
|
|
132
|
+
lines.splice(lastApplyIndex + 1, 0, vectorIconsLine);
|
|
133
|
+
content = lines.join('\n');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Append at the end
|
|
138
|
+
content += '\n' + vectorIconsLine + '\n';
|
|
139
|
+
}
|
|
140
|
+
await fs_extra_1.default.writeFile(buildGradlePath, content);
|
|
141
|
+
logger_1.logger.success('Configured Android vector icons');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if native folders exist in a mobile package
|
|
146
|
+
*/
|
|
147
|
+
async function hasNativeFolders(mobileDir) {
|
|
148
|
+
return {
|
|
149
|
+
android: await fs_extra_1.default.pathExists(path_1.default.join(mobileDir, 'android')),
|
|
150
|
+
ios: await fs_extra_1.default.pathExists(path_1.default.join(mobileDir, 'ios')),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Overlay Idealyst files onto an existing React Native project
|
|
155
|
+
*/
|
|
156
|
+
async function overlayIdealystFiles(mobileDir, templateDir, data) {
|
|
157
|
+
const { copyTemplateDirectory } = await Promise.resolve().then(() => __importStar(require('../templates/copier')));
|
|
158
|
+
// Copy template files, skipping android/ios directories
|
|
159
|
+
const entries = await fs_extra_1.default.readdir(templateDir, { withFileTypes: true });
|
|
160
|
+
for (const entry of entries) {
|
|
161
|
+
// Skip native folders - we don't want to overwrite RN CLI generated ones
|
|
162
|
+
if (entry.name === 'android' || entry.name === 'ios') {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const sourcePath = path_1.default.join(templateDir, entry.name);
|
|
166
|
+
const destPath = path_1.default.join(mobileDir, entry.name);
|
|
167
|
+
if (entry.isDirectory()) {
|
|
168
|
+
await copyTemplateDirectory(sourcePath, destPath, data);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
// Copy file with template processing
|
|
172
|
+
const { copyTemplateFile } = await Promise.resolve().then(() => __importStar(require('../templates/copier')));
|
|
173
|
+
await copyTemplateFile(sourcePath, destPath, data);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=reactNative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactNative.js","sourceRoot":"","sources":["../../src/generators/reactNative.ts"],"names":[],"mappings":"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"}
|