UNPKG

15.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-fire-storage.umd.js","sources":["../../../src/storage/observable/fromTask.ts","../../../src/storage/task.ts","../../../src/storage/ref.ts","../../../src/storage/storage.ts","../../../src/storage/pipes/storageUrl.pipe.ts","../../../src/storage/storage.module.ts","../../../src/storage/angular-fire-storage.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { UploadTask, UploadTaskSnapshot } from '../interfaces';\n\n// need to import, else the types become import('firebase/app').default.storage.UploadTask\n// and it no longer works w/Firebase v7\nimport firebase from 'firebase/app';\n\n// Things aren't working great, I'm having to put in a lot of work-arounds for what\n// appear to be Firebase JS SDK bugs https://github.com/firebase/firebase-js-sdk/issues/4158\nexport function fromTask(task: UploadTask) {\n return new Observable<UploadTaskSnapshot>(subscriber => {\n const progress = (snap: UploadTaskSnapshot) => subscriber.next(snap);\n const error = e => subscriber.error(e);\n const complete = () => subscriber.complete();\n // emit the current snapshot, so they don't have to wait for state_changes\n // to fire next... this is stale if the task is no longer running :(\n progress(task.snapshot);\n const unsub = task.on('state_changed', progress);\n // it turns out that neither task snapshot nor 'state_changed' fire the last\n // snapshot before completion, the one with status 'success\" and 100% progress\n // so let's use the promise form of the task for that\n task.then(snapshot => {\n progress(snapshot);\n complete();\n }, e => {\n // TODO investigate, again this is stale, we never fire a canceled or error it seems\n progress(task.snapshot);\n error(e);\n });\n // on's type if Function, rather than () => void, need to wrap\n return function unsubscribe() {\n unsub();\n };\n }).pipe(\n // deal with sync emissions from first emitting `task.snapshot`, this makes sure\n // that if the task is already finished we don't emit the old running state\n debounceTime(0)\n );\n}\n","import { UploadTask, UploadTaskSnapshot } from './interfaces';\nimport { fromTask } from './observable/fromTask';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface AngularFireUploadTask {\n task: UploadTask;\n snapshotChanges(): Observable<UploadTaskSnapshot | undefined>;\n percentageChanges(): Observable<number | undefined>;\n pause(): boolean;\n cancel(): boolean;\n resume(): boolean;\n then(\n onFulfilled?: ((a: UploadTaskSnapshot) => any) | null,\n onRejected?: ((a: Error) => any) | null\n ): Promise<any>;\n catch(onRejected: (a: Error) => any): Promise<any>;\n}\n\n/**\n * Create an AngularFireUploadTask from a regular UploadTask from the Storage SDK.\n * This method creates an observable of the upload and returns on object that provides\n * multiple methods for controlling and monitoring the file upload.\n */\nexport function createUploadTask(task: UploadTask): AngularFireUploadTask {\n const inner$ = fromTask(task);\n return {\n task,\n then: task.then.bind(task),\n catch: task.catch.bind(task),\n pause: task.pause.bind(task),\n cancel: task.cancel.bind(task),\n resume: task.resume.bind(task),\n snapshotChanges: () => inner$,\n percentageChanges: () => inner$.pipe(\n map(s => s.bytesTransferred / s.totalBytes * 100)\n )\n };\n}\n","import { ListResult, Reference, SettableMetadata, StringFormat, UploadMetadata } from './interfaces';\nimport { AngularFireUploadTask, createUploadTask } from './task';\nimport { from, Observable, of } from 'rxjs';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { observeOn, switchMap } from 'rxjs/operators';\n\nexport interface AngularFireStorageReference {\n getDownloadURL(): Observable<any>;\n getMetadata(): Observable<any>;\n delete(): Observable<any>;\n child(path: string): any;\n updateMetadata(meta: SettableMetadata): Observable<any>;\n put(data: any, metadata?: UploadMetadata | undefined): AngularFireUploadTask;\n putString(data: string, format?: string | undefined, metadata?: UploadMetadata | undefined): AngularFireUploadTask;\n listAll(): Observable<ListResult>;\n}\n\n/**\n * Create an AngularFire wrapped Storage Reference. This object\n * creates observable methods from promise based methods.\n */\nexport function createStorageRef(\n ref: Reference,\n schedulers: ɵAngularFireSchedulers,\n keepUnstableUntilFirst: <T>(obs$: Observable<T>) => Observable<T>\n): AngularFireStorageReference {\n return {\n getDownloadURL: () => of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(() => ref.getDownloadURL()),\n keepUnstableUntilFirst\n ),\n getMetadata: () => of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(() => ref.getMetadata()),\n keepUnstableUntilFirst\n ),\n delete: () => from(ref.delete()),\n child: (path: string) => createStorageRef(ref.child(path), schedulers, keepUnstableUntilFirst),\n updateMetadata: (meta: SettableMetadata) => from(ref.updateMetadata(meta)),\n put: (data: any, metadata?: UploadMetadata) => {\n const task = ref.put(data, metadata);\n return createUploadTask(task);\n },\n putString: (data: string, format?: StringFormat, metadata?: UploadMetadata) => {\n const task = ref.putString(data, format, metadata);\n return createUploadTask(task);\n },\n listAll: () => from(ref.listAll())\n };\n}\n","import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { createStorageRef } from './ref';\nimport { Observable } from 'rxjs';\nimport {\n FIREBASE_APP_NAME,\n FIREBASE_OPTIONS,\n FirebaseAppConfig,\n FirebaseOptions,\n ɵAngularFireSchedulers,\n ɵfetchInstance,\n ɵfirebaseAppFactory,\n ɵkeepUnstableUntilFirstFactory\n} from '@angular/fire';\nimport { UploadMetadata } from './interfaces';\nimport 'firebase/storage';\nimport firebase from 'firebase/app';\n\nexport const BUCKET = new InjectionToken<string>('angularfire2.storageBucket');\nexport const MAX_UPLOAD_RETRY_TIME = new InjectionToken<number>('angularfire2.storage.maxUploadRetryTime');\nexport const MAX_OPERATION_RETRY_TIME = new InjectionToken<number>('angularfire2.storage.maxOperationRetryTime');\n\n/**\n * AngularFireStorage Service\n *\n * This service is the main entry point for this feature module. It provides\n * an API for uploading and downloading binary files from Cloud Storage for\n * Firebase.\n */\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireStorage {\n public readonly storage: firebase.storage.Storage;\n\n public readonly keepUnstableUntilFirst: <T>(obs: Observable<T>) => Observable<T>;\n public readonly schedulers: ɵAngularFireSchedulers;\n\n constructor(\n @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,\n @Optional() @Inject(FIREBASE_APP_NAME) nameOrConfig: string | FirebaseAppConfig | null | undefined,\n @Optional() @Inject(BUCKET) storageBucket: string | null,\n // tslint:disable-next-line:ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n @Optional() @Inject(MAX_UPLOAD_RETRY_TIME) maxUploadRetryTime: number | any,\n @Optional() @Inject(MAX_OPERATION_RETRY_TIME) maxOperationRetryTime: number | any,\n ) {\n this.schedulers = new ɵAngularFireSchedulers(zone);\n this.keepUnstableUntilFirst = ɵkeepUnstableUntilFirstFactory(this.schedulers);\n const app = ɵfirebaseAppFactory(options, zone, nameOrConfig);\n\n this.storage = ɵfetchInstance(`${app.name}.storage.${storageBucket}`, 'AngularFireStorage', app, () => {\n const storage = zone.runOutsideAngular(() => app.storage(storageBucket || undefined));\n if (maxUploadRetryTime) {\n storage.setMaxUploadRetryTime(maxUploadRetryTime);\n }\n if (maxOperationRetryTime) {\n storage.setMaxOperationRetryTime(maxOperationRetryTime);\n }\n return storage;\n }, [maxUploadRetryTime, maxOperationRetryTime]);\n }\n\n ref(path: string) {\n return createStorageRef(this.storage.ref(path), this.schedulers, this.keepUnstableUntilFirst);\n }\n\n refFromURL(path: string) {\n return createStorageRef(this.storage.refFromURL(path), this.schedulers, this.keepUnstableUntilFirst);\n }\n\n upload(path: string, data: any, metadata?: UploadMetadata) {\n const storageRef = this.storage.ref(path);\n const ref = createStorageRef(storageRef, this.schedulers, this.keepUnstableUntilFirst);\n return ref.put(data, metadata);\n }\n\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, NgModule, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AngularFireStorage } from '../storage';\n\n/** to be used with in combination with | async */\n@Pipe({\n name: 'getDownloadURL',\n pure: false,\n})\nexport class GetDownloadURLPipe implements PipeTransform, OnDestroy {\n\n private asyncPipe: AsyncPipe;\n private path: string;\n private downloadUrl$: Observable<any>;\n\n constructor(private storage: AngularFireStorage, cdr: ChangeDetectorRef) {\n this.asyncPipe = new AsyncPipe(cdr);\n }\n\n transform(path: string) {\n if (path !== this.path) {\n this.path = path;\n this.downloadUrl$ = this.storage.ref(path).getDownloadURL();\n }\n return this.asyncPipe.transform(this.downloadUrl$);\n }\n\n ngOnDestroy() {\n this.asyncPipe.ngOnDestroy();\n }\n\n}\n\n@NgModule({\n declarations: [ GetDownloadURLPipe ],\n exports: [ GetDownloadURLPipe ],\n})\nexport class GetDownloadURLPipeModule {}\n","import { NgModule } from '@angular/core';\nimport { GetDownloadURLPipeModule } from './pipes/storageUrl.pipe';\nimport { AngularFireStorage } from './storage';\n\n@NgModule({\n exports: [ GetDownloadURLPipeModule ],\n providers: [ AngularFireStorage ]\n})\nexport class AngularFireStorageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Observable","debounceTime","map","of","observeOn","switchMap","from","InjectionToken","ɵAngularFireSchedulers","ɵkeepUnstableUntilFirstFactory","ɵfirebaseAppFactory","ɵfetchInstance","Injectable","Inject","FIREBASE_OPTIONS","Optional","FIREBASE_APP_NAME","PLATFORM_ID","NgZone","AsyncPipe","Pipe","ChangeDetectorRef","NgModule"],"mappings":"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"}
\No newline at end of file