@mr.dj2u/create-expo-stack 2.21.3-mrdj.0

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.
Files changed (191) hide show
  1. package/README.md +435 -0
  2. package/bin/create-expo-stack.js +2 -0
  3. package/build/cli.js +49 -0
  4. package/build/commands/create-expo-stack.js +471 -0
  5. package/build/constants.js +39 -0
  6. package/build/templates/base/.gitignore.ejs +26 -0
  7. package/build/templates/base/.npmrc.ejs +1 -0
  8. package/build/templates/base/App.tsx.ejs +66 -0
  9. package/build/templates/base/app.json.ejs +69 -0
  10. package/build/templates/base/assets/adaptive-icon.png +0 -0
  11. package/build/templates/base/assets/favicon.png +0 -0
  12. package/build/templates/base/assets/icon.png +0 -0
  13. package/build/templates/base/assets/splash.png +0 -0
  14. package/build/templates/base/babel.config.js.ejs +38 -0
  15. package/build/templates/base/components/BackButton.tsx.ejs +23 -0
  16. package/build/templates/base/components/Button.tsx.ejs +42 -0
  17. package/build/templates/base/components/Container.tsx.ejs +14 -0
  18. package/build/templates/base/components/EditScreenInfo.tsx.ejs +44 -0
  19. package/build/templates/base/components/HeaderButton.tsx.ejs +31 -0
  20. package/build/templates/base/components/ScreenContent.tsx.ejs +40 -0
  21. package/build/templates/base/components/TabBarIcon.tsx.ejs +15 -0
  22. package/build/templates/base/eslint.config.js.ejs +15 -0
  23. package/build/templates/base/package.json.ejs +191 -0
  24. package/build/templates/base/prettier.config.js.ejs +11 -0
  25. package/build/templates/base/tsconfig.json.ejs +39 -0
  26. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +40 -0
  27. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +15 -0
  28. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +15 -0
  29. package/build/templates/packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs +65 -0
  30. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +15 -0
  31. package/build/templates/packages/expo-router/drawer/app/+html.tsx.ejs +49 -0
  32. package/build/templates/packages/expo-router/drawer/app/+not-found.tsx.ejs +100 -0
  33. package/build/templates/packages/expo-router/drawer/app/_layout.tsx.ejs +91 -0
  34. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +21 -0
  35. package/build/templates/packages/expo-router/expo-env.d.ts +4 -0
  36. package/build/templates/packages/expo-router/index.js.ejs +4 -0
  37. package/build/templates/packages/expo-router/metro.config.js.ejs +24 -0
  38. package/build/templates/packages/expo-router/stack/app/+html.tsx.ejs +49 -0
  39. package/build/templates/packages/expo-router/stack/app/+not-found.tsx.ejs +113 -0
  40. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +63 -0
  41. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +56 -0
  42. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +73 -0
  43. package/build/templates/packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs +52 -0
  44. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +37 -0
  45. package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +37 -0
  46. package/build/templates/packages/expo-router/tabs/app/+html.tsx.ejs +49 -0
  47. package/build/templates/packages/expo-router/tabs/app/+not-found.tsx.ejs +110 -0
  48. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +84 -0
  49. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +21 -0
  50. package/build/templates/packages/firebase/.env.ejs +8 -0
  51. package/build/templates/packages/firebase/metro.config.js.ejs +14 -0
  52. package/build/templates/packages/firebase/utils/firebase.ts.ejs +26 -0
  53. package/build/templates/packages/i18next/components/InternalizationExample.tsx.ejs +23 -0
  54. package/build/templates/packages/i18next/core/i18n/fallbackChecker.ts.ejs +13 -0
  55. package/build/templates/packages/i18next/core/i18n/init.ts.ejs +24 -0
  56. package/build/templates/packages/i18next/core/i18n/languageDetector.ts.ejs +13 -0
  57. package/build/templates/packages/i18next/translation/en.json.ejs +8 -0
  58. package/build/templates/packages/i18next/translation/fr.json.ejs +8 -0
  59. package/build/templates/packages/i18next/translation/index.ts.ejs +20 -0
  60. package/build/templates/packages/nativewind/components/BackButton.tsx.ejs +22 -0
  61. package/build/templates/packages/nativewind/components/Button.tsx.ejs +21 -0
  62. package/build/templates/packages/nativewind/components/Container.tsx.ejs +13 -0
  63. package/build/templates/packages/nativewind/components/EditScreenInfo.tsx.ejs +40 -0
  64. package/build/templates/packages/nativewind/components/ScreenContent.tsx.ejs +27 -0
  65. package/build/templates/packages/nativewind/global.css +3 -0
  66. package/build/templates/packages/nativewind/metro.config.js +7 -0
  67. package/build/templates/packages/nativewind/nativewind-env.d.ts +2 -0
  68. package/build/templates/packages/nativewind/tailwind.config.js.ejs +15 -0
  69. package/build/templates/packages/nativewindui/components/Container.tsx.ejs +14 -0
  70. package/build/templates/packages/nativewindui/components/EditScreenInfo.tsx.ejs +45 -0
  71. package/build/templates/packages/nativewindui/components/HeaderButton.tsx.ejs +31 -0
  72. package/build/templates/packages/nativewindui/components/ScreenContent.tsx.ejs +40 -0
  73. package/build/templates/packages/nativewindui/components/TabBarIcon.tsx.ejs +15 -0
  74. package/build/templates/packages/nativewindui/components/nativewindui/Icon/Icon.ios.tsx.ejs +52 -0
  75. package/build/templates/packages/nativewindui/components/nativewindui/Icon/Icon.tsx.ejs +58 -0
  76. package/build/templates/packages/nativewindui/components/nativewindui/Icon/index.ts.ejs +16 -0
  77. package/build/templates/packages/nativewindui/components/nativewindui/Icon/types.ts.ejs +18 -0
  78. package/build/templates/packages/nativewindui/components/nativewindui/ThemeToggle.tsx.ejs +33 -0
  79. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +28 -0
  80. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/index.tsx.ejs +15 -0
  81. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/two.tsx.ejs +15 -0
  82. package/build/templates/packages/nativewindui/drawer/app/(drawer)/_layout.tsx.ejs +35 -0
  83. package/build/templates/packages/nativewindui/drawer/app/(drawer)/index.tsx.ejs +535 -0
  84. package/build/templates/packages/nativewindui/drawer/app/+html.tsx.ejs +46 -0
  85. package/build/templates/packages/nativewindui/drawer/app/+not-found.tsx.ejs +83 -0
  86. package/build/templates/packages/nativewindui/drawer/app/_layout.tsx.ejs +75 -0
  87. package/build/templates/packages/nativewindui/drawer/app/modal.tsx.ejs +33 -0
  88. package/build/templates/packages/nativewindui/global.css.ejs +91 -0
  89. package/build/templates/packages/nativewindui/lib/cn.ts.ejs +6 -0
  90. package/build/templates/packages/nativewindui/lib/useColorScheme.tsx.ejs +21 -0
  91. package/build/templates/packages/nativewindui/nativewind-env.d.ts.ejs +1 -0
  92. package/build/templates/packages/nativewindui/stack/app/+html.tsx.ejs +46 -0
  93. package/build/templates/packages/nativewindui/stack/app/+not-found.tsx.ejs +18 -0
  94. package/build/templates/packages/nativewindui/stack/app/_layout.tsx.ejs +78 -0
  95. package/build/templates/packages/nativewindui/stack/app/index.tsx.ejs +487 -0
  96. package/build/templates/packages/nativewindui/stack/app/modal.tsx.ejs +33 -0
  97. package/build/templates/packages/nativewindui/tabs/app/(tabs)/_layout.tsx.ejs +35 -0
  98. package/build/templates/packages/nativewindui/tabs/app/(tabs)/index.tsx.ejs +537 -0
  99. package/build/templates/packages/nativewindui/tabs/app/(tabs)/two.tsx.ejs +22 -0
  100. package/build/templates/packages/nativewindui/tabs/app/+html.tsx.ejs +46 -0
  101. package/build/templates/packages/nativewindui/tabs/app/+not-found.tsx.ejs +90 -0
  102. package/build/templates/packages/nativewindui/tabs/app/_layout.tsx.ejs +78 -0
  103. package/build/templates/packages/nativewindui/tabs/app/modal.tsx.ejs +21 -0
  104. package/build/templates/packages/nativewindui/tailwind.config.js.ejs +67 -0
  105. package/build/templates/packages/nativewindui/theme/colors.ts.ejs +123 -0
  106. package/build/templates/packages/nativewindui/theme/index.ts.ejs +32 -0
  107. package/build/templates/packages/nativewindui/theme/with-opacity.ts.ejs +155 -0
  108. package/build/templates/packages/react-navigation/App.tsx.ejs +73 -0
  109. package/build/templates/packages/react-navigation/navigation/drawer-navigator.tsx.ejs +31 -0
  110. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +108 -0
  111. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +38 -0
  112. package/build/templates/packages/react-navigation/screens/details.tsx.ejs +41 -0
  113. package/build/templates/packages/react-navigation/screens/home.tsx.ejs +5 -0
  114. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +20 -0
  115. package/build/templates/packages/react-navigation/screens/one.tsx.ejs +5 -0
  116. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +54 -0
  117. package/build/templates/packages/react-navigation/screens/two.tsx.ejs +5 -0
  118. package/build/templates/packages/restyle/components/BackButton.tsx.ejs +19 -0
  119. package/build/templates/packages/restyle/components/Button.tsx.ejs +32 -0
  120. package/build/templates/packages/restyle/components/Container.tsx.ejs +16 -0
  121. package/build/templates/packages/restyle/components/EditScreenInfo.tsx.ejs +38 -0
  122. package/build/templates/packages/restyle/components/ScreenContent.tsx.ejs +30 -0
  123. package/build/templates/packages/restyle/theme.ts.ejs +51 -0
  124. package/build/templates/packages/supabase/.env.ejs +2 -0
  125. package/build/templates/packages/supabase/utils/supabase.ts.ejs +14 -0
  126. package/build/templates/packages/tamagui/components/BackButton.tsx.ejs +12 -0
  127. package/build/templates/packages/tamagui/components/Button.tsx.ejs +17 -0
  128. package/build/templates/packages/tamagui/components/Container.tsx.ejs +12 -0
  129. package/build/templates/packages/tamagui/components/EditScreenInfo.tsx.ejs +27 -0
  130. package/build/templates/packages/tamagui/components/ScreenContent.tsx.ejs +23 -0
  131. package/build/templates/packages/tamagui/tamagui.config.ts.ejs +14 -0
  132. package/build/templates/packages/unistyles/breakpoints.ts.ejs +9 -0
  133. package/build/templates/packages/unistyles/components/BackButton.tsx.ejs +28 -0
  134. package/build/templates/packages/unistyles/components/Button.tsx.ejs +42 -0
  135. package/build/templates/packages/unistyles/components/Container.tsx.ejs +17 -0
  136. package/build/templates/packages/unistyles/components/EditScreenInfo.tsx.ejs +53 -0
  137. package/build/templates/packages/unistyles/components/ScreenContent.tsx.ejs +43 -0
  138. package/build/templates/packages/unistyles/theme.ts.ejs +34 -0
  139. package/build/templates/packages/unistyles/unistyles.ts.ejs +27 -0
  140. package/build/templates/packages/uniwind/global.css +2 -0
  141. package/build/templates/packages/uniwind/metro.config.js.ejs +10 -0
  142. package/build/templates/packages/vexo-analytics/.env.ejs +7 -0
  143. package/build/templates/packages/zustand/store/store.ts.ejs +15 -0
  144. package/build/types/cli.d.ts +4 -0
  145. package/build/types/commands/create-expo-stack.d.ts +3 -0
  146. package/build/types/constants.d.ts +10 -0
  147. package/build/types/types.d.ts +33 -0
  148. package/build/types/utilities/bumpVersion.d.ts +1 -0
  149. package/build/types/utilities/clearNavigationPackages.d.ts +2 -0
  150. package/build/types/utilities/clearStylingPackages.d.ts +2 -0
  151. package/build/types/utilities/configAnalytics.d.ts +18 -0
  152. package/build/types/utilities/configStorage.d.ts +8 -0
  153. package/build/types/utilities/configureProjectFiles.d.ts +3 -0
  154. package/build/types/utilities/copyBaseAssets.d.ts +2 -0
  155. package/build/types/utilities/generateNWUI.d.ts +3 -0
  156. package/build/types/utilities/generateProjectFiles.d.ts +5 -0
  157. package/build/types/utilities/getPackageManager.d.ts +8 -0
  158. package/build/types/utilities/index.d.ts +10 -0
  159. package/build/types/utilities/printOutput.d.ts +3 -0
  160. package/build/types/utilities/publishToGitHub.d.ts +2 -0
  161. package/build/types/utilities/renderTitle.d.ts +2 -0
  162. package/build/types/utilities/runCLI.d.ts +3 -0
  163. package/build/types/utilities/runEasConfigure.d.ts +3 -0
  164. package/build/types/utilities/runIgnite.d.ts +3 -0
  165. package/build/types/utilities/showHelp.d.ts +1 -0
  166. package/build/types/utilities/systemCommand.d.ts +14 -0
  167. package/build/types/utilities/usePackage.d.ts +2 -0
  168. package/build/types/utilities/validateProjectName.d.ts +4 -0
  169. package/build/types.js +39 -0
  170. package/build/utilities/bumpVersion.js +21 -0
  171. package/build/utilities/clearNavigationPackages.js +11 -0
  172. package/build/utilities/clearStylingPackages.js +11 -0
  173. package/build/utilities/configAnalytics.js +70 -0
  174. package/build/utilities/configStorage.js +50 -0
  175. package/build/utilities/configureProjectFiles.js +380 -0
  176. package/build/utilities/copyBaseAssets.js +21 -0
  177. package/build/utilities/generateNWUI.js +54 -0
  178. package/build/utilities/generateProjectFiles.js +106 -0
  179. package/build/utilities/getPackageManager.js +103 -0
  180. package/build/utilities/index.js +27 -0
  181. package/build/utilities/printOutput.js +251 -0
  182. package/build/utilities/publishToGitHub.js +173 -0
  183. package/build/utilities/renderTitle.js +55 -0
  184. package/build/utilities/runCLI.js +437 -0
  185. package/build/utilities/runEasConfigure.js +83 -0
  186. package/build/utilities/runIgnite.js +26 -0
  187. package/build/utilities/showHelp.js +85 -0
  188. package/build/utilities/systemCommand.js +40 -0
  189. package/build/utilities/usePackage.js +8 -0
  190. package/build/utilities/validateProjectName.js +42 -0
  191. package/package.json +77 -0
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { Text, View } from 'react-native';
3
+ import { StyleSheet } from 'react-native-unistyles';
4
+
5
+ import { EditScreenInfo } from './EditScreenInfo';
6
+
7
+ type ScreenContentProps = {
8
+ title: string;
9
+ path: string;
10
+ children?: React.ReactNode;
11
+ };
12
+
13
+ export const ScreenContent = ({ title, path, children } : ScreenContentProps) => {
14
+ return (
15
+ <View style={styles.container}>
16
+ <Text style={styles.title}>{title}</Text>
17
+ <View style={styles.separator} />
18
+ <EditScreenInfo path={path} />
19
+ {children}
20
+ </View>
21
+ );
22
+ };
23
+
24
+ const styles = StyleSheet.create(theme => ({
25
+ container: {
26
+ flex: 1,
27
+ alignItems: 'center',
28
+ justifyContent: 'center',
29
+ padding: 24,
30
+ backgroundColor: 'white',
31
+ },
32
+ separator: {
33
+ height: 1,
34
+ marginVertical: 30,
35
+ width: '80%',
36
+ backgroundColor: theme.colors.limedSpruce,
37
+ },
38
+ title: {
39
+ fontSize: 20,
40
+ fontWeight: 'bold',
41
+ color: theme.colors.typography,
42
+ },
43
+ }));
@@ -0,0 +1,34 @@
1
+ const sharedColors = {
2
+ azureRadiance: '#007AFF',
3
+ limedSpruce: '#38434D',
4
+ cornflowerBlue: '#6366F1',
5
+ astral: '#2E78B7'
6
+ } as const;
7
+
8
+ export const lightTheme = {
9
+ colors: {
10
+ ...sharedColors,
11
+ typography: '#000000',
12
+ background: '#ffffff',
13
+ },
14
+ margins: {
15
+ sm: 2,
16
+ md: 4,
17
+ lg: 8,
18
+ xl: 12,
19
+ },
20
+ } as const;
21
+
22
+ export const darkTheme = {
23
+ colors: {
24
+ ...sharedColors,
25
+ typography: '#ffffff',
26
+ background: '#000000',
27
+ },
28
+ margins: {
29
+ sm: 2,
30
+ md: 4,
31
+ lg: 8,
32
+ xl: 12,
33
+ },
34
+ } as const;
@@ -0,0 +1,27 @@
1
+ import { StyleSheet } from 'react-native-unistyles';
2
+
3
+ import { breakpoints } from './breakpoints';
4
+ import { lightTheme, darkTheme } from './theme';
5
+
6
+ type AppBreakpoints = typeof breakpoints;
7
+
8
+ type AppThemes = {
9
+ light: typeof lightTheme;
10
+ dark: typeof darkTheme;
11
+ };
12
+
13
+ declare module 'react-native-unistyles' {
14
+ export interface UnistylesBreakpoints extends AppBreakpoints {}
15
+ export interface UnistylesThemes extends AppThemes {}
16
+ };
17
+
18
+ StyleSheet.configure({
19
+ breakpoints,
20
+ themes: {
21
+ light: lightTheme,
22
+ dark: darkTheme
23
+ },
24
+ settings: {
25
+ adaptiveThemes: true
26
+ }
27
+ });
@@ -0,0 +1,2 @@
1
+ @import 'tailwindcss';
2
+ @import 'uniwind';
@@ -0,0 +1,10 @@
1
+ const { getDefaultConfig } = require('expo/metro-config');
2
+ const { withUniwindConfig } = require('uniwind/metro');
3
+
4
+ // eslint-disable-next-line no-undef
5
+ const config = getDefaultConfig(__dirname);
6
+
7
+ module.exports = withUniwindConfig(config, {
8
+ cssEntryFile: './global.css',
9
+ dtsFile: './uniwind-types.d.ts'
10
+ });
@@ -0,0 +1,7 @@
1
+ EXPO_PUBLIC_VEXO_API_KEY=
2
+ <% if (props.authenticationPackage?.name === "supabase") { %>
3
+ <%- include('../supabase/.env') -%>
4
+ <% } %>
5
+ <% if (props.authenticationPackage?.name === "firebase") { %>
6
+ <%- include('../firebase/.env') -%>
7
+ <% } %>
@@ -0,0 +1,15 @@
1
+ import { create } from 'zustand'
2
+
3
+ export interface BearState {
4
+ bears: number
5
+ increasePopulation: () => void
6
+ removeAllBears: () => void
7
+ updateBears: (newBears: number) => void
8
+ }
9
+
10
+ export const useStore = create<BearState>((set) => ({
11
+ bears: 0,
12
+ increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
13
+ removeAllBears: () => set({ bears: 0 }),
14
+ updateBears: (newBears) => set({ bears: newBears }),
15
+ }))
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Create the cli and kick it off
3
+ */
4
+ export declare function run(): Promise<import("gluegun").GluegunToolbox>;
@@ -0,0 +1,3 @@
1
+ import { GluegunCommand } from 'gluegun';
2
+ declare const command: GluegunCommand;
3
+ export default command;
@@ -0,0 +1,10 @@
1
+ import { CliResults, SelectedComponents } from './types';
2
+ export declare const CES_TITLE = "create expo stack";
3
+ export declare const RN_NEW_TITLE = "rn new";
4
+ export declare const TITLE_TEXT: string;
5
+ export declare const DEFAULT_APP_NAME = "my-expo-app";
6
+ export declare const defaultOptions: CliResults;
7
+ export declare const nativewindUIOptions: SelectedComponents[];
8
+ export declare const navigationValidationError = "You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer+tabs options";
9
+ export declare const projectNameValidationError = "A project with the name";
10
+ export declare const bunInstallationError = "Cancelled to install recommended version of Bun.";
@@ -0,0 +1,33 @@
1
+ export interface CliFlags {
2
+ noGit: boolean;
3
+ noInstall: boolean;
4
+ overwrite: boolean;
5
+ importAlias: string | boolean;
6
+ packageManager: PackageManager;
7
+ eas: boolean;
8
+ publish: boolean;
9
+ }
10
+ export declare const availablePackages: readonly ["@react-navigation/drawer", "expo-router", "expoRouter", "firebase", "nativewind", "nativewindui", "nwui", "react-navigation", "reactNavigation", "gesture-handler", "gestureHandler", "reanimated", "react-native-gesture-handler", "react-native-reanimated", "react-native-keyboard-controller", "react-native-screens", "react-native-svg", "react-native-worklets", "keyboard-controller", "keyboardController", "reactnavigation", "screens", "restyle", "stylesheet", "supabase", "svg", "tamagui", "uniwind", "unistyles", "worklets", "i18next", "zustand", "vexo-analytics"];
11
+ export type AuthenticationSelect = 'supabase' | 'firebase' | undefined;
12
+ export type NavigationSelect = 'react-navigation' | 'expo-router' | undefined;
13
+ export type NavigationTypes = 'stack' | 'tabs' | 'drawer + tabs' | undefined;
14
+ export type StylingSelect = 'nativewind' | 'stylesheet' | 'unistyles' | 'nativewindui' | 'uniwind' | 'restyle' | 'tamagui';
15
+ export type PackageManager = 'yarn' | 'npm' | 'pnpm' | 'bun';
16
+ export type StateManagementSelect = 'zustand' | undefined;
17
+ export type Internationalization = 'i18next';
18
+ export type Analytics = 'vexo-analytics';
19
+ export type SoftwareMansionSelect = 'react-native-gesture-handler' | 'react-native-reanimated' | 'react-native-keyboard-controller' | 'react-native-screens' | 'react-native-svg' | 'react-native-worklets';
20
+ export type SelectedComponents = 'action-sheet' | 'activity-indicator' | 'activity-view' | 'avatar' | 'button' | 'date-picker' | 'picker' | 'progress-indicator' | 'ratings-indicator' | 'slider' | 'text' | 'toggle';
21
+ export type AvailablePackages = {
22
+ name: (typeof availablePackages)[number];
23
+ type: 'navigation' | 'styling' | 'authentication' | 'internationalization' | 'state-management' | 'analytics' | 'software-mansion';
24
+ options?: {
25
+ selectedComponents?: SelectedComponents[];
26
+ type?: NavigationTypes;
27
+ };
28
+ };
29
+ export interface CliResults {
30
+ projectName: string;
31
+ packages: AvailablePackages[];
32
+ flags: CliFlags;
33
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { CliResults } from '../types';
2
+ export default function clearNavigationPackages(cliResults: CliResults): CliResults;
@@ -0,0 +1,2 @@
1
+ import { CliResults } from '../types';
2
+ export default function clearStylingPackages(cliResults: CliResults): CliResults;
@@ -0,0 +1,18 @@
1
+ import { Analytics, AuthenticationSelect, CliFlags, Internationalization, NavigationSelect, NavigationTypes, PackageManager, SelectedComponents, StylingSelect } from '../types';
2
+ export declare function storeConfigAnalytics({ timestamp, cesVersion, authType, internalization, nativewindUIComponents, navigationLibrary, navigationType, packageManager, packageManagerVersion, stylingLibrary, eas, importAlias, noGit, noInstall, overwrite, os, osPlatform, osArch, osRelease, analytics }: {
3
+ timestamp: string;
4
+ cesVersion: string;
5
+ authType?: AuthenticationSelect;
6
+ navigationLibrary?: NavigationSelect;
7
+ navigationType?: NavigationTypes;
8
+ stylingLibrary?: StylingSelect;
9
+ packageManager: PackageManager;
10
+ packageManagerVersion: string;
11
+ internalization?: Internationalization;
12
+ nativewindUIComponents?: SelectedComponents[];
13
+ os: string;
14
+ osPlatform: string;
15
+ osArch: string;
16
+ osRelease: string;
17
+ analytics: Analytics;
18
+ } & Partial<CliFlags>): Promise<void>;
@@ -0,0 +1,8 @@
1
+ import { CliResults } from '../types';
2
+ interface AppConfig {
3
+ name: string;
4
+ cliResults: CliResults;
5
+ }
6
+ export declare const saveConfig: (config: AppConfig) => Promise<void>;
7
+ export declare const loadConfigs: () => Promise<AppConfig[]>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { AvailablePackages, CliResults } from '../types';
3
+ export declare function configureProjectFiles(authenticationPackage: AvailablePackages | undefined, files: string[], navigationPackage: AvailablePackages | undefined, stylingPackage: AvailablePackages | undefined, analyticsPackage: AvailablePackages | undefined, toolbox: Toolbox, cliResults: CliResults, internalizationPackage: AvailablePackages | undefined, stateManagementPackage: AvailablePackages | undefined): string[];
@@ -0,0 +1,2 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ export declare function copyBaseAssets(projectName: string, toolbox: Toolbox): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ import { CliResults } from '../types';
3
+ export declare function generateNWUI(cliResults: CliResults, toolbox: GluegunToolbox): Promise<void>;
@@ -0,0 +1,5 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { AvailablePackages, CliResults, PackageManager } from '../types';
3
+ export declare function generateProjectFiles(authenticationPackage: AvailablePackages | undefined, analyticsPackage: AvailablePackages | undefined, cliResults: CliResults, files: string[], formattedFiles: any[], navigationPackage: AvailablePackages | undefined, packageManager: PackageManager, stylingPackage: AvailablePackages | undefined, toolbox: Toolbox, internalizationPackage: AvailablePackages | undefined, stateManagementPackage: AvailablePackages | undefined): any[];
4
+ export declare function toExpoSlug(projectName: string): string;
5
+ export declare function toExpoScheme(projectName: string): string;
@@ -0,0 +1,8 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { CliResults } from '../types';
3
+ export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
4
+ export type PackageManagerRunnerX = 'npx' | 'pnpx' | 'yarn dlx' | 'bunx';
5
+ export declare function getPackageManager(toolbox: Toolbox, cliResults: CliResults): PackageManager;
6
+ export declare function getPackageManagerRunnerX(toolbox: Toolbox, cliResults: CliResults): PackageManagerRunnerX;
7
+ export declare function getDefaultPackageManagerVersion(): string;
8
+ export declare function getVersionForPackageManager(packageManager: PackageManager): string;
@@ -0,0 +1,10 @@
1
+ export * from './configureProjectFiles';
2
+ export * from './generateProjectFiles';
3
+ export * from './getPackageManager';
4
+ export * from './printOutput';
5
+ export * from './renderTitle';
6
+ export * from './runCLI';
7
+ export * from './runIgnite';
8
+ export * from './showHelp';
9
+ export * from './usePackage';
10
+ export * from './publishToGitHub';
@@ -0,0 +1,3 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { AvailablePackages, CliResults } from '../types';
3
+ export declare function printOutput(cliResults: CliResults, formattedFiles: any[], toolbox: Toolbox, stylingPackage: AvailablePackages): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import { GluegunToolbox } from 'gluegun';
2
+ export declare const publishToGitHub: (toolbox: GluegunToolbox, projectName: string) => Promise<string | null>;
@@ -0,0 +1,2 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ export declare function renderTitle(toolbox: Toolbox): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { CliResults } from '../types';
3
+ export declare function runCLI(toolbox: Toolbox, projectName: string): Promise<CliResults>;
@@ -0,0 +1,3 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { CliResults, PackageManager } from '../types';
3
+ export declare function easConfigure(cliResults: CliResults, packageManager: PackageManager, toolbox: Toolbox): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ import { CliResults } from '../types';
3
+ export declare function runIgnite(toolbox: Toolbox, projectName: string, cliResults: CliResults): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare function showHelp(info: any, highlight: any, warning: any): void;
@@ -0,0 +1,14 @@
1
+ import { Toolbox } from 'gluegun/build/types/domain/toolbox';
2
+ type STDIO = 'inherit' | 'ignore' | 'pipe' | 'overlapped';
3
+ export declare const ONLY_ERRORS: readonly ["ignore", "ignore", "inherit"];
4
+ export declare function quoteShellArg(value: string): string;
5
+ export declare function runSystemCommand({ command, errorMessage, stdio, toolbox, shell, env, failOnError }: {
6
+ command: string;
7
+ toolbox: Toolbox;
8
+ stdio: readonly [STDIO, STDIO, STDIO] | STDIO | undefined;
9
+ errorMessage: string;
10
+ shell?: boolean;
11
+ env?: Record<string, string>;
12
+ failOnError?: boolean;
13
+ }): Promise<any>;
14
+ export {};
@@ -0,0 +1,2 @@
1
+ import { AvailablePackages } from '../types';
2
+ export declare function usePackage(packageName: string, packages: AvailablePackages[]): boolean;
@@ -0,0 +1,4 @@
1
+ import { GluegunPrompt } from 'gluegun';
2
+ type ExistsResult = false | 'dir' | 'file' | 'other';
3
+ export declare function validateProjectName(exists: (path: string) => ExistsResult, removeAsync: (path?: string) => Promise<void>, prompt: GluegunPrompt | null, projectName: string, overwrite: boolean): Promise<void>;
4
+ export {};
package/build/types.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.availablePackages = void 0;
4
+ exports.availablePackages = [
5
+ '@react-navigation/drawer',
6
+ 'expo-router',
7
+ 'expoRouter',
8
+ 'firebase',
9
+ 'nativewind',
10
+ 'nativewindui',
11
+ 'nwui',
12
+ 'react-navigation',
13
+ 'reactNavigation',
14
+ 'gesture-handler',
15
+ 'gestureHandler',
16
+ 'reanimated',
17
+ 'react-native-gesture-handler',
18
+ 'react-native-reanimated',
19
+ 'react-native-keyboard-controller',
20
+ 'react-native-screens',
21
+ 'react-native-svg',
22
+ 'react-native-worklets',
23
+ 'keyboard-controller',
24
+ 'keyboardController',
25
+ 'reactnavigation',
26
+ 'screens',
27
+ 'restyle',
28
+ 'stylesheet',
29
+ 'supabase',
30
+ 'svg',
31
+ 'tamagui',
32
+ 'uniwind',
33
+ 'unistyles',
34
+ 'worklets',
35
+ 'i18next',
36
+ 'zustand',
37
+ 'vexo-analytics'
38
+ ];
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV2EsUUFBQSxpQkFBaUIsR0FBRztJQUMvQiwwQkFBMEI7SUFDMUIsYUFBYTtJQUNiLFlBQVk7SUFDWixVQUFVO0lBQ1YsWUFBWTtJQUNaLGNBQWM7SUFDZCxNQUFNO0lBQ04sa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWiw4QkFBOEI7SUFDOUIseUJBQXlCO0lBQ3pCLGtDQUFrQztJQUNsQyxzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixTQUFTO0lBQ1QsU0FBUztJQUNULFlBQVk7SUFDWixVQUFVO0lBQ1YsS0FBSztJQUNMLFNBQVM7SUFDVCxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixTQUFTO0lBQ1QsU0FBUztJQUNULGdCQUFnQjtDQUNSLENBQUMifQ==
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process_1 = require("child_process");
4
+ function bumpVersion(type) {
5
+ if (['major', 'minor', 'patch'].includes(type)) {
6
+ try {
7
+ (0, child_process_1.execSync)(`npm version ${type}`, { stdio: 'inherit' });
8
+ console.log(`${type.charAt(0).toUpperCase() + type.slice(1)} version bumped successfully.`);
9
+ }
10
+ catch (error) {
11
+ console.error(`Error bumping the ${type} version:`, error);
12
+ }
13
+ }
14
+ else {
15
+ console.error('Invalid version type. Please use "major", "minor", or "patch".');
16
+ }
17
+ }
18
+ // Get the argument from the command line
19
+ const versionType = process.argv[2];
20
+ bumpVersion(versionType);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL2J1bXBWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaURBQXlDO0FBRXpDLFNBQVMsV0FBVyxDQUFDLElBQVk7SUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsSUFBQSx3QkFBUSxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRUQseUNBQXlDO0FBQ3pDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function clearNavigationPackages(cliResults) {
4
+ const stylingPackageIndex = cliResults.packages.findIndex((p) => p.type === 'navigation');
5
+ if (stylingPackageIndex !== -1) {
6
+ cliResults.packages.splice(stylingPackageIndex, 1);
7
+ }
8
+ return cliResults;
9
+ }
10
+ exports.default = clearNavigationPackages;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXJOYXZpZ2F0aW9uUGFja2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL2NsZWFyTmF2aWdhdGlvblBhY2thZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBd0IsdUJBQXVCLENBQUMsVUFBc0I7SUFDcEUsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQztJQUMxRixJQUFJLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFORCwwQ0FNQyJ9
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function clearStylingPackages(cliResults) {
4
+ const stylingPackageIndex = cliResults.packages.findIndex((p) => p.type === 'styling');
5
+ if (stylingPackageIndex !== -1) {
6
+ cliResults.packages.splice(stylingPackageIndex, 1);
7
+ }
8
+ return cliResults;
9
+ }
10
+ exports.default = clearStylingPackages;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXJTdHlsaW5nUGFja2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL2NsZWFyU3R5bGluZ1BhY2thZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBd0Isb0JBQW9CLENBQUMsVUFBc0I7SUFDakUsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztJQUN2RixJQUFJLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFORCx1Q0FNQyJ9
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.storeConfigAnalytics = void 0;
13
+ const google_auth_library_1 = require("google-auth-library");
14
+ const googleapis_1 = require("googleapis");
15
+ const key_data = 'eyJ0eXBlIjoic2VydmljZV9hY2NvdW50IiwicHJvamVjdF9pZCI6ImNyZWF0ZS1leHBvLXN0YWNrLWFuYWx5dGljcyIsInByaXZhdGVfa2V5X2lkIjoiNTdmZTc1OThmYTRkM2NkNWNhN2E0MmU4OGM1ZWYwMzdjODljNDI3NiIsInByaXZhdGVfa2V5IjoiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdkFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLWXdnZ1NpQWdFQUFvSUJBUURndnl6TTV3cFMrUnJRXG5hRmJBZmhwRU15dnhQK1IxV1p6Ykx1Nm1QblpsOVNvZmVHK0hHejdHWWNoZ29ScU9iaEk0MERpL1ZmblA0MVpEXG5kQVZTYXhMSlZSdm9ESHlEUkxRQzcrRE5TWWFEWlRSMXpIdGl6Z2M4UUhxbjV0Qmt0YXdWdWc5ZkhBUFk0MmtBXG4xcjlhdmttakNoM2sxSTNxdFhlbVlUQWt5Z09FZXVLbzJzbmptajcyNUZLRDBRREJKSlVhYnVyd3RrR1doV3pKXG5LaEd6YlNlb0JIeGJMemNlUDlGang1RFlTdW5oS2E1blFXdGRzS2dwdlgzSGthZEU2V0NYQjg1ZHd4MytHVGRVXG5ybnFUSTRRVWpWRHV3SnFaOEpWUEZjYUF2L0dlbHdUT1VGNGNROFQ4VWVadGtHUzN2L1hlRmROL1BTZGZYM0tZXG5CNVEwdXNtREFnTUJBQUVDZ2dFQU9KK0J5b2dGSGwxN1ozbDZMZG8zaE9vOWpuVVIrb3pleTR3Wi9WRnNaQWl1XG5HYXF1c3FQbkgzVWdWbFFRakVUb0cxOCtoTnBFNjU3enExL3VQVk1Uc3h6WndJOXd5V1BFVko4YURLNlRFTVN0XG5RR2FKeVoxdHpqelNpajNKVUM1RFVtQURvbXM4L3VaZ25LRCtLZjhhTDFVTHJnenRTbTU0M0RiTk9kK1pua1VjXG5zeDYzVXVQNmdVY0tiVDRhTVl3Wk5mL3BzUW9SMkdwaXdSQjhQd3hzS0x1Uk5qcC8rTHZuYXV4dkRvY1hvbHFRXG41UHFFYi9pOFlKMlJ3alI2THBUc3FIdWtIZ056ZytOci9JQnpUWDR5Y0V2OWh6bWw4VzVGOGRDd1IzQkYyV05XXG52VmFYZVRNY1ZFcWcxWS9TMDd0UUMrTlFuWHlFY0pSOGRVcW8zQU1qTVFLQmdRRDFkbE54TXlXYnRVSDZPaWx2XG4rbXF2OWdkSVZ1eVJWeEtydG9PcVlqd2gzWEVYZW9seU9Selhac0hvNlQ5b0NpZnRpenBQOXFmYkNWYVAzdk1BXG43OWl3cE4vUE1QY1NoeWtnR2RyR1ArRUY3ODV0amtLQ2dmSE9PbUxUbEp5Z3psdTFuUU1vcTcwOGdoeXd6MEtmXG5tekc4OVlHQ1RmaTMvSmQ5MWN3WU5IRHhrd0tCZ1FEcVpTN0ZYNEt2cjlpWll0Vko4VDRHNE0zUVJ2dWJRMUFoXG5Yd0ZVN2JDUzJ1M294cktlZnJPTFlCTHJsbXQ0Qk1tL2NLMVNteHBndHZrdEQ3WFVtcVdrUGRnRUhGaUxjcHoxXG5XS0tTKytpRHE4SXplZzUxMFBkcVAwbVNlY1R6cHk1V2hmMHJwTi9vVDY0YVJnVUVmaEZtZHdVYWZRcnlOY1B1XG5uMWlEa0loK1VRS0JnSEJWODhBbHdUdHVpOEJoNTk3b2d2VCtxcnlQazNxOGw3M2dMSWZJcDI1ME1yS2xFTXdtXG5tUzEzU0owNFNoMXFNSFhGTnkyclc0eWh6R3pSZ3ZMVjBaeWVDQk9CZkVHTmUrUEdFVnFUbDM4cERaY1QrUnBUXG5MLy9LdHJuUUZKSi9mbmN5WVdTMm5FZFo0Sm1HY1I0c1gybjBEWTQ5OHVyNC9iZklKYnlhRzJwakFvR0FkRG9DXG5EQ3JGRWJyZmE0ZWZmWS9iRXV3TUFqZ0FjVWZhaHdHbUZtZmFRNmU5aXN4a0s4Vmw0RG1laUNWSld2VDgyU25WXG5OLzNqQVl3WldLZk9vUUtpR2lQMFptMXIxcEhabEtzRHltQ1JOaUZJSmVCakpUYWVTSmZqTW5laEdyU09mS2JxXG5GK2NrZy94bXQyNTY5SFJTeW4xQUVaZHBneHIzOGU0ZnBQVlpTVkVDZ1lBWkw2K0pTdXoxY3BsaXloQ3lJU2NXXG5RWEFTMTNiRXMvbHd6MjhZT3ltN2JnMzVzZjdhOFBPMjBocGNPWnVERERySlpjME9LbG9tNXQzSHYxUDIreWNOXG5NczFQbnBqRjFEYlZ6ZFBDcm8xTkxKdTk4eEVYNWJXSXRDUkF1Q1hKUS90MWVKL3d6TThjbGhLYnRYVGdQTHl4XG5mSnViMERTWFpqUmtYUFNDcU0yb0t3PT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsImNsaWVudF9lbWFpbCI6ImNlcy1hbmFseXRpY3NAY3JlYXRlLWV4cG8tc3RhY2stYW5hbHl0aWNzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiY2xpZW50X2lkIjoiMTEyMjg4MzM5NDYxNTA5NDM0MTcwIiwiYXV0aF91cmkiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsInRva2VuX3VyaSI6Imh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwiY2xpZW50X3g1MDlfY2VydF91cmwiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L2Nlcy1hbmFseXRpY3MlNDBjcmVhdGUtZXhwby1zdGFjay1hbmFseXRpY3MuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJ1bml2ZXJzZV9kb21haW4iOiJnb29nbGVhcGlzLmNvbSJ9';
16
+ const keys = Buffer.from(key_data, 'base64').toString('utf-8');
17
+ function storeConfigAnalytics(_a) {
18
+ return __awaiter(this, arguments, void 0, function* ({ timestamp, cesVersion, authType, internalization, nativewindUIComponents = [], navigationLibrary, navigationType, packageManager, packageManagerVersion, stylingLibrary, eas, importAlias, noGit, noInstall, overwrite, os, osPlatform, osArch, osRelease, analytics }) {
19
+ var _b;
20
+ if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {
21
+ console.log('Skipping analytics in development or test environment');
22
+ return;
23
+ }
24
+ try {
25
+ const auth = new google_auth_library_1.GoogleAuth({
26
+ scopes: ['https://www.googleapis.com/auth/spreadsheets'],
27
+ credentials: JSON.parse(keys)
28
+ });
29
+ const service = googleapis_1.google.sheets({ version: 'v4', auth });
30
+ yield service.spreadsheets.values.append({
31
+ spreadsheetId: '1Nav_XXi8stJjaBBK8bX0CebRF5QKXU25BZc57I06yGQ',
32
+ range: 'Sheet1!A:A',
33
+ valueInputOption: 'RAW',
34
+ requestBody: {
35
+ values: [
36
+ [
37
+ timestamp !== null && timestamp !== void 0 ? timestamp : '',
38
+ cesVersion !== null && cesVersion !== void 0 ? cesVersion : '',
39
+ navigationLibrary !== null && navigationLibrary !== void 0 ? navigationLibrary : '',
40
+ navigationType !== null && navigationType !== void 0 ? navigationType : '',
41
+ stylingLibrary !== null && stylingLibrary !== void 0 ? stylingLibrary : '',
42
+ packageManager,
43
+ packageManagerVersion !== null && packageManagerVersion !== void 0 ? packageManagerVersion : '',
44
+ internalization !== null && internalization !== void 0 ? internalization : '',
45
+ (_b = nativewindUIComponents === null || nativewindUIComponents === void 0 ? void 0 : nativewindUIComponents.join(',')) !== null && _b !== void 0 ? _b : '',
46
+ authType !== null && authType !== void 0 ? authType : '',
47
+ eas ? 'true' : 'false',
48
+ importAlias ? 'true' : 'false',
49
+ noGit ? 'true' : 'false',
50
+ noInstall ? 'true' : 'false',
51
+ overwrite ? 'true' : 'false',
52
+ os !== null && os !== void 0 ? os : '',
53
+ osPlatform !== null && osPlatform !== void 0 ? osPlatform : '',
54
+ osArch !== null && osArch !== void 0 ? osArch : '',
55
+ osRelease !== null && osRelease !== void 0 ? osRelease : '',
56
+ analytics !== null && analytics !== void 0 ? analytics : ''
57
+ ]
58
+ ]
59
+ },
60
+ insertDataOption: 'INSERT_ROWS'
61
+ });
62
+ // return result;
63
+ }
64
+ catch (err) {
65
+ console.warn('analytics API returned an error: ' + err);
66
+ }
67
+ });
68
+ }
69
+ exports.storeConfigAnalytics = storeConfigAnalytics;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnQW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9jb25maWdBbmFseXRpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQWlEO0FBQ2pELDJDQUFvQztBQWFwQyxNQUFNLFFBQVEsR0FDWixza0dBQXNrRyxDQUFDO0FBRXprRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0QsU0FBc0Isb0JBQW9CO3lEQUFDLEVBQ3pDLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGVBQWUsRUFDZixzQkFBc0IsR0FBRyxFQUFFLEVBQzNCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsR0FBRyxFQUNILFdBQVcsRUFDWCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxFQUFFLEVBQ0YsVUFBVSxFQUNWLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQWlCVTs7UUFDbkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1lBQ3JFLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxnQ0FBVSxDQUFDO2dCQUMxQixNQUFNLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQztnQkFDeEQsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQzlCLENBQUMsQ0FBQztZQUVILE1BQU0sT0FBTyxHQUFHLG1CQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXZELE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxhQUFhLEVBQUUsOENBQThDO2dCQUM3RCxLQUFLLEVBQUUsWUFBWTtnQkFDbkIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxTQUFTLGFBQVQsU0FBUyxjQUFULFNBQVMsR0FBSSxFQUFFOzRCQUNmLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLEVBQUU7NEJBQ2hCLGlCQUFpQixhQUFqQixpQkFBaUIsY0FBakIsaUJBQWlCLEdBQUksRUFBRTs0QkFDdkIsY0FBYyxhQUFkLGNBQWMsY0FBZCxjQUFjLEdBQUksRUFBRTs0QkFDcEIsY0FBYyxhQUFkLGNBQWMsY0FBZCxjQUFjLEdBQUksRUFBRTs0QkFDcEIsY0FBYzs0QkFDZCxxQkFBcUIsYUFBckIscUJBQXFCLGNBQXJCLHFCQUFxQixHQUFJLEVBQUU7NEJBQzNCLGVBQWUsYUFBZixlQUFlLGNBQWYsZUFBZSxHQUFJLEVBQUU7NEJBQ3JCLE1BQUEsc0JBQXNCLGFBQXRCLHNCQUFzQix1QkFBdEIsc0JBQXNCLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQ0FBSSxFQUFFOzRCQUN2QyxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxFQUFFOzRCQUNkLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPOzRCQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTzs0QkFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87NEJBQ3hCLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPOzRCQUM1QixTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTzs0QkFDNUIsRUFBRSxhQUFGLEVBQUUsY0FBRixFQUFFLEdBQUksRUFBRTs0QkFDUixVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxFQUFFOzRCQUNoQixNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxFQUFFOzRCQUNaLFNBQVMsYUFBVCxTQUFTLGNBQVQsU0FBUyxHQUFJLEVBQUU7NEJBQ2YsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLEdBQUksRUFBRTt5QkFDaEI7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsZ0JBQWdCLEVBQUUsYUFBYTthQUNoQyxDQUFDLENBQUM7WUFFSCxpQkFBaUI7UUFDbkIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0NBQUE7QUF4RkQsb0RBd0ZDIn0=
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.loadConfigs = exports.saveConfig = void 0;
16
+ const fs_1 = require("fs");
17
+ const path_1 = __importDefault(require("path"));
18
+ const os_1 = __importDefault(require("os"));
19
+ const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.create-expo-stack');
20
+ const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'configurations.json');
21
+ const ensureConfigDirExists = () => __awaiter(void 0, void 0, void 0, function* () {
22
+ try {
23
+ yield fs_1.promises.mkdir(CONFIG_DIR, { recursive: true });
24
+ }
25
+ catch (error) {
26
+ if (error.code !== 'EEXIST') {
27
+ throw error;
28
+ }
29
+ }
30
+ });
31
+ const saveConfig = (config) => __awaiter(void 0, void 0, void 0, function* () {
32
+ yield ensureConfigDirExists();
33
+ const configs = yield (0, exports.loadConfigs)();
34
+ yield fs_1.promises.writeFile(CONFIG_FILE, JSON.stringify([...configs, config], null, 2));
35
+ });
36
+ exports.saveConfig = saveConfig;
37
+ const loadConfigs = () => __awaiter(void 0, void 0, void 0, function* () {
38
+ try {
39
+ const data = yield fs_1.promises.readFile(CONFIG_FILE, 'utf8');
40
+ return JSON.parse(data);
41
+ }
42
+ catch (error) {
43
+ if (error.code === 'ENOENT') {
44
+ return [];
45
+ }
46
+ throw error;
47
+ }
48
+ });
49
+ exports.loadConfigs = loadConfigs;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnU3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBb0M7QUFDcEMsZ0RBQXdCO0FBRXhCLDRDQUFvQjtBQUVwQixNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sV0FBVyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFPakUsTUFBTSxxQkFBcUIsR0FBRyxHQUFTLEVBQUU7SUFDdkMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxhQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUEsQ0FBQztBQUVLLE1BQU0sVUFBVSxHQUFHLENBQU8sTUFBaUIsRUFBaUIsRUFBRTtJQUNuRSxNQUFNLHFCQUFxQixFQUFFLENBQUM7SUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLG1CQUFXLEdBQUUsQ0FBQztJQUNwQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDLENBQUEsQ0FBQztBQUpXLFFBQUEsVUFBVSxjQUlyQjtBQUVLLE1BQU0sV0FBVyxHQUFHLEdBQStCLEVBQUU7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFBLENBQUM7QUFWVyxRQUFBLFdBQVcsZUFVdEIifQ==