Skip to content

Commit 1b068cf

Browse files
authored
Storage typing updates (#5359)
* rename to StorageError * more type safety * Update API reports * update api report Co-authored-by: Feiyang1 <[email protected]>
1 parent fe890a1 commit 1b068cf

File tree

14 files changed

+129
-129
lines changed

14 files changed

+129
-129
lines changed

common/api-review/storage.api.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ export interface FirebaseStorage extends _FirebaseService {
5151
maxUploadRetryTime: number;
5252
}
5353

54-
// @public
55-
export interface FirebaseStorageError extends FirebaseError {
56-
serverResponse: string | null;
57-
}
58-
5954
// @internal
6055
export class _FirebaseStorageImpl implements FirebaseStorage {
6156
constructor(
@@ -129,13 +124,13 @@ export function getMetadata(ref: StorageReference): Promise<FullMetadata>;
129124
// @public
130125
export function getStorage(app?: FirebaseApp, bucketUrl?: string): FirebaseStorage;
131126

132-
// Warning: (ae-forgotten-export) The symbol "FirebaseStorageError" needs to be exported by the entry point index.d.ts
127+
// Warning: (ae-forgotten-export) The symbol "StorageError" needs to be exported by the entry point index.d.ts
133128
//
134129
// @internal (undocumented)
135-
export function _invalidArgument(message: string): FirebaseStorageError_2;
130+
export function _invalidArgument(message: string): StorageError_2;
136131

137132
// @internal (undocumented)
138-
export function _invalidRootOperation(name: string): FirebaseStorageError_2;
133+
export function _invalidRootOperation(name: string): StorageError_2;
139134

140135
// @public
141136
export function list(ref: StorageReference, options?: ListOptions): Promise<ListResult>;
@@ -211,12 +206,17 @@ export interface SettableMetadata {
211206
} | undefined;
212207
}
213208

209+
// @public
210+
export interface StorageError extends FirebaseError {
211+
serverResponse: string | null;
212+
}
213+
214214
// @public
215215
export interface StorageObserver<T> {
216216
// (undocumented)
217217
complete?: CompleteFn | null;
218218
// (undocumented)
219-
error?: (error: FirebaseStorageError) => void | null;
219+
error?: (error: StorageError) => void | null;
220220
// (undocumented)
221221
next?: NextFn<T> | null;
222222
}
@@ -233,14 +233,14 @@ export interface StorageReference {
233233
}
234234

235235
// @public
236-
export type StringFormat = string;
236+
export type StringFormat = typeof StringFormat[keyof typeof StringFormat];
237237

238238
// @public
239239
export const StringFormat: {
240-
RAW: string;
241-
BASE64: string;
242-
BASE64URL: string;
243-
DATA_URL: string;
240+
readonly RAW: "raw";
241+
readonly BASE64: "base64";
242+
readonly BASE64URL: "base64url";
243+
readonly DATA_URL: "data_url";
244244
};
245245

246246
// @public
@@ -295,31 +295,31 @@ export function uploadString(ref: StorageReference, value: string, format?: stri
295295
// @public
296296
export interface UploadTask {
297297
cancel(): boolean;
298-
catch(onRejected: (error: FirebaseStorageError) => unknown): Promise<unknown>;
299-
on(event: TaskEvent, nextOrObserver?: StorageObserver<UploadTaskSnapshot> | null | ((snapshot: UploadTaskSnapshot) => unknown), error?: ((a: FirebaseStorageError) => unknown) | null, complete?: Unsubscribe | null): Unsubscribe | Subscribe<UploadTaskSnapshot>;
298+
catch(onRejected: (error: StorageError) => unknown): Promise<unknown>;
299+
on(event: TaskEvent, nextOrObserver?: StorageObserver<UploadTaskSnapshot> | null | ((snapshot: UploadTaskSnapshot) => unknown), error?: ((a: StorageError) => unknown) | null, complete?: Unsubscribe | null): Unsubscribe | Subscribe<UploadTaskSnapshot>;
300300
pause(): boolean;
301301
resume(): boolean;
302302
snapshot: UploadTaskSnapshot;
303-
then(onFulfilled?: ((snapshot: UploadTaskSnapshot) => unknown) | null, onRejected?: ((error: FirebaseStorageError) => unknown) | null): Promise<unknown>;
303+
then(onFulfilled?: ((snapshot: UploadTaskSnapshot) => unknown) | null, onRejected?: ((error: StorageError) => unknown) | null): Promise<unknown>;
304304
}
305305

306306
// @internal
307307
export class _UploadTask {
308308
constructor(ref: _Reference, blob: _FbsBlob, metadata?: Metadata | null);
309309
_blob: _FbsBlob;
310310
cancel(): boolean;
311-
catch<T>(onRejected: (p1: FirebaseStorageError_2) => T | Promise<T>): Promise<T>;
311+
catch<T>(onRejected: (p1: StorageError_2) => T | Promise<T>): Promise<T>;
312312
// Warning: (ae-forgotten-export) The symbol "Metadata" needs to be exported by the entry point index.d.ts
313313
_metadata: Metadata | null;
314314
// Warning: (ae-forgotten-export) The symbol "Unsubscribe" needs to be exported by the entry point index.d.ts
315315
// Warning: (ae-forgotten-export) The symbol "Subscribe" needs to be exported by the entry point index.d.ts
316-
on(type: _TaskEvent, nextOrObserver?: StorageObserver<UploadTaskSnapshot> | null | ((snapshot: UploadTaskSnapshot) => unknown), error?: ((a: FirebaseStorageError_2) => unknown) | null, completed?: Unsubscribe_2 | null): Unsubscribe_2 | Subscribe_2<UploadTaskSnapshot>;
316+
on(type: _TaskEvent, nextOrObserver?: StorageObserver<UploadTaskSnapshot> | null | ((snapshot: UploadTaskSnapshot) => unknown), error?: ((a: StorageError_2) => unknown) | null, completed?: Unsubscribe_2 | null): Unsubscribe_2 | Subscribe_2<UploadTaskSnapshot>;
317317
pause(): boolean;
318318
resume(): boolean;
319319
get snapshot(): UploadTaskSnapshot;
320320
// Warning: (ae-forgotten-export) The symbol "InternalTaskState" needs to be exported by the entry point index.d.ts
321321
_state: InternalTaskState;
322-
then<U>(onFulfilled?: ((value: UploadTaskSnapshot) => U | Promise<U>) | null, onRejected?: ((error: FirebaseStorageError_2) => U | Promise<U>) | null): Promise<U>;
322+
then<U>(onFulfilled?: ((value: UploadTaskSnapshot) => U | Promise<U>) | null, onRejected?: ((error: StorageError_2) => U | Promise<U>) | null): Promise<U>;
323323
_transferred: number;
324324
}
325325

packages/storage/src/implementation/error.ts

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ import { CONFIG_STORAGE_BUCKET_KEY } from './constants';
2121
* An error returned by the Firebase Storage SDK.
2222
* @public
2323
*/
24-
export class FirebaseStorageError extends FirebaseError {
24+
export class StorageError extends FirebaseError {
2525
private readonly _baseMessage: string;
2626
/**
27-
* Stores custom error data unque to FirebaseStorageError.
27+
* Stores custom error data unque to StorageError.
2828
*/
2929
customData: { serverResponse: string | null } = { serverResponse: null };
3030

@@ -39,9 +39,9 @@ export class FirebaseStorageError extends FirebaseError {
3939
`Firebase Storage: ${message} (${prependCode(code)})`
4040
);
4141
this._baseMessage = this.message;
42-
// Without this, `instanceof FirebaseStorageError`, in tests for example,
42+
// Without this, `instanceof StorageError`, in tests for example,
4343
// returns false.
44-
Object.setPrototypeOf(this, FirebaseStorageError.prototype);
44+
Object.setPrototypeOf(this, StorageError.prototype);
4545
}
4646

4747
/**
@@ -72,7 +72,7 @@ export const errors = {};
7272

7373
/**
7474
* @public
75-
* Error codes that can be attached to `FirebaseStorageError`s.
75+
* Error codes that can be attached to `StorageError`s.
7676
*/
7777
export const enum StorageErrorCode {
7878
// Shared between all platforms
@@ -108,36 +108,36 @@ export function prependCode(code: StorageErrorCode): string {
108108
return 'storage/' + code;
109109
}
110110

111-
export function unknown(): FirebaseStorageError {
111+
export function unknown(): StorageError {
112112
const message =
113113
'An unknown error occurred, please check the error payload for ' +
114114
'server response.';
115-
return new FirebaseStorageError(StorageErrorCode.UNKNOWN, message);
115+
return new StorageError(StorageErrorCode.UNKNOWN, message);
116116
}
117117

118-
export function objectNotFound(path: string): FirebaseStorageError {
119-
return new FirebaseStorageError(
118+
export function objectNotFound(path: string): StorageError {
119+
return new StorageError(
120120
StorageErrorCode.OBJECT_NOT_FOUND,
121121
"Object '" + path + "' does not exist."
122122
);
123123
}
124124

125-
export function bucketNotFound(bucket: string): FirebaseStorageError {
126-
return new FirebaseStorageError(
125+
export function bucketNotFound(bucket: string): StorageError {
126+
return new StorageError(
127127
StorageErrorCode.BUCKET_NOT_FOUND,
128128
"Bucket '" + bucket + "' does not exist."
129129
);
130130
}
131131

132-
export function projectNotFound(project: string): FirebaseStorageError {
133-
return new FirebaseStorageError(
132+
export function projectNotFound(project: string): StorageError {
133+
return new StorageError(
134134
StorageErrorCode.PROJECT_NOT_FOUND,
135135
"Project '" + project + "' does not exist."
136136
);
137137
}
138138

139-
export function quotaExceeded(bucket: string): FirebaseStorageError {
140-
return new FirebaseStorageError(
139+
export function quotaExceeded(bucket: string): StorageError {
140+
return new StorageError(
141141
StorageErrorCode.QUOTA_EXCEEDED,
142142
"Quota for bucket '" +
143143
bucket +
@@ -146,29 +146,29 @@ export function quotaExceeded(bucket: string): FirebaseStorageError {
146146
);
147147
}
148148

149-
export function unauthenticated(): FirebaseStorageError {
149+
export function unauthenticated(): StorageError {
150150
const message =
151151
'User is not authenticated, please authenticate using Firebase ' +
152152
'Authentication and try again.';
153-
return new FirebaseStorageError(StorageErrorCode.UNAUTHENTICATED, message);
153+
return new StorageError(StorageErrorCode.UNAUTHENTICATED, message);
154154
}
155155

156-
export function unauthorizedApp(): FirebaseStorageError {
157-
return new FirebaseStorageError(
156+
export function unauthorizedApp(): StorageError {
157+
return new StorageError(
158158
StorageErrorCode.UNAUTHORIZED_APP,
159159
'This app does not have permission to access Firebase Storage on this project.'
160160
);
161161
}
162162

163-
export function unauthorized(path: string): FirebaseStorageError {
164-
return new FirebaseStorageError(
163+
export function unauthorized(path: string): StorageError {
164+
return new StorageError(
165165
StorageErrorCode.UNAUTHORIZED,
166166
"User does not have permission to access '" + path + "'."
167167
);
168168
}
169169

170-
export function retryLimitExceeded(): FirebaseStorageError {
171-
return new FirebaseStorageError(
170+
export function retryLimitExceeded(): StorageError {
171+
return new StorageError(
172172
StorageErrorCode.RETRY_LIMIT_EXCEEDED,
173173
'Max retry time for operation exceeded, please try again.'
174174
);
@@ -178,8 +178,8 @@ export function invalidChecksum(
178178
path: string,
179179
checksum: string,
180180
calculated: string
181-
): FirebaseStorageError {
182-
return new FirebaseStorageError(
181+
): StorageError {
182+
return new StorageError(
183183
StorageErrorCode.INVALID_CHECKSUM,
184184
"Uploaded/downloaded object '" +
185185
path +
@@ -191,36 +191,36 @@ export function invalidChecksum(
191191
);
192192
}
193193

194-
export function canceled(): FirebaseStorageError {
195-
return new FirebaseStorageError(
194+
export function canceled(): StorageError {
195+
return new StorageError(
196196
StorageErrorCode.CANCELED,
197197
'User canceled the upload/download.'
198198
);
199199
}
200200

201-
export function invalidEventName(name: string): FirebaseStorageError {
202-
return new FirebaseStorageError(
201+
export function invalidEventName(name: string): StorageError {
202+
return new StorageError(
203203
StorageErrorCode.INVALID_EVENT_NAME,
204204
"Invalid event name '" + name + "'."
205205
);
206206
}
207207

208-
export function invalidUrl(url: string): FirebaseStorageError {
209-
return new FirebaseStorageError(
208+
export function invalidUrl(url: string): StorageError {
209+
return new StorageError(
210210
StorageErrorCode.INVALID_URL,
211211
"Invalid URL '" + url + "'."
212212
);
213213
}
214214

215-
export function invalidDefaultBucket(bucket: string): FirebaseStorageError {
216-
return new FirebaseStorageError(
215+
export function invalidDefaultBucket(bucket: string): StorageError {
216+
return new StorageError(
217217
StorageErrorCode.INVALID_DEFAULT_BUCKET,
218218
"Invalid default bucket '" + bucket + "'."
219219
);
220220
}
221221

222-
export function noDefaultBucket(): FirebaseStorageError {
223-
return new FirebaseStorageError(
222+
export function noDefaultBucket(): StorageError {
223+
return new StorageError(
224224
StorageErrorCode.NO_DEFAULT_BUCKET,
225225
'No default bucket ' +
226226
"found. Did you set the '" +
@@ -229,22 +229,22 @@ export function noDefaultBucket(): FirebaseStorageError {
229229
);
230230
}
231231

232-
export function cannotSliceBlob(): FirebaseStorageError {
233-
return new FirebaseStorageError(
232+
export function cannotSliceBlob(): StorageError {
233+
return new StorageError(
234234
StorageErrorCode.CANNOT_SLICE_BLOB,
235235
'Cannot slice blob for upload. Please retry the upload.'
236236
);
237237
}
238238

239-
export function serverFileWrongSize(): FirebaseStorageError {
240-
return new FirebaseStorageError(
239+
export function serverFileWrongSize(): StorageError {
240+
return new StorageError(
241241
StorageErrorCode.SERVER_FILE_WRONG_SIZE,
242242
'Server recorded incorrect upload file size, please retry the upload.'
243243
);
244244
}
245245

246-
export function noDownloadURL(): FirebaseStorageError {
247-
return new FirebaseStorageError(
246+
export function noDownloadURL(): StorageError {
247+
return new StorageError(
248248
StorageErrorCode.NO_DOWNLOAD_URL,
249249
'The given file does not have any download URLs.'
250250
);
@@ -253,16 +253,16 @@ export function noDownloadURL(): FirebaseStorageError {
253253
/**
254254
* @internal
255255
*/
256-
export function invalidArgument(message: string): FirebaseStorageError {
257-
return new FirebaseStorageError(StorageErrorCode.INVALID_ARGUMENT, message);
256+
export function invalidArgument(message: string): StorageError {
257+
return new StorageError(StorageErrorCode.INVALID_ARGUMENT, message);
258258
}
259259

260260
export function invalidArgumentCount(
261261
argMin: number,
262262
argMax: number,
263263
fnName: string,
264264
real: number
265-
): FirebaseStorageError {
265+
): StorageError {
266266
let countPart;
267267
let plural;
268268
if (argMin === argMax) {
@@ -272,7 +272,7 @@ export function invalidArgumentCount(
272272
countPart = 'between ' + argMin + ' and ' + argMax;
273273
plural = 'arguments';
274274
}
275-
return new FirebaseStorageError(
275+
return new StorageError(
276276
StorageErrorCode.INVALID_ARGUMENT_COUNT,
277277
'Invalid argument count in `' +
278278
fnName +
@@ -286,8 +286,8 @@ export function invalidArgumentCount(
286286
);
287287
}
288288

289-
export function appDeleted(): FirebaseStorageError {
290-
return new FirebaseStorageError(
289+
export function appDeleted(): StorageError {
290+
return new StorageError(
291291
StorageErrorCode.APP_DELETED,
292292
'The Firebase app was deleted.'
293293
);
@@ -298,8 +298,8 @@ export function appDeleted(): FirebaseStorageError {
298298
*
299299
* @internal
300300
*/
301-
export function invalidRootOperation(name: string): FirebaseStorageError {
302-
return new FirebaseStorageError(
301+
export function invalidRootOperation(name: string): StorageError {
302+
return new StorageError(
303303
StorageErrorCode.INVALID_ROOT_OPERATION,
304304
"The operation '" +
305305
name +
@@ -315,8 +315,8 @@ export function invalidRootOperation(name: string): FirebaseStorageError {
315315
export function invalidFormat(
316316
format: string,
317317
message: string
318-
): FirebaseStorageError {
319-
return new FirebaseStorageError(
318+
): StorageError {
319+
return new StorageError(
320320
StorageErrorCode.INVALID_FORMAT,
321321
"String does not match format '" + format + "': " + message
322322
);
@@ -325,8 +325,8 @@ export function invalidFormat(
325325
/**
326326
* @param message - A message describing the internal error.
327327
*/
328-
export function unsupportedEnvironment(message: string): FirebaseStorageError {
329-
throw new FirebaseStorageError(
328+
export function unsupportedEnvironment(message: string): StorageError {
329+
throw new StorageError(
330330
StorageErrorCode.UNSUPPORTED_ENVIRONMENT,
331331
message
332332
);
@@ -335,8 +335,8 @@ export function unsupportedEnvironment(message: string): FirebaseStorageError {
335335
/**
336336
* @param message - A message describing the internal error.
337337
*/
338-
export function internalError(message: string): FirebaseStorageError {
339-
throw new FirebaseStorageError(
338+
export function internalError(message: string): StorageError {
339+
throw new StorageError(
340340
StorageErrorCode.INTERNAL_ERROR,
341341
'Internal error: ' + message
342342
);

0 commit comments

Comments
 (0)