@idealyst/cli 1.2.32 → 1.2.33
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/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/dist/generators/core/shared.js +382 -3
- package/dist/generators/core/shared.js.map +1 -1
- package/dist/generators/extensions/graphql.js +112 -26
- package/dist/generators/extensions/graphql.js.map +1 -1
- package/dist/generators/extensions/prisma.js +105 -16
- package/dist/generators/extensions/prisma.js.map +1 -1
- package/dist/generators/extensions/trpc.js +137 -41
- package/dist/generators/extensions/trpc.js.map +1 -1
- package/dist/templates/core/api/src-graphql/builder.ts +25 -0
- package/dist/templates/core/api/src-graphql/schema.ts +217 -0
- package/dist/templates/core/api/src-trpc/context.ts +15 -0
- package/dist/templates/core/api/src-trpc/index.ts +6 -0
- package/dist/templates/core/api/src-trpc/lib/database.ts +4 -0
- package/dist/templates/core/api/src-trpc/router/index.ts +187 -0
- package/dist/templates/core/api/src-trpc/server.ts +63 -0
- package/dist/templates/core/api/src-trpc/trpc.ts +20 -0
- package/dist/templates/core/database/schema.prisma +22 -0
- package/dist/templates/core/shared/src-components/App.tsx +51 -0
- package/dist/templates/core/shared/src-graphql/client.ts +70 -0
- package/dist/templates/core/shared/{src/navigation → src-navigation}/AppRouter.tsx +34 -0
- package/dist/templates/core/shared/src-screens-graphql/GraphQLDemoScreen.tsx +354 -0
- package/dist/templates/core/shared/src-screens-trpc/TRPCDemoScreen.tsx +432 -0
- package/dist/templates/core/shared/src-trpc/client.ts +44 -0
- package/dist/types/constants.d.ts +9 -5
- package/package.json +1 -1
- package/dist/templates/core/shared/src/components/App.tsx +0 -13
- package/dist/templates/core/shared/src/screens/index.ts +0 -4
- /package/dist/templates/core/shared/{src/components → src-components}/index.ts +0 -0
- /package/dist/templates/core/shared/{src/layouts → src-layouts}/AppLayout.tsx +0 -0
- /package/dist/templates/core/shared/{src/navigation → src-navigation}/index.ts +0 -0
- /package/dist/templates/core/shared/{src/screens → src-screens}/ExploreScreen.tsx +0 -0
- /package/dist/templates/core/shared/{src/screens → src-screens}/HomeScreen.tsx +0 -0
- /package/dist/templates/core/shared/{src/screens → src-screens}/ProfileScreen.tsx +0 -0
- /package/dist/templates/core/shared/{src/screens → src-screens}/SettingsScreen.tsx +0 -0
package/dist/constants.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.DEPENDENCIES = exports.IGNORE_PATTERNS = exports.TEMPLATE_EXTENSIONS = e
|
|
|
7
7
|
// Package version - updated during build
|
|
8
8
|
exports.VERSION = '0.1.0';
|
|
9
9
|
// Current Idealyst framework version to use in templates
|
|
10
|
-
exports.IDEALYST_VERSION = '1.2.
|
|
10
|
+
exports.IDEALYST_VERSION = '1.2.33';
|
|
11
11
|
// React Native version
|
|
12
12
|
exports.REACT_NATIVE_VERSION = '0.83.0';
|
|
13
13
|
// React version
|
|
@@ -102,12 +102,16 @@ exports.DEPENDENCIES = {
|
|
|
102
102
|
},
|
|
103
103
|
graphql: {
|
|
104
104
|
'@apollo/client': '^3.11.0',
|
|
105
|
+
'@tanstack/react-query': '^5.62.0',
|
|
105
106
|
'graphql': '^16.9.0',
|
|
106
107
|
},
|
|
107
108
|
graphqlServer: {
|
|
108
109
|
'@pothos/core': '^4.3.0',
|
|
109
110
|
'graphql-yoga': '^5.10.0',
|
|
110
111
|
},
|
|
112
|
+
graphqlServerPrisma: {
|
|
113
|
+
'@pothos/plugin-prisma': '^4.3.0',
|
|
114
|
+
},
|
|
111
115
|
prisma: {
|
|
112
116
|
'@prisma/client': '^5.19.0',
|
|
113
117
|
},
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,11 @@ async function generateSharedPackage(projectPath, data) {
|
|
|
24
24
|
// Try to use template src/ files first, or generate programmatically
|
|
25
25
|
const templateSrcPath = (0, copier_1.getTemplatePath)('core', 'shared', 'src');
|
|
26
26
|
if (await (0, copier_1.templateHasContent)(templateSrcPath)) {
|
|
27
|
-
// Copy src/ from templates (showcase-based)
|
|
27
|
+
// Copy base src/ from templates (showcase-based, excludes API-dependent files)
|
|
28
28
|
await (0, copier_1.copyTemplateDirectory)(templateSrcPath, path_1.default.join(sharedDir, 'src'), data);
|
|
29
29
|
logger_1.logger.dim('Using showcase-based source files');
|
|
30
|
+
// Copy API-dependent files based on user selection
|
|
31
|
+
await copyApiDependentFiles(sharedDir, data);
|
|
30
32
|
}
|
|
31
33
|
else {
|
|
32
34
|
// Generate src/ programmatically (fallback)
|
|
@@ -34,6 +36,383 @@ async function generateSharedPackage(projectPath, data) {
|
|
|
34
36
|
}
|
|
35
37
|
return { success: true };
|
|
36
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Copy API-dependent files (trpc/, graphql/, components/, screens/, navigation/, layouts/) based on user selection
|
|
41
|
+
*/
|
|
42
|
+
async function copyApiDependentFiles(sharedDir, data) {
|
|
43
|
+
const srcDir = path_1.default.join(sharedDir, 'src');
|
|
44
|
+
// Copy tRPC client if enabled
|
|
45
|
+
if (data.hasTrpc) {
|
|
46
|
+
const trpcTemplatePath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-trpc');
|
|
47
|
+
if (await (0, copier_1.templateHasContent)(trpcTemplatePath)) {
|
|
48
|
+
await (0, copier_1.copyTemplateDirectory)(trpcTemplatePath, path_1.default.join(srcDir, 'trpc'), data);
|
|
49
|
+
logger_1.logger.dim('Added tRPC client');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Copy GraphQL client if enabled
|
|
53
|
+
if (data.hasGraphql) {
|
|
54
|
+
const graphqlTemplatePath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-graphql');
|
|
55
|
+
if (await (0, copier_1.templateHasContent)(graphqlTemplatePath)) {
|
|
56
|
+
await (0, copier_1.copyTemplateDirectory)(graphqlTemplatePath, path_1.default.join(srcDir, 'graphql'), data);
|
|
57
|
+
logger_1.logger.dim('Added GraphQL client');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Copy layouts (AppLayout.tsx with tab/stack layouts)
|
|
61
|
+
const layoutsTemplatePath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-layouts');
|
|
62
|
+
if (await (0, copier_1.templateHasContent)(layoutsTemplatePath)) {
|
|
63
|
+
await (0, copier_1.copyTemplateDirectory)(layoutsTemplatePath, path_1.default.join(srcDir, 'layouts'), data);
|
|
64
|
+
}
|
|
65
|
+
// Copy base screens and conditionally add API demo screens
|
|
66
|
+
await copyScreensWithApiDemos(srcDir, data);
|
|
67
|
+
// Generate navigation/AppRouter.tsx based on API selection
|
|
68
|
+
await generateNavigation(srcDir, data);
|
|
69
|
+
// Generate components/App.tsx and components/index.ts based on API selection
|
|
70
|
+
await generateAppComponent(srcDir, data);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Copy screens and conditionally add API demo screens
|
|
74
|
+
*/
|
|
75
|
+
async function copyScreensWithApiDemos(srcDir, data) {
|
|
76
|
+
const screensDir = path_1.default.join(srcDir, 'screens');
|
|
77
|
+
await fs_extra_1.default.ensureDir(screensDir);
|
|
78
|
+
// Copy base screens (Home, Explore, Profile, Settings)
|
|
79
|
+
const baseScreensPath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-screens');
|
|
80
|
+
if (await (0, copier_1.templateHasContent)(baseScreensPath)) {
|
|
81
|
+
await (0, copier_1.copyTemplateDirectory)(baseScreensPath, screensDir, data);
|
|
82
|
+
}
|
|
83
|
+
// Copy tRPC demo screen if enabled
|
|
84
|
+
if (data.hasTrpc) {
|
|
85
|
+
const trpcScreenPath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-screens-trpc');
|
|
86
|
+
if (await (0, copier_1.templateHasContent)(trpcScreenPath)) {
|
|
87
|
+
await (0, copier_1.copyTemplateDirectory)(trpcScreenPath, screensDir, data);
|
|
88
|
+
// Modify HAS_DATABASE constant based on Prisma availability
|
|
89
|
+
const trpcDemoPath = path_1.default.join(screensDir, 'TRPCDemoScreen.tsx');
|
|
90
|
+
if (await fs_extra_1.default.pathExists(trpcDemoPath)) {
|
|
91
|
+
let content = await fs_extra_1.default.readFile(trpcDemoPath, 'utf8');
|
|
92
|
+
if (!data.hasPrisma) {
|
|
93
|
+
// Replace HAS_DATABASE = true with HAS_DATABASE = false
|
|
94
|
+
content = content.replace(/const HAS_DATABASE = true;/, 'const HAS_DATABASE = false;');
|
|
95
|
+
await fs_extra_1.default.writeFile(trpcDemoPath, content);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Copy GraphQL demo screen ONLY if both GraphQL AND Prisma are enabled
|
|
101
|
+
// (GraphQL demo requires database for meaningful operations)
|
|
102
|
+
if (data.hasGraphql && data.hasPrisma) {
|
|
103
|
+
const graphqlScreenPath = (0, copier_1.getTemplatePath)('core', 'shared', 'src-screens-graphql');
|
|
104
|
+
if (await (0, copier_1.templateHasContent)(graphqlScreenPath)) {
|
|
105
|
+
await (0, copier_1.copyTemplateDirectory)(graphqlScreenPath, screensDir, data);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Generate screens/index.ts based on what's enabled
|
|
109
|
+
await generateScreensIndex(screensDir, data);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate screens/index.ts based on API selection
|
|
113
|
+
*/
|
|
114
|
+
async function generateScreensIndex(screensDir, data) {
|
|
115
|
+
const exports = [
|
|
116
|
+
`export { HomeScreen } from './HomeScreen';`,
|
|
117
|
+
`export { ExploreScreen } from './ExploreScreen';`,
|
|
118
|
+
`export { ProfileScreen } from './ProfileScreen';`,
|
|
119
|
+
`export { SettingsScreen } from './SettingsScreen';`,
|
|
120
|
+
];
|
|
121
|
+
if (data.hasTrpc) {
|
|
122
|
+
exports.push(`export { TRPCDemoScreen } from './TRPCDemoScreen';`);
|
|
123
|
+
}
|
|
124
|
+
// GraphQL demo only available when both GraphQL AND Prisma are enabled
|
|
125
|
+
if (data.hasGraphql && data.hasPrisma) {
|
|
126
|
+
exports.push(`export { GraphQLDemoScreen } from './GraphQLDemoScreen';`);
|
|
127
|
+
}
|
|
128
|
+
await fs_extra_1.default.writeFile(path_1.default.join(screensDir, 'index.ts'), exports.join('\n') + '\n');
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Generate navigation/AppRouter.tsx based on API selection
|
|
132
|
+
*/
|
|
133
|
+
async function generateNavigation(srcDir, data) {
|
|
134
|
+
const navigationDir = path_1.default.join(srcDir, 'navigation');
|
|
135
|
+
await fs_extra_1.default.ensureDir(navigationDir);
|
|
136
|
+
// Generate AppRouter.tsx
|
|
137
|
+
const routerContent = createAppRouter(data);
|
|
138
|
+
await fs_extra_1.default.writeFile(path_1.default.join(navigationDir, 'AppRouter.tsx'), routerContent);
|
|
139
|
+
// Generate navigation/index.ts
|
|
140
|
+
await fs_extra_1.default.writeFile(path_1.default.join(navigationDir, 'index.ts'), `export { AppRouter } from './AppRouter';\n`);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create AppRouter based on API selection
|
|
144
|
+
*/
|
|
145
|
+
function createAppRouter(data) {
|
|
146
|
+
const hasTrpc = data.hasTrpc;
|
|
147
|
+
const hasGraphql = data.hasGraphql;
|
|
148
|
+
// Build screen imports
|
|
149
|
+
const screenImports = [
|
|
150
|
+
`import { HomeScreen } from '../screens/HomeScreen';`,
|
|
151
|
+
`import { ExploreScreen } from '../screens/ExploreScreen';`,
|
|
152
|
+
`import { ProfileScreen } from '../screens/ProfileScreen';`,
|
|
153
|
+
`import { SettingsScreen } from '../screens/SettingsScreen';`,
|
|
154
|
+
];
|
|
155
|
+
if (hasTrpc) {
|
|
156
|
+
screenImports.push(`import { TRPCDemoScreen } from '../screens/TRPCDemoScreen';`);
|
|
157
|
+
}
|
|
158
|
+
// GraphQL demo only available when both GraphQL AND Prisma are enabled
|
|
159
|
+
const hasGraphqlDemo = hasGraphql && data.hasPrisma;
|
|
160
|
+
if (hasGraphqlDemo) {
|
|
161
|
+
screenImports.push(`import { GraphQLDemoScreen } from '../screens/GraphQLDemoScreen';`);
|
|
162
|
+
}
|
|
163
|
+
// Build tab routes
|
|
164
|
+
const tabRoutes = [
|
|
165
|
+
` {
|
|
166
|
+
path: '',
|
|
167
|
+
type: 'screen',
|
|
168
|
+
component: HomeScreen,
|
|
169
|
+
options: {
|
|
170
|
+
title: 'Home',
|
|
171
|
+
tabBarLabel: 'Home',
|
|
172
|
+
tabBarIcon: ({ focused, color, size }) => (
|
|
173
|
+
<Icon
|
|
174
|
+
name={focused ? 'home' : 'home-outline'}
|
|
175
|
+
color={color}
|
|
176
|
+
size={size}
|
|
177
|
+
/>
|
|
178
|
+
),
|
|
179
|
+
} as TabBarScreenOptions,
|
|
180
|
+
}`,
|
|
181
|
+
` {
|
|
182
|
+
path: 'explore',
|
|
183
|
+
type: 'screen',
|
|
184
|
+
component: ExploreScreen,
|
|
185
|
+
options: {
|
|
186
|
+
title: 'Explore',
|
|
187
|
+
tabBarLabel: 'Explore',
|
|
188
|
+
tabBarIcon: ({ focused, color, size }) => (
|
|
189
|
+
<Icon
|
|
190
|
+
name={focused ? 'compass' : 'compass-outline'}
|
|
191
|
+
color={color}
|
|
192
|
+
size={size}
|
|
193
|
+
/>
|
|
194
|
+
),
|
|
195
|
+
} as TabBarScreenOptions,
|
|
196
|
+
}`,
|
|
197
|
+
` {
|
|
198
|
+
path: 'profile',
|
|
199
|
+
type: 'screen',
|
|
200
|
+
component: ProfileScreen,
|
|
201
|
+
options: {
|
|
202
|
+
title: 'Profile',
|
|
203
|
+
tabBarLabel: 'Profile',
|
|
204
|
+
tabBarIcon: ({ focused, color, size }) => (
|
|
205
|
+
<Icon
|
|
206
|
+
name={focused ? 'account' : 'account-outline'}
|
|
207
|
+
color={color}
|
|
208
|
+
size={size}
|
|
209
|
+
/>
|
|
210
|
+
),
|
|
211
|
+
} as TabBarScreenOptions,
|
|
212
|
+
}`,
|
|
213
|
+
];
|
|
214
|
+
if (hasTrpc) {
|
|
215
|
+
tabRoutes.push(` {
|
|
216
|
+
path: 'trpc',
|
|
217
|
+
type: 'screen',
|
|
218
|
+
component: TRPCDemoScreen,
|
|
219
|
+
options: {
|
|
220
|
+
title: 'tRPC',
|
|
221
|
+
tabBarLabel: 'tRPC',
|
|
222
|
+
tabBarIcon: ({ focused, color, size }) => (
|
|
223
|
+
<Icon
|
|
224
|
+
name="api"
|
|
225
|
+
color={color}
|
|
226
|
+
size={size}
|
|
227
|
+
/>
|
|
228
|
+
),
|
|
229
|
+
} as TabBarScreenOptions,
|
|
230
|
+
}`);
|
|
231
|
+
}
|
|
232
|
+
if (hasGraphqlDemo) {
|
|
233
|
+
tabRoutes.push(` {
|
|
234
|
+
path: 'graphql',
|
|
235
|
+
type: 'screen',
|
|
236
|
+
component: GraphQLDemoScreen,
|
|
237
|
+
options: {
|
|
238
|
+
title: 'GraphQL',
|
|
239
|
+
tabBarLabel: 'GraphQL',
|
|
240
|
+
tabBarIcon: ({ focused, color, size }) => (
|
|
241
|
+
<Icon
|
|
242
|
+
name="graphql"
|
|
243
|
+
color={color}
|
|
244
|
+
size={size}
|
|
245
|
+
/>
|
|
246
|
+
),
|
|
247
|
+
} as TabBarScreenOptions,
|
|
248
|
+
}`);
|
|
249
|
+
}
|
|
250
|
+
return `import React from 'react';
|
|
251
|
+
import { Icon } from '@idealyst/components';
|
|
252
|
+
import type { NavigatorParam, TabBarScreenOptions } from '@idealyst/navigation';
|
|
253
|
+
|
|
254
|
+
// Screens
|
|
255
|
+
${screenImports.join('\n')}
|
|
256
|
+
|
|
257
|
+
// Custom Layouts
|
|
258
|
+
import { AppTabLayout, AppStackLayout } from '../layouts/AppLayout';
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Tab Navigator - Contains main tabs
|
|
262
|
+
*/
|
|
263
|
+
const MainTabNavigator: NavigatorParam = {
|
|
264
|
+
path: '',
|
|
265
|
+
type: 'navigator',
|
|
266
|
+
layout: 'tab',
|
|
267
|
+
layoutComponent: AppTabLayout,
|
|
268
|
+
routes: [
|
|
269
|
+
${tabRoutes.join(',\n')},
|
|
270
|
+
],
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Root Stack Navigator - Wraps tabs and adds Settings screen
|
|
275
|
+
*/
|
|
276
|
+
export const AppRouter: NavigatorParam = {
|
|
277
|
+
path: '/',
|
|
278
|
+
type: 'navigator',
|
|
279
|
+
layout: 'stack',
|
|
280
|
+
layoutComponent: AppStackLayout,
|
|
281
|
+
routes: [
|
|
282
|
+
MainTabNavigator,
|
|
283
|
+
{
|
|
284
|
+
path: 'settings',
|
|
285
|
+
type: 'screen',
|
|
286
|
+
component: SettingsScreen,
|
|
287
|
+
options: {
|
|
288
|
+
title: 'Settings',
|
|
289
|
+
headerShown: true,
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
],
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
export default AppRouter;
|
|
296
|
+
`;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Generate App.tsx and components/index.ts based on API selection
|
|
300
|
+
*/
|
|
301
|
+
async function generateAppComponent(srcDir, data) {
|
|
302
|
+
const componentsDir = path_1.default.join(srcDir, 'components');
|
|
303
|
+
await fs_extra_1.default.ensureDir(componentsDir);
|
|
304
|
+
// Generate App.tsx based on what's enabled
|
|
305
|
+
const appContent = createTemplateAppComponent(data);
|
|
306
|
+
await fs_extra_1.default.writeFile(path_1.default.join(componentsDir, 'App.tsx'), appContent);
|
|
307
|
+
// Generate components/index.ts
|
|
308
|
+
await fs_extra_1.default.writeFile(path_1.default.join(componentsDir, 'index.ts'), `export { App, default } from './App';\n`);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Create App component based on API selection (for showcase templates)
|
|
312
|
+
*/
|
|
313
|
+
function createTemplateAppComponent(data) {
|
|
314
|
+
const hasTrpc = data.hasTrpc;
|
|
315
|
+
const hasGraphql = data.hasGraphql;
|
|
316
|
+
const hasApi = data.hasApi;
|
|
317
|
+
// No API - simple app
|
|
318
|
+
if (!hasApi || (!hasTrpc && !hasGraphql)) {
|
|
319
|
+
return `import React from 'react';
|
|
320
|
+
import { NavigatorProvider } from '@idealyst/navigation';
|
|
321
|
+
import { AppRouter } from '../navigation/AppRouter';
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Main App component for ${data.appDisplayName}
|
|
325
|
+
*/
|
|
326
|
+
export const App: React.FC = () => {
|
|
327
|
+
return <NavigatorProvider route={AppRouter} />;
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
export default App;
|
|
331
|
+
`;
|
|
332
|
+
}
|
|
333
|
+
// Build imports
|
|
334
|
+
const imports = [
|
|
335
|
+
`import React, { useState } from 'react';`,
|
|
336
|
+
`import { NavigatorProvider } from '@idealyst/navigation';`,
|
|
337
|
+
];
|
|
338
|
+
if (hasTrpc || hasGraphql) {
|
|
339
|
+
imports.push(`import { QueryClient, QueryClientProvider } from '@tanstack/react-query';`);
|
|
340
|
+
}
|
|
341
|
+
imports.push(`import { AppRouter } from '../navigation/AppRouter';`);
|
|
342
|
+
if (hasTrpc) {
|
|
343
|
+
imports.push(`import { trpc, createTRPCClient } from '../trpc/client';`);
|
|
344
|
+
}
|
|
345
|
+
if (hasGraphql) {
|
|
346
|
+
imports.push(`import { ApolloProvider, createApolloClient } from '../graphql/client';`);
|
|
347
|
+
}
|
|
348
|
+
// Build component body
|
|
349
|
+
const stateSetup = [];
|
|
350
|
+
if (hasTrpc || hasGraphql) {
|
|
351
|
+
stateSetup.push(` // Create React Query client
|
|
352
|
+
const [queryClient] = useState(() => new QueryClient({
|
|
353
|
+
defaultOptions: {
|
|
354
|
+
queries: {
|
|
355
|
+
retry: 1,
|
|
356
|
+
staleTime: 5000,
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
}));`);
|
|
360
|
+
}
|
|
361
|
+
if (hasTrpc) {
|
|
362
|
+
stateSetup.push(`
|
|
363
|
+
// Create tRPC client
|
|
364
|
+
const [trpcClient] = useState(() =>
|
|
365
|
+
createTRPCClient({
|
|
366
|
+
apiUrl: \`\${API_URL}/trpc\`,
|
|
367
|
+
})
|
|
368
|
+
);`);
|
|
369
|
+
}
|
|
370
|
+
if (hasGraphql) {
|
|
371
|
+
stateSetup.push(`
|
|
372
|
+
// Create Apollo client
|
|
373
|
+
const [apolloClient] = useState(() =>
|
|
374
|
+
createApolloClient({
|
|
375
|
+
graphqlUrl: \`\${API_URL}/graphql\`,
|
|
376
|
+
})
|
|
377
|
+
);`);
|
|
378
|
+
}
|
|
379
|
+
// Build JSX tree
|
|
380
|
+
let jsx = `<NavigatorProvider route={AppRouter} />`;
|
|
381
|
+
if (hasGraphql) {
|
|
382
|
+
jsx = `<ApolloProvider client={apolloClient}>
|
|
383
|
+
${jsx}
|
|
384
|
+
</ApolloProvider>`;
|
|
385
|
+
}
|
|
386
|
+
if (hasTrpc || hasGraphql) {
|
|
387
|
+
jsx = `<QueryClientProvider client={queryClient}>
|
|
388
|
+
${jsx}
|
|
389
|
+
</QueryClientProvider>`;
|
|
390
|
+
}
|
|
391
|
+
if (hasTrpc) {
|
|
392
|
+
jsx = `<trpc.Provider client={trpcClient} queryClient={queryClient}>
|
|
393
|
+
${jsx}
|
|
394
|
+
</trpc.Provider>`;
|
|
395
|
+
}
|
|
396
|
+
return `${imports.join('\n')}
|
|
397
|
+
|
|
398
|
+
// API configuration
|
|
399
|
+
const API_URL = 'http://localhost:3000';
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Main App component for ${data.appDisplayName}
|
|
403
|
+
* Sets up navigation${hasTrpc ? ' with tRPC' : ''}${hasGraphql ? (hasTrpc ? ' and Apollo' : ' with Apollo') : ''} providers
|
|
404
|
+
*/
|
|
405
|
+
export const App: React.FC = () => {
|
|
406
|
+
${stateSetup.join('\n')}
|
|
407
|
+
|
|
408
|
+
return (
|
|
409
|
+
${jsx}
|
|
410
|
+
);
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
export default App;
|
|
414
|
+
`;
|
|
415
|
+
}
|
|
37
416
|
/**
|
|
38
417
|
* Generate shared package config files (package.json, tsconfig)
|
|
39
418
|
*/
|
|
@@ -300,9 +679,9 @@ export default function Home() {
|
|
|
300
679
|
`;
|
|
301
680
|
}
|
|
302
681
|
/**
|
|
303
|
-
* Create AppRouter - shared navigation configuration
|
|
682
|
+
* Create AppRouter - shared navigation configuration (fallback when no templates)
|
|
304
683
|
*/
|
|
305
|
-
function
|
|
684
|
+
function createFallbackAppRouter(data) {
|
|
306
685
|
return `/**
|
|
307
686
|
* Application navigation router
|
|
308
687
|
* Shared between web and mobile platforms
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/generators/core/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/generators/core/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,10 @@ async function addGraphqlToApi(projectPath, data) {
|
|
|
41
41
|
await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'resolvers', 'index.ts'), createExampleResolvers(data));
|
|
42
42
|
// Add dependencies
|
|
43
43
|
await (0, merger_1.addDependencies)(path_1.default.join(apiDir, 'package.json'), constants_1.DEPENDENCIES.graphqlServer);
|
|
44
|
+
// Add Prisma plugin if Prisma is enabled
|
|
45
|
+
if (data.hasPrisma) {
|
|
46
|
+
await (0, merger_1.addDependencies)(path_1.default.join(apiDir, 'package.json'), constants_1.DEPENDENCIES.graphqlServerPrisma);
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
50
|
* Add GraphQL client to web package
|
|
@@ -84,32 +88,46 @@ export const schema = builder.toSchema();
|
|
|
84
88
|
* Create Pothos schema builder
|
|
85
89
|
*/
|
|
86
90
|
function createPothosBuilder(data) {
|
|
87
|
-
let imports = `import SchemaBuilder from '@pothos/core';`;
|
|
88
|
-
let builderConfig = '';
|
|
89
91
|
if (data.hasPrisma) {
|
|
90
|
-
|
|
92
|
+
// With Prisma: use @pothos/plugin-prisma for type-safe GraphQL from models
|
|
93
|
+
return `/**
|
|
94
|
+
* Pothos schema builder with Prisma integration
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
import SchemaBuilder from '@pothos/core';
|
|
91
98
|
import PrismaPlugin from '@pothos/plugin-prisma';
|
|
92
|
-
import type PrismaTypes from '
|
|
93
|
-
import { prisma } from '@${data.workspaceScope}/database'
|
|
94
|
-
|
|
99
|
+
import type PrismaTypes from '@${data.workspaceScope}/database/pothos';
|
|
100
|
+
import { prisma, Prisma } from '@${data.workspaceScope}/database';
|
|
101
|
+
|
|
102
|
+
// Export prisma for use in resolvers
|
|
103
|
+
export { prisma };
|
|
104
|
+
|
|
105
|
+
export const builder = new SchemaBuilder<{
|
|
106
|
+
PrismaTypes: PrismaTypes;
|
|
107
|
+
}>({
|
|
95
108
|
plugins: [PrismaPlugin],
|
|
96
109
|
prisma: {
|
|
97
110
|
client: prisma,
|
|
98
|
-
|
|
111
|
+
// Required for the Prisma plugin - provides Prisma's data model metadata
|
|
112
|
+
dmmf: Prisma.dmmf,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Initialize Query and Mutation types
|
|
117
|
+
builder.queryType({});
|
|
118
|
+
builder.mutationType({});
|
|
119
|
+
`;
|
|
99
120
|
}
|
|
121
|
+
// Without Prisma: simple builder
|
|
100
122
|
return `/**
|
|
101
123
|
* Pothos schema builder
|
|
102
124
|
*/
|
|
103
125
|
|
|
104
|
-
|
|
126
|
+
import SchemaBuilder from '@pothos/core';
|
|
105
127
|
|
|
106
128
|
export const builder = new SchemaBuilder<{
|
|
107
|
-
Context: {
|
|
108
|
-
|
|
109
|
-
};${data.hasPrisma ? `
|
|
110
|
-
PrismaTypes: PrismaTypes;` : ''}
|
|
111
|
-
}>({${builderConfig}
|
|
112
|
-
});
|
|
129
|
+
Context: {};
|
|
130
|
+
}>({});
|
|
113
131
|
|
|
114
132
|
// Initialize Query and Mutation types
|
|
115
133
|
builder.queryType({});
|
|
@@ -120,11 +138,89 @@ builder.mutationType({});
|
|
|
120
138
|
* Create example resolvers
|
|
121
139
|
*/
|
|
122
140
|
function createExampleResolvers(data) {
|
|
141
|
+
const prismaResolvers = data.hasPrisma ? `
|
|
142
|
+
// Item type - using Prisma plugin for type-safe GraphQL from Prisma models
|
|
143
|
+
builder.prismaObject('Item', {
|
|
144
|
+
fields: (t) => ({
|
|
145
|
+
id: t.exposeID('id'),
|
|
146
|
+
title: t.exposeString('title'),
|
|
147
|
+
description: t.exposeString('description', { nullable: true }),
|
|
148
|
+
completed: t.exposeBoolean('completed'),
|
|
149
|
+
createdAt: t.field({
|
|
150
|
+
type: 'String',
|
|
151
|
+
resolve: (item) => item.createdAt.toISOString(),
|
|
152
|
+
}),
|
|
153
|
+
}),
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Items query
|
|
157
|
+
builder.queryField('items', (t) =>
|
|
158
|
+
t.prismaField({
|
|
159
|
+
type: ['Item'],
|
|
160
|
+
resolve: async (query) => {
|
|
161
|
+
return await prisma.item.findMany({
|
|
162
|
+
...query,
|
|
163
|
+
orderBy: { createdAt: 'desc' },
|
|
164
|
+
});
|
|
165
|
+
},
|
|
166
|
+
})
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
// Create item mutation
|
|
170
|
+
builder.mutationField('createItem', (t) =>
|
|
171
|
+
t.prismaField({
|
|
172
|
+
type: 'Item',
|
|
173
|
+
args: {
|
|
174
|
+
title: t.arg.string({ required: true }),
|
|
175
|
+
description: t.arg.string(),
|
|
176
|
+
},
|
|
177
|
+
resolve: async (query, _, { title, description }) => {
|
|
178
|
+
return await prisma.item.create({
|
|
179
|
+
...query,
|
|
180
|
+
data: { title, description },
|
|
181
|
+
});
|
|
182
|
+
},
|
|
183
|
+
})
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
// Toggle item mutation
|
|
187
|
+
builder.mutationField('toggleItem', (t) =>
|
|
188
|
+
t.prismaField({
|
|
189
|
+
type: 'Item',
|
|
190
|
+
args: {
|
|
191
|
+
id: t.arg.string({ required: true }),
|
|
192
|
+
},
|
|
193
|
+
resolve: async (query, _, { id }) => {
|
|
194
|
+
const item = await prisma.item.findUnique({ where: { id } });
|
|
195
|
+
if (!item) throw new Error('Item not found');
|
|
196
|
+
return await prisma.item.update({
|
|
197
|
+
...query,
|
|
198
|
+
where: { id },
|
|
199
|
+
data: { completed: !item.completed },
|
|
200
|
+
});
|
|
201
|
+
},
|
|
202
|
+
})
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
// Delete item mutation
|
|
206
|
+
builder.mutationField('deleteItem', (t) =>
|
|
207
|
+
t.field({
|
|
208
|
+
type: 'Boolean',
|
|
209
|
+
args: {
|
|
210
|
+
id: t.arg.string({ required: true }),
|
|
211
|
+
},
|
|
212
|
+
resolve: async (_, { id }) => {
|
|
213
|
+
await prisma.item.delete({ where: { id } });
|
|
214
|
+
return true;
|
|
215
|
+
},
|
|
216
|
+
})
|
|
217
|
+
);
|
|
218
|
+
` : '';
|
|
123
219
|
return `/**
|
|
124
220
|
* Example GraphQL resolvers
|
|
125
221
|
*/
|
|
126
222
|
|
|
127
|
-
import { builder } from '../builder';
|
|
223
|
+
import { builder${data.hasPrisma ? ', prisma' : ''} } from '../builder';
|
|
128
224
|
|
|
129
225
|
// Health check query
|
|
130
226
|
builder.queryField('health', (t) =>
|
|
@@ -155,17 +251,7 @@ builder.mutationField('echo', (t) =>
|
|
|
155
251
|
resolve: (_, { message }) => message,
|
|
156
252
|
})
|
|
157
253
|
);
|
|
158
|
-
${
|
|
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
|
-
` : ''}
|
|
254
|
+
${prismaResolvers}
|
|
169
255
|
`;
|
|
170
256
|
}
|
|
171
257
|
/**
|