@rownd/react-native 0.1.3 → 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.
- package/lib/commonjs/hooks/api.js +3 -5
- package/lib/commonjs/hooks/api.js.map +1 -1
- package/lib/module/hooks/api.js +1 -4
- package/lib/module/hooks/api.js.map +1 -1
- package/lib/package.json +178 -0
- package/lib/typescript/{components → src/components}/AuthenticatedComponent.d.ts +0 -0
- package/lib/typescript/{components → src/components}/AutoSigninDialog.d.ts +0 -0
- package/lib/typescript/{components → src/components}/DefaultContext.d.ts +0 -0
- package/lib/typescript/{components → src/components}/GlobalContext.d.ts +0 -0
- package/lib/typescript/{components → src/components}/RowndComponents.d.ts +0 -0
- package/lib/typescript/{components → src/components}/RowndProvider.d.ts +0 -0
- package/lib/typescript/{components → src/components}/SignIn.d.ts +0 -0
- package/lib/typescript/{data → src/data}/actions.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/api.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/debounce.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/fingerprint.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/index.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/interval.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/nav.d.ts +0 -0
- package/lib/typescript/{hooks → src/hooks}/rownd.d.ts +0 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
- package/lib/typescript/{tailwind.config.d.ts → src/tailwind.config.d.ts} +0 -0
- package/lib/typescript/{types.d.ts → src/types.d.ts} +0 -0
- package/lib/typescript/{utils → src/utils}/config.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/events.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/form.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/queue.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/storage.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/tailwind.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/tokens.d.ts +0 -0
- package/lib/typescript/{utils → src/utils}/user-data.d.ts +0 -0
- package/package.json +4 -3
- package/src/hooks/api.ts +1 -2
|
@@ -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
|
-
|
|
23
|
+
var _package = _interopRequireDefault(require("../../package.json"));
|
|
26
24
|
|
|
27
|
-
|
|
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/${
|
|
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":["
|
|
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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"}
|
package/lib/module/hooks/api.js
CHANGED
|
@@ -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","
|
|
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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"}
|
package/lib/package.json
ADDED
|
@@ -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
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rownd/react-native",
|
|
3
|
-
"version": "0.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
|
-
"
|
|
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
|
-
|
|
10
|
+
import packageJson from '../../package.json';
|
|
12
11
|
|
|
13
12
|
type RefreshTokenResp = {
|
|
14
13
|
access_token: string;
|