@oxyhq/services 5.8.11 → 5.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/lib/commonjs/core/index.js +192 -346
  2. package/lib/commonjs/core/index.js.map +1 -1
  3. package/lib/commonjs/index.js +6 -0
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/node/index.js +0 -9
  6. package/lib/commonjs/node/index.js.map +1 -1
  7. package/lib/commonjs/types/middleware.js +6 -0
  8. package/lib/commonjs/types/middleware.js.map +1 -0
  9. package/lib/commonjs/ui/components/OxyProvider.js +3 -9
  10. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  11. package/lib/commonjs/ui/screens/FeedbackScreen.js +0 -4
  12. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  13. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +0 -4
  14. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  15. package/lib/commonjs/ui/screens/SignInScreen.js +16 -27
  16. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  17. package/lib/commonjs/ui/screens/SignUpScreen.js +4 -18
  18. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  19. package/lib/commonjs/ui/styles/authStyles.js +1 -2
  20. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  21. package/lib/module/core/index.js +190 -345
  22. package/lib/module/core/index.js.map +1 -1
  23. package/lib/module/index.js +4 -0
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/module/node/index.js +0 -4
  26. package/lib/module/node/index.js.map +1 -1
  27. package/lib/module/types/middleware.js +4 -0
  28. package/lib/module/types/middleware.js.map +1 -0
  29. package/lib/module/ui/components/OxyProvider.js +3 -9
  30. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  31. package/lib/module/ui/screens/FeedbackScreen.js +0 -4
  32. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  33. package/lib/module/ui/screens/RecoverAccountScreen.js +0 -4
  34. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  35. package/lib/module/ui/screens/SignInScreen.js +16 -27
  36. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  37. package/lib/module/ui/screens/SignUpScreen.js +4 -18
  38. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  39. package/lib/module/ui/styles/authStyles.js +1 -2
  40. package/lib/module/ui/styles/authStyles.js.map +1 -1
  41. package/lib/typescript/core/index.d.ts +34 -86
  42. package/lib/typescript/core/index.d.ts.map +1 -1
  43. package/lib/typescript/index.d.ts +2 -0
  44. package/lib/typescript/index.d.ts.map +1 -1
  45. package/lib/typescript/node/index.d.ts +0 -2
  46. package/lib/typescript/node/index.d.ts.map +1 -1
  47. package/lib/typescript/types/middleware.d.ts +19 -0
  48. package/lib/typescript/types/middleware.d.ts.map +1 -0
  49. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  50. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  51. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  52. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  53. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  54. package/lib/typescript/ui/styles/authStyles.d.ts +0 -1
  55. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  56. package/package.json +6 -6
  57. package/src/core/index.ts +196 -328
  58. package/src/index.ts +4 -0
  59. package/src/node/index.ts +0 -4
  60. package/src/types/middleware.ts +20 -0
  61. package/src/ui/components/OxyProvider.tsx +3 -9
  62. package/src/ui/screens/FeedbackScreen.tsx +0 -4
  63. package/src/ui/screens/RecoverAccountScreen.tsx +0 -4
  64. package/src/ui/screens/SignInScreen.tsx +16 -20
  65. package/src/ui/screens/SignUpScreen.tsx +4 -14
  66. package/src/ui/styles/authStyles.ts +0 -1
  67. package/lib/commonjs/node/createAuth.js +0 -95
  68. package/lib/commonjs/node/createAuth.js.map +0 -1
  69. package/lib/module/node/createAuth.js +0 -90
  70. package/lib/module/node/createAuth.js.map +0 -1
  71. package/lib/typescript/node/createAuth.d.ts +0 -7
  72. package/lib/typescript/node/createAuth.d.ts.map +0 -1
  73. package/src/node/createAuth.ts +0 -116
@@ -0,0 +1,20 @@
1
+ import type { Request } from 'express';
2
+
3
+ /**
4
+ * Interface for requests with full user object
5
+ */
6
+ export interface AuthRequest extends Request {
7
+ user?: any;
8
+ userId?: string;
9
+ accessToken?: string;
10
+ }
11
+
12
+ /**
13
+ * Interface for requests with just user ID
14
+ */
15
+ export interface SimpleAuthRequest extends Request {
16
+ user?: {
17
+ id: string;
18
+ };
19
+ userId?: string;
20
+ }
@@ -148,9 +148,6 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
148
148
  console.log('Bottom sheet ref methods exposed:', Object.keys(bottomSheetRef.current));
149
149
  }
150
150
  }, [bottomSheetRef, modalRef]);
151
- // Track if the bottom sheet is expanded
152
- const [isSheetExpanded, setIsSheetExpanded] = useState(false);
153
-
154
151
  // Keyboard handling (unchanged)
155
152
  const [keyboardVisible, setKeyboardVisible] = useState(false);
156
153
  const insets = useSafeAreaInsets();
@@ -159,7 +156,7 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
159
156
  Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow',
160
157
  () => {
161
158
  setKeyboardVisible(true);
162
- if (modalRef.current && !isSheetExpanded) {
159
+ if (modalRef.current) {
163
160
  requestAnimationFrame(() => {
164
161
  modalRef.current?.expand?.();
165
162
  });
@@ -176,7 +173,7 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
176
173
  keyboardWillShowListener.remove();
177
174
  keyboardWillHideListener.remove();
178
175
  };
179
- }, [isSheetExpanded]);
176
+ }, []);
180
177
  // Present the modal when component mounts, but only if autoPresent is true
181
178
  useEffect(() => {
182
179
  if (bottomSheetRef && modalRef.current) {
@@ -292,10 +289,7 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
292
289
  width: 40,
293
290
  height: 4,
294
291
  }}
295
- onChange={(index) => {
296
- setIsSheetExpanded(index === 0);
297
- handleSheetChanges?.(index);
298
- }}
292
+ onChange={handleSheetChanges}
299
293
  style={styles.bottomSheetContainer}
300
294
  keyboardBehavior="interactive"
301
295
  keyboardBlurBehavior="restore"
@@ -1034,8 +1034,6 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
1034
1034
  <KeyboardAvoidingView
1035
1035
  style={[styles.container, { backgroundColor: colors.background }]}
1036
1036
  behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
1037
- keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}
1038
- enabled={Platform.OS !== 'web'}
1039
1037
  >
1040
1038
  <StatusBar
1041
1039
  barStyle={theme === 'dark' ? 'light-content' : 'dark-content'}
@@ -1046,8 +1044,6 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
1046
1044
  contentContainerStyle={styles.scrollContent}
1047
1045
  showsVerticalScrollIndicator={false}
1048
1046
  keyboardShouldPersistTaps="handled"
1049
- keyboardDismissMode="interactive"
1050
- automaticallyAdjustKeyboardInsets={Platform.OS === 'ios'}
1051
1047
  >
1052
1048
  {feedbackState.status !== 'success' && (
1053
1049
  <ProgressIndicator currentStep={currentStep} totalSteps={4} colors={colors} styles={styles} />
@@ -108,8 +108,6 @@ const RecoverAccountScreen: React.FC<RecoverAccountScreenProps> = ({ navigate, g
108
108
  <KeyboardAvoidingView
109
109
  style={[styles.container, { backgroundColor: colors.background }]}
110
110
  behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
111
- keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}
112
- enabled={Platform.OS !== 'web'}
113
111
  >
114
112
  <StatusBar
115
113
  barStyle={theme === 'dark' ? 'light-content' : 'dark-content'}
@@ -119,8 +117,6 @@ const RecoverAccountScreen: React.FC<RecoverAccountScreenProps> = ({ navigate, g
119
117
  contentContainerStyle={styles.scrollContent}
120
118
  showsVerticalScrollIndicator={false}
121
119
  keyboardShouldPersistTaps="handled"
122
- keyboardDismissMode="interactive"
123
- automaticallyAdjustKeyboardInsets={Platform.OS === 'ios'}
124
120
  >
125
121
  <Animated.View style={[
126
122
  styles.stepContainer,
@@ -66,13 +66,6 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
66
66
  const logoAnim = useRef(new Animated.Value(0)).current;
67
67
  const progressAnim = useRef(new Animated.Value(initialStep ? 1.0 : 0.5)).current;
68
68
 
69
- // Ensure animations are properly initialized
70
- useEffect(() => {
71
- fadeAnim.setValue(1);
72
- slideAnim.setValue(0);
73
- scaleAnim.setValue(1);
74
- }, [fadeAnim, slideAnim, scaleAnim]);
75
-
76
69
  const { login, isLoading, user, isAuthenticated, sessions, oxyServices } = useOxy();
77
70
 
78
71
  const colors = useThemeColors(theme);
@@ -236,10 +229,17 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
236
229
 
237
230
  // Animation functions
238
231
  const animateTransition = useCallback((nextStep: number) => {
239
- // Use a shorter fade out duration to minimize white flash
232
+ // Scale down current content
233
+ Animated.timing(scaleAnim, {
234
+ toValue: 0.95,
235
+ duration: 150,
236
+ useNativeDriver: Platform.OS !== 'web',
237
+ }).start();
238
+
239
+ // Fade out
240
240
  Animated.timing(fadeAnim, {
241
- toValue: 0.3, // Don't fade completely to 0, keep some opacity
242
- duration: 100, // Faster fade out
241
+ toValue: 0,
242
+ duration: 200,
243
243
  useNativeDriver: Platform.OS !== 'web',
244
244
  }).start(() => {
245
245
  setCurrentStep(nextStep);
@@ -248,23 +248,23 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
248
248
  slideAnim.setValue(-50);
249
249
  scaleAnim.setValue(0.95);
250
250
 
251
- // Animate in new content with faster timing
251
+ // Animate in new content
252
252
  Animated.parallel([
253
253
  Animated.timing(fadeAnim, {
254
254
  toValue: 1,
255
- duration: 200, // Faster fade in
255
+ duration: 300,
256
256
  useNativeDriver: Platform.OS !== 'web',
257
257
  }),
258
258
  Animated.spring(slideAnim, {
259
259
  toValue: 0,
260
- tension: 100, // Higher tension for faster animation
261
- friction: 6, // Lower friction for faster animation
260
+ tension: 80,
261
+ friction: 8,
262
262
  useNativeDriver: Platform.OS !== 'web',
263
263
  }),
264
264
  Animated.spring(scaleAnim, {
265
265
  toValue: 1,
266
- tension: 100, // Higher tension for faster animation
267
- friction: 6, // Lower friction for faster animation
266
+ tension: 80,
267
+ friction: 8,
268
268
  useNativeDriver: Platform.OS !== 'web',
269
269
  })
270
270
  ]).start();
@@ -407,8 +407,6 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
407
407
  <KeyboardAvoidingView
408
408
  style={[styles.container, { backgroundColor: colors.background }]}
409
409
  behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
410
- keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}
411
- enabled={Platform.OS !== 'web'}
412
410
  >
413
411
  <StatusBar
414
412
  barStyle={theme === 'dark' ? 'light-content' : 'dark-content'}
@@ -419,8 +417,6 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
419
417
  contentContainerStyle={styles.scrollContent}
420
418
  showsVerticalScrollIndicator={false}
421
419
  keyboardShouldPersistTaps="handled"
422
- keyboardDismissMode="interactive"
423
- automaticallyAdjustKeyboardInsets={Platform.OS === 'ios'}
424
420
  >
425
421
  {renderCurrentStep()}
426
422
  </ScrollView>
@@ -634,12 +634,6 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
634
634
  const fadeAnim = useRef(new Animated.Value(1)).current;
635
635
  const slideAnim = useRef(new Animated.Value(0)).current;
636
636
 
637
- // Ensure animations are properly initialized
638
- useEffect(() => {
639
- fadeAnim.setValue(1);
640
- slideAnim.setValue(0);
641
- }, [fadeAnim, slideAnim]);
642
-
643
637
  // Memoized styles
644
638
  const styles = useMemo(() => createAuthStyles(colors, theme), [colors, theme]);
645
639
 
@@ -659,8 +653,8 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
659
653
  // Animation functions
660
654
  const animateTransition = useCallback((nextStep: number) => {
661
655
  Animated.timing(fadeAnim, {
662
- toValue: 0.3, // Don't fade completely to 0, keep some opacity
663
- duration: 100, // Faster fade out
656
+ toValue: 0,
657
+ duration: 250,
664
658
  useNativeDriver: Platform.OS !== 'web',
665
659
  }).start(() => {
666
660
  setCurrentStep(nextStep);
@@ -669,12 +663,12 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
669
663
  Animated.parallel([
670
664
  Animated.timing(fadeAnim, {
671
665
  toValue: 1,
672
- duration: 200, // Faster fade in
666
+ duration: 250,
673
667
  useNativeDriver: Platform.OS !== 'web',
674
668
  }),
675
669
  Animated.timing(slideAnim, {
676
670
  toValue: 0,
677
- duration: 250, // Slightly faster slide
671
+ duration: 300,
678
672
  useNativeDriver: Platform.OS !== 'web',
679
673
  })
680
674
  ]).start();
@@ -831,8 +825,6 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
831
825
  <KeyboardAvoidingView
832
826
  style={[styles.container, { backgroundColor: colors.background }]}
833
827
  behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
834
- keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : 20}
835
- enabled={Platform.OS !== 'web'}
836
828
  >
837
829
  <StatusBar
838
830
  barStyle={theme === 'dark' ? 'light-content' : 'dark-content'}
@@ -842,8 +834,6 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
842
834
  contentContainerStyle={styles.scrollContent}
843
835
  showsVerticalScrollIndicator={false}
844
836
  keyboardShouldPersistTaps="handled"
845
- keyboardDismissMode="interactive"
846
- automaticallyAdjustKeyboardInsets={Platform.OS === 'ios'}
847
837
  >
848
838
  {renderCurrentStep()}
849
839
  </ScrollView>
@@ -29,7 +29,6 @@ export const createAuthStyles = (colors: AuthThemeColors, theme: string) => Styl
29
29
  flex: 1,
30
30
  justifyContent: 'flex-start',
31
31
  alignItems: 'flex-start',
32
- backgroundColor: colors.background, // Ensure background is maintained during transitions
33
32
  },
34
33
 
35
34
  // Header styles
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createAuth = createAuth;
7
- var _express = _interopRequireDefault(require("express"));
8
- var _core = require("../core");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- function createAuth(options) {
11
- const oxy = new _core.OxyServices({
12
- baseURL: options.baseURL
13
- });
14
- const router = _express.default.Router();
15
-
16
- // Helper to handle async route functions
17
- const wrap = fn => async (req, res) => {
18
- try {
19
- await fn(req, res);
20
- } catch (err) {
21
- res.status(err?.status || 500).json({
22
- message: err?.message || 'Server error'
23
- });
24
- }
25
- };
26
- router.post('/signup', wrap(async (req, res) => {
27
- const {
28
- username,
29
- email,
30
- password
31
- } = req.body;
32
- const result = await oxy.signUp(username, email, password);
33
- res.json(result);
34
- }));
35
- router.post('/login', wrap(async (req, res) => {
36
- const {
37
- username,
38
- password
39
- } = req.body;
40
- const result = await oxy.login(username, password);
41
- res.json(result);
42
- }));
43
- router.post('/logout', wrap(async (req, res) => {
44
- const token = req.headers.authorization?.split(' ')[1];
45
- const refreshToken = req.body.refreshToken;
46
- if (token) oxy.setTokens(token, refreshToken);
47
- await oxy.logout();
48
- res.json({
49
- success: true
50
- });
51
- }));
52
- router.post('/refresh', wrap(async (req, res) => {
53
- const refreshToken = req.body.refreshToken;
54
- const accessToken = req.headers.authorization?.split(' ')[1] || '';
55
- oxy.setTokens(accessToken, refreshToken);
56
- const tokens = await oxy.refreshTokens();
57
- res.json(tokens);
58
- }));
59
- router.get('/validate', wrap(async (req, res) => {
60
- const token = req.headers.authorization?.split(' ')[1] || '';
61
- oxy.setTokens(token, '');
62
- const valid = await oxy.validate();
63
- res.json({
64
- valid
65
- });
66
- }));
67
- router.get('/sessions', wrap(async (req, res) => {
68
- const token = req.headers.authorization?.split(' ')[1] || '';
69
- oxy.setTokens(token, '');
70
- const sessions = await oxy.getUserSessions();
71
- res.json(sessions);
72
- }));
73
- router.delete('/sessions/:id', wrap(async (req, res) => {
74
- const token = req.headers.authorization?.split(' ')[1] || '';
75
- oxy.setTokens(token, '');
76
- const result = await oxy.logoutSession(req.params.id);
77
- res.json(result);
78
- }));
79
- router.post('/sessions/logout-others', wrap(async (req, res) => {
80
- const token = req.headers.authorization?.split(' ')[1] || '';
81
- oxy.setTokens(token, '');
82
- const result = await oxy.logoutOtherSessions();
83
- res.json(result);
84
- }));
85
- router.post('/sessions/logout-all', wrap(async (req, res) => {
86
- const token = req.headers.authorization?.split(' ')[1] || '';
87
- oxy.setTokens(token, '');
88
- const result = await oxy.logoutAllSessions();
89
- res.json(result);
90
- }));
91
- return {
92
- middleware: router
93
- };
94
- }
95
- //# sourceMappingURL=createAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_express","_interopRequireDefault","require","_core","e","__esModule","default","createAuth","options","oxy","OxyServices","baseURL","router","express","Router","wrap","fn","req","res","err","status","json","message","post","username","email","password","body","result","signUp","login","token","headers","authorization","split","refreshToken","setTokens","logout","success","accessToken","tokens","refreshTokens","get","valid","validate","sessions","getUserSessions","delete","logoutSession","params","id","logoutOtherSessions","logoutAllSessions","middleware"],"sourceRoot":"../../../src","sources":["node/createAuth.ts"],"mappings":"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","ignoreList":[]}
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- import express from 'express';
4
- import { OxyServices } from '../core';
5
- export function createAuth(options) {
6
- const oxy = new OxyServices({
7
- baseURL: options.baseURL
8
- });
9
- const router = express.Router();
10
-
11
- // Helper to handle async route functions
12
- const wrap = fn => async (req, res) => {
13
- try {
14
- await fn(req, res);
15
- } catch (err) {
16
- res.status(err?.status || 500).json({
17
- message: err?.message || 'Server error'
18
- });
19
- }
20
- };
21
- router.post('/signup', wrap(async (req, res) => {
22
- const {
23
- username,
24
- email,
25
- password
26
- } = req.body;
27
- const result = await oxy.signUp(username, email, password);
28
- res.json(result);
29
- }));
30
- router.post('/login', wrap(async (req, res) => {
31
- const {
32
- username,
33
- password
34
- } = req.body;
35
- const result = await oxy.login(username, password);
36
- res.json(result);
37
- }));
38
- router.post('/logout', wrap(async (req, res) => {
39
- const token = req.headers.authorization?.split(' ')[1];
40
- const refreshToken = req.body.refreshToken;
41
- if (token) oxy.setTokens(token, refreshToken);
42
- await oxy.logout();
43
- res.json({
44
- success: true
45
- });
46
- }));
47
- router.post('/refresh', wrap(async (req, res) => {
48
- const refreshToken = req.body.refreshToken;
49
- const accessToken = req.headers.authorization?.split(' ')[1] || '';
50
- oxy.setTokens(accessToken, refreshToken);
51
- const tokens = await oxy.refreshTokens();
52
- res.json(tokens);
53
- }));
54
- router.get('/validate', wrap(async (req, res) => {
55
- const token = req.headers.authorization?.split(' ')[1] || '';
56
- oxy.setTokens(token, '');
57
- const valid = await oxy.validate();
58
- res.json({
59
- valid
60
- });
61
- }));
62
- router.get('/sessions', wrap(async (req, res) => {
63
- const token = req.headers.authorization?.split(' ')[1] || '';
64
- oxy.setTokens(token, '');
65
- const sessions = await oxy.getUserSessions();
66
- res.json(sessions);
67
- }));
68
- router.delete('/sessions/:id', wrap(async (req, res) => {
69
- const token = req.headers.authorization?.split(' ')[1] || '';
70
- oxy.setTokens(token, '');
71
- const result = await oxy.logoutSession(req.params.id);
72
- res.json(result);
73
- }));
74
- router.post('/sessions/logout-others', wrap(async (req, res) => {
75
- const token = req.headers.authorization?.split(' ')[1] || '';
76
- oxy.setTokens(token, '');
77
- const result = await oxy.logoutOtherSessions();
78
- res.json(result);
79
- }));
80
- router.post('/sessions/logout-all', wrap(async (req, res) => {
81
- const token = req.headers.authorization?.split(' ')[1] || '';
82
- oxy.setTokens(token, '');
83
- const result = await oxy.logoutAllSessions();
84
- res.json(result);
85
- }));
86
- return {
87
- middleware: router
88
- };
89
- }
90
- //# sourceMappingURL=createAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["express","OxyServices","createAuth","options","oxy","baseURL","router","Router","wrap","fn","req","res","err","status","json","message","post","username","email","password","body","result","signUp","login","token","headers","authorization","split","refreshToken","setTokens","logout","success","accessToken","tokens","refreshTokens","get","valid","validate","sessions","getUserSessions","delete","logoutSession","params","id","logoutOtherSessions","logoutAllSessions","middleware"],"sourceRoot":"../../../src","sources":["node/createAuth.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- export interface CreateAuthOptions {
2
- baseURL: string;
3
- }
4
- export declare function createAuth(options: CreateAuthOptions): {
5
- middleware: any;
6
- };
7
- //# sourceMappingURL=createAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createAuth.d.ts","sourceRoot":"","sources":["../../../src/node/createAuth.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB;;EA2GpD"}
@@ -1,116 +0,0 @@
1
- import express from 'express';
2
- import type { Request, Response } from 'express';
3
- import { OxyServices } from '../core';
4
-
5
- export interface CreateAuthOptions {
6
- baseURL: string;
7
- }
8
-
9
- export function createAuth(options: CreateAuthOptions) {
10
- const oxy = new OxyServices({ baseURL: options.baseURL });
11
- const router = express.Router();
12
-
13
- // Helper to handle async route functions
14
- const wrap = (fn: (req: Request, res: Response) => Promise<any>) => async (
15
- req: Request,
16
- res: Response
17
- ) => {
18
- try {
19
- await fn(req, res);
20
- } catch (err: any) {
21
- res.status(err?.status || 500).json({ message: err?.message || 'Server error' });
22
- }
23
- };
24
-
25
- router.post(
26
- '/signup',
27
- wrap(async (req, res) => {
28
- const { username, email, password } = req.body;
29
- const result = await oxy.signUp(username, email, password);
30
- res.json(result);
31
- })
32
- );
33
-
34
- router.post(
35
- '/login',
36
- wrap(async (req, res) => {
37
- const { username, password } = req.body;
38
- const result = await oxy.login(username, password);
39
- res.json(result);
40
- })
41
- );
42
-
43
- router.post(
44
- '/logout',
45
- wrap(async (req, res) => {
46
- const token = req.headers.authorization?.split(' ')[1];
47
- const refreshToken = req.body.refreshToken;
48
- if (token) oxy.setTokens(token, refreshToken);
49
- await oxy.logout();
50
- res.json({ success: true });
51
- })
52
- );
53
-
54
- router.post(
55
- '/refresh',
56
- wrap(async (req, res) => {
57
- const refreshToken = req.body.refreshToken;
58
- const accessToken = req.headers.authorization?.split(' ')[1] || '';
59
- oxy.setTokens(accessToken, refreshToken);
60
- const tokens = await oxy.refreshTokens();
61
- res.json(tokens);
62
- })
63
- );
64
-
65
- router.get(
66
- '/validate',
67
- wrap(async (req, res) => {
68
- const token = req.headers.authorization?.split(' ')[1] || '';
69
- oxy.setTokens(token, '');
70
- const valid = await oxy.validate();
71
- res.json({ valid });
72
- })
73
- );
74
-
75
- router.get(
76
- '/sessions',
77
- wrap(async (req, res) => {
78
- const token = req.headers.authorization?.split(' ')[1] || '';
79
- oxy.setTokens(token, '');
80
- const sessions = await oxy.getUserSessions();
81
- res.json(sessions);
82
- })
83
- );
84
-
85
- router.delete(
86
- '/sessions/:id',
87
- wrap(async (req, res) => {
88
- const token = req.headers.authorization?.split(' ')[1] || '';
89
- oxy.setTokens(token, '');
90
- const result = await oxy.logoutSession(req.params.id);
91
- res.json(result);
92
- })
93
- );
94
-
95
- router.post(
96
- '/sessions/logout-others',
97
- wrap(async (req, res) => {
98
- const token = req.headers.authorization?.split(' ')[1] || '';
99
- oxy.setTokens(token, '');
100
- const result = await oxy.logoutOtherSessions();
101
- res.json(result);
102
- })
103
- );
104
-
105
- router.post(
106
- '/sessions/logout-all',
107
- wrap(async (req, res) => {
108
- const token = req.headers.authorization?.split(' ')[1] || '';
109
- oxy.setTokens(token, '');
110
- const result = await oxy.logoutAllSessions();
111
- res.json(result);
112
- })
113
- );
114
-
115
- return { middleware: router };
116
- }