New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

expo

Package Overview
Dependencies
Maintainers
29
Versions
667
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

expo - npm Package Compare versions

Comparing version 53.0.0-canary-20241211-61c49bd to 53.0.0-canary-20250114-804e26d

1

build/dom/webview-wrapper.d.ts
import React from 'react';
import type { DOMProps } from './dom.types';
interface Props {
children?: any;
dom: DOMProps;

@@ -6,0 +5,0 @@ filePath: string;

8

build/winter/fetch/FetchResponse.d.ts
import { ReadableStream } from 'web-streams-polyfill';
import type { NativeResponse } from './NativeRequest';
declare const ConcreteNativeResponse: typeof NativeResponse;
export type AbortSubscriptionCleanupFunction = () => void;
/**

@@ -8,3 +9,6 @@ * A response implementation for the `fetch.Response` API.

export declare class FetchResponse extends ConcreteNativeResponse implements Response {
private streamingStarted;
private readonly abortCleanupFunction;
private streamingState;
private bodyStream;
constructor(abortCleanupFunction: AbortSubscriptionCleanupFunction);
get body(): ReadableStream<Uint8Array> | null;

@@ -20,5 +24,5 @@ get headers(): Headers;

clone(): FetchResponse;
private removeAllRegisteredListeners;
private finalize;
}
export {};
//# sourceMappingURL=FetchResponse.d.ts.map

@@ -16,2 +16,3 @@ import type { SharedObject } from 'expo-modules-core';

didFailWithError(error: string): void;
readyForJSFinalization(): void;
};

@@ -25,3 +26,3 @@ export declare class NativeResponse extends SharedObject<NativeResponseEvents> {

readonly redirected: boolean;
startStreaming(): void;
startStreaming(): Promise<Uint8Array | null>;
cancelStreaming(reason: string): void;

@@ -28,0 +29,0 @@ arrayBuffer(): Promise<ArrayBuffer>;

{
"@expo/metro-runtime": "4.0.1-canary-20241211-61c49bd",
"@expo/metro-runtime": "4.0.1-canary-20250114-804e26d",
"@expo/vector-icons": "^14.0.2",

@@ -13,79 +13,79 @@ "@react-native-async-storage/async-storage": "1.23.1",

"@stripe/stripe-react-native": "0.38.6",
"eslint-config-expo": "8.0.2-canary-20241211-61c49bd",
"eslint-config-expo": "8.0.2-canary-20250114-804e26d",
"expo-analytics-amplitude": "~11.3.0",
"expo-app-auth": "~11.1.0",
"expo-app-loader-provider": "~8.0.0",
"expo-apple-authentication": "7.1.3-canary-20241211-61c49bd",
"expo-application": "6.0.2-canary-20241211-61c49bd",
"expo-asset": "11.0.2-canary-20241211-61c49bd",
"expo-audio": "0.4.0-canary-20241211-61c49bd",
"expo-auth-session": "6.0.2-canary-20241211-61c49bd",
"expo-av": "15.0.2-canary-20241211-61c49bd",
"expo-background-fetch": "13.0.4-canary-20241211-61c49bd",
"expo-battery": "9.0.2-canary-20241211-61c49bd",
"expo-blur": "14.0.2-canary-20241211-61c49bd",
"expo-brightness": "13.0.3-canary-20241211-61c49bd",
"expo-build-properties": "0.13.2-canary-20241211-61c49bd",
"expo-calendar": "14.0.6-canary-20241211-61c49bd",
"expo-camera": "16.1.0-canary-20241211-61c49bd",
"expo-cellular": "7.0.2-canary-20241211-61c49bd",
"expo-checkbox": "4.0.1-canary-20241211-61c49bd",
"expo-clipboard": "7.0.1-canary-20241211-61c49bd",
"expo-constants": "17.0.4-canary-20241211-61c49bd",
"expo-contacts": "14.1.0-canary-20241211-61c49bd",
"expo-crypto": "14.0.2-canary-20241211-61c49bd",
"expo-dev-client": "5.0.7-canary-20241211-61c49bd",
"expo-device": "7.0.2-canary-20241211-61c49bd",
"expo-document-picker": "13.0.2-canary-20241211-61c49bd",
"expo-face-detector": "13.0.2-canary-20241211-61c49bd",
"expo-file-system": "18.1.0-canary-20241211-61c49bd",
"expo-font": "13.0.2-canary-20241211-61c49bd",
"expo-gl": "15.0.3-canary-20241211-61c49bd",
"expo-apple-authentication": "7.1.4-canary-20250114-804e26d",
"expo-application": "6.0.3-canary-20250114-804e26d",
"expo-asset": "11.0.3-canary-20250114-804e26d",
"expo-audio": "0.3.4-canary-20250114-804e26d",
"expo-auth-session": "6.0.3-canary-20250114-804e26d",
"expo-av": "15.0.3-canary-20250114-804e26d",
"expo-background-fetch": "13.0.5-canary-20250114-804e26d",
"expo-battery": "9.0.3-canary-20250114-804e26d",
"expo-blur": "14.0.3-canary-20250114-804e26d",
"expo-brightness": "13.0.4-canary-20250114-804e26d",
"expo-build-properties": "0.13.3-canary-20250114-804e26d",
"expo-calendar": "14.0.7-canary-20250114-804e26d",
"expo-camera": "16.0.12-canary-20250114-804e26d",
"expo-cellular": "7.0.3-canary-20250114-804e26d",
"expo-checkbox": "4.0.2-canary-20250114-804e26d",
"expo-clipboard": "7.0.2-canary-20250114-804e26d",
"expo-constants": "17.0.5-canary-20250114-804e26d",
"expo-contacts": "14.0.4-canary-20250114-804e26d",
"expo-crypto": "14.0.3-canary-20250114-804e26d",
"expo-dev-client": "5.0.10-canary-20250114-804e26d",
"expo-device": "7.0.3-canary-20250114-804e26d",
"expo-document-picker": "13.0.3-canary-20250114-804e26d",
"expo-face-detector": "13.0.3-canary-20250114-804e26d",
"expo-file-system": "18.0.8-canary-20250114-804e26d",
"expo-font": "13.0.4-canary-20250114-804e26d",
"expo-gl": "15.0.4-canary-20250114-804e26d",
"expo-google-app-auth": "~8.3.0",
"expo-haptics": "14.0.1-canary-20241211-61c49bd",
"expo-image": "2.0.4-canary-20241211-61c49bd",
"expo-image-loader": "5.0.1-canary-20241211-61c49bd",
"expo-image-manipulator": "13.0.6-canary-20241211-61c49bd",
"expo-image-picker": "16.0.4-canary-20241211-61c49bd",
"expo-intent-launcher": "12.1.0-canary-20241211-61c49bd",
"expo-insights": "0.8.2-canary-20241211-61c49bd",
"expo-keep-awake": "14.0.2-canary-20241211-61c49bd",
"expo-linear-gradient": "14.0.2-canary-20241211-61c49bd",
"expo-linking": "7.0.4-canary-20241211-61c49bd",
"expo-local-authentication": "15.0.2-canary-20241211-61c49bd",
"expo-localization": "16.0.1-canary-20241211-61c49bd",
"expo-location": "18.0.5-canary-20241211-61c49bd",
"expo-mail-composer": "14.1.0-canary-20241211-61c49bd",
"expo-media-library": "17.0.4-canary-20241211-61c49bd",
"expo-module-template": "10.15.13-canary-20241211-61c49bd",
"expo-modules-core": "2.0.7-canary-20241211-61c49bd",
"expo-navigation-bar": "4.0.7-canary-20241211-61c49bd",
"expo-network": "7.0.4-canary-20241211-61c49bd",
"expo-notifications": "0.29.12-canary-20241211-61c49bd",
"expo-print": "14.0.3-canary-20241211-61c49bd",
"expo-router": "4.0.13-canary-20241211-61c49bd",
"expo-screen-capture": "7.0.1-canary-20241211-61c49bd",
"expo-screen-orientation": "8.0.2-canary-20241211-61c49bd",
"expo-secure-store": "14.0.1-canary-20241211-61c49bd",
"expo-sensors": "14.0.2-canary-20241211-61c49bd",
"expo-sharing": "13.0.1-canary-20241211-61c49bd",
"expo-sms": "13.0.1-canary-20241211-61c49bd",
"expo-speech": "13.0.1-canary-20241211-61c49bd",
"expo-splash-screen": "0.30.0-canary-20241211-61c49bd",
"expo-sqlite": "15.0.4-canary-20241211-61c49bd",
"expo-status-bar": "2.0.1-canary-20241211-61c49bd",
"expo-store-review": "8.0.1-canary-20241211-61c49bd",
"expo-symbols": "0.2.1-canary-20241211-61c49bd",
"expo-system-ui": "4.0.7-canary-20241211-61c49bd",
"expo-task-manager": "12.0.4-canary-20241211-61c49bd",
"expo-tracking-transparency": "5.0.1-canary-20241211-61c49bd",
"expo-updates": "0.26.11-canary-20241211-61c49bd",
"expo-video-thumbnails": "9.0.3-canary-20241211-61c49bd",
"expo-video": "2.0.3-canary-20241211-61c49bd",
"expo-web-browser": "14.0.2-canary-20241211-61c49bd",
"jest-expo": "53.0.0-canary-20241211-61c49bd",
"expo-haptics": "14.0.2-canary-20250114-804e26d",
"expo-image": "2.0.5-canary-20250114-804e26d",
"expo-image-loader": "5.0.1-canary-20250114-804e26d",
"expo-image-manipulator": "13.0.7-canary-20250114-804e26d",
"expo-image-picker": "16.0.5-canary-20250114-804e26d",
"expo-intent-launcher": "12.0.3-canary-20250114-804e26d",
"expo-insights": "0.8.3-canary-20250114-804e26d",
"expo-keep-awake": "14.0.3-canary-20250114-804e26d",
"expo-linear-gradient": "14.0.3-canary-20250114-804e26d",
"expo-linking": "7.0.5-canary-20250114-804e26d",
"expo-local-authentication": "15.0.3-canary-20250114-804e26d",
"expo-localization": "16.0.2-canary-20250114-804e26d",
"expo-location": "18.0.6-canary-20250114-804e26d",
"expo-mail-composer": "14.0.3-canary-20250114-804e26d",
"expo-media-library": "17.0.6-canary-20250114-804e26d",
"expo-module-template": "10.15.14-canary-20250114-804e26d",
"expo-modules-core": "2.2.0-canary-20250114-804e26d",
"expo-navigation-bar": "4.0.8-canary-20250114-804e26d",
"expo-network": "7.0.6-canary-20250114-804e26d",
"expo-notifications": "0.29.13-canary-20250114-804e26d",
"expo-print": "14.0.4-canary-20250114-804e26d",
"expo-router": "4.1.0-canary-20250114-804e26d",
"expo-screen-capture": "7.0.2-canary-20250114-804e26d",
"expo-screen-orientation": "8.0.5-canary-20250114-804e26d",
"expo-secure-store": "14.0.2-canary-20250114-804e26d",
"expo-sensors": "14.0.3-canary-20250114-804e26d",
"expo-sharing": "13.0.2-canary-20250114-804e26d",
"expo-sms": "13.0.2-canary-20250114-804e26d",
"expo-speech": "13.0.2-canary-20250114-804e26d",
"expo-splash-screen": "0.29.21-canary-20250114-804e26d",
"expo-sqlite": "15.0.7-canary-20250114-804e26d",
"expo-status-bar": "2.0.2-canary-20250114-804e26d",
"expo-store-review": "8.0.2-canary-20250114-804e26d",
"expo-symbols": "0.2.2-canary-20250114-804e26d",
"expo-system-ui": "4.0.8-canary-20250114-804e26d",
"expo-task-manager": "12.0.5-canary-20250114-804e26d",
"expo-tracking-transparency": "5.1.2-canary-20250114-804e26d",
"expo-updates": "0.26.13-canary-20250114-804e26d",
"expo-video-thumbnails": "9.0.4-canary-20250114-804e26d",
"expo-video": "2.0.6-canary-20250114-804e26d",
"expo-web-browser": "14.0.3-canary-20250114-804e26d",
"jest-expo": "53.0.0-canary-20250114-804e26d",
"lottie-react-native": "7.1.0",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.76.3",
"react-native": "0.76.6",
"react-native-web": "~0.19.13",

@@ -97,9 +97,9 @@ "react-native-gesture-handler": "~2.20.2",

"react-native-reanimated": "~3.16.1",
"react-native-screens": "~4.1.0",
"react-native-screens": "~4.4.0",
"react-native-safe-area-context": "4.12.0",
"react-native-svg": "15.8.0",
"react-native-view-shot": "4.0.2",
"react-native-view-shot": "~4.0.3",
"react-native-webview": "13.12.5",
"sentry-expo": "~7.0.0",
"unimodules-app-loader": "5.0.1-canary-20241211-61c49bd",
"unimodules-app-loader": "5.0.2-canary-20250114-804e26d",
"unimodules-image-loader-interface": "~6.1.0",

@@ -106,0 +106,0 @@ "@shopify/react-native-skia": "1.5.0",

{
"name": "expo",
"version": "53.0.0-canary-20241211-61c49bd",
"version": "53.0.0-canary-20250114-804e26d",
"description": "The Expo SDK",

@@ -71,16 +71,16 @@ "main": "src/Expo.ts",

"@babel/runtime": "^7.20.0",
"@expo/cli": "0.23.0-canary-20241211-61c49bd",
"@expo/config": "11.0.0-canary-20241211-61c49bd",
"@expo/config-plugins": "9.0.13-canary-20241211-61c49bd",
"@expo/fingerprint": "0.11.4-canary-20241211-61c49bd",
"@expo/metro-config": "0.20.0-canary-20241211-61c49bd",
"@expo/cli": "0.23.0-canary-20250114-804e26d",
"@expo/config": "10.0.9-canary-20250114-804e26d",
"@expo/config-plugins": "9.0.15-canary-20250114-804e26d",
"@expo/fingerprint": "0.11.8-canary-20250114-804e26d",
"@expo/metro-config": "0.19.10-canary-20250114-804e26d",
"@expo/vector-icons": "^14.0.0",
"babel-preset-expo": "12.1.0-canary-20241211-61c49bd",
"expo-asset": "11.0.2-canary-20241211-61c49bd",
"expo-constants": "17.0.4-canary-20241211-61c49bd",
"expo-file-system": "18.1.0-canary-20241211-61c49bd",
"expo-font": "13.0.2-canary-20241211-61c49bd",
"expo-keep-awake": "14.0.2-canary-20241211-61c49bd",
"expo-modules-autolinking": "2.0.5-canary-20241211-61c49bd",
"expo-modules-core": "2.0.7-canary-20241211-61c49bd",
"babel-preset-expo": "12.0.7-canary-20250114-804e26d",
"expo-asset": "11.0.3-canary-20250114-804e26d",
"expo-constants": "17.0.5-canary-20250114-804e26d",
"expo-file-system": "18.0.8-canary-20250114-804e26d",
"expo-font": "13.0.4-canary-20250114-804e26d",
"expo-keep-awake": "14.0.3-canary-20250114-804e26d",
"expo-modules-autolinking": "2.0.6-canary-20250114-804e26d",
"expo-modules-core": "2.2.0-canary-20250114-804e26d",
"fbemitter": "^3.0.0",

@@ -93,10 +93,10 @@ "web-streams-polyfill": "^3.3.2",

"@types/react-test-renderer": "^18.3.0",
"expo-module-scripts": "4.0.3-canary-20241211-61c49bd",
"expo-module-scripts": "4.0.4-canary-20250114-804e26d",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.76.3"
"react-native": "0.76.6"
},
"peerDependencies": {
"@expo/dom-webview": "0.0.2-canary-20241211-61c49bd",
"@expo/metro-runtime": "4.0.1-canary-20241211-61c49bd",
"@expo/dom-webview": "0.0.3-canary-20250114-804e26d",
"@expo/metro-runtime": "4.0.1-canary-20250114-804e26d",
"react": "*",

@@ -116,3 +116,4 @@ "react-native": "*",

}
}
},
"gitHead": "804e26d8545f2b890dfa80eeb8122036f38d4d0c"
}
import { ExpoFetchModule } from './ExpoFetchModule';
import { FetchError } from './FetchErrors';
import { FetchResponse } from './FetchResponse';
import { FetchResponse, type AbortSubscriptionCleanupFunction } from './FetchResponse';
import { NativeRequest, NativeRequestInit } from './NativeRequest';

@@ -9,3 +9,7 @@ import { normalizeBodyInitAsync, normalizeHeadersInit, overrideHeaders } from './RequestUtils';

export async function fetch(url: string, init?: FetchRequestInit): Promise<FetchResponse> {
const response = new FetchResponse();
let abortSubscription: AbortSubscriptionCleanupFunction | null = null;
const response = new FetchResponse(() => {
abortSubscription?.();
});
const request = new ExpoFetchModule.NativeRequest(response) as NativeRequest;

@@ -29,6 +33,5 @@

}
const abortHandler = () => {
abortSubscription = addAbortSignalListener(init?.signal, () => {
request.cancel();
};
init?.signal?.addEventListener('abort', abortHandler);
});
try {

@@ -42,6 +45,17 @@ await request.start(url, nativeRequestInit, requestBody);

}
} finally {
init?.signal?.removeEventListener('abort', abortHandler);
}
return response;
}
/**
* A wrapper of `AbortSignal.addEventListener` that returns a cleanup function.
*/
function addAbortSignalListener(
signal: AbortSignal | undefined,
listener: Parameters<AbortSignal['addEventListener']>[1]
): AbortSubscriptionCleanupFunction {
signal?.addEventListener('abort', listener);
return () => {
signal?.removeEventListener('abort', listener);
};
}

@@ -8,2 +8,4 @@ import { ReadableStream } from 'web-streams-polyfill';

export type AbortSubscriptionCleanupFunction = () => void;
/**

@@ -13,33 +15,50 @@ * A response implementation for the `fetch.Response` API.

export class FetchResponse extends ConcreteNativeResponse implements Response {
private streamingStarted = false;
private streamingState: 'none' | 'started' | 'completed' = 'none';
private bodyStream: ReadableStream<Uint8Array> | null = null;
constructor(private readonly abortCleanupFunction: AbortSubscriptionCleanupFunction) {
super();
this.addListener('readyForJSFinalization', this.finalize);
}
get body(): ReadableStream<Uint8Array> | null {
const response = this;
return new ReadableStream({
start(controller) {
response.addListener('didReceiveResponseData', (data: Uint8Array) => {
controller.enqueue(data);
});
if (this.bodyStream == null) {
const response = this;
this.bodyStream = new ReadableStream({
start(controller) {
if (response.streamingState === 'completed') {
return;
}
response.addListener('didReceiveResponseData', (data: Uint8Array) => {
controller.enqueue(data);
});
response.addListener('didComplete', () => {
response.removeAllRegisteredListeners();
controller.close();
});
response.addListener('didComplete', () => {
controller.close();
});
response.addListener('didFailWithError', (error: string) => {
response.removeAllRegisteredListeners();
controller.error(new Error(error));
});
},
pull() {
if (!response.streamingStarted) {
response.startStreaming();
response.streamingStarted = true;
}
},
cancel(reason) {
response.removeAllRegisteredListeners();
response.cancelStreaming(String(reason));
},
});
response.addListener('didFailWithError', (error: string) => {
controller.error(new Error(error));
});
},
async pull(controller) {
if (response.streamingState === 'none') {
const completedData = await response.startStreaming();
if (completedData != null) {
controller.enqueue(completedData);
controller.close();
response.streamingState = 'completed';
} else {
response.streamingState = 'started';
}
} else if (response.streamingState === 'completed') {
controller.close();
}
},
cancel(reason) {
response.cancelStreaming(String(reason));
},
});
}
return this.bodyStream;
}

@@ -96,7 +115,11 @@

private removeAllRegisteredListeners() {
private finalize = (): void => {
this.removeListener('readyForJSFinalization', this.finalize);
this.abortCleanupFunction();
this.removeAllListeners('didReceiveResponseData');
this.removeAllListeners('didComplete');
this.removeAllListeners('didFailWithError');
}
};
}

@@ -24,2 +24,3 @@ import type { SharedObject } from 'expo-modules-core';

didFailWithError(error: string): void;
readyForJSFinalization(): void;
};

@@ -34,3 +35,3 @@

readonly redirected: boolean;
startStreaming(): void;
startStreaming(): Promise<Uint8Array | null>;
cancelStreaming(reason: string): void;

@@ -37,0 +38,0 @@ arrayBuffer(): Promise<ArrayBuffer>;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc