@rownd/react-native 0.1.1 → 0.1.4

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.
@@ -10,8 +10,6 @@ var _ky = _interopRequireDefault(require("ky"));
10
10
 
11
11
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
12
12
 
13
- var _path = _interopRequireDefault(require("path"));
14
-
15
13
  var _GlobalContext = require("../components/GlobalContext");
16
14
 
17
15
  var _queue = _interopRequireDefault(require("../utils/queue"));
@@ -22,12 +20,12 @@ var _reactNative = require("react-native");
22
20
 
23
21
  var _actions = require("../data/actions");
24
22
 
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ var _package = _interopRequireDefault(require("../../package.json"));
26
24
 
27
- const packageJson = require(_path.default.join(__dirname, '../../package.json'));
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
26
 
29
27
  const refreshQueue = new _queue.default();
30
- const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${_reactNative.Platform.OS};)`;
28
+ const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${_package.default.version} (Language: TypeScript/JavaScript; Platform=${_reactNative.Platform.OS};)`;
31
29
  exports.DEFAULT_USER_AGENT = DEFAULT_USER_AGENT;
32
30
 
33
31
  function useApi() {
@@ -1 +1 @@
1
- {"version":3,"names":["packageJson","require","path","join","__dirname","refreshQueue","AutoQueue","DEFAULT_USER_AGENT","version","Platform","OS","useApi","state","dispatch","useGlobalContext","authRef","useRef","access_token","auth","refresh_token","useEffect","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","jwt_decode","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","ky","post","config","apiUrl","json","type","ActionType","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\nimport path from 'path';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nconst packageJson = require(path.join(__dirname, '../../package.json'));\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["refreshQueue","AutoQueue","DEFAULT_USER_AGENT","packageJson","version","Platform","OS","useApi","state","dispatch","useGlobalContext","authRef","useRef","access_token","auth","refresh_token","useEffect","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","jwt_decode","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","ky","post","config","apiUrl","json","type","ActionType","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nimport packageJson from '../../package.json';\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ content: ['./src/**/*.{js,jsx,ts,tsx}'],
9
+ theme: {
10
+ extend: {}
11
+ },
12
+ plugins: [],
13
+ variants: ['dark'],
14
+ corePlugins: require('tailwind-rn/unsupported-core-plugins')
15
+ };
16
+ exports.default = _default;
17
+ //# sourceMappingURL=tailwind.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["content","theme","extend","plugins","variants","corePlugins","require"],"sources":["tailwind.config.ts"],"sourcesContent":["export default {\n content: ['./src/**/*.{js,jsx,ts,tsx}'],\n theme: {\n extend: {},\n },\n plugins: [],\n variants: ['dark'],\n corePlugins: require('tailwind-rn/unsupported-core-plugins'),\n};\n"],"mappings":";;;;;;eAAe;EACbA,OAAO,EAAE,CAAC,4BAAD,CADI;EAEbC,KAAK,EAAE;IACLC,MAAM,EAAE;EADH,CAFM;EAKbC,OAAO,EAAE,EALI;EAMbC,QAAQ,EAAE,CAAC,MAAD,CANG;EAObC,WAAW,EAAEC,OAAO,CAAC,sCAAD;AAPP,C"}
@@ -7,11 +7,11 @@ exports.default = void 0;
7
7
 
8
8
  var _twrnc = require("twrnc");
9
9
 
10
- var _tailwindConfig = _interopRequireDefault(require("../../tailwind.config.js"));
10
+ var _tailwind = _interopRequireDefault(require("../tailwind.config"));
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- const tw = (0, _twrnc.create)(_tailwindConfig.default);
14
+ const tw = (0, _twrnc.create)(_tailwind.default);
15
15
  var _default = tw;
16
16
  exports.default = _default;
17
17
  //# sourceMappingURL=tailwind.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["tw","create","twConfig"],"sources":["tailwind.ts"],"sourcesContent":["import { create } from 'twrnc';\nimport twConfig from '../../tailwind.config.js';\n\nconst tw = create(twConfig);\n\nexport default tw;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,EAAE,GAAG,IAAAC,aAAA,EAAOC,uBAAP,CAAX;eAEeF,E"}
1
+ {"version":3,"names":["tw","create","twConfig"],"sources":["tailwind.ts"],"sourcesContent":["import { create } from 'twrnc';\nimport twConfig from '../tailwind.config';\n\nconst tw = create(twConfig);\n\nexport default tw;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,EAAE,GAAG,IAAAC,aAAA,EAAOC,iBAAP,CAAX;eAEeF,E"}
@@ -1,14 +1,11 @@
1
1
  import ky from 'ky';
2
2
  import jwt_decode from 'jwt-decode';
3
- import path from 'path';
4
3
  import { useGlobalContext } from '../components/GlobalContext';
5
4
  import AutoQueue from '../utils/queue';
6
5
  import { useRef, useEffect } from 'react';
7
6
  import { Platform } from 'react-native';
8
7
  import { ActionType } from '../data/actions';
9
-
10
- const packageJson = require(path.join(__dirname, '../../package.json'));
11
-
8
+ import packageJson from '../../package.json';
12
9
  const refreshQueue = new AutoQueue();
13
10
  export const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;
14
11
  export default function useApi() {
@@ -1 +1 @@
1
- {"version":3,"names":["ky","jwt_decode","path","useGlobalContext","AutoQueue","useRef","useEffect","Platform","ActionType","packageJson","require","join","__dirname","refreshQueue","DEFAULT_USER_AGENT","version","OS","useApi","state","dispatch","authRef","access_token","auth","refresh_token","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","post","config","apiUrl","json","type","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\nimport path from 'path';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nconst packageJson = require(path.join(__dirname, '../../package.json'));\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ky","jwt_decode","useGlobalContext","AutoQueue","useRef","useEffect","Platform","ActionType","packageJson","refreshQueue","DEFAULT_USER_AGENT","version","OS","useApi","state","dispatch","authRef","access_token","auth","refresh_token","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","post","config","apiUrl","json","type","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nimport packageJson from '../../package.json';\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export default {
2
+ content: ['./src/**/*.{js,jsx,ts,tsx}'],
3
+ theme: {
4
+ extend: {}
5
+ },
6
+ plugins: [],
7
+ variants: ['dark'],
8
+ corePlugins: require('tailwind-rn/unsupported-core-plugins')
9
+ };
10
+ //# sourceMappingURL=tailwind.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["content","theme","extend","plugins","variants","corePlugins","require"],"sources":["tailwind.config.ts"],"sourcesContent":["export default {\n content: ['./src/**/*.{js,jsx,ts,tsx}'],\n theme: {\n extend: {},\n },\n plugins: [],\n variants: ['dark'],\n corePlugins: require('tailwind-rn/unsupported-core-plugins'),\n};\n"],"mappings":"AAAA,eAAe;EACbA,OAAO,EAAE,CAAC,4BAAD,CADI;EAEbC,KAAK,EAAE;IACLC,MAAM,EAAE;EADH,CAFM;EAKbC,OAAO,EAAE,EALI;EAMbC,QAAQ,EAAE,CAAC,MAAD,CANG;EAObC,WAAW,EAAEC,OAAO,CAAC,sCAAD;AAPP,CAAf"}
@@ -1,5 +1,5 @@
1
1
  import { create } from 'twrnc';
2
- import twConfig from '../../tailwind.config.js';
2
+ import twConfig from '../tailwind.config';
3
3
  const tw = create(twConfig);
4
4
  export default tw;
5
5
  //# sourceMappingURL=tailwind.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["create","twConfig","tw"],"sources":["tailwind.ts"],"sourcesContent":["import { create } from 'twrnc';\nimport twConfig from '../../tailwind.config.js';\n\nconst tw = create(twConfig);\n\nexport default tw;\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,0BAArB;AAEA,MAAMC,EAAE,GAAGF,MAAM,CAACC,QAAD,CAAjB;AAEA,eAAeC,EAAf"}
1
+ {"version":3,"names":["create","twConfig","tw"],"sources":["tailwind.ts"],"sourcesContent":["import { create } from 'twrnc';\nimport twConfig from '../tailwind.config';\n\nconst tw = create(twConfig);\n\nexport default tw;\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,oBAArB;AAEA,MAAMC,EAAE,GAAGF,MAAM,CAACC,QAAD,CAAjB;AAEA,eAAeC,EAAf"}
@@ -0,0 +1,178 @@
1
+ {
2
+ "name": "@rownd/react-native",
3
+ "version": "0.1.4",
4
+ "description": "Rownd bindings for React Native",
5
+ "private": false,
6
+ "main": "lib/commonjs/index",
7
+ "module": "lib/module/index",
8
+ "types": "lib/typescript/index.d.ts",
9
+ "react-native": "src/index",
10
+ "source": "src/index",
11
+ "files": [
12
+ "src",
13
+ "lib",
14
+ "android",
15
+ "ios",
16
+ "cpp",
17
+ "package.json",
18
+ "react-native.podspec",
19
+ "!lib/typescript/example",
20
+ "!android/build",
21
+ "!ios/build",
22
+ "!**/__tests__",
23
+ "!**/__fixtures__",
24
+ "!**/__mocks__"
25
+ ],
26
+ "scripts": {
27
+ "test": "jest",
28
+ "typescript": "tsc --noEmit",
29
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
30
+ "prepare": "bob build && cp package.json lib/",
31
+ "release": "release-it",
32
+ "example": "yarn --cwd example",
33
+ "pods": "cd example && pod-install --quiet",
34
+ "bootstrap": "yarn example && yarn && yarn pods"
35
+ },
36
+ "keywords": [
37
+ "react-native",
38
+ "ios",
39
+ "android"
40
+ ],
41
+ "repository": "https://github.com/rownd/react-native",
42
+ "author": "Matt Hamann <mhamann@rownd.io> (https://github.com/rownd)",
43
+ "license": "MIT",
44
+ "bugs": {
45
+ "url": "https://github.com/rownd/react-native/issues"
46
+ },
47
+ "homepage": "https://github.com/rownd/react-native#readme",
48
+ "publishConfig": {
49
+ "registry": "https://registry.npmjs.org/",
50
+ "access": "public"
51
+ },
52
+ "devDependencies": {
53
+ "@commitlint/config-conventional": "^11.0.0",
54
+ "@react-native-community/eslint-config": "^2.0.0",
55
+ "@release-it/conventional-changelog": "^2.0.0",
56
+ "@types/date-fns": "^2.6.0",
57
+ "@types/debounce": "^1.2.1",
58
+ "@types/jest": "^26.0.0",
59
+ "@types/lodash-es": "^4.17.6",
60
+ "@types/phone": "^2.4.1",
61
+ "@types/react": "^17.0.2",
62
+ "@types/react-native": "^0.67.8",
63
+ "@types/react-native-base64": "^0.2.0",
64
+ "commitlint": "^11.0.0",
65
+ "eslint": "^7.2.0",
66
+ "eslint-config-prettier": "^7.0.0",
67
+ "eslint-plugin-prettier": "^3.1.3",
68
+ "expo": "^45.0.5",
69
+ "husky": "^6.0.0",
70
+ "jest": "^26.0.1",
71
+ "pod-install": "^0.1.0",
72
+ "prettier": "^2.0.5",
73
+ "react": "^17.0.2",
74
+ "react-native": "^0.68.2",
75
+ "react-native-builder-bob": "^0.18.0",
76
+ "release-it": "^14.2.2",
77
+ "typescript": "^4.1.3"
78
+ },
79
+ "peerDependencies": {
80
+ "react": "*",
81
+ "react-native": "*"
82
+ },
83
+ "jest": {
84
+ "preset": "react-native",
85
+ "modulePathIgnorePatterns": [
86
+ "<rootDir>/example/node_modules",
87
+ "<rootDir>/lib/"
88
+ ]
89
+ },
90
+ "commitlint": {
91
+ "extends": [
92
+ "@commitlint/config-conventional"
93
+ ]
94
+ },
95
+ "release-it": {
96
+ "git": {
97
+ "commitMessage": "chore: release ${version}",
98
+ "tagName": "v${version}"
99
+ },
100
+ "npm": {
101
+ "publish": true
102
+ },
103
+ "github": {
104
+ "release": true
105
+ },
106
+ "plugins": {
107
+ "@release-it/conventional-changelog": {
108
+ "preset": "angular"
109
+ }
110
+ }
111
+ },
112
+ "eslintConfig": {
113
+ "root": true,
114
+ "extends": [
115
+ "@react-native-community",
116
+ "prettier"
117
+ ],
118
+ "rules": {
119
+ "prettier/prettier": [
120
+ "error",
121
+ {
122
+ "quoteProps": "consistent",
123
+ "singleQuote": true,
124
+ "tabWidth": 2,
125
+ "trailingComma": "es5",
126
+ "useTabs": false
127
+ }
128
+ ]
129
+ }
130
+ },
131
+ "eslintIgnore": [
132
+ "node_modules/",
133
+ "lib/"
134
+ ],
135
+ "prettier": {
136
+ "quoteProps": "consistent",
137
+ "singleQuote": true,
138
+ "tabWidth": 2,
139
+ "trailingComma": "es5",
140
+ "useTabs": false
141
+ },
142
+ "react-native-builder-bob": {
143
+ "source": "src",
144
+ "output": "lib",
145
+ "targets": [
146
+ "commonjs",
147
+ "module",
148
+ [
149
+ "typescript",
150
+ {
151
+ "project": "tsconfig.build.json"
152
+ }
153
+ ]
154
+ ]
155
+ },
156
+ "dependencies": {
157
+ "@expo/vector-icons": "^13.0.0",
158
+ "@gorhom/bottom-sheet": "^4.3.1",
159
+ "@react-native-picker/picker": "^2.4.1",
160
+ "date-fns": "^2.28.0",
161
+ "debounce": "^1.2.1",
162
+ "eventemitter3": "^4.0.7",
163
+ "expo-clipboard": "^3.0.1",
164
+ "expo-linking": "^3.1.0",
165
+ "jwt-decode": "^3.1.2",
166
+ "ky": "^0.30.0",
167
+ "lodash-es": "^4.17.21",
168
+ "phone": "^3.1.20",
169
+ "react-native-base64": "^0.2.1",
170
+ "react-native-device-info": "^9.0.2",
171
+ "react-native-mmkv": "^2.4.1",
172
+ "react-native-sha256": "^1.4.7",
173
+ "react-native-svg": "^12.3.0",
174
+ "tailwind-rn": "^4.2.0",
175
+ "twrnc": "^3.3.2",
176
+ "usehooks-ts": "^2.5.4"
177
+ }
178
+ }
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare function AutoSigninDialog(): JSX.Element;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare function RowndComponents(): JSX.Element;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare function SignIn(): JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare type FormFieldProps = {
2
3
  id?: string;
3
4
  name: string;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@rownd/react-native",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "Rownd bindings for React Native",
5
5
  "private": false,
6
6
  "main": "lib/commonjs/index",
7
7
  "module": "lib/module/index",
8
8
  "types": "lib/typescript/index.d.ts",
9
- "@rownd/react-native": "src/index",
9
+ "react-native": "src/index",
10
10
  "source": "src/index",
11
11
  "files": [
12
12
  "src",
@@ -14,6 +14,7 @@
14
14
  "android",
15
15
  "ios",
16
16
  "cpp",
17
+ "package.json",
17
18
  "react-native.podspec",
18
19
  "!lib/typescript/example",
19
20
  "!android/build",
@@ -26,7 +27,7 @@
26
27
  "test": "jest",
27
28
  "typescript": "tsc --noEmit",
28
29
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
29
- "prepare": "bob build",
30
+ "prepare": "bob build && cp package.json lib/",
30
31
  "release": "release-it",
31
32
  "example": "yarn --cwd example",
32
33
  "pods": "cd example && pod-install --quiet",
package/src/hooks/api.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import ky from 'ky';
2
2
  import jwt_decode, { JwtPayload } from 'jwt-decode';
3
- import path from 'path';
4
3
 
5
4
  import { useGlobalContext, GlobalState } from '../components/GlobalContext';
6
5
  import AutoQueue from '../utils/queue';
@@ -8,7 +7,7 @@ import { useRef, useEffect } from 'react';
8
7
  import { Platform } from 'react-native';
9
8
  import { ActionType } from '../data/actions';
10
9
 
11
- const packageJson = require(path.join(__dirname, '../../package.json'));
10
+ import packageJson from '../../package.json';
12
11
 
13
12
  type RefreshTokenResp = {
14
13
  access_token: string;
@@ -0,0 +1,9 @@
1
+ export default {
2
+ content: ['./src/**/*.{js,jsx,ts,tsx}'],
3
+ theme: {
4
+ extend: {},
5
+ },
6
+ plugins: [],
7
+ variants: ['dark'],
8
+ corePlugins: require('tailwind-rn/unsupported-core-plugins'),
9
+ };
@@ -1,5 +1,5 @@
1
1
  import { create } from 'twrnc';
2
- import twConfig from '../../tailwind.config.js';
2
+ import twConfig from '../tailwind.config';
3
3
 
4
4
  const tw = create(twConfig);
5
5
 
@@ -1,11 +0,0 @@
1
- /**
2
- * Sample React Native App
3
- * https://github.com/facebook/react-native
4
- *
5
- * Generated with the TypeScript template
6
- * https://github.com/react-native-community/react-native-template-typescript
7
- *
8
- * @format
9
- */
10
- declare const App: () => JSX.Element;
11
- export default App;