@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,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GraphQL 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.applyGraphqlExtension = applyGraphqlExtension;
|
|
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 GraphQL extension to a workspace
|
|
17
|
+
*/
|
|
18
|
+
async function applyGraphqlExtension(projectPath, data) {
|
|
19
|
+
logger_1.logger.info('Configuring GraphQL...');
|
|
20
|
+
// Add GraphQL to API package
|
|
21
|
+
await addGraphqlToApi(projectPath, data);
|
|
22
|
+
// Add GraphQL client to web package
|
|
23
|
+
await addGraphqlToWeb(projectPath, data);
|
|
24
|
+
// Add GraphQL client to mobile package
|
|
25
|
+
await addGraphqlToMobile(projectPath, data);
|
|
26
|
+
return { success: true };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Add GraphQL server setup to API package
|
|
30
|
+
*/
|
|
31
|
+
async function addGraphqlToApi(projectPath, data) {
|
|
32
|
+
const apiDir = path_1.default.join(projectPath, 'packages', 'api');
|
|
33
|
+
const graphqlDir = path_1.default.join(apiDir, 'src', 'graphql');
|
|
34
|
+
await fs_extra_1.default.ensureDir(graphqlDir);
|
|
35
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(graphqlDir, 'resolvers'));
|
|
36
|
+
// Create schema.ts
|
|
37
|
+
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'schema.ts'), createGraphqlSchema(data));
|
|
38
|
+
// Create builder.ts (Pothos schema builder)
|
|
39
|
+
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'builder.ts'), createPothosBuilder(data));
|
|
40
|
+
// Create resolvers/index.ts
|
|
41
|
+
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'resolvers', 'index.ts'), createExampleResolvers(data));
|
|
42
|
+
// Add dependencies
|
|
43
|
+
await (0, merger_1.addDependencies)(path_1.default.join(apiDir, 'package.json'), constants_1.DEPENDENCIES.graphqlServer);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add GraphQL client to web package
|
|
47
|
+
*/
|
|
48
|
+
async function addGraphqlToWeb(projectPath, data) {
|
|
49
|
+
const webDir = path_1.default.join(projectPath, 'packages', 'web');
|
|
50
|
+
const graphqlDir = path_1.default.join(webDir, 'src', 'graphql');
|
|
51
|
+
await fs_extra_1.default.ensureDir(graphqlDir);
|
|
52
|
+
// Create client.ts
|
|
53
|
+
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'client.ts'), createGraphqlClient('web'));
|
|
54
|
+
// Add dependencies
|
|
55
|
+
await (0, merger_1.addDependencies)(path_1.default.join(webDir, 'package.json'), constants_1.DEPENDENCIES.graphql);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Add GraphQL client to mobile package
|
|
59
|
+
*/
|
|
60
|
+
async function addGraphqlToMobile(projectPath, data) {
|
|
61
|
+
const mobileDir = path_1.default.join(projectPath, 'packages', 'mobile');
|
|
62
|
+
const graphqlDir = path_1.default.join(mobileDir, 'src', 'graphql');
|
|
63
|
+
await fs_extra_1.default.ensureDir(graphqlDir);
|
|
64
|
+
// Create client.ts
|
|
65
|
+
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'client.ts'), createGraphqlClient('mobile'));
|
|
66
|
+
// Add dependencies
|
|
67
|
+
await (0, merger_1.addDependencies)(path_1.default.join(mobileDir, 'package.json'), constants_1.DEPENDENCIES.graphql);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create GraphQL schema with Pothos
|
|
71
|
+
*/
|
|
72
|
+
function createGraphqlSchema(data) {
|
|
73
|
+
return `/**
|
|
74
|
+
* GraphQL schema
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
import { builder } from './builder';
|
|
78
|
+
import './resolvers';
|
|
79
|
+
|
|
80
|
+
export const schema = builder.toSchema();
|
|
81
|
+
`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create Pothos schema builder
|
|
85
|
+
*/
|
|
86
|
+
function createPothosBuilder(data) {
|
|
87
|
+
let imports = `import SchemaBuilder from '@pothos/core';`;
|
|
88
|
+
let builderConfig = '';
|
|
89
|
+
if (data.hasPrisma) {
|
|
90
|
+
imports += `
|
|
91
|
+
import PrismaPlugin from '@pothos/plugin-prisma';
|
|
92
|
+
import type PrismaTypes from '@pothos/plugin-prisma/generated';
|
|
93
|
+
import { prisma } from '@${data.workspaceScope}/database';`;
|
|
94
|
+
builderConfig = `
|
|
95
|
+
plugins: [PrismaPlugin],
|
|
96
|
+
prisma: {
|
|
97
|
+
client: prisma,
|
|
98
|
+
},`;
|
|
99
|
+
}
|
|
100
|
+
return `/**
|
|
101
|
+
* Pothos schema builder
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
${imports}
|
|
105
|
+
|
|
106
|
+
export const builder = new SchemaBuilder<{
|
|
107
|
+
Context: {
|
|
108
|
+
${data.hasPrisma ? ' prisma: typeof prisma;' : ''}
|
|
109
|
+
};${data.hasPrisma ? `
|
|
110
|
+
PrismaTypes: PrismaTypes;` : ''}
|
|
111
|
+
}>({${builderConfig}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Initialize Query and Mutation types
|
|
115
|
+
builder.queryType({});
|
|
116
|
+
builder.mutationType({});
|
|
117
|
+
`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create example resolvers
|
|
121
|
+
*/
|
|
122
|
+
function createExampleResolvers(data) {
|
|
123
|
+
return `/**
|
|
124
|
+
* Example GraphQL resolvers
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
import { builder } from '../builder';
|
|
128
|
+
|
|
129
|
+
// Health check query
|
|
130
|
+
builder.queryField('health', (t) =>
|
|
131
|
+
t.field({
|
|
132
|
+
type: 'String',
|
|
133
|
+
resolve: () => 'GraphQL API is healthy!',
|
|
134
|
+
})
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
// Hello query with argument
|
|
138
|
+
builder.queryField('hello', (t) =>
|
|
139
|
+
t.field({
|
|
140
|
+
type: 'String',
|
|
141
|
+
args: {
|
|
142
|
+
name: t.arg.string(),
|
|
143
|
+
},
|
|
144
|
+
resolve: (_, { name }) => \`Hello, \${name || 'World'}!\`,
|
|
145
|
+
})
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
// Example mutation
|
|
149
|
+
builder.mutationField('echo', (t) =>
|
|
150
|
+
t.field({
|
|
151
|
+
type: 'String',
|
|
152
|
+
args: {
|
|
153
|
+
message: t.arg.string({ required: true }),
|
|
154
|
+
},
|
|
155
|
+
resolve: (_, { message }) => message,
|
|
156
|
+
})
|
|
157
|
+
);
|
|
158
|
+
${data.hasPrisma ? `
|
|
159
|
+
// Example User type (uncomment to use with Prisma)
|
|
160
|
+
// builder.prismaObject('User', {
|
|
161
|
+
// fields: (t) => ({
|
|
162
|
+
// id: t.exposeID('id'),
|
|
163
|
+
// email: t.exposeString('email'),
|
|
164
|
+
// name: t.exposeString('name', { nullable: true }),
|
|
165
|
+
// posts: t.relation('posts'),
|
|
166
|
+
// }),
|
|
167
|
+
// });
|
|
168
|
+
` : ''}
|
|
169
|
+
`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create GraphQL client
|
|
173
|
+
*/
|
|
174
|
+
function createGraphqlClient(platform) {
|
|
175
|
+
const apiUrl = platform === 'mobile'
|
|
176
|
+
? 'http://10.0.2.2:3000/graphql'
|
|
177
|
+
: 'http://localhost:3000/graphql';
|
|
178
|
+
return `/**
|
|
179
|
+
* Apollo GraphQL client for ${platform}
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
|
|
183
|
+
|
|
184
|
+
const httpLink = new HttpLink({
|
|
185
|
+
uri: process.env.${platform === 'web' ? 'VITE_' : ''}GRAPHQL_URL || '${apiUrl}',
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
export const apolloClient = new ApolloClient({
|
|
189
|
+
link: httpLink,
|
|
190
|
+
cache: new InMemoryCache(),
|
|
191
|
+
defaultOptions: {
|
|
192
|
+
watchQuery: {
|
|
193
|
+
fetchPolicy: 'cache-and-network',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// Re-export common hooks
|
|
199
|
+
export { gql, useQuery, useMutation, useLazyQuery } from '@apollo/client';
|
|
200
|
+
`;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/generators/extensions/graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Extension generators exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.applyDevcontainerExtension = exports.applyGraphqlExtension = exports.applyTrpcExtension = exports.applyPrismaExtension = exports.applyApiExtension = void 0;
|
|
7
|
+
var api_1 = require("./api");
|
|
8
|
+
Object.defineProperty(exports, "applyApiExtension", { enumerable: true, get: function () { return api_1.applyApiExtension; } });
|
|
9
|
+
var prisma_1 = require("./prisma");
|
|
10
|
+
Object.defineProperty(exports, "applyPrismaExtension", { enumerable: true, get: function () { return prisma_1.applyPrismaExtension; } });
|
|
11
|
+
var trpc_1 = require("./trpc");
|
|
12
|
+
Object.defineProperty(exports, "applyTrpcExtension", { enumerable: true, get: function () { return trpc_1.applyTrpcExtension; } });
|
|
13
|
+
var graphql_1 = require("./graphql");
|
|
14
|
+
Object.defineProperty(exports, "applyGraphqlExtension", { enumerable: true, get: function () { return graphql_1.applyGraphqlExtension; } });
|
|
15
|
+
var devcontainer_1 = require("./devcontainer");
|
|
16
|
+
Object.defineProperty(exports, "applyDevcontainerExtension", { enumerable: true, get: function () { return devcontainer_1.applyDevcontainerExtension; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/extensions/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6BAA0C;AAAjC,wGAAA,iBAAiB,OAAA;AAC1B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAC3B,qCAAkD;AAAzC,gHAAA,qBAAqB,OAAA;AAC9B,+CAA4D;AAAnD,0HAAA,0BAA0B,OAAA"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Prisma 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.applyPrismaExtension = applyPrismaExtension;
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const copier_1 = require("../../templates/copier");
|
|
13
|
+
const merger_1 = require("../../templates/merger");
|
|
14
|
+
const constants_1 = require("../../constants");
|
|
15
|
+
const logger_1 = require("../../utils/logger");
|
|
16
|
+
/**
|
|
17
|
+
* Apply Prisma extension to a workspace
|
|
18
|
+
*/
|
|
19
|
+
async function applyPrismaExtension(projectPath, data) {
|
|
20
|
+
const dbDir = path_1.default.join(projectPath, 'packages', 'database');
|
|
21
|
+
logger_1.logger.info('Creating database package...');
|
|
22
|
+
await fs_extra_1.default.ensureDir(dbDir);
|
|
23
|
+
// Try to use template first, or generate programmatically
|
|
24
|
+
const templatePath = (0, copier_1.getTemplatePath)('extensions', 'prisma');
|
|
25
|
+
if (await (0, copier_1.templateHasContent)(templatePath)) {
|
|
26
|
+
await (0, copier_1.copyTemplateDirectory)(templatePath, dbDir, data);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// Generate programmatically
|
|
30
|
+
await generatePrismaFiles(dbDir, data);
|
|
31
|
+
}
|
|
32
|
+
// Add database scripts to root package.json
|
|
33
|
+
await (0, merger_1.addScripts)(path_1.default.join(projectPath, 'package.json'), {
|
|
34
|
+
'db:generate': `yarn workspace @${data.workspaceScope}/database db:generate`,
|
|
35
|
+
'db:push': `yarn workspace @${data.workspaceScope}/database db:push`,
|
|
36
|
+
'db:migrate': `yarn workspace @${data.workspaceScope}/database db:migrate`,
|
|
37
|
+
'db:studio': `yarn workspace @${data.workspaceScope}/database db:studio`,
|
|
38
|
+
'db:seed': `yarn workspace @${data.workspaceScope}/database db:seed`,
|
|
39
|
+
});
|
|
40
|
+
return { success: true };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate Prisma package files programmatically
|
|
44
|
+
*/
|
|
45
|
+
async function generatePrismaFiles(dbDir, data) {
|
|
46
|
+
// Create directory structure
|
|
47
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(dbDir, 'prisma'));
|
|
48
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(dbDir, 'src'));
|
|
49
|
+
// Create package.json
|
|
50
|
+
await fs_extra_1.default.writeJson(path_1.default.join(dbDir, 'package.json'), createPrismaPackageJson(data), { spaces: 2 });
|
|
51
|
+
// Create tsconfig.json
|
|
52
|
+
await fs_extra_1.default.writeJson(path_1.default.join(dbDir, 'tsconfig.json'), createPrismaTsConfig(), { spaces: 2 });
|
|
53
|
+
// Create prisma/schema.prisma
|
|
54
|
+
await fs_extra_1.default.writeFile(path_1.default.join(dbDir, 'prisma', 'schema.prisma'), createPrismaSchema());
|
|
55
|
+
// Create src/index.ts
|
|
56
|
+
await fs_extra_1.default.writeFile(path_1.default.join(dbDir, 'src', 'index.ts'), createPrismaIndex());
|
|
57
|
+
// Create src/schemas.ts
|
|
58
|
+
await fs_extra_1.default.writeFile(path_1.default.join(dbDir, 'src', 'schemas.ts'), createZodSchemas());
|
|
59
|
+
// Create .env.example
|
|
60
|
+
await fs_extra_1.default.writeFile(path_1.default.join(dbDir, '.env.example'), 'DATABASE_URL="postgresql://user:password@localhost:5432/mydb"\n');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create Prisma package.json
|
|
64
|
+
*/
|
|
65
|
+
function createPrismaPackageJson(data) {
|
|
66
|
+
return {
|
|
67
|
+
name: `@${data.workspaceScope}/database`,
|
|
68
|
+
version: data.version,
|
|
69
|
+
main: 'src/index.ts',
|
|
70
|
+
types: 'src/index.ts',
|
|
71
|
+
exports: {
|
|
72
|
+
'.': './src/index.ts',
|
|
73
|
+
'./client': './src/index.ts',
|
|
74
|
+
'./schemas': './src/schemas.ts',
|
|
75
|
+
},
|
|
76
|
+
scripts: {
|
|
77
|
+
'build': 'tsc',
|
|
78
|
+
'db:generate': 'prisma generate',
|
|
79
|
+
'db:push': 'prisma db push',
|
|
80
|
+
'db:migrate': 'prisma migrate dev',
|
|
81
|
+
'db:studio': 'prisma studio',
|
|
82
|
+
'db:seed': 'tsx prisma/seed.ts',
|
|
83
|
+
},
|
|
84
|
+
dependencies: {
|
|
85
|
+
...constants_1.DEPENDENCIES.prisma,
|
|
86
|
+
'zod': '^3.22.0',
|
|
87
|
+
},
|
|
88
|
+
devDependencies: {
|
|
89
|
+
...constants_1.DEPENDENCIES.prismaDev,
|
|
90
|
+
'tsx': '^4.7.0',
|
|
91
|
+
'typescript': '^5.0.0',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create Prisma tsconfig.json
|
|
97
|
+
*/
|
|
98
|
+
function createPrismaTsConfig() {
|
|
99
|
+
return {
|
|
100
|
+
compilerOptions: {
|
|
101
|
+
target: 'ES2020',
|
|
102
|
+
module: 'commonjs',
|
|
103
|
+
moduleResolution: 'node',
|
|
104
|
+
esModuleInterop: true,
|
|
105
|
+
strict: true,
|
|
106
|
+
skipLibCheck: true,
|
|
107
|
+
outDir: './dist',
|
|
108
|
+
rootDir: './src',
|
|
109
|
+
declaration: true,
|
|
110
|
+
},
|
|
111
|
+
include: ['src/**/*'],
|
|
112
|
+
exclude: ['node_modules', 'dist'],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create Prisma schema
|
|
117
|
+
*/
|
|
118
|
+
function createPrismaSchema() {
|
|
119
|
+
return `// This is your Prisma schema file
|
|
120
|
+
// Learn more: https://pris.ly/d/prisma-schema
|
|
121
|
+
|
|
122
|
+
generator client {
|
|
123
|
+
provider = "prisma-client-js"
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
datasource db {
|
|
127
|
+
provider = "postgresql"
|
|
128
|
+
url = env("DATABASE_URL")
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Example models - customize for your app
|
|
132
|
+
|
|
133
|
+
model User {
|
|
134
|
+
id String @id @default(cuid())
|
|
135
|
+
email String @unique
|
|
136
|
+
name String?
|
|
137
|
+
avatar String?
|
|
138
|
+
bio String?
|
|
139
|
+
posts Post[]
|
|
140
|
+
settings UserSettings?
|
|
141
|
+
createdAt DateTime @default(now())
|
|
142
|
+
updatedAt DateTime @updatedAt
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
model Post {
|
|
146
|
+
id String @id @default(cuid())
|
|
147
|
+
title String
|
|
148
|
+
content String?
|
|
149
|
+
published Boolean @default(false)
|
|
150
|
+
author User @relation(fields: [authorId], references: [id])
|
|
151
|
+
authorId String
|
|
152
|
+
comments Comment[]
|
|
153
|
+
createdAt DateTime @default(now())
|
|
154
|
+
updatedAt DateTime @updatedAt
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
model Comment {
|
|
158
|
+
id String @id @default(cuid())
|
|
159
|
+
content String
|
|
160
|
+
post Post @relation(fields: [postId], references: [id])
|
|
161
|
+
postId String
|
|
162
|
+
createdAt DateTime @default(now())
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
model UserSettings {
|
|
166
|
+
id String @id @default(cuid())
|
|
167
|
+
user User @relation(fields: [userId], references: [id])
|
|
168
|
+
userId String @unique
|
|
169
|
+
theme String @default("light")
|
|
170
|
+
notifications Boolean @default(true)
|
|
171
|
+
}
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create Prisma index.ts
|
|
176
|
+
*/
|
|
177
|
+
function createPrismaIndex() {
|
|
178
|
+
return `/**
|
|
179
|
+
* Database package exports
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
import { PrismaClient } from '@prisma/client';
|
|
183
|
+
|
|
184
|
+
// Prevent multiple instances of Prisma Client in development
|
|
185
|
+
declare global {
|
|
186
|
+
var __prisma: PrismaClient | undefined;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export const prisma = globalThis.__prisma || new PrismaClient();
|
|
190
|
+
|
|
191
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
192
|
+
globalThis.__prisma = prisma;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export { PrismaClient };
|
|
196
|
+
export * from '@prisma/client';
|
|
197
|
+
`;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Create Zod schemas
|
|
201
|
+
*/
|
|
202
|
+
function createZodSchemas() {
|
|
203
|
+
return `/**
|
|
204
|
+
* Zod validation schemas for database models
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
import { z } from 'zod';
|
|
208
|
+
|
|
209
|
+
// User schemas
|
|
210
|
+
export const createUserSchema = z.object({
|
|
211
|
+
email: z.string().email(),
|
|
212
|
+
name: z.string().min(1).optional(),
|
|
213
|
+
avatar: z.string().url().optional(),
|
|
214
|
+
bio: z.string().max(500).optional(),
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
export const updateUserSchema = createUserSchema.partial();
|
|
218
|
+
|
|
219
|
+
// Post schemas
|
|
220
|
+
export const createPostSchema = z.object({
|
|
221
|
+
title: z.string().min(1).max(200),
|
|
222
|
+
content: z.string().optional(),
|
|
223
|
+
published: z.boolean().default(false),
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
export const updatePostSchema = createPostSchema.partial();
|
|
227
|
+
|
|
228
|
+
// Comment schemas
|
|
229
|
+
export const createCommentSchema = z.object({
|
|
230
|
+
content: z.string().min(1).max(1000),
|
|
231
|
+
postId: z.string(),
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// UserSettings schemas
|
|
235
|
+
export const updateUserSettingsSchema = z.object({
|
|
236
|
+
theme: z.enum(['light', 'dark']).optional(),
|
|
237
|
+
notifications: z.boolean().optional(),
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Export types
|
|
241
|
+
export type CreateUser = z.infer<typeof createUserSchema>;
|
|
242
|
+
export type UpdateUser = z.infer<typeof updateUserSchema>;
|
|
243
|
+
export type CreatePost = z.infer<typeof createPostSchema>;
|
|
244
|
+
export type UpdatePost = z.infer<typeof updatePostSchema>;
|
|
245
|
+
export type CreateComment = z.infer<typeof createCommentSchema>;
|
|
246
|
+
export type UpdateUserSettings = z.infer<typeof updateUserSettingsSchema>;
|
|
247
|
+
`;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=prisma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../../src/generators/extensions/prisma.ts"],"names":[],"mappings":"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"}
|