create-expo-stack 2.1.24 → 2.2.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.
- package/build/commands/create-expo-stack.js +27 -12
- package/build/constants.js +1 -1
- package/build/templates/base/App.tsx.ejs +44 -44
- package/build/templates/base/package.json.ejs +11 -0
- package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +1 -0
- package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +42 -40
- package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +40 -38
- package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +33 -33
- package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +44 -42
- package/build/templates/packages/firebase/.env +8 -0
- package/build/templates/packages/firebase/metro.config.js +6 -0
- package/build/templates/packages/firebase/utils/firebase.ts.ejs +26 -0
- package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +2 -1
- package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +57 -55
- package/build/templates/packages/react-navigation/screens/one.tsx.ejs +53 -51
- package/build/templates/packages/react-navigation/screens/two.tsx.ejs +53 -51
- package/build/templates/packages/supabase/.env +2 -0
- package/build/templates/packages/supabase/utils/supabase.ts.ejs +15 -0
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +94 -88
- package/build/types/types.d.ts +2 -2
- package/build/types/utilities/configureProjectFiles.d.ts +1 -1
- package/build/types/utilities/generateProjectFiles.d.ts +1 -1
- package/build/types.js +6 -4
- package/build/utilities/configureProjectFiles.js +19 -2
- package/build/utilities/generateProjectFiles.js +13 -5
- package/build/utilities/printOutput.js +43 -9
- package/build/utilities/runCLI.js +25 -5
- package/build/utilities/showHelp.js +21 -4
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Platform, Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, Paragraph, Separator } from "tamagui";
|
|
5
|
-
|
|
4
|
+
import { YStack, Paragraph, Separator, Theme } from "tamagui";
|
|
5
|
+
import { Platform } from 'react-native'
|
|
6
6
|
<% } else { %>
|
|
7
7
|
import { Platform, StyleSheet, Text, View } from "react-native";
|
|
8
8
|
<% } %>
|
|
@@ -13,55 +13,57 @@ import EditScreenInfo from "../components/edit-screen-info";
|
|
|
13
13
|
export default function ModalScreen() {
|
|
14
14
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
15
15
|
return (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
18
|
+
<Text className={styles.title}>Modal</Text>
|
|
19
|
+
<View className={styles.separator} />
|
|
20
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
21
|
+
</View>
|
|
22
|
+
);
|
|
23
23
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
24
24
|
return (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
<Theme name="light">
|
|
26
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
27
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
28
|
+
<Paragraph>Modal</Paragraph>
|
|
29
|
+
<Separator />
|
|
30
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
31
|
+
</YStack>
|
|
32
|
+
</Theme>
|
|
33
|
+
);
|
|
32
34
|
<% } else { %>
|
|
33
35
|
return (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
<View style={styles.container}>
|
|
37
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
38
|
+
<Text style={styles.title}>Modal</Text>
|
|
39
|
+
<View style={styles.separator} />
|
|
40
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
41
|
+
</View>
|
|
42
|
+
);
|
|
41
43
|
<% } %>
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
45
47
|
const styles = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
container: `items-center flex-1 justify-center`,
|
|
49
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
50
|
+
title: `text-xl font-bold`
|
|
51
|
+
};
|
|
50
52
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
51
53
|
const styles = StyleSheet.create({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
container: {
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
flex: 1,
|
|
57
|
+
justifyContent: "center"
|
|
58
|
+
},
|
|
59
|
+
separator: {
|
|
60
|
+
height: 1,
|
|
61
|
+
marginVertical: 30,
|
|
62
|
+
width: "80%"
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: "bold"
|
|
67
|
+
}
|
|
68
|
+
});
|
|
67
69
|
<% } %>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
EXPO_PUBLIC_FIREBASE_API_KEY=api_key
|
|
2
|
+
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=project-id.firebaseapp.com
|
|
3
|
+
EXPO_PUBLIC_DATABASE_URL=https://project-id.firebaseio.com
|
|
4
|
+
EXPO_PUBLIC_PROJECT_ID=project-id
|
|
5
|
+
EXPO_PUBLIC_STORAGE_BUCKET=project-id.appspot.com
|
|
6
|
+
EXPO_PUBLIC_MESSAGING_SENDER_ID=sender-id
|
|
7
|
+
EXPO_PUBLIC_APP_ID=app-id
|
|
8
|
+
EXPO_PUBLIC_MEASUREMENT_ID=G-measurement-id
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { initializeApp } from 'firebase/app';
|
|
2
|
+
|
|
3
|
+
// Optionally import the services that you want to use
|
|
4
|
+
// import {...} from "firebase/auth";
|
|
5
|
+
// import {...} from "firebase/database";
|
|
6
|
+
// import {...} from "firebase/firestore";
|
|
7
|
+
// import {...} from "firebase/functions";
|
|
8
|
+
// import {...} from "firebase/storage";
|
|
9
|
+
|
|
10
|
+
// Initialize Firebase
|
|
11
|
+
const firebaseConfig = {
|
|
12
|
+
apiKey: process.env.EXPO_PUBLIC_FIREBASE_API_KEY,
|
|
13
|
+
authDomain: process.env.EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
|
14
|
+
databaseURL: process.env.EXPO_PUBLIC_FIREBASE_DATABASE_URL,
|
|
15
|
+
projectId: process.env.EXPO_PUBLIC_PROJECT_ID,
|
|
16
|
+
storageBucket: process.env.EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET,
|
|
17
|
+
messagingSenderId: process.env.EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
|
|
18
|
+
appId: process.env.EXPO_PUBLIC_FIREBASE_APP_ID,
|
|
19
|
+
measurementId: process.env.EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const firebase = initializeApp(firebaseConfig);
|
|
23
|
+
// For more information on how to access Firebase in your project,
|
|
24
|
+
// see the Firebase documentation: https://firebase.google.com/docs/web/setup#access-firebase
|
|
25
|
+
|
|
26
|
+
export default firebase;
|
|
@@ -1,69 +1,71 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Platform, Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { YStack, Paragraph, Separator, Theme } from "tamagui";
|
|
5
|
+
import { Platform } from 'react-native'
|
|
6
6
|
<% } else { %>
|
|
7
|
-
|
|
7
|
+
import { Platform, StyleSheet, Text, View } from "react-native";
|
|
8
8
|
<% } %>
|
|
9
9
|
import { StatusBar } from "expo-status-bar";
|
|
10
10
|
|
|
11
11
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
12
12
|
|
|
13
13
|
export default function Modal() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
14
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
15
|
+
return (
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
18
|
+
<Text className={styles.title}>Modal</Text>
|
|
19
|
+
<View className={styles.separator} />
|
|
20
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
21
|
+
</View>
|
|
22
|
+
)
|
|
23
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
24
|
+
return (
|
|
25
|
+
<Theme name="light">
|
|
26
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
27
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
28
|
+
<Paragraph>Modal</Paragraph>
|
|
29
|
+
<Separator />
|
|
30
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
31
|
+
</YStack>
|
|
32
|
+
</Theme>
|
|
33
|
+
);
|
|
34
|
+
<% } else { %>
|
|
35
|
+
return (
|
|
36
|
+
<View style={styles.container}>
|
|
37
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
38
|
+
<Text style={styles.title}>Modal</Text>
|
|
39
|
+
<View style={styles.separator} />
|
|
40
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
41
|
+
</View>
|
|
42
|
+
);
|
|
43
|
+
<% } %>
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const styles = {
|
|
48
|
+
container: "items-center flex-1 justify-center",
|
|
49
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
50
|
+
title: "text-xl font-bold"
|
|
51
|
+
};
|
|
50
52
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
const styles = StyleSheet.create({
|
|
54
|
+
container: {
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
flex: 1,
|
|
57
|
+
justifyContent: "center"
|
|
58
|
+
},
|
|
59
|
+
separator: {
|
|
60
|
+
backgroundColor: "gray",
|
|
61
|
+
height: 1,
|
|
62
|
+
marginVertical: 30,
|
|
63
|
+
opacity: 0.25,
|
|
64
|
+
width: "80%",
|
|
65
|
+
},
|
|
66
|
+
title: {
|
|
67
|
+
fontSize: 20,
|
|
68
|
+
fontWeight: "bold"
|
|
69
|
+
}
|
|
70
|
+
});
|
|
69
71
|
<% } %>
|
|
@@ -1,64 +1,66 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
|
-
|
|
6
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
8
8
|
|
|
9
9
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
10
10
|
|
|
11
11
|
export default function TabOneScreen() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
12
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
|
+
return (
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab One</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
|
+
return (
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab One</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
31
|
+
return (
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab One</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const styles = {
|
|
43
|
+
container: "items-center flex-1 justify-center",
|
|
44
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
45
|
+
title: "text-xl font-bold"
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
backgroundColor: "gray",
|
|
56
|
+
height: 1,
|
|
57
|
+
marginVertical: 30,
|
|
58
|
+
opacity: 0.25,
|
|
59
|
+
width: "80%",
|
|
60
|
+
},
|
|
61
|
+
title: {
|
|
62
|
+
fontSize: 20,
|
|
63
|
+
fontWeight: "bold",
|
|
64
|
+
}
|
|
65
|
+
});
|
|
64
66
|
<% } %>
|
|
@@ -1,64 +1,66 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
|
-
|
|
6
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
8
8
|
|
|
9
9
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
10
10
|
|
|
11
11
|
export default function TabTwoScreen() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
12
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
|
+
return (
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab Two</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
|
+
return (
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab Two</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
31
|
+
return (
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab Two</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const styles = {
|
|
43
|
+
container: "items-center flex-1 justify-center",
|
|
44
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
45
|
+
title: "text-xl font-bold"
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
backgroundColor: "gray",
|
|
56
|
+
height: 1,
|
|
57
|
+
marginVertical: 30,
|
|
58
|
+
opacity: 0.25,
|
|
59
|
+
width: "80%",
|
|
60
|
+
},
|
|
61
|
+
title: {
|
|
62
|
+
fontSize: 20,
|
|
63
|
+
fontWeight: "bold",
|
|
64
|
+
}
|
|
65
|
+
});
|
|
64
66
|
<% } %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import 'react-native-url-polyfill/auto';
|
|
2
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
3
|
+
import { createClient } from '@supabase/supabase-js';
|
|
4
|
+
|
|
5
|
+
const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL;
|
|
6
|
+
const supabaseAnonKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
|
|
7
|
+
|
|
8
|
+
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
|
|
9
|
+
auth: {
|
|
10
|
+
storage: AsyncStorage,
|
|
11
|
+
autoRefreshToken: true,
|
|
12
|
+
persistSession: true,
|
|
13
|
+
detectSessionInUrl: false,
|
|
14
|
+
},
|
|
15
|
+
});
|