17c3ed0c0SDouglas Lowder// Copyright 2015-present 650 Industries. All rights reserved. 27c3ed0c0SDouglas Lowder 37c3ed0c0SDouglas Lowder#import "EXEnvironment.h" 47c3ed0c0SDouglas Lowder#import "EXErrorRecoveryManager.h" 57c3ed0c0SDouglas Lowder#import "EXFileDownloader.h" 67c3ed0c0SDouglas Lowder#import "EXKernel.h" 77c3ed0c0SDouglas Lowder#import "EXAppFetcher.h" 87c3ed0c0SDouglas Lowder#import "EXAbstractLoader.h" 97c3ed0c0SDouglas Lowder#import "EXKernelAppRecord.h" 107c3ed0c0SDouglas Lowder#import "EXKernelAppRegistry.h" 117c3ed0c0SDouglas Lowder#import "EXKernelLinkingManager.h" 127c3ed0c0SDouglas Lowder#import "EXManifestResource.h" 137c3ed0c0SDouglas Lowder 147c3ed0c0SDouglas Lowder#import <React/RCTUtils.h> 157c3ed0c0SDouglas Lowder 1694af3edaSWill Schurman@import EXManifests; 1794af3edaSWill Schurman 187c3ed0c0SDouglas LowderNS_ASSUME_NONNULL_BEGIN 197c3ed0c0SDouglas Lowder 20*5f54863aSWill SchurmanNSTimeInterval const kEXAppLoaderDefaultTimeout = 30; 21*5f54863aSWill SchurmanNSTimeInterval const kEXJSBundleTimeout = 60 * 5; 22*5f54863aSWill Schurman 237c3ed0c0SDouglas Lowder@implementation EXAbstractLoader 247c3ed0c0SDouglas Lowder 257c3ed0c0SDouglas Lowder- (instancetype)initWithManifestUrl:(NSURL *)url 267c3ed0c0SDouglas Lowder{ 277c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 287c3ed0c0SDouglas Lowder return nil; 297c3ed0c0SDouglas Lowder} 307c3ed0c0SDouglas Lowder 317c3ed0c0SDouglas Lowder- (instancetype)initWithLocalManifest:(EXManifestsManifest *)manifest 327c3ed0c0SDouglas Lowder{ 337c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 347c3ed0c0SDouglas Lowder return nil; 357c3ed0c0SDouglas Lowder} 367c3ed0c0SDouglas Lowder 377c3ed0c0SDouglas Lowder- (void)fetchManifestWithCacheBehavior:(EXManifestCacheBehavior)cacheBehavior success:(void (^)(EXManifestsManifest * _Nonnull))success failure:(void (^)(NSError * _Nonnull))failure 387c3ed0c0SDouglas Lowder{ 397c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 407c3ed0c0SDouglas Lowder} 417c3ed0c0SDouglas Lowder 427c3ed0c0SDouglas Lowder- (void)request 437c3ed0c0SDouglas Lowder{ 447c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 457c3ed0c0SDouglas Lowder} 467c3ed0c0SDouglas Lowder 477c3ed0c0SDouglas Lowder- (void)requestFromCache 487c3ed0c0SDouglas Lowder{ 497c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 507c3ed0c0SDouglas Lowder} 517c3ed0c0SDouglas Lowder 527c3ed0c0SDouglas Lowder- (void)forceBundleReload 537c3ed0c0SDouglas Lowder{ 547c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 557c3ed0c0SDouglas Lowder} 567c3ed0c0SDouglas Lowder 577c3ed0c0SDouglas Lowder- (BOOL)supportsBundleReload 587c3ed0c0SDouglas Lowder{ 597c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 607c3ed0c0SDouglas Lowder return NO; 617c3ed0c0SDouglas Lowder} 627c3ed0c0SDouglas Lowder 637c3ed0c0SDouglas Lowder- (void)writeManifestToCache 647c3ed0c0SDouglas Lowder{ 657c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 667c3ed0c0SDouglas Lowder} 677c3ed0c0SDouglas Lowder 687c3ed0c0SDouglas Lowder#pragma mark - 697c3ed0c0SDouglas Lowder#pragma mark EXAppFetcher delegate methods 707c3ed0c0SDouglas Lowder 717c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didFailWithError:(nonnull NSError *)error { 727c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 737c3ed0c0SDouglas Lowder} 747c3ed0c0SDouglas Lowder 757c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didFinishLoadingManifest:(nonnull EXManifestsManifest *)manifest bundle:(nonnull NSData *)bundle { 767c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 777c3ed0c0SDouglas Lowder} 787c3ed0c0SDouglas Lowder 797c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didLoadOptimisticManifest:(nonnull EXManifestsManifest *)manifest { 807c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 817c3ed0c0SDouglas Lowder} 827c3ed0c0SDouglas Lowder 837c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didSwitchToAppFetcher:(nonnull EXAppFetcher *)newAppFetcher retainingCurrent:(BOOL)shouldRetain { 847c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 857c3ed0c0SDouglas Lowder} 867c3ed0c0SDouglas Lowder 877c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didLoadBundleWithProgress:(nonnull EXLoadingProgress *)progress { 887c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 897c3ed0c0SDouglas Lowder} 907c3ed0c0SDouglas Lowder 917c3ed0c0SDouglas Lowder- (void)appFetcher:(nonnull EXAppFetcher *)appFetcher didResolveUpdatedBundleWithManifest:(EXManifestsManifest * _Nullable)manifest isFromCache:(BOOL)isFromCache error:(NSError * _Nullable)error { 927c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 937c3ed0c0SDouglas Lowder} 947c3ed0c0SDouglas Lowder 957c3ed0c0SDouglas Lowder- (BOOL)isCacheUpToDateWithAppFetcher:(nonnull EXAppFetcher *)appFetcher { 967c3ed0c0SDouglas Lowder [self doesNotRecognizeSelector:_cmd]; 977c3ed0c0SDouglas Lowder return NO; 987c3ed0c0SDouglas Lowder} 997c3ed0c0SDouglas Lowder 1007c3ed0c0SDouglas Lowder@end 1017c3ed0c0SDouglas Lowder 1027c3ed0c0SDouglas LowderNS_ASSUME_NONNULL_END 103