@reown/appkit-core-react-native 2.0.4 → 2.0.6
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/utils/FetchUtil.js +39 -6
- package/lib/commonjs/utils/FetchUtil.js.map +1 -1
- package/lib/module/utils/FetchUtil.js +39 -6
- package/lib/module/utils/FetchUtil.js.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts +1 -0
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/utils/FetchUtil.ts +43 -6
|
@@ -83,16 +83,49 @@ class FetchUtil {
|
|
|
83
83
|
const response = await fetch(url, {
|
|
84
84
|
headers
|
|
85
85
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
86
|
+
|
|
87
|
+
// Bail on non-2xx so error bodies aren't base64-encoded into a bogus data
|
|
88
|
+
// URL (RN's `Image` would silently fail instead of showing the placeholder).
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// React Native's `fetch(...).blob()` throws "Creating blobs from
|
|
94
|
+
// 'ArrayBuffer' and 'ArrayBufferView' are not supported" for binary
|
|
95
|
+
// responses, so Blob + FileReader can't be used to build the data URL
|
|
96
|
+
// (wallet/network images would silently fail to load). Read the bytes as
|
|
97
|
+
// an ArrayBuffer and base64-encode them into a data URL instead.
|
|
98
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
99
|
+
// Strip any `; charset=...`/`; quality=...` parameters so the media type
|
|
100
|
+
// doesn't leak into the data URL as `data:image/svg+xml; charset=utf-8;base64,...`,
|
|
101
|
+
// which strict parsers may reject.
|
|
102
|
+
const rawContentType = response.headers.get('content-type') ?? 'image/png';
|
|
103
|
+
const contentType = rawContentType.split(';')[0]?.trim() || 'image/png';
|
|
104
|
+
return `data:${contentType};base64,${FetchUtil._arrayBufferToBase64(arrayBuffer)}`;
|
|
92
105
|
} catch {
|
|
93
106
|
return undefined;
|
|
94
107
|
}
|
|
95
108
|
}
|
|
109
|
+
|
|
110
|
+
// Dependency-free base64 encoder (RN has no global `Buffer`/`btoa` guarantee).
|
|
111
|
+
/* eslint-disable no-bitwise */
|
|
112
|
+
static _arrayBufferToBase64(buffer) {
|
|
113
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
114
|
+
const bytes = new Uint8Array(buffer);
|
|
115
|
+
const parts = [];
|
|
116
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
117
|
+
const byte0 = bytes[i];
|
|
118
|
+
const byte1 = i + 1 < bytes.length ? bytes[i + 1] : 0;
|
|
119
|
+
const byte2 = i + 2 < bytes.length ? bytes[i + 2] : 0;
|
|
120
|
+
parts.push(chars[byte0 >> 2]);
|
|
121
|
+
parts.push(chars[(byte0 & 0x03) << 4 | byte1 >> 4]);
|
|
122
|
+
parts.push(i + 1 < bytes.length ? chars[(byte1 & 0x0f) << 2 | byte2 >> 6] : '=');
|
|
123
|
+
parts.push(i + 2 < bytes.length ? chars[byte2 & 0x3f] : '=');
|
|
124
|
+
}
|
|
125
|
+
return parts.join('');
|
|
126
|
+
}
|
|
127
|
+
/* eslint-enable no-bitwise */
|
|
128
|
+
|
|
96
129
|
createUrl({
|
|
97
130
|
path,
|
|
98
131
|
params
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_LogController","require","FetchUtil","constructor","baseUrl","clientId","get","headers","signal","args","url","createUrl","response","fetch","method","processResponse","post","body","JSON","stringify","undefined","put","delete","fetchImage","path","params","toString","
|
|
1
|
+
{"version":3,"names":["_LogController","require","FetchUtil","constructor","baseUrl","clientId","get","headers","signal","args","url","createUrl","response","fetch","method","processResponse","post","body","JSON","stringify","undefined","put","delete","fetchImage","path","params","toString","ok","arrayBuffer","rawContentType","contentType","split","trim","_arrayBufferToBase64","buffer","chars","bytes","Uint8Array","parts","i","length","byte0","byte1","byte2","push","join","fullUrl","isAbsoluteUrl","startsWith","endsWith","pathUrl","substring","allParams","queryParams","key","value","encodeURIComponent","queryString","includes","errorData","json","LogController","sendError","Promise","reject","jsonError","status","statusText","errorText","text","exports"],"sourceRoot":"../../../src","sources":["utils/FetchUtil.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -80,16 +80,49 @@ export class FetchUtil {
|
|
|
80
80
|
const response = await fetch(url, {
|
|
81
81
|
headers
|
|
82
82
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
83
|
+
|
|
84
|
+
// Bail on non-2xx so error bodies aren't base64-encoded into a bogus data
|
|
85
|
+
// URL (RN's `Image` would silently fail instead of showing the placeholder).
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// React Native's `fetch(...).blob()` throws "Creating blobs from
|
|
91
|
+
// 'ArrayBuffer' and 'ArrayBufferView' are not supported" for binary
|
|
92
|
+
// responses, so Blob + FileReader can't be used to build the data URL
|
|
93
|
+
// (wallet/network images would silently fail to load). Read the bytes as
|
|
94
|
+
// an ArrayBuffer and base64-encode them into a data URL instead.
|
|
95
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
96
|
+
// Strip any `; charset=...`/`; quality=...` parameters so the media type
|
|
97
|
+
// doesn't leak into the data URL as `data:image/svg+xml; charset=utf-8;base64,...`,
|
|
98
|
+
// which strict parsers may reject.
|
|
99
|
+
const rawContentType = response.headers.get('content-type') ?? 'image/png';
|
|
100
|
+
const contentType = rawContentType.split(';')[0]?.trim() || 'image/png';
|
|
101
|
+
return `data:${contentType};base64,${FetchUtil._arrayBufferToBase64(arrayBuffer)}`;
|
|
89
102
|
} catch {
|
|
90
103
|
return undefined;
|
|
91
104
|
}
|
|
92
105
|
}
|
|
106
|
+
|
|
107
|
+
// Dependency-free base64 encoder (RN has no global `Buffer`/`btoa` guarantee).
|
|
108
|
+
/* eslint-disable no-bitwise */
|
|
109
|
+
static _arrayBufferToBase64(buffer) {
|
|
110
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
111
|
+
const bytes = new Uint8Array(buffer);
|
|
112
|
+
const parts = [];
|
|
113
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
114
|
+
const byte0 = bytes[i];
|
|
115
|
+
const byte1 = i + 1 < bytes.length ? bytes[i + 1] : 0;
|
|
116
|
+
const byte2 = i + 2 < bytes.length ? bytes[i + 2] : 0;
|
|
117
|
+
parts.push(chars[byte0 >> 2]);
|
|
118
|
+
parts.push(chars[(byte0 & 0x03) << 4 | byte1 >> 4]);
|
|
119
|
+
parts.push(i + 1 < bytes.length ? chars[(byte1 & 0x0f) << 2 | byte2 >> 6] : '=');
|
|
120
|
+
parts.push(i + 2 < bytes.length ? chars[byte2 & 0x3f] : '=');
|
|
121
|
+
}
|
|
122
|
+
return parts.join('');
|
|
123
|
+
}
|
|
124
|
+
/* eslint-enable no-bitwise */
|
|
125
|
+
|
|
93
126
|
createUrl({
|
|
94
127
|
path,
|
|
95
128
|
params
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LogController","FetchUtil","constructor","baseUrl","clientId","get","headers","signal","args","url","createUrl","response","fetch","method","processResponse","post","body","JSON","stringify","undefined","put","delete","fetchImage","path","params","toString","
|
|
1
|
+
{"version":3,"names":["LogController","FetchUtil","constructor","baseUrl","clientId","get","headers","signal","args","url","createUrl","response","fetch","method","processResponse","post","body","JSON","stringify","undefined","put","delete","fetchImage","path","params","toString","ok","arrayBuffer","rawContentType","contentType","split","trim","_arrayBufferToBase64","buffer","chars","bytes","Uint8Array","parts","i","length","byte0","byte1","byte2","push","join","fullUrl","isAbsoluteUrl","startsWith","endsWith","pathUrl","substring","allParams","queryParams","key","value","encodeURIComponent","queryString","includes","errorData","json","sendError","Promise","reject","jsonError","status","statusText","errorText","text"],"sourceRoot":"../../../src","sources":["utils/FetchUtil.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,6 +22,7 @@ export declare class FetchUtil {
|
|
|
22
22
|
put<T>({ body, headers, signal, ...args }: PostArguments): Promise<T | undefined>;
|
|
23
23
|
delete<T>({ body, headers, signal, ...args }: PostArguments): Promise<T | undefined>;
|
|
24
24
|
fetchImage(path: string, headers?: Record<string, string>, params?: Record<string, string>): Promise<string | undefined>;
|
|
25
|
+
private static _arrayBufferToBase64;
|
|
25
26
|
createUrl({ path, params }: RequestArguments): string;
|
|
26
27
|
private processResponse;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/FetchUtil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,UAAU,aAAc,SAAQ,gBAAgB;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAGD,qBAAa,SAAS;IACb,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAElB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO;IAKpC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB;IAOrD,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAYzD,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAYxD,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAY3D,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FetchUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/FetchUtil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,UAAU,aAAc,SAAQ,gBAAgB;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAGD,qBAAa,SAAS;IACb,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAElB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO;IAKpC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB;IAOrD,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAYzD,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAYxD,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa;IAY3D,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAgCjC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAsB5B,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB;YAsCrC,eAAe;CA+B9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-core-react-native",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"provenance": true
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@reown/appkit-common-react-native": "2.0.
|
|
43
|
+
"@reown/appkit-common-react-native": "2.0.6",
|
|
44
44
|
"countries-and-timezones": "3.7.2",
|
|
45
45
|
"derive-valtio": "0.2.0",
|
|
46
46
|
"valtio": "2.1.8"
|
package/src/utils/FetchUtil.ts
CHANGED
|
@@ -80,18 +80,55 @@ export class FetchUtil {
|
|
|
80
80
|
try {
|
|
81
81
|
const url = this.createUrl({ path, params }).toString();
|
|
82
82
|
const response = await fetch(url, { headers });
|
|
83
|
-
const blob = await response.blob();
|
|
84
|
-
const reader = new FileReader();
|
|
85
|
-
reader.readAsDataURL(blob);
|
|
86
83
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
// Bail on non-2xx so error bodies aren't base64-encoded into a bogus data
|
|
85
|
+
// URL (RN's `Image` would silently fail instead of showing the placeholder).
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// React Native's `fetch(...).blob()` throws "Creating blobs from
|
|
91
|
+
// 'ArrayBuffer' and 'ArrayBufferView' are not supported" for binary
|
|
92
|
+
// responses, so Blob + FileReader can't be used to build the data URL
|
|
93
|
+
// (wallet/network images would silently fail to load). Read the bytes as
|
|
94
|
+
// an ArrayBuffer and base64-encode them into a data URL instead.
|
|
95
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
96
|
+
// Strip any `; charset=...`/`; quality=...` parameters so the media type
|
|
97
|
+
// doesn't leak into the data URL as `data:image/svg+xml; charset=utf-8;base64,...`,
|
|
98
|
+
// which strict parsers may reject.
|
|
99
|
+
const rawContentType = response.headers.get('content-type') ?? 'image/png';
|
|
100
|
+
const contentType = rawContentType.split(';')[0]?.trim() || 'image/png';
|
|
101
|
+
|
|
102
|
+
return `data:${contentType};base64,${FetchUtil._arrayBufferToBase64(arrayBuffer)}`;
|
|
90
103
|
} catch {
|
|
91
104
|
return undefined;
|
|
92
105
|
}
|
|
93
106
|
}
|
|
94
107
|
|
|
108
|
+
// Dependency-free base64 encoder (RN has no global `Buffer`/`btoa` guarantee).
|
|
109
|
+
/* eslint-disable no-bitwise */
|
|
110
|
+
private static _arrayBufferToBase64(buffer: ArrayBuffer): string {
|
|
111
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
112
|
+
const bytes = new Uint8Array(buffer);
|
|
113
|
+
const parts: string[] = [];
|
|
114
|
+
|
|
115
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
116
|
+
const byte0 = bytes[i] as number;
|
|
117
|
+
const byte1 = i + 1 < bytes.length ? (bytes[i + 1] as number) : 0;
|
|
118
|
+
const byte2 = i + 2 < bytes.length ? (bytes[i + 2] as number) : 0;
|
|
119
|
+
|
|
120
|
+
parts.push(chars[byte0 >> 2] as string);
|
|
121
|
+
parts.push(chars[((byte0 & 0x03) << 4) | (byte1 >> 4)] as string);
|
|
122
|
+
parts.push(
|
|
123
|
+
i + 1 < bytes.length ? (chars[((byte1 & 0x0f) << 2) | (byte2 >> 6)] as string) : '='
|
|
124
|
+
);
|
|
125
|
+
parts.push(i + 2 < bytes.length ? (chars[byte2 & 0x3f] as string) : '=');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return parts.join('');
|
|
129
|
+
}
|
|
130
|
+
/* eslint-enable no-bitwise */
|
|
131
|
+
|
|
95
132
|
public createUrl({ path, params }: RequestArguments) {
|
|
96
133
|
let fullUrl: string;
|
|
97
134
|
|