4
4
package dev.gitlive.firebase.storage.externals
5
5
6
6
import dev.gitlive.firebase.externals.FirebaseApp
7
+ import kotlin.js.Json
7
8
import kotlin.js.Promise
9
+ import kotlin.js.collections.JsMap
8
10
9
- external fun getStorage (app : FirebaseApp ? = definedExternally, url : String ): FirebaseStorage
11
+ external fun getStorage (app : FirebaseApp ? = definedExternally, bucketUrl : String ): FirebaseStorage
10
12
11
13
external fun getStorage (app : FirebaseApp ? = definedExternally): FirebaseStorage
12
14
13
15
external fun ref (storage : FirebaseStorage , url : String? = definedExternally): StorageReference
14
- external fun ref (ref : StorageReference , url : String? = definedExternally): StorageReference
16
+ external fun ref (ref : StorageReference , path : String? = definedExternally): StorageReference
15
17
16
18
external fun getDownloadURL (ref : StorageReference ): Promise <String >
17
19
18
- external fun getMetadata (ref : StorageReference ): Promise <StorageMetadata >
20
+ external fun getMetadata (ref : StorageReference ): Promise <FullMetadata >
21
+ external fun updateMetadata (ref : StorageReference , metadata : SettableMetadata ): Promise <FullMetadata >
19
22
20
- external fun uploadBytes (ref : StorageReference , file : dynamic , metadata : StorageMetadata ? ): Promise <Unit >
23
+ external fun uploadBytes (ref : StorageReference , file : dynamic , metadata : Json ? ): Promise <UploadResult >
24
+ external fun uploadBytesResumable (ref : StorageReference , data : dynamic , metadata : Json ? ): UploadTask
21
25
22
- external fun uploadBytesResumable (ref : StorageReference , data : dynamic , metadata : StorageMetadata ? ): UploadTask
26
+ external fun deleteObject (ref : StorageReference ): Promise < Unit >
23
27
24
- external fun deleteObject (ref : StorageReference ): Promise <Unit >;
25
-
26
- external fun listAll (ref : StorageReference ): Promise <ListResult >;
28
+ external fun list (ref : StorageReference , options : ListOptions ? ): Promise <ListResult >
29
+ external fun listAll (ref : StorageReference ): Promise <ListResult >
27
30
28
31
external fun connectStorageEmulator (
29
32
storage : FirebaseStorage ,
@@ -46,45 +49,63 @@ external interface StorageReference {
46
49
val storage: FirebaseStorage
47
50
}
48
51
49
- external open class ListResult {
52
+ external interface ListOptions {
53
+ val maxResults: Double?
54
+ val pageToken: String?
55
+ }
56
+
57
+ external interface ListResult {
50
58
val items: Array <StorageReference >
51
59
val nextPageToken: String
52
60
val prefixes: Array <StorageReference >
53
61
}
54
62
55
63
external interface StorageError
56
64
57
- external interface UploadTaskSnapshot {
58
- val bytesTransferred: Number
59
- val ref: StorageReference
60
- val state: String
61
- val task: UploadTask
62
- val totalBytes: Number
65
+ external interface SettableMetadata {
66
+ val cacheControl: String?
67
+ val contentDisposition: String?
68
+ val contentEncoding: String?
69
+ val contentLanguage: String?
70
+ val contentType: String?
71
+ val customMetadata: Json ?
63
72
}
64
73
65
- external class StorageMetadata {
66
- val bucket: String?
67
- var cacheControl: String?
68
- var contentDisposition: String?
69
- var contentEncoding: String?
70
- var contentLanguage: String?
71
- var contentType: String?
72
- var customMetadata: Map <String , String >?
73
- val fullPath: String?
74
- val generation: String?
74
+ external interface UploadMetadata : SettableMetadata {
75
75
val md5Hash: String?
76
- val metageneration: String?
77
- val name: String?
78
- val size: Number ?
79
- val timeCreated: String?
80
- val updated: String?
76
+ }
81
77
78
+ external interface FullMetadata : UploadMetadata {
79
+ val bucket: String
80
+ val downloadTokens: Array <String >?
81
+ val fullPath: String
82
+ val generation: String
83
+ val metageneration: String
84
+ val name: String
85
+ val ref: StorageReference ?
86
+ val size: Double
87
+ val timeCreated: String
88
+ val updated: String
82
89
}
83
90
84
- external class UploadTask : Promise <UploadTaskSnapshot > {
91
+ external interface UploadResult {
92
+ val metadata: FullMetadata
93
+ val ref: StorageReference
94
+ }
95
+
96
+ external interface UploadTask {
85
97
fun cancel (): Boolean ;
86
98
fun on (event : String , next : (snapshot: UploadTaskSnapshot ) -> Unit , error : (a: StorageError ) -> Unit , complete : () -> Unit ): () -> Unit
87
99
fun pause (): Boolean ;
88
100
fun resume (): Boolean ;
101
+ fun then (onFulfilled : ((UploadTaskSnapshot ) -> Unit )? , onRejected : ((StorageError ) -> Unit )? ): Promise <Unit >
89
102
val snapshot: UploadTaskSnapshot
90
103
}
104
+
105
+ external interface UploadTaskSnapshot {
106
+ val bytesTransferred: Double
107
+ val ref: StorageReference
108
+ val state: String
109
+ val task: UploadTask
110
+ val totalBytes: Double
111
+ }
0 commit comments