@idealyst/cli 1.2.1 → 1.2.3
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 +9 -3
- package/dist/constants.js.map +1 -1
- package/dist/generators/core/mobile.js +34 -69
- package/dist/generators/core/mobile.js.map +1 -1
- package/dist/generators/core/shared.js +283 -16
- package/dist/generators/core/shared.js.map +1 -1
- package/dist/generators/core/web.js +29 -76
- package/dist/generators/core/web.js.map +1 -1
- package/dist/generators/extensions/devcontainer.js +90 -25
- package/dist/generators/extensions/devcontainer.js.map +1 -1
- package/dist/generators/index.js +23 -7
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/reactNative.js +111 -35
- package/dist/generators/reactNative.js.map +1 -1
- package/dist/generators/workspace.js +31 -0
- package/dist/generators/workspace.js.map +1 -1
- package/dist/types/constants.d.ts +9 -3
- package/dist/types/generators/core/mobile.d.ts +1 -0
- package/dist/types/types.d.ts +31 -0
- package/dist/types/utils/logger.d.ts +6 -0
- package/dist/types.js +34 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/shell.js +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/wizard/steps/devcontainerExtension.js +61 -8
- package/dist/wizard/steps/devcontainerExtension.js.map +1 -1
- package/dist/wizard/steps/summary.js +12 -0
- package/dist/wizard/steps/summary.js.map +1 -1
- package/package.json +1 -1
package/dist/constants.js
CHANGED
|
@@ -78,14 +78,20 @@ exports.DEPENDENCIES = {
|
|
|
78
78
|
mobile: {
|
|
79
79
|
'react': `^${exports.REACT_VERSION}`,
|
|
80
80
|
'react-native': `^${exports.REACT_NATIVE_VERSION}`,
|
|
81
|
-
'react-native-
|
|
81
|
+
'react-native-nitro-modules': '^0.32.0',
|
|
82
|
+
'react-native-unistyles': '^3.0.21',
|
|
82
83
|
'@react-navigation/native': '^7.0.0',
|
|
83
84
|
'@react-navigation/native-stack': '^7.0.0',
|
|
84
|
-
'react-
|
|
85
|
+
'@react-navigation/bottom-tabs': '^7.0.0',
|
|
86
|
+
'@react-navigation/drawer': '^7.0.0',
|
|
87
|
+
'react-native-safe-area-context': '^5.6.0',
|
|
85
88
|
'react-native-screens': '^4.4.0',
|
|
89
|
+
'react-native-svg': '^15.11.0',
|
|
86
90
|
'react-native-gesture-handler': '^2.20.0',
|
|
87
|
-
'react-native-reanimated': '^
|
|
91
|
+
'react-native-reanimated': '^4.2.0',
|
|
92
|
+
'react-native-worklets': '^0.7.0',
|
|
88
93
|
'react-native-vector-icons': '^10.2.0',
|
|
94
|
+
'@react-native-vector-icons/material-design-icons': '^12.0.0',
|
|
89
95
|
},
|
|
90
96
|
trpc: {
|
|
91
97
|
'@trpc/client': '^11.5.0',
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yCAAyC;AAC5B,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,yDAAyD;AAC5C,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAExC,uBAAuB;AACV,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,gBAAgB;AACH,QAAA,aAAa,GAAG,QAAQ,CAAC;AAEtC,iDAAiD;AACpC,QAAA,eAAe,GAAG,MAAM,CAAC;AAEtC,qDAAqD;AACxC,QAAA,UAAU,GAAG,MAAM,CAAC;AAEjC,sBAAsB;AACT,QAAA,QAAQ,GAAG;IACtB,iFAAiF;IACjF,YAAY,EAAE,mBAAmB;IAEjC,yEAAyE;IACzE,UAAU,EAAE,qCAAqC;IAEjD,gCAAgC;IAChC,aAAa,EAAE,0BAA0B;IAEzC,mDAAmD;IACnD,eAAe,EAAE,qCAAqC;CAC9C,CAAC;AAEX,2EAA2E;AAC9D,QAAA,sBAAsB,GAAG;IACpC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACjE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ;IAC/D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;IAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IACtE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ;IACpE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;IAC1D,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK;IAC7D,MAAM,EAAE,UAAU,EAAE,OAAO;CACnB,CAAC;AAEX,gEAAgE;AACnD,QAAA,mBAAmB,GAAG;IACjC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACpD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;CACvC,CAAC;AAEX,4DAA4D;AAC/C,QAAA,eAAe,GAAG;IAC7B,cAAc;IACd,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,IAAI;CACI,CAAC;AAEX,mDAAmD;AACtC,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,sBAAsB,EAAE,IAAI,wBAAgB,EAAE;QAC9C,iBAAiB,EAAE,IAAI,wBAAgB,EAAE;QACzC,sBAAsB,EAAE,IAAI,wBAAgB,EAAE;KAC/C;IACD,GAAG,EAAE;QACH,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,IAAI,qBAAa,EAAE;QAC5B,WAAW,EAAE,IAAI,qBAAa,EAAE;QAChC,cAAc,EAAE,IAAI,4BAAoB,EAAE;QAC1C,wBAAwB,EAAE,QAAQ;QAClC,kBAAkB,EAAE,UAAU;QAC9B,cAAc,EAAE,QAAQ;QACxB,kBAAkB,EAAE,QAAQ;KAC7B;IACD,MAAM,EAAE;QACN,OAAO,EAAE,IAAI,qBAAa,EAAE;QAC5B,cAAc,EAAE,IAAI,4BAAoB,EAAE;QAC1C,wBAAwB,EAAE,SAAS;QACnC,0BAA0B,EAAE,QAAQ;QACpC,gCAAgC,EAAE,QAAQ;QAC1C,gCAAgC,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yCAAyC;AAC5B,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,yDAAyD;AAC5C,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAExC,uBAAuB;AACV,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,gBAAgB;AACH,QAAA,aAAa,GAAG,QAAQ,CAAC;AAEtC,iDAAiD;AACpC,QAAA,eAAe,GAAG,MAAM,CAAC;AAEtC,qDAAqD;AACxC,QAAA,UAAU,GAAG,MAAM,CAAC;AAEjC,sBAAsB;AACT,QAAA,QAAQ,GAAG;IACtB,iFAAiF;IACjF,YAAY,EAAE,mBAAmB;IAEjC,yEAAyE;IACzE,UAAU,EAAE,qCAAqC;IAEjD,gCAAgC;IAChC,aAAa,EAAE,0BAA0B;IAEzC,mDAAmD;IACnD,eAAe,EAAE,qCAAqC;CAC9C,CAAC;AAEX,2EAA2E;AAC9D,QAAA,sBAAsB,GAAG;IACpC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACjE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ;IAC/D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;IAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IACtE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ;IACpE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;IAC1D,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK;IAC7D,MAAM,EAAE,UAAU,EAAE,OAAO;CACnB,CAAC;AAEX,gEAAgE;AACnD,QAAA,mBAAmB,GAAG;IACjC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACpD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;CACvC,CAAC;AAEX,4DAA4D;AAC/C,QAAA,eAAe,GAAG;IAC7B,cAAc;IACd,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,IAAI;CACI,CAAC;AAEX,mDAAmD;AACtC,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,sBAAsB,EAAE,IAAI,wBAAgB,EAAE;QAC9C,iBAAiB,EAAE,IAAI,wBAAgB,EAAE;QACzC,sBAAsB,EAAE,IAAI,wBAAgB,EAAE;KAC/C;IACD,GAAG,EAAE;QACH,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,IAAI,qBAAa,EAAE;QAC5B,WAAW,EAAE,IAAI,qBAAa,EAAE;QAChC,cAAc,EAAE,IAAI,4BAAoB,EAAE;QAC1C,wBAAwB,EAAE,QAAQ;QAClC,kBAAkB,EAAE,UAAU;QAC9B,cAAc,EAAE,QAAQ;QACxB,kBAAkB,EAAE,QAAQ;KAC7B;IACD,MAAM,EAAE;QACN,OAAO,EAAE,IAAI,qBAAa,EAAE;QAC5B,cAAc,EAAE,IAAI,4BAAoB,EAAE;QAC1C,4BAA4B,EAAE,SAAS;QACvC,wBAAwB,EAAE,SAAS;QACnC,0BAA0B,EAAE,QAAQ;QACpC,gCAAgC,EAAE,QAAQ;QAC1C,+BAA+B,EAAE,QAAQ;QACzC,0BAA0B,EAAE,QAAQ;QACpC,gCAAgC,EAAE,QAAQ;QAC1C,sBAAsB,EAAE,QAAQ;QAChC,kBAAkB,EAAE,UAAU;QAC9B,8BAA8B,EAAE,SAAS;QACzC,yBAAyB,EAAE,QAAQ;QACnC,uBAAuB,EAAE,QAAQ;QACjC,2BAA2B,EAAE,SAAS;QACtC,kDAAkD,EAAE,SAAS;KAC9D;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,SAAS;QACzB,mBAAmB,EAAE,SAAS;QAC9B,uBAAuB,EAAE,SAAS;KACnC;IACD,UAAU,EAAE;QACV,cAAc,EAAE,SAAS;KAC1B;IACD,OAAO,EAAE;QACP,gBAAgB,EAAE,SAAS;QAC3B,SAAS,EAAE,SAAS;KACrB;IACD,aAAa,EAAE;QACb,cAAc,EAAE,QAAQ;QACxB,cAAc,EAAE,SAAS;KAC1B;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,SAAS;KAC5B;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS;KACpB;IACD,GAAG,EAAE;QACH,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,SAAS;KACjB;CACO,CAAC"}
|
|
@@ -27,6 +27,7 @@ async function generateMobilePackage(projectPath, options) {
|
|
|
27
27
|
packageName: options.packageName,
|
|
28
28
|
directory: path_1.default.join(projectPath, 'packages'),
|
|
29
29
|
skipInstall: options.skipInstall ?? true,
|
|
30
|
+
interactive: options.interactive ?? false,
|
|
30
31
|
});
|
|
31
32
|
// Now overlay Idealyst-specific files or generate programmatically
|
|
32
33
|
const templatePath = (0, copier_1.getTemplatePath)('core', 'mobile');
|
|
@@ -54,7 +55,7 @@ async function generateMobilePackage(projectPath, options) {
|
|
|
54
55
|
*/
|
|
55
56
|
async function generateMobileFiles(mobileDir, data, hasNative) {
|
|
56
57
|
// Create directory structure
|
|
57
|
-
await fs_extra_1.default.ensureDir(path_1.default.join(mobileDir, 'src'
|
|
58
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(mobileDir, 'src'));
|
|
58
59
|
// Create package.json
|
|
59
60
|
await fs_extra_1.default.writeJson(path_1.default.join(mobileDir, 'package.json'), createMobilePackageJson(data), { spaces: 2 });
|
|
60
61
|
// Create app.json
|
|
@@ -69,8 +70,6 @@ async function generateMobileFiles(mobileDir, data, hasNative) {
|
|
|
69
70
|
await fs_extra_1.default.writeFile(path_1.default.join(mobileDir, 'index.js'), createIndexJs(data));
|
|
70
71
|
// Create src/App.tsx
|
|
71
72
|
await fs_extra_1.default.writeFile(path_1.default.join(mobileDir, 'src', 'App.tsx'), createAppTsx(data));
|
|
72
|
-
// Create src/screens/Home.tsx
|
|
73
|
-
await fs_extra_1.default.writeFile(path_1.default.join(mobileDir, 'src', 'screens', 'Home.tsx'), createHomeScreen(data));
|
|
74
73
|
if (!hasNative) {
|
|
75
74
|
logger_1.logger.warn('Native folders (android/ios) were not created.');
|
|
76
75
|
logger_1.logger.dim('Run "npx react-native init" in the mobile directory to create them.');
|
|
@@ -107,6 +106,7 @@ function createMobilePackageJson(data) {
|
|
|
107
106
|
'@babel/core': '^7.24.0',
|
|
108
107
|
'@babel/preset-env': '^7.24.0',
|
|
109
108
|
'@babel/runtime': '^7.24.0',
|
|
109
|
+
'@react-native-community/cli': '^18.0.0',
|
|
110
110
|
'@react-native/babel-preset': '^0.83.0',
|
|
111
111
|
'@react-native/eslint-config': '^0.83.0',
|
|
112
112
|
'@react-native/metro-config': '^0.83.0',
|
|
@@ -121,8 +121,11 @@ function createMobilePackageJson(data) {
|
|
|
121
121
|
* Create app.json
|
|
122
122
|
*/
|
|
123
123
|
function createAppJson(data) {
|
|
124
|
+
// The 'name' must match the project name used in React Native init ('mobile')
|
|
125
|
+
// This is what AppRegistry.registerComponent uses and what native code expects
|
|
126
|
+
// The 'displayName' is what shows to users in the app launcher
|
|
124
127
|
return {
|
|
125
|
-
name:
|
|
128
|
+
name: 'mobile',
|
|
126
129
|
displayName: data.appDisplayName,
|
|
127
130
|
};
|
|
128
131
|
}
|
|
@@ -165,6 +168,7 @@ function createBabelConfig(data) {
|
|
|
165
168
|
],
|
|
166
169
|
}],
|
|
167
170
|
['react-native-unistyles/plugin', {
|
|
171
|
+
root: 'src',
|
|
168
172
|
autoProcessPaths: [
|
|
169
173
|
'@idealyst/components',
|
|
170
174
|
'@${data.workspaceScope}/shared',
|
|
@@ -206,81 +210,42 @@ AppRegistry.registerComponent(appName, () => App);
|
|
|
206
210
|
}
|
|
207
211
|
/**
|
|
208
212
|
* Create App.tsx
|
|
213
|
+
* Mobile just re-exports the shared App (all providers are in shared)
|
|
209
214
|
*/
|
|
210
215
|
function createAppTsx(data) {
|
|
211
|
-
const imports = [
|
|
212
|
-
`import React from 'react';`,
|
|
213
|
-
`import { NavigationContainer } from '@react-navigation/native';`,
|
|
214
|
-
`import { createNativeStackNavigator } from '@react-navigation/native-stack';`,
|
|
215
|
-
`import { ThemeProvider } from '@idealyst/theme';`,
|
|
216
|
-
`import Home from './screens/Home';`,
|
|
217
|
-
];
|
|
218
216
|
if (data.hasTrpc) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const Stack = createNativeStackNavigator();
|
|
217
|
+
return `/**
|
|
218
|
+
* Mobile App entry point
|
|
219
|
+
* Wraps the shared App with mobile-specific API configuration
|
|
220
|
+
*/
|
|
224
221
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
<NavigationContainer>
|
|
229
|
-
<Stack.Navigator>
|
|
230
|
-
<Stack.Screen
|
|
231
|
-
name="Home"
|
|
232
|
-
component={Home}
|
|
233
|
-
options={{ title: '${data.appDisplayName}' }}
|
|
234
|
-
/>
|
|
235
|
-
</Stack.Navigator>
|
|
236
|
-
</NavigationContainer>
|
|
237
|
-
</ThemeProvider>
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
`;
|
|
241
|
-
if (data.hasTrpc) {
|
|
242
|
-
appContent = `
|
|
243
|
-
const Stack = createNativeStackNavigator();
|
|
244
|
-
const queryClient = new QueryClient();
|
|
222
|
+
import React from 'react';
|
|
223
|
+
import { Platform } from 'react-native';
|
|
224
|
+
import { App } from '@${data.workspaceScope}/shared';
|
|
245
225
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
</Stack.Navigator>
|
|
259
|
-
</NavigationContainer>
|
|
260
|
-
</ThemeProvider>
|
|
261
|
-
</QueryClientProvider>
|
|
262
|
-
</trpc.Provider>
|
|
263
|
-
);
|
|
226
|
+
// API base URL for mobile
|
|
227
|
+
// Android emulator uses 10.0.2.2 to reach host localhost
|
|
228
|
+
// iOS simulator can use localhost directly
|
|
229
|
+
// For physical devices, use your machine's local IP address
|
|
230
|
+
const API_BASE_URL = Platform.select({
|
|
231
|
+
android: 'http://10.0.2.2:3001',
|
|
232
|
+
ios: 'http://localhost:3001',
|
|
233
|
+
default: 'http://localhost:3001',
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
export default function MobileApp() {
|
|
237
|
+
return <App apiBaseUrl={API_BASE_URL} />;
|
|
264
238
|
}
|
|
265
239
|
`;
|
|
266
240
|
}
|
|
267
|
-
return
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
* Create Home screen
|
|
241
|
+
return `/**
|
|
242
|
+
* Mobile App entry point
|
|
243
|
+
* Re-exports the shared App which includes all providers
|
|
271
244
|
*/
|
|
272
|
-
function createHomeScreen(data) {
|
|
273
|
-
return `import React from 'react';
|
|
274
|
-
import { HelloWorld } from '@${data.workspaceScope}/shared';
|
|
275
245
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
name="${data.appDisplayName}"
|
|
280
|
-
onPress={() => console.log('Get Started pressed!')}
|
|
281
|
-
/>
|
|
282
|
-
);
|
|
283
|
-
}
|
|
246
|
+
import { App } from '@${data.workspaceScope}/shared';
|
|
247
|
+
|
|
248
|
+
export default App;
|
|
284
249
|
`;
|
|
285
250
|
}
|
|
286
251
|
//# sourceMappingURL=mobile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/generators/core/mobile.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;
|
|
1
|
+
{"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/generators/core/mobile.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,19 +36,41 @@ async function generateSharedPackage(projectPath, data) {
|
|
|
36
36
|
async function generateSharedFiles(sharedDir, data) {
|
|
37
37
|
// Create directory structure
|
|
38
38
|
await fs_extra_1.default.ensureDir(path_1.default.join(sharedDir, 'src', 'components'));
|
|
39
|
-
await fs_extra_1.default.ensureDir(path_1.default.join(sharedDir, 'src', '
|
|
39
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(sharedDir, 'src', 'screens'));
|
|
40
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(sharedDir, 'src', 'navigation'));
|
|
41
|
+
// Create utils directory for tRPC client if enabled
|
|
42
|
+
if (data.hasTrpc) {
|
|
43
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(sharedDir, 'src', 'utils'));
|
|
44
|
+
}
|
|
40
45
|
// Create package.json
|
|
41
46
|
await fs_extra_1.default.writeJson(path_1.default.join(sharedDir, 'package.json'), createSharedPackageJson(data), { spaces: 2 });
|
|
42
47
|
// Create tsconfig.json
|
|
43
48
|
await fs_extra_1.default.writeJson(path_1.default.join(sharedDir, 'tsconfig.json'), createSharedTsConfig(), { spaces: 2 });
|
|
44
49
|
// Create src/index.ts
|
|
45
|
-
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'index.ts'), createSharedIndex());
|
|
50
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'index.ts'), createSharedIndex(data));
|
|
46
51
|
// Create src/theme.ts
|
|
47
52
|
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'theme.ts'), createThemeConfig());
|
|
48
53
|
// Create src/components/HelloWorld.tsx
|
|
49
54
|
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'components', 'HelloWorld.tsx'), createHelloWorldComponent());
|
|
50
55
|
// Create src/components/index.ts
|
|
51
56
|
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'components', 'index.ts'), `export * from './HelloWorld';\n`);
|
|
57
|
+
// Create src/screens/Home.tsx
|
|
58
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'screens', 'Home.tsx'), createHomeScreen(data));
|
|
59
|
+
// Create src/screens/About.tsx
|
|
60
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'screens', 'About.tsx'), createAboutScreen());
|
|
61
|
+
// Create src/screens/index.ts
|
|
62
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'screens', 'index.ts'), `export { default as Home } from './Home';\nexport { default as About } from './About';\n`);
|
|
63
|
+
// Create src/navigation/AppRouter.ts
|
|
64
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'navigation', 'AppRouter.ts'), createAppRouter(data));
|
|
65
|
+
// Create src/navigation/index.ts
|
|
66
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'navigation', 'index.ts'), `export { AppRouter } from './AppRouter';\n`);
|
|
67
|
+
// Create src/App.tsx - main app with all providers
|
|
68
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'App.tsx'), createAppComponent(data));
|
|
69
|
+
// Create tRPC client if enabled
|
|
70
|
+
if (data.hasTrpc) {
|
|
71
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'utils', 'trpc.ts'), createTrpcClient(data));
|
|
72
|
+
await fs_extra_1.default.writeFile(path_1.default.join(sharedDir, 'src', 'utils', 'index.ts'), `export * from './trpc';\n`);
|
|
73
|
+
}
|
|
52
74
|
}
|
|
53
75
|
/**
|
|
54
76
|
* Create shared package.json
|
|
@@ -107,17 +129,22 @@ function createSharedTsConfig() {
|
|
|
107
129
|
/**
|
|
108
130
|
* Create shared index.ts
|
|
109
131
|
*/
|
|
110
|
-
function createSharedIndex() {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
export * from '
|
|
119
|
-
export * from '
|
|
120
|
-
|
|
132
|
+
function createSharedIndex(data) {
|
|
133
|
+
const exports = [
|
|
134
|
+
`/**`,
|
|
135
|
+
` * Shared package exports`,
|
|
136
|
+
` */`,
|
|
137
|
+
``,
|
|
138
|
+
`export { default as App } from './App';`,
|
|
139
|
+
`export * from './components';`,
|
|
140
|
+
`export * from './screens';`,
|
|
141
|
+
`export * from './navigation';`,
|
|
142
|
+
];
|
|
143
|
+
if (data.hasTrpc) {
|
|
144
|
+
exports.push(`export * from './utils';`);
|
|
145
|
+
}
|
|
146
|
+
exports.push(``, `// Re-export Idealyst components for convenience`, `export * from '@idealyst/components';`, `export * from '@idealyst/theme';`);
|
|
147
|
+
return exports.join('\n') + '\n';
|
|
121
148
|
}
|
|
122
149
|
/**
|
|
123
150
|
* Create theme configuration
|
|
@@ -130,12 +157,15 @@ function createThemeConfig() {
|
|
|
130
157
|
import { StyleSheet } from 'react-native-unistyles';
|
|
131
158
|
import { fromTheme, lightTheme, darkTheme } from '@idealyst/theme';
|
|
132
159
|
|
|
160
|
+
// Build themes as separate variables for babel plugin compatibility
|
|
161
|
+
const light = fromTheme(lightTheme).build();
|
|
162
|
+
const dark = fromTheme(darkTheme).build();
|
|
163
|
+
|
|
133
164
|
// Configure unistyles with the Idealyst themes
|
|
134
|
-
// fromTheme().build() is required for babel transpilation
|
|
135
165
|
StyleSheet.configure({
|
|
136
166
|
themes: {
|
|
137
|
-
light
|
|
138
|
-
dark
|
|
167
|
+
light,
|
|
168
|
+
dark,
|
|
139
169
|
},
|
|
140
170
|
settings: {
|
|
141
171
|
initialTheme: 'light',
|
|
@@ -204,4 +234,241 @@ export function HelloWorld({ name = 'World', onPress }: HelloWorldProps) {
|
|
|
204
234
|
}
|
|
205
235
|
`;
|
|
206
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Create Home screen
|
|
239
|
+
*/
|
|
240
|
+
function createHomeScreen(data) {
|
|
241
|
+
return `/**
|
|
242
|
+
* Home screen - shared between web and mobile
|
|
243
|
+
*/
|
|
244
|
+
|
|
245
|
+
import React from 'react';
|
|
246
|
+
import { useNavigator } from '@idealyst/navigation';
|
|
247
|
+
import { HelloWorld } from '../components';
|
|
248
|
+
|
|
249
|
+
export default function Home() {
|
|
250
|
+
const { navigate } = useNavigator();
|
|
251
|
+
|
|
252
|
+
return (
|
|
253
|
+
<HelloWorld
|
|
254
|
+
name="${data.appDisplayName}"
|
|
255
|
+
onPress={() => navigate('/about')}
|
|
256
|
+
/>
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
`;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Create AppRouter - shared navigation configuration
|
|
263
|
+
*/
|
|
264
|
+
function createAppRouter(data) {
|
|
265
|
+
return `/**
|
|
266
|
+
* Application navigation router
|
|
267
|
+
* Shared between web and mobile platforms
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
import { NavigatorParam } from '@idealyst/navigation';
|
|
271
|
+
import Home from '../screens/Home';
|
|
272
|
+
import About from '../screens/About';
|
|
273
|
+
|
|
274
|
+
export const AppRouter: NavigatorParam = {
|
|
275
|
+
path: '/',
|
|
276
|
+
type: 'navigator',
|
|
277
|
+
layout: 'stack',
|
|
278
|
+
options: {
|
|
279
|
+
headerShown: false,
|
|
280
|
+
},
|
|
281
|
+
routes: [
|
|
282
|
+
{
|
|
283
|
+
path: '/',
|
|
284
|
+
type: 'screen',
|
|
285
|
+
component: Home,
|
|
286
|
+
options: { title: '${data.appDisplayName}' },
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
path: '/about',
|
|
290
|
+
type: 'screen',
|
|
291
|
+
component: About,
|
|
292
|
+
options: { title: 'About Idealyst' },
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
export default AppRouter;
|
|
298
|
+
`;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Create About screen
|
|
302
|
+
*/
|
|
303
|
+
function createAboutScreen() {
|
|
304
|
+
return `/**
|
|
305
|
+
* About screen - explains what Idealyst is
|
|
306
|
+
*/
|
|
307
|
+
|
|
308
|
+
import React from 'react';
|
|
309
|
+
import { View, Text, Button } from '@idealyst/components';
|
|
310
|
+
import { useNavigator } from '@idealyst/navigation';
|
|
311
|
+
import { useUnistyles } from 'react-native-unistyles';
|
|
312
|
+
|
|
313
|
+
export default function About() {
|
|
314
|
+
const { theme } = useUnistyles();
|
|
315
|
+
const { goBack } = useNavigator();
|
|
316
|
+
|
|
317
|
+
return (
|
|
318
|
+
<View
|
|
319
|
+
style={{
|
|
320
|
+
flex: 1,
|
|
321
|
+
padding: 24,
|
|
322
|
+
backgroundColor: theme.colors.surface.primary,
|
|
323
|
+
}}
|
|
324
|
+
>
|
|
325
|
+
<Text
|
|
326
|
+
style={{
|
|
327
|
+
fontSize: 28,
|
|
328
|
+
fontWeight: 'bold',
|
|
329
|
+
color: theme.colors.text.primary,
|
|
330
|
+
marginBottom: 16,
|
|
331
|
+
}}
|
|
332
|
+
>
|
|
333
|
+
What is Idealyst?
|
|
334
|
+
</Text>
|
|
335
|
+
|
|
336
|
+
<Text
|
|
337
|
+
style={{
|
|
338
|
+
fontSize: 16,
|
|
339
|
+
color: theme.colors.text.secondary,
|
|
340
|
+
marginBottom: 16,
|
|
341
|
+
lineHeight: 24,
|
|
342
|
+
}}
|
|
343
|
+
>
|
|
344
|
+
Idealyst is a cross-platform framework for building React applications that run on both web and mobile from a single codebase.
|
|
345
|
+
</Text>
|
|
346
|
+
|
|
347
|
+
<Text
|
|
348
|
+
style={{
|
|
349
|
+
fontSize: 16,
|
|
350
|
+
color: theme.colors.text.secondary,
|
|
351
|
+
marginBottom: 16,
|
|
352
|
+
lineHeight: 24,
|
|
353
|
+
}}
|
|
354
|
+
>
|
|
355
|
+
Key features:
|
|
356
|
+
</Text>
|
|
357
|
+
|
|
358
|
+
<View style={{ marginLeft: 16, marginBottom: 16 }}>
|
|
359
|
+
<Text style={{ fontSize: 16, color: theme.colors.text.secondary, marginBottom: 8 }}>
|
|
360
|
+
• Unified component library for web and mobile
|
|
361
|
+
</Text>
|
|
362
|
+
<Text style={{ fontSize: 16, color: theme.colors.text.secondary, marginBottom: 8 }}>
|
|
363
|
+
• Shared navigation system across platforms
|
|
364
|
+
</Text>
|
|
365
|
+
<Text style={{ fontSize: 16, color: theme.colors.text.secondary, marginBottom: 8 }}>
|
|
366
|
+
• Theme system with light/dark mode support
|
|
367
|
+
</Text>
|
|
368
|
+
<Text style={{ fontSize: 16, color: theme.colors.text.secondary, marginBottom: 8 }}>
|
|
369
|
+
• Type-safe API integration with tRPC
|
|
370
|
+
</Text>
|
|
371
|
+
<Text style={{ fontSize: 16, color: theme.colors.text.secondary, marginBottom: 8 }}>
|
|
372
|
+
• Monorepo structure for code sharing
|
|
373
|
+
</Text>
|
|
374
|
+
</View>
|
|
375
|
+
|
|
376
|
+
<Text
|
|
377
|
+
style={{
|
|
378
|
+
fontSize: 16,
|
|
379
|
+
color: theme.colors.text.secondary,
|
|
380
|
+
marginBottom: 24,
|
|
381
|
+
lineHeight: 24,
|
|
382
|
+
}}
|
|
383
|
+
>
|
|
384
|
+
Write once, run everywhere - with native performance and consistent design.
|
|
385
|
+
</Text>
|
|
386
|
+
|
|
387
|
+
<Button onPress={goBack} intent="secondary">
|
|
388
|
+
Go Back
|
|
389
|
+
</Button>
|
|
390
|
+
</View>
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
`;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Create App component with all providers
|
|
397
|
+
*/
|
|
398
|
+
function createAppComponent(data) {
|
|
399
|
+
if (data.hasTrpc) {
|
|
400
|
+
return `/**
|
|
401
|
+
* Main App component with all providers
|
|
402
|
+
* Platform packages wrap this with their specific router (e.g., BrowserRouter for web)
|
|
403
|
+
*/
|
|
404
|
+
|
|
405
|
+
import React, { useMemo } from 'react';
|
|
406
|
+
import { NavigatorProvider } from '@idealyst/navigation';
|
|
407
|
+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
408
|
+
import { AppRouter } from './navigation';
|
|
409
|
+
import { trpc, createTrpcClient } from './utils/trpc';
|
|
410
|
+
|
|
411
|
+
export interface AppProps {
|
|
412
|
+
/** Base URL for the API server (e.g., 'http://localhost:3001') */
|
|
413
|
+
apiBaseUrl: string;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
export default function App({ apiBaseUrl }: AppProps) {
|
|
417
|
+
const queryClient = useMemo(() => new QueryClient(), []);
|
|
418
|
+
const trpcClient = useMemo(() => createTrpcClient(apiBaseUrl), [apiBaseUrl]);
|
|
419
|
+
|
|
420
|
+
return (
|
|
421
|
+
<trpc.Provider client={trpcClient} queryClient={queryClient}>
|
|
422
|
+
<QueryClientProvider client={queryClient}>
|
|
423
|
+
<NavigatorProvider route={AppRouter} />
|
|
424
|
+
</QueryClientProvider>
|
|
425
|
+
</trpc.Provider>
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
`;
|
|
429
|
+
}
|
|
430
|
+
return `/**
|
|
431
|
+
* Main App component with all providers
|
|
432
|
+
* Platform packages wrap this with their specific router (e.g., BrowserRouter for web)
|
|
433
|
+
*/
|
|
434
|
+
|
|
435
|
+
import React from 'react';
|
|
436
|
+
import { NavigatorProvider } from '@idealyst/navigation';
|
|
437
|
+
import { AppRouter } from './navigation';
|
|
438
|
+
|
|
439
|
+
export default function App() {
|
|
440
|
+
return <NavigatorProvider route={AppRouter} />;
|
|
441
|
+
}
|
|
442
|
+
`;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Create tRPC client for shared package
|
|
446
|
+
*/
|
|
447
|
+
function createTrpcClient(data) {
|
|
448
|
+
return `/**
|
|
449
|
+
* tRPC client configuration
|
|
450
|
+
* Shared between web and mobile platforms
|
|
451
|
+
*/
|
|
452
|
+
|
|
453
|
+
import { createTRPCReact } from '@trpc/react-query';
|
|
454
|
+
import { httpBatchLink } from '@trpc/client';
|
|
455
|
+
import type { AppRouter } from '@${data.workspaceScope}/api';
|
|
456
|
+
|
|
457
|
+
export const trpc = createTRPCReact<AppRouter>();
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Create a tRPC client with the specified base URL
|
|
461
|
+
* @param baseUrl - The API server base URL (e.g., 'http://localhost:3001')
|
|
462
|
+
*/
|
|
463
|
+
export function createTrpcClient(baseUrl: string) {
|
|
464
|
+
return trpc.createClient({
|
|
465
|
+
links: [
|
|
466
|
+
httpBatchLink({
|
|
467
|
+
url: \`\${baseUrl}/trpc\`,
|
|
468
|
+
}),
|
|
469
|
+
],
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
`;
|
|
473
|
+
}
|
|
207
474
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/generators/core/shared.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAYH,sDAqBC;AA/BD,wDAA0B;AAC1B,gDAAwB;AAExB,mDAAoG;AACpG,+CAAiE;AACjE,+CAA4C;AAE5C;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,IAAkB;IAElB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE/D,eAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9B,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAA,8BAAqB,EAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,SAAiB,EACjB,IAAkB;IAElB,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/generators/core/shared.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAYH,sDAqBC;AA/BD,wDAA0B;AAC1B,gDAAwB;AAExB,mDAAoG;AACpG,+CAAiE;AACjE,+CAA4C;AAE5C;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,IAAkB;IAElB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE/D,eAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9B,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAA,8BAAqB,EAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,SAAiB,EACjB,IAAkB;IAElB,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9D,oDAAoD;IACpD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAsB;IACtB,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EACpC,uBAAuB,CAAC,IAAI,CAAC,EAC7B,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IAEF,uBAAuB;IACvB,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EACrC,oBAAoB,EAAE,EACtB,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IAEF,sBAAsB;IACtB,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,EACvC,iBAAiB,CAAC,IAAI,CAAC,CACxB,CAAC;IAEF,sBAAsB;IACtB,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,EACvC,iBAAiB,EAAE,CACpB,CAAC;IAEF,uCAAuC;IACvC,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAC3D,yBAAyB,EAAE,CAC5B,CAAC;IAEF,iCAAiC;IACjC,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EACrD,iCAAiC,CAClC,CAAC;IAEF,8BAA8B;IAC9B,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAClD,gBAAgB,CAAC,IAAI,CAAC,CACvB,CAAC;IAEF,+BAA+B;IAC/B,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EACnD,iBAAiB,EAAE,CACpB,CAAC;IAEF,8BAA8B;IAC9B,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAClD,0FAA0F,CAC3F,CAAC;IAEF,qCAAqC;IACrC,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,EACzD,eAAe,CAAC,IAAI,CAAC,CACtB,CAAC;IAEF,iCAAiC;IACjC,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EACrD,4CAA4C,CAC7C,CAAC;IAEF,mDAAmD;IACnD,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,EACtC,kBAAkB,CAAC,IAAI,CAAC,CACzB,CAAC;IAEF,gCAAgC;IAChC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAC/C,gBAAgB,CAAC,IAAI,CAAC,CACvB,CAAC;QACF,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAChD,2BAA2B,CAC5B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,IAAkB;IACjD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,gBAAgB,GAA2B;QAC/C,GAAG,wBAAY,CAAC,IAAI;QACpB,OAAO,EAAE,IAAI,wBAAY,CAAC,GAAG,CAAC,KAAK,EAAE;QACrC,cAAc,EAAE,IAAI,wBAAY,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;KAC1D,CAAC;IAEF,mCAAmC;IACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAY,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAY,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,SAAS;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE;YACP,GAAG,EAAE,gBAAgB;YACrB,SAAS,EAAE,gBAAgB;SAC5B;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM;SACf;QACD,YAAY;QACZ,gBAAgB;QAChB,eAAe,EAAE;YACf,YAAY,EAAE,QAAQ;YACtB,cAAc,EAAE,SAAS;SAC1B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL,OAAO,EAAE,qBAAqB;QAC9B,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,WAAW;SACjB;QACD,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,MAAM,OAAO,GAAG;QACd,KAAK;QACL,2BAA2B;QAC3B,KAAK;QACL,EAAE;QACF,yCAAyC;QACzC,+BAA+B;QAC/B,4BAA4B;QAC5B,+BAA+B;KAChC,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAI,CACV,EAAE,EACF,kDAAkD,EAClD,uCAAuC,EACvC,kCAAkC,CACnC,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,OAAO;;;;;;;;;;;;;cAaK,IAAI,CAAC,cAAc;;;;;CAKhC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAkB;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;2BAqBkB,IAAI,CAAC,cAAc;;;;;;;;;;;;CAY7C,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAkB;IAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BV,CAAC;IACA,CAAC;IAED,OAAO;;;;;;;;;;;;CAYR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,OAAO;;;;;;;mCAO0B,IAAI,CAAC,cAAc;;;;;;;;;;;;;;;;;CAiBrD,CAAC;AACF,CAAC"}
|