Skip to content

Commit 6ec7661

Browse files
authored
enable eslint for Storage (#1850)
* storage auto fix * fix test files * more storage fixes * fix more lint issues * fix metadata.ts * [AUTOMATED]: Prettier Code Styling * update param type * revert accidental change * use unknown[] for rest param * Further improve Storage typings (#1860) * disable unused var check for function params * remove duplicate imports * [AUTOMATED]: Prettier Code Styling * update test command * fix something * fix some ts errors * [AUTOMATED]: Prettier Code Styling * fix some lint issues
1 parent 32cb0e1 commit 6ec7661

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+828
-955
lines changed

config/.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
"error",
104104
{
105105
"types": {
106-
"Object": "Use object instead.",
106+
"Object": "Use {} or 'object' instead.",
107107
"String": "Use 'string' instead.",
108108
"Number": "Use 'number' instead.",
109109
"Boolean": "Use 'boolean' instead."

packages/storage/.eslintrc.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"extends": "../../config/.eslintrc.json",
3+
"parserOptions": {
4+
"project": "tsconfig.json"
5+
},
6+
"rules": {
7+
"no-throw-literal": "off",
8+
"@typescript-eslint/no-unused-vars": [
9+
"error",
10+
{
11+
"varsIgnorePattern": "^_",
12+
"args": "none"
13+
}
14+
]
15+
}
16+
}

packages/storage/index.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import {
2222
_FirebaseNamespace
2323
} from '@firebase/app-types/private';
2424
import { StringFormat } from './src/implementation/string';
25-
import { TaskEvent } from './src/implementation/taskenums';
26-
import { TaskState } from './src/implementation/taskenums';
25+
import { TaskEvent, TaskState } from './src/implementation/taskenums';
26+
2727
import { XhrIoPool } from './src/implementation/xhriopool';
2828
import { Reference } from './src/reference';
2929
import { Service } from './src/service';
@@ -36,20 +36,24 @@ const STORAGE_TYPE = 'storage';
3636

3737
function factory(
3838
app: FirebaseApp,
39-
unused: any,
40-
opt_url?: string
39+
unused: unknown,
40+
url?: string
4141
): types.FirebaseStorage {
42-
return new Service(app, new XhrIoPool(), opt_url) as any;
42+
return (new Service(
43+
app,
44+
new XhrIoPool(),
45+
url
46+
) as unknown) as types.FirebaseStorage;
4347
}
4448

45-
export function registerStorage(instance: _FirebaseNamespace) {
46-
let namespaceExports = {
49+
export function registerStorage(instance: _FirebaseNamespace): void {
50+
const namespaceExports = {
4751
// no-inline
48-
TaskState: TaskState,
49-
TaskEvent: TaskEvent,
50-
StringFormat: StringFormat,
52+
TaskState,
53+
TaskEvent,
54+
StringFormat,
5155
Storage: Service,
52-
Reference: Reference
56+
Reference
5357
};
5458
instance.INTERNAL.registerService(
5559
STORAGE_TYPE,

packages/storage/package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
"dist"
1111
],
1212
"scripts": {
13+
"lint": "eslint -c .eslintrc.json '**/*.ts' --ignore-path '../../.gitignore'",
14+
"lint:fix": "eslint --fix -c .eslintrc.json '**/*.ts' --ignore-path '../../.gitignore'",
1315
"build": "rollup -c",
1416
"dev": "rollup -c -w",
15-
"test": "run-p test:browser",
17+
"test": "run-p test:browser lint",
1618
"test:browser": "karma start --single-run",
1719
"prepare": "yarn build"
1820
},
@@ -46,7 +48,11 @@
4648
"source-map-loader": "0.2.4",
4749
"ts-loader": "5.4.5",
4850
"typescript": "3.4.5",
49-
"webpack": "4.30.0"
51+
"webpack": "4.30.0",
52+
"eslint": "5.16.0",
53+
"@typescript-eslint/parser": "1.10.2",
54+
"@typescript-eslint/eslint-plugin": "1.10.2",
55+
"@typescript-eslint/eslint-plugin-tslint": "1.10.2"
5056
},
5157
"repository": {
5258
"directory": "packages/storage",

packages/storage/src/implementation/args.ts

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,20 @@ import * as type from './type';
2525
* @param passed The actual arguments passed to the function.
2626
* @throws {fbs.Error} If the arguments are invalid.
2727
*/
28-
export function validate(name: string, specs: ArgSpec[], passed: IArguments) {
28+
export function validate(
29+
name: string,
30+
specs: ArgSpec[],
31+
passed: IArguments
32+
): void {
2933
let minArgs = specs.length;
30-
let maxArgs = specs.length;
34+
const maxArgs = specs.length;
3135
for (let i = 0; i < specs.length; i++) {
3236
if (specs[i].optional) {
3337
minArgs = i;
3438
break;
3539
}
3640
}
37-
let validLength = minArgs <= passed.length && passed.length <= maxArgs;
41+
const validLength = minArgs <= passed.length && passed.length <= maxArgs;
3842
if (!validLength) {
3943
throw errorsExports.invalidArgumentCount(
4044
minArgs,
@@ -60,49 +64,52 @@ export function validate(name: string, specs: ArgSpec[], passed: IArguments) {
6064
* @struct
6165
*/
6266
export class ArgSpec {
63-
validator: (p1: any) => void;
67+
validator: (p1: unknown) => void;
6468
optional: boolean;
6569

66-
constructor(validator: (p1: any) => void, opt_optional?: boolean) {
67-
let self = this;
68-
this.validator = function(p: any) {
70+
constructor(validator: (p1: unknown) => void, optional?: boolean) {
71+
const self = this;
72+
this.validator = function(p: unknown) {
6973
if (self.optional && !type.isJustDef(p)) {
7074
return;
7175
}
7276
validator(p);
7377
};
74-
this.optional = !!opt_optional;
78+
this.optional = !!optional;
7579
}
7680
}
7781

78-
export function and_(v1: (p1: any) => void, v2: Function): (p1: any) => void {
82+
export function and_(
83+
v1: (p1: unknown) => void,
84+
v2: (p1: unknown) => void
85+
): (p1: unknown) => void {
7986
return function(p) {
8087
v1(p);
8188
v2(p);
8289
};
8390
}
8491

8592
export function stringSpec(
86-
opt_validator?: (p1: any) => void | null,
87-
opt_optional?: boolean
93+
validator?: (p1: unknown) => void | null,
94+
optional?: boolean
8895
): ArgSpec {
89-
function stringValidator(p: any) {
96+
function stringValidator(p: unknown): void {
9097
if (!type.isString(p)) {
9198
throw 'Expected string.';
9299
}
93100
}
94-
let validator;
95-
if (opt_validator) {
96-
validator = and_(stringValidator, opt_validator);
101+
let chainedValidator;
102+
if (validator) {
103+
chainedValidator = and_(stringValidator, validator);
97104
} else {
98-
validator = stringValidator;
105+
chainedValidator = stringValidator;
99106
}
100-
return new ArgSpec(validator, opt_optional);
107+
return new ArgSpec(chainedValidator, optional);
101108
}
102109

103110
export function uploadDataSpec(): ArgSpec {
104-
function validator(p: any) {
105-
let valid =
111+
function validator(p: unknown): void {
112+
const valid =
106113
p instanceof Uint8Array ||
107114
p instanceof ArrayBuffer ||
108115
(type.isNativeBlobDefined() && p instanceof Blob);
@@ -113,17 +120,17 @@ export function uploadDataSpec(): ArgSpec {
113120
return new ArgSpec(validator);
114121
}
115122

116-
export function metadataSpec(opt_optional?: boolean): ArgSpec {
117-
return new ArgSpec(MetadataUtils.metadataValidator, opt_optional);
123+
export function metadataSpec(optional?: boolean): ArgSpec {
124+
return new ArgSpec(MetadataUtils.metadataValidator, optional);
118125
}
119126

120-
export function listOptionSpec(opt_optional?: boolean): ArgSpec {
121-
return new ArgSpec(ListOptionsUtils.listOptionsValidator, opt_optional);
127+
export function listOptionSpec(optional?: boolean): ArgSpec {
128+
return new ArgSpec(ListOptionsUtils.listOptionsValidator, optional);
122129
}
123130

124131
export function nonNegativeNumberSpec(): ArgSpec {
125-
function validator(p: any) {
126-
let valid = type.isNumber(p) && p >= 0;
132+
function validator(p: unknown): void {
133+
const valid = type.isNumber(p) && p >= 0;
127134
if (!valid) {
128135
throw 'Expected a number 0 or greater.';
129136
}
@@ -132,27 +139,27 @@ export function nonNegativeNumberSpec(): ArgSpec {
132139
}
133140

134141
export function looseObjectSpec(
135-
opt_validator?: ((p1: any) => void) | null,
136-
opt_optional?: boolean
142+
validator?: ((p1: unknown) => void) | null,
143+
optional?: boolean
137144
): ArgSpec {
138-
function validator(p: any) {
139-
let isLooseObject = p === null || (type.isDef(p) && p instanceof Object);
145+
function isLooseObjectValidator(p: unknown): void {
146+
const isLooseObject = p === null || (type.isDef(p) && p instanceof Object);
140147
if (!isLooseObject) {
141148
throw 'Expected an Object.';
142149
}
143-
if (opt_validator !== undefined && opt_validator !== null) {
144-
opt_validator(p);
150+
if (validator !== undefined && validator !== null) {
151+
validator(p);
145152
}
146153
}
147-
return new ArgSpec(validator, opt_optional);
154+
return new ArgSpec(isLooseObjectValidator, optional);
148155
}
149156

150-
export function nullFunctionSpec(opt_optional?: boolean): ArgSpec {
151-
function validator(p: any) {
152-
let valid = p === null || type.isFunction(p);
157+
export function nullFunctionSpec(optional?: boolean): ArgSpec {
158+
function validator(p: unknown): void {
159+
const valid = p === null || type.isFunction(p);
153160
if (!valid) {
154161
throw 'Expected a Function.';
155162
}
156163
}
157-
return new ArgSpec(validator, opt_optional);
164+
return new ArgSpec(validator, optional);
158165
}

packages/storage/src/implementation/array.ts

Lines changed: 0 additions & 44 deletions
This file was deleted.

packages/storage/src/implementation/async.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,14 @@
1515
* limitations under the License.
1616
*/
1717

18-
/**
19-
* @fileoverview Method for invoking a callback asynchronously.
20-
*/
21-
import * as promiseimpl from './promise_external';
22-
2318
/**
2419
* Returns a function that invokes f with its arguments asynchronously as a
2520
* microtask, i.e. as soon as possible after the current script returns back
2621
* into browser code.
2722
*/
2823
export function async(f: Function): Function {
29-
return function(...argsToForward: any[]) {
30-
promiseimpl.resolve(true).then(function() {
31-
f.apply(null, argsToForward);
32-
});
24+
return (...argsToForward: unknown[]) => {
25+
// tslint:disable-next-line:no-floating-promises
26+
Promise.resolve().then(() => f(...argsToForward));
3327
};
3428
}

0 commit comments

Comments
 (0)