build: compile release APK and update dependencies (expo-image-manipulator/loader)

This commit is contained in:
2026-05-31 14:24:26 +02:00
parent 69637c4203
commit 2b5a259fe5
1260 changed files with 3804 additions and 166620 deletions
+167
View File
@@ -0,0 +1,167 @@
# Changelog
## Unpublished
### 🛠 Breaking changes
### 🎉 New features
### 🐛 Bug fixes
### 💡 Others
## 6.0.0 — 2025-08-13
### 🎉 New features
- [iOS] Add Apple TV support. ([#38513](https://github.com/expo/expo/pull/38513) by [@douglowder](https://github.com/douglowder))
## 5.1.0 — 2025-04-04
### 💡 Others
- [Android] Started using expo modules gradle plugin. ([#34176](https://github.com/expo/expo/pull/34176) by [@lukmccall](https://github.com/lukmccall))
- [apple] Migrate remaining `expo-module.config.json` to unified platform syntax. ([#34445](https://github.com/expo/expo/pull/34445) by [@reichhartd](https://github.com/reichhartd))
## 5.0.0 — 2024-10-22
### 🛠 Breaking changes
- Bumped iOS deployment target to 15.1. ([#30840](https://github.com/expo/expo/pull/30840) by [@tsapeta](https://github.com/tsapeta))
## 4.7.0 — 2024-04-18
### 💡 Others
- Removed deprecated backward compatible Gradle settings. ([#28083](https://github.com/expo/expo/pull/28083) by [@kudo](https://github.com/kudo))
## 4.6.0 — 2023-11-14
### 🛠 Breaking changes
- Bumped iOS deployment target to 13.4. ([#25063](https://github.com/expo/expo/pull/25063) by [@gabrieldonadel](https://github.com/gabrieldonadel))
- On `Android` bump `compileSdkVersion` and `targetSdkVersion` to `34`. ([#24708](https://github.com/expo/expo/pull/24708) by [@alanjhughes](https://github.com/alanjhughes))
### 💡 Others
- Renamed `unimodule.json` to `expo-module.config.json`. ([#25100](https://github.com/expo/expo/pull/25100) by [@reichhartd](https://github.com/reichhartd))
## 4.5.0 — 2023-10-17
### 🛠 Breaking changes
- Dropped support for Android SDK 21 and 22. ([#24201](https://github.com/expo/expo/pull/24201) by [@behenate](https://github.com/behenate))
## 4.4.0 — 2023-09-04
### 🎉 New features
- Added support for React Native 0.73. ([#24018](https://github.com/expo/expo/pull/24018) by [@kudo](https://github.com/kudo))
### 🐛 Bug fixes
- Bump `Glide` version to resolve `SecurityException` on Android 13. ([#24196](https://github.com/expo/expo/pull/24196) by [@alanjhughes](https://github.com/alanjhughes))
## 4.3.0 — 2023-06-13
- Removed `com.facebook.fresco:fresco` dependency ([#22542](https://github.com/expo/expo/pull/22542) by [@josephyanks](https://github.com/josephyanks))
### 📚 3rd party library updates
- Updated `com.github.bumptech.glide:glide` to `4.13.2` and added customizable `glideVersion` variable on ext. ([#22542](https://github.com/expo/expo/pull/22542) by [@josephyanks](https://github.com/josephyanks))
### 🐛 Bug fixes
- Fixed Android build warnings for Gradle version 8. ([#22537](https://github.com/expo/expo/pull/22537), [#22609](https://github.com/expo/expo/pull/22609) by [@kudo](https://github.com/kudo))
## 4.2.0 — 2023-05-08
_This version does not introduce any user-facing changes._
## 4.1.1 — 2023-02-09
_This version does not introduce any user-facing changes._
## 4.1.0 — 2023-02-03
### 💡 Others
- On Android bump `compileSdkVersion` and `targetSdkVersion` to `33`. ([#20721](https://github.com/expo/expo/pull/20721) by [@lukmccall](https://github.com/lukmccall))
## 4.0.0 — 2022-10-25
### 🛠 Breaking changes
- Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. ([#18873](https://github.com/expo/expo/pull/18873) by [@tsapeta](https://github.com/tsapeta))
## 3.2.0 — 2022-04-18
### ⚠️ Notices
- On Android bump `compileSdkVersion` to `31`, `targetSdkVersion` to `31` and `Java` version to `11`. ([#16941](https://github.com/expo/expo/pull/16941) by [@bbarthec](https://github.com/bbarthec))
## 3.1.1 - 2022-02-01
### 🐛 Bug fixes
- Fix `Plugin with id 'maven' not found` build error from Android Gradle 7. ([#16080](https://github.com/expo/expo/pull/16080) by [@kudo](https://github.com/kudo))
## 3.1.0 — 2021-12-03
_This version does not introduce any user-facing changes._
## 3.0.0 — 2021-09-28
### 🛠 Breaking changes
- Dropped support for iOS 11.0 ([#14383](https://github.com/expo/expo/pull/14383) by [@cruzach](https://github.com/cruzach))
### 🐛 Bug fixes
- Fix building errors from use_frameworks! in Podfile. ([#14523](https://github.com/expo/expo/pull/14523) by [@kudo](https://github.com/kudo))
## 2.3.0-alpha.0 — 2021-08-17
_This version does not introduce any user-facing changes._
## 2.2.0 — 2021-06-16
### 🐛 Bug fixes
- Enable kotlin in all modules. ([#12716](https://github.com/expo/expo/pull/12716) by [@wschurman](https://github.com/wschurman))
## 2.1.1 — 2021-03-23
_This version does not introduce any user-facing changes._
## 2.1.0 — 2021-03-10
### 🎉 New features
- Updated Android build configuration to target Android 11 (added support for Android SDK 30). ([#11647](https://github.com/expo/expo/pull/11647) by [@bbarthec](https://github.com/bbarthec))
### 🐛 Bug fixes
- Remove peerDependencies and unimodulePeerDependencies from Expo modules. ([#11980](https://github.com/expo/expo/pull/11980) by [@brentvatne](https://github.com/brentvatne))
## 2.0.0 — 2021-01-15
### 🛠 Breaking changes
- Dropped support for iOS 10.0 ([#11344](https://github.com/expo/expo/pull/11344) by [@tsapeta](https://github.com/tsapeta))
## 1.3.0 — 2020-11-17
_This version does not introduce any user-facing changes._
## 1.2.0 — 2020-08-18
_This version does not introduce any user-facing changes._
## 1.1.1 — 2020-05-29
_This version does not introduce any user-facing changes._
## 1.1.0 — 2020-05-27
_This version does not introduce any user-facing changes._
+25
View File
@@ -0,0 +1,25 @@
# expo-image-loader
Provides image loader
# Installation in managed Expo projects
For [managed](https://docs.expo.dev/archive/managed-vs-bare/) Expo projects, please follow the installation instructions in the [API documentation for the latest stable release](#api-documentation). If you follow the link and there is no documentation available then this library is not yet usable within managed projects — it is likely to be included in an upcoming Expo SDK release.
# Installation in bare React Native projects
For bare React Native projects, you must ensure that you have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before continuing.
### Add the package to your npm dependencies
```
npm install expo-image-loader
```
### Configure for Android
No additional set up necessary.
# Contributing
Contributions are very welcome! Please refer to guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).
+21
View File
@@ -0,0 +1,21 @@
plugins {
id 'com.android.library'
id 'expo-module-gradle-plugin'
}
group = 'host.exp.exponent'
version = '6.0.0'
android {
namespace "expo.modules.imageloader"
defaultConfig {
versionCode 8
versionName "6.0.0"
}
}
def glideVersion = expoModule.safeExtGet('glideVersion', '4.16.0')
dependencies {
api "com.github.bumptech.glide:glide:${glideVersion}"
}
+2
View File
@@ -0,0 +1,2 @@
<manifest>
</manifest>
@@ -0,0 +1,105 @@
package expo.modules.imageloader
import android.content.Context
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import expo.modules.core.interfaces.InternalModule
import expo.modules.interfaces.imageloader.ImageLoaderInterface
import java.util.concurrent.ExecutionException
import java.util.concurrent.Future
class ImageLoaderModule(val context: Context) : InternalModule, ImageLoaderInterface {
override fun getExportedInterfaces(): List<Class<*>> {
return listOf(ImageLoaderInterface::class.java)
}
override fun loadImageForDisplayFromURL(url: String): Future<Bitmap> {
val future = SimpleSettableFuture<Bitmap>()
loadImageForDisplayFromURL(
url,
object : ImageLoaderInterface.ResultListener {
override fun onSuccess(bitmap: Bitmap) = future.set(bitmap)
override fun onFailure(cause: Throwable?) =
future.setException(ExecutionException(cause))
}
)
return future
}
override fun loadImageForDisplayFromURL(
url: String,
resultListener: ImageLoaderInterface.ResultListener
) {
Glide.with(context)
.asBitmap()
.load(url)
.into(object : CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
resultListener.onSuccess(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// no op
}
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
resultListener.onFailure(Exception("Loading bitmap failed"))
}
})
}
override fun loadImageForManipulationFromURL(url: String): Future<Bitmap> {
val future = SimpleSettableFuture<Bitmap>()
loadImageForManipulationFromURL(
url,
object : ImageLoaderInterface.ResultListener {
override fun onSuccess(bitmap: Bitmap) = future.set(bitmap)
override fun onFailure(cause: Throwable?) = future.setException(ExecutionException(cause))
}
)
return future
}
override fun loadImageForManipulationFromURL(
url: String,
resultListener: ImageLoaderInterface.ResultListener
) {
val normalizedUrl = normalizeAssetsUrl(url)
Glide.with(context)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.load(normalizedUrl)
.into(object : CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
resultListener.onSuccess(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// no op
}
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
resultListener.onFailure(Exception("Loading bitmap failed"))
}
})
}
private fun normalizeAssetsUrl(url: String): String {
var actualUrl = url
if (url.startsWith("asset:///")) {
actualUrl = "file:///android_asset/" + url.split("/").last()
}
return actualUrl
}
}
@@ -0,0 +1,9 @@
package expo.modules.imageloader
import android.content.Context
import expo.modules.core.BasePackage
import expo.modules.core.interfaces.InternalModule
class ImageLoaderPackage : BasePackage() {
override fun createInternalModules(context: Context): List<InternalModule> = listOf(ImageLoaderModule(context))
}
@@ -0,0 +1,120 @@
// Copied from React Native
package expo.modules.imageloader;
import androidx.annotation.Nullable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* A super simple Future-like class that can safely notify another Thread when a value is ready.
* Does not support canceling.
*/
public class SimpleSettableFuture<T> implements Future<T> {
private final CountDownLatch mReadyLatch = new CountDownLatch(1);
private @Nullable
T mResult;
private @Nullable
Exception mException;
/**
* Sets the result. If another thread has called {@link #get}, they will immediately receive the
* value. set or setException must only be called once.
*/
public void set(@Nullable T result) {
checkNotSet();
mResult = result;
mReadyLatch.countDown();
}
/**
* Sets the exception. If another thread has called {@link #get}, they will immediately receive
* the exception. set or setException must only be called once.
*/
public void setException(Exception exception) {
checkNotSet();
mException = exception;
mReadyLatch.countDown();
}
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
throw new UnsupportedOperationException();
}
@Override
public boolean isCancelled() {
return false;
}
@Override
public boolean isDone() {
return mReadyLatch.getCount() == 0;
}
@Override
public @Nullable
T get() throws InterruptedException, ExecutionException {
mReadyLatch.await();
if (mException != null) {
throw new ExecutionException(mException);
}
return mResult;
}
/**
* Wait up to the timeout time for another Thread to set a value on this future. If a value has
* already been set, this method will return immediately.
*
* <p>NB: For simplicity, we catch and wrap InterruptedException. Do NOT use this class if you are
* in the 1% of cases where you actually want to handle that.
*/
@Override
public @Nullable
T get(long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException {
if (!mReadyLatch.await(timeout, unit)) {
throw new TimeoutException("Timed out waiting for result");
}
if (mException != null) {
throw new ExecutionException(mException);
}
return mResult;
}
/**
* Convenience wrapper for {@link #get()} that re-throws get()'s Exceptions as RuntimeExceptions.
*/
public @Nullable
T getOrThrow() {
try {
return get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
/**
* Convenience wrapper for {@link #get(long, TimeUnit)} that re-throws get()'s Exceptions as
* RuntimeExceptions.
*/
public @Nullable
T getOrThrow(long timeout, TimeUnit unit) {
try {
return get(timeout, unit);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
throw new RuntimeException(e);
}
}
private void checkNotSet() {
if (mReadyLatch.getCount() == 0) {
throw new RuntimeException("Result has already been set!");
}
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"platforms": ["apple", "android"],
"android": {
"publication": {
"groupId": "host.exp.exponent",
"artifactId": "expo.modules.imageloader",
"version": "6.0.0",
"repository": "local-maven-repo"
}
}
}
+1
View File
@@ -0,0 +1 @@
module.exports = null;
+35
View File
@@ -0,0 +1,35 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
Pod::Spec.new do |s|
s.name = 'EXImageLoader'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.platforms = {
:ios => '15.1',
:tvos => '15.1'
}
s.source = { git: 'https://github.com/expo/expo.git' }
s.static_framework = true
s.dependency 'React-Core'
s.dependency 'ExpoModulesCore'
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'SWIFT_COMPILATION_MODE' => 'wholemodule'
}
if !$ExpoUseSources&.include?(package['name']) && ENV['EXPO_USE_SOURCE'].to_i == 0 && File.exist?("#{s.name}.xcframework") && Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.10.0')
s.source_files = "#{s.name}/**/*.h"
s.vendored_frameworks = "#{s.name}.xcframework"
else
s.source_files = "#{s.name}/**/*.{h,m}"
end
end
+10
View File
@@ -0,0 +1,10 @@
// Copyright 2019-present 650 Industries. All rights reserved.
#import <ExpoModulesCore/EXInternalModule.h>
#import <ExpoModulesCore/EXImageLoaderInterface.h>
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>
@interface EXImageLoader : NSObject <RCTBridgeModule, EXInternalModule, EXImageLoaderInterface>
@end
+41
View File
@@ -0,0 +1,41 @@
// Copyright 2019-present 650 Industries. All rights reserved.
#import <EXImageLoader/EXImageLoader.h>
#import <React/RCTImageLoaderProtocol.h>
#import <ExpoModulesCore/EXUtilities.h>
@interface EXImageLoader ()
@property (weak, nonatomic) RCTBridge *bridge;
@end
@implementation EXImageLoader
EX_REGISTER_MODULE();
+ (NSString *)moduleName
{
return @"EXImageLoader";
}
+ (const NSArray<Protocol *> *)exportedInterfaces
{
return @[@protocol(EXImageLoaderInterface)];
}
- (void)setBridge:(RCTBridge *)bridge
{
_bridge = bridge;
}
- (void)loadImageForURL:(NSURL *)imageURL
completionHandler:(EXImageLoaderCompletionBlock)completionHandler
{
[[_bridge moduleForName:@"ImageLoader" lazilyLoadIfNecessary:YES] loadImageWithURLRequest:[NSURLRequest requestWithURL:imageURL]
callback:^(NSError *error, UIImage *loadedImage) {
completionHandler(error, loadedImage);
}];
}
@end
@@ -0,0 +1 @@
ab7a6fa2440f2d905cc3e8956262a1bb42dd7fd4
@@ -0,0 +1 @@
629413154ddf0f463f69efd14daf0ad2d6b238c6f15a5774e4d527515466073e
@@ -0,0 +1 @@
c24d298c590fb988c40b922ee8f819c729d252df77b14ce7afef8d6c4727f3df461aadaf2eca428e535b8cca5a663eb6be4ac801b301ca7f1471191a4240cb46
@@ -0,0 +1 @@
d275db858ff7957dbeae00c5e5faa788
@@ -0,0 +1 @@
7363cbd9c137c65bd1ae8a2e1ca61a31bedaa4f8
@@ -0,0 +1 @@
352d0424a05612c6eb98a2f31708626657ce93e94946b4a5573c9bd847128468
@@ -0,0 +1 @@
39dd45977d35f1bf3abb5cd07d95aa0c17bc42785e9e75dfa2fe621fa80f197acd2eedb1517f50a1b63f83705378575dc06b4f948ba8434c4e5fb1d28ce98018
@@ -0,0 +1,103 @@
{
"formatVersion": "1.1",
"component": {
"group": "host.exp.exponent",
"module": "expo.modules.imageloader",
"version": "6.0.0",
"attributes": {
"org.gradle.status": "release"
}
},
"createdBy": {
"gradle": {
"version": "8.14.3"
}
},
"variants": [
{
"name": "releaseVariantReleaseApiPublication",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.libraryelements": "aar",
"org.gradle.usage": "java-api"
},
"dependencies": [
{
"group": "com.github.bumptech.glide",
"module": "glide",
"version": {
"requires": "4.16.0"
}
}
],
"files": [
{
"name": "expo.modules.imageloader-6.0.0.aar",
"url": "expo.modules.imageloader-6.0.0.aar",
"size": 10510,
"sha512": "39dd45977d35f1bf3abb5cd07d95aa0c17bc42785e9e75dfa2fe621fa80f197acd2eedb1517f50a1b63f83705378575dc06b4f948ba8434c4e5fb1d28ce98018",
"sha256": "352d0424a05612c6eb98a2f31708626657ce93e94946b4a5573c9bd847128468",
"sha1": "7363cbd9c137c65bd1ae8a2e1ca61a31bedaa4f8",
"md5": "d275db858ff7957dbeae00c5e5faa788"
}
]
},
{
"name": "releaseVariantReleaseRuntimePublication",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.libraryelements": "aar",
"org.gradle.usage": "java-runtime"
},
"dependencies": [
{
"group": "org.jetbrains.kotlin",
"module": "kotlin-stdlib-jdk7",
"version": {
"requires": "2.1.20"
}
},
{
"group": "com.github.bumptech.glide",
"module": "glide",
"version": {
"requires": "4.16.0"
}
}
],
"files": [
{
"name": "expo.modules.imageloader-6.0.0.aar",
"url": "expo.modules.imageloader-6.0.0.aar",
"size": 10510,
"sha512": "39dd45977d35f1bf3abb5cd07d95aa0c17bc42785e9e75dfa2fe621fa80f197acd2eedb1517f50a1b63f83705378575dc06b4f948ba8434c4e5fb1d28ce98018",
"sha256": "352d0424a05612c6eb98a2f31708626657ce93e94946b4a5573c9bd847128468",
"sha1": "7363cbd9c137c65bd1ae8a2e1ca61a31bedaa4f8",
"md5": "d275db858ff7957dbeae00c5e5faa788"
}
]
},
{
"name": "releaseVariantReleaseSourcePublication",
"attributes": {
"org.gradle.category": "documentation",
"org.gradle.dependency.bundling": "external",
"org.gradle.docstype": "sources",
"org.gradle.usage": "java-runtime"
},
"files": [
{
"name": "expo.modules.imageloader-6.0.0-sources.jar",
"url": "expo.modules.imageloader-6.0.0-sources.jar",
"size": 3464,
"sha512": "c24d298c590fb988c40b922ee8f819c729d252df77b14ce7afef8d6c4727f3df461aadaf2eca428e535b8cca5a663eb6be4ac801b301ca7f1471191a4240cb46",
"sha256": "629413154ddf0f463f69efd14daf0ad2d6b238c6f15a5774e4d527515466073e",
"sha1": "ab7a6fa2440f2d905cc3e8956262a1bb42dd7fd4",
"md5": "18247aba20c02293002ede5352d767e2"
}
]
}
]
}
@@ -0,0 +1 @@
05aa0cc29557a41467d87165ad43b093
@@ -0,0 +1 @@
b3ef9dbae25fe3437b14b6512bc0736c20328c9b
@@ -0,0 +1 @@
7666ea2d336fa62249e2b8faafe04971afda4556685c66f7f60d1cb6f6d900b2
@@ -0,0 +1 @@
3d9a2da58f189ffa0a0a6c924fbbe26facf98ef4efa8d8e7a7b77cf01b6a99b496629cbaa90132f40938106a1034a855775fb74a2f02b05afc50d6db7d3e7cb4
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>host.exp.exponent</groupId>
<artifactId>expo.modules.imageloader</artifactId>
<version>6.0.0</version>
<packaging>aar</packaging>
<name>expo.modules.imageloader</name>
<url>https://github.com/expo/expo</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://github.com/expo/expo/blob/main/LICENSE</url>
</license>
</licenses>
<scm>
<connection>https://github.com/expo/expo.git</connection>
<developerConnection>https://github.com/expo/expo.git</developerConnection>
<url>https://github.com/expo/expo</url>
</scm>
<dependencies>
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>4.16.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk7</artifactId>
<version>2.1.20</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1 @@
00fd7f10f3d969d569b124a73a445dc7
@@ -0,0 +1 @@
9e58919108a6d48d5cfdf9afff094ad28057bb8b
@@ -0,0 +1 @@
e031928276f57c9c6fe4c4fe2e11adfe8bef6a7614adbcc055045a5dc65c8dcc
@@ -0,0 +1 @@
cb4f0353bc9eebbe038307da50b8b4a438f02dc50947eb964e9df35f2d8bddf78ba853adda54685befd96d16f2615e29b24cc2936d41b59dbc89f0be0519a1d3
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>host.exp.exponent</groupId>
<artifactId>expo.modules.imageloader</artifactId>
<versioning>
<latest>6.0.0</latest>
<release>6.0.0</release>
<versions>
<version>6.0.0</version>
</versions>
<lastUpdated>20250813165924</lastUpdated>
</versioning>
</metadata>
@@ -0,0 +1 @@
d43f648f8917cbbd46ae23e7fd98d2df
@@ -0,0 +1 @@
febc9012ffd49b4487db148640ce6f4e8fa341af
@@ -0,0 +1 @@
e66cb2996df10b7e27150fbd8f075ea8bb407604fb92fcb9342e1bdc912ba9b7
@@ -0,0 +1 @@
2c79198620b64d8eb3318989ad287b9589113491c444d5754226fca4a3869f12a975a183ad03d6d7181c0a9f4c537a544f857f892c3057bf911917b5da1dfe32
+28
View File
@@ -0,0 +1,28 @@
{
"name": "expo-image-loader",
"version": "6.0.0",
"description": "Image loader",
"main": "index.js",
"keywords": [
"unimodules",
"image-loader",
"expo-image-loader"
],
"repository": {
"type": "git",
"url": "https://github.com/expo/expo.git",
"directory": "packages/expo-image-loader"
},
"bugs": {
"url": "https://github.com/expo/expo/issues"
},
"author": "650 Industries, Inc.",
"license": "MIT",
"homepage": "https://github.com/expo/expo/tree/main/packages/expo-image-loader",
"dependencies": {},
"devDependencies": {},
"peerDependencies": {
"expo": "*"
},
"gitHead": "cb7062e2c17d1fb09522834aaaac0e19b766df62"
}