expo 52.0.37 → 52.0.38
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/android/build.gradle +2 -2
- package/build/winter/FormData.d.ts.map +1 -1
- package/build/winter/fetch/convertFormData.d.ts.map +1 -1
- package/bundledNativeModules.json +8 -8
- package/package.json +8 -8
- package/src/winter/FormData.ts +10 -1
- package/src/winter/__tests__/FormData.test.ios.ts +2 -1
- package/src/winter/fetch/__tests__/convertFormData-test.native.ts +1 -1
- package/src/winter/fetch/convertFormData.ts +14 -0
package/android/build.gradle
CHANGED
|
@@ -33,7 +33,7 @@ def getRNVersion() {
|
|
|
33
33
|
ensureDependeciesWereEvaluated(project)
|
|
34
34
|
|
|
35
35
|
group = 'host.exp.exponent'
|
|
36
|
-
version = '52.0.
|
|
36
|
+
version = '52.0.38'
|
|
37
37
|
|
|
38
38
|
buildscript {
|
|
39
39
|
// Simple helper that allows the root project to override versions declared by this library.
|
|
@@ -46,7 +46,7 @@ android {
|
|
|
46
46
|
namespace "expo.core"
|
|
47
47
|
defaultConfig {
|
|
48
48
|
versionCode 1
|
|
49
|
-
versionName "52.0.
|
|
49
|
+
versionName "52.0.38"
|
|
50
50
|
consumerProguardFiles("proguard-rules.pro")
|
|
51
51
|
}
|
|
52
52
|
testOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormData.d.ts","sourceRoot":"","sources":["../../src/winter/FormData.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GACxB;IAEE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC,GACD;IAEE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GACD;IAEE,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEN,MAAM,CAAC,OAAO,OAAO,YAAY;;IAE/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAC5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAGvD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAChF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAG7E,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC9E,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IACP,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAChC,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;IAC9C,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACpE;
|
|
1
|
+
{"version":3,"file":"FormData.d.ts","sourceRoot":"","sources":["../../src/winter/FormData.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GACxB;IAEE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC,GACD;IAEE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GACD;IAEE,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEN,MAAM,CAAC,OAAO,OAAO,YAAY;;IAE/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAC5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAGvD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAChF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAG7E,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC9E,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IACP,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAChC,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;IAC9C,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACpE;AAkCD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,QAAQ,GAAG,OAAO,YAAY,CAkInF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertFormData.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/convertFormData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,GAAE,MAAyB,GAClC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"convertFormData.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/convertFormData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,GAAE,MAAyB,GAClC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAWhE"}
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"expo-brightness": "~13.0.3",
|
|
28
28
|
"expo-build-properties": "~0.13.2",
|
|
29
29
|
"expo-calendar": "~14.0.6",
|
|
30
|
-
"expo-camera": "~16.0.
|
|
30
|
+
"expo-camera": "~16.0.18",
|
|
31
31
|
"expo-cellular": "~7.0.2",
|
|
32
32
|
"expo-checkbox": "~4.0.1",
|
|
33
33
|
"expo-clipboard": "~7.0.1",
|
|
34
|
-
"expo-constants": "~17.0.
|
|
34
|
+
"expo-constants": "~17.0.8",
|
|
35
35
|
"expo-contacts": "~14.0.5",
|
|
36
36
|
"expo-crypto": "~14.0.2",
|
|
37
|
-
"expo-dev-client": "~5.0.
|
|
37
|
+
"expo-dev-client": "~5.0.13",
|
|
38
38
|
"expo-device": "~7.0.2",
|
|
39
39
|
"expo-document-picker": "~13.0.3",
|
|
40
40
|
"expo-face-detector": "~13.0.2",
|
|
@@ -58,12 +58,12 @@
|
|
|
58
58
|
"expo-mail-composer": "~14.0.2",
|
|
59
59
|
"expo-media-library": "~17.0.6",
|
|
60
60
|
"expo-module-template": "~10.15.13",
|
|
61
|
-
"expo-modules-core": "~2.2.
|
|
61
|
+
"expo-modules-core": "~2.2.3",
|
|
62
62
|
"expo-navigation-bar": "~4.0.8",
|
|
63
63
|
"expo-network": "~7.0.5",
|
|
64
|
-
"expo-notifications": "~0.29.
|
|
64
|
+
"expo-notifications": "~0.29.14",
|
|
65
65
|
"expo-print": "~14.0.3",
|
|
66
|
-
"expo-router": "~4.0.
|
|
66
|
+
"expo-router": "~4.0.18",
|
|
67
67
|
"expo-screen-capture": "~7.0.1",
|
|
68
68
|
"expo-screen-orientation": "~8.0.4",
|
|
69
69
|
"expo-secure-store": "~14.0.1",
|
|
@@ -79,11 +79,11 @@
|
|
|
79
79
|
"expo-system-ui": "~4.0.8",
|
|
80
80
|
"expo-task-manager": "~12.0.5",
|
|
81
81
|
"expo-tracking-transparency": "~5.1.1",
|
|
82
|
-
"expo-updates": "~0.
|
|
82
|
+
"expo-updates": "~0.27.2",
|
|
83
83
|
"expo-video-thumbnails": "~9.0.3",
|
|
84
84
|
"expo-video": "~2.0.5",
|
|
85
85
|
"expo-web-browser": "~14.0.2",
|
|
86
|
-
"jest-expo": "~52.0.
|
|
86
|
+
"jest-expo": "~52.0.6",
|
|
87
87
|
"lottie-react-native": "7.1.0",
|
|
88
88
|
"react": "18.3.1",
|
|
89
89
|
"react-dom": "18.3.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo",
|
|
3
|
-
"version": "52.0.
|
|
3
|
+
"version": "52.0.38",
|
|
4
4
|
"description": "The Expo SDK",
|
|
5
5
|
"main": "src/Expo.ts",
|
|
6
6
|
"module": "src/Expo.ts",
|
|
@@ -68,20 +68,20 @@
|
|
|
68
68
|
"homepage": "https://github.com/expo/expo/tree/main/packages/expo",
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@babel/runtime": "^7.20.0",
|
|
71
|
-
"@expo/cli": "0.22.
|
|
72
|
-
"@expo/config": "~10.0.
|
|
73
|
-
"@expo/config-plugins": "~9.0.
|
|
71
|
+
"@expo/cli": "0.22.19",
|
|
72
|
+
"@expo/config": "~10.0.11",
|
|
73
|
+
"@expo/config-plugins": "~9.0.17",
|
|
74
74
|
"@expo/fingerprint": "0.11.11",
|
|
75
|
-
"@expo/metro-config": "0.19.
|
|
75
|
+
"@expo/metro-config": "0.19.12",
|
|
76
76
|
"@expo/vector-icons": "^14.0.0",
|
|
77
77
|
"babel-preset-expo": "~12.0.9",
|
|
78
78
|
"expo-asset": "~11.0.4",
|
|
79
|
-
"expo-constants": "~17.0.
|
|
79
|
+
"expo-constants": "~17.0.8",
|
|
80
80
|
"expo-file-system": "~18.0.11",
|
|
81
81
|
"expo-font": "~13.0.4",
|
|
82
82
|
"expo-keep-awake": "~14.0.3",
|
|
83
83
|
"expo-modules-autolinking": "2.0.8",
|
|
84
|
-
"expo-modules-core": "2.2.
|
|
84
|
+
"expo-modules-core": "2.2.3",
|
|
85
85
|
"fbemitter": "^3.0.0",
|
|
86
86
|
"web-streams-polyfill": "^3.3.2",
|
|
87
87
|
"whatwg-url-without-unicode": "8.0.0-3"
|
|
@@ -112,5 +112,5 @@
|
|
|
112
112
|
"optional": true
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "1992dd3ba012ec59a646e383b9895ea6b577948b"
|
|
116
116
|
}
|
package/src/winter/FormData.ts
CHANGED
|
@@ -70,7 +70,16 @@ function normalizeArgs(
|
|
|
70
70
|
blobFilename: string | undefined
|
|
71
71
|
): [string, File | string] {
|
|
72
72
|
if (value instanceof Blob) {
|
|
73
|
-
|
|
73
|
+
// @ts-expect-error: `Blob.data.blobId` is react-native's proprietary property.
|
|
74
|
+
if (value.data?.blobId != null) {
|
|
75
|
+
// For react-native created Blob objects,
|
|
76
|
+
// we need to keep its original form as-is without breaking functionality.
|
|
77
|
+
// However, we need to pass `name` for our file name handling.
|
|
78
|
+
// @ts-expect-error: Mutating the Blob object to add the `name` property.
|
|
79
|
+
value.name = blobFilename ?? 'blob';
|
|
80
|
+
} else {
|
|
81
|
+
value = { type: value.type, name: blobFilename ?? 'blob', blob: value };
|
|
82
|
+
}
|
|
74
83
|
} else if (typeof value !== 'object') {
|
|
75
84
|
value = String(value);
|
|
76
85
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-global-assign */
|
|
2
|
-
import {
|
|
2
|
+
import { type ExpoFormData } from '../FormData';
|
|
3
3
|
|
|
4
|
+
const { installFormDataPatch } = jest.requireActual('../FormData');
|
|
4
5
|
const jestFormDataPolyfill = FormData;
|
|
5
6
|
|
|
6
7
|
beforeAll(() => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import RNFormData from 'react-native/Libraries/Network/FormData';
|
|
2
2
|
import { TextDecoder, TextEncoder } from 'util';
|
|
3
3
|
|
|
4
|
-
import { installFormDataPatch } from '../../FormData';
|
|
5
4
|
import { createBoundary, convertFormDataAsync, joinUint8Arrays } from '../convertFormData';
|
|
6
5
|
|
|
7
6
|
// @ts-ignore - TextDecoder and TextEncoder are not defined in native jest environments.
|
|
8
7
|
globalThis.TextDecoder ??= TextDecoder;
|
|
9
8
|
globalThis.TextEncoder ??= TextEncoder;
|
|
10
9
|
|
|
10
|
+
const { installFormDataPatch } = jest.requireActual('../../FormData');
|
|
11
11
|
const ExpoFormData = installFormDataPatch(RNFormData);
|
|
12
12
|
|
|
13
13
|
describe(convertFormDataAsync, () => {
|
|
@@ -30,6 +30,20 @@ export async function convertFormDataAsync(
|
|
|
30
30
|
results.push(entry.file.bytes());
|
|
31
31
|
} else if ('blob' in entry) {
|
|
32
32
|
results.push(new Uint8Array(await blobToArrayBufferAsync(entry.blob)));
|
|
33
|
+
} else if (entry._data?.blobId != null) {
|
|
34
|
+
// When `FormData.getParts()` is called, React Native will use the spread syntax to copy the object and lose the Blob type info.
|
|
35
|
+
// We should find the original Blob instance from the `FormData._parts` internal properties.
|
|
36
|
+
// @ts-expect-error: react-native's proprietary Blob type
|
|
37
|
+
const formDatum = formData._parts?.find(
|
|
38
|
+
([name, value]) => value.data?.blobId === entry._data.blobId
|
|
39
|
+
);
|
|
40
|
+
if (formDatum == null) {
|
|
41
|
+
throw new Error('Cannot find the original Blob instance from FormData');
|
|
42
|
+
}
|
|
43
|
+
if (!(formDatum[1] instanceof Blob)) {
|
|
44
|
+
throw new Error('Unexpected value type for Blob entry in FormData');
|
|
45
|
+
}
|
|
46
|
+
results.push(new Uint8Array(await blobToArrayBufferAsync(formDatum[1])));
|
|
33
47
|
} else {
|
|
34
48
|
throw new Error('Unsupported FormDataPart implementation');
|
|
35
49
|
}
|