Skip to content

Commit f7b625f

Browse files
fix: Improve typescript types (#109)
1 parent 0ee5b3f commit f7b625f

4 files changed

Lines changed: 27 additions & 23 deletions

File tree

packages/google-cloud-dns/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"system-test": "mocha build/system-test --timeout 600000",
5252
"clean": "gts clean",
5353
"compile": "tsc -p .",
54-
"fix": "gts fix && prettier --write samples/*.js samples/*/*.js",
54+
"fix": "eslint --fix 'samples/**/*.js' && prettier --write samples/*.js samples/*/*.js && gts fix",
5555
"prepare": "npm run compile",
5656
"pretest": "npm run compile"
5757
},

packages/google-cloud-dns/src/change.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,21 @@
1717
'use strict';
1818

1919
import {teenyRequest} from 'teeny-request';
20-
import {ServiceObject} from '@google-cloud/common';
20+
import {ServiceObject, CreateOptions} from '@google-cloud/common';
2121
import {promisifyAll} from '@google-cloud/promisify';
2222
import {Zone} from './zone';
2323
import {Record} from './record';
24-
import {Response} from 'request';
24+
import * as r from 'request';
2525

26-
export interface CreateChangeRequest {
26+
export interface CreateChangeRequest extends CreateOptions {
2727
add?: Record|Record[];
2828
delete?: Record|Record[];
2929
}
3030

31+
export type CreateChangeResponse = [Change, r.Response];
32+
3133
export interface ChangeCallback {
32-
(err?: Error|null, change?: Change|null, apiResponse?: Response): void;
34+
(err: Error|null, change?: Change|null, apiResponse?: r.Response): void;
3335
}
3436

3537
/**
@@ -45,6 +47,7 @@ export interface ChangeCallback {
4547
* const change = zone.change('change-id');
4648
*/
4749
export class Change extends ServiceObject {
50+
parent!: Zone;
4851
constructor(zone: Zone, id?: string) {
4952
const methods = {
5053
/**
@@ -192,9 +195,8 @@ export class Change extends ServiceObject {
192195
*/
193196
id,
194197
methods,
195-
requestModule: teenyRequest,
196-
// tslint:disable-next-line:no-any
197-
} as any);
198+
requestModule: teenyRequest as typeof r,
199+
});
198200
}
199201
/**
200202
* Create a change.
@@ -230,15 +232,16 @@ export class Change extends ServiceObject {
230232
* const apiResponse = data[1];
231233
* });
232234
*/
233-
create(callback: ChangeCallback): void;
235+
create(config?: CreateChangeRequest): Promise<CreateChangeResponse>;
234236
create(config: CreateChangeRequest, callback: ChangeCallback): void;
237+
create(callback: ChangeCallback): void;
235238
create(
236-
configOrCallback: CreateChangeRequest|ChangeCallback,
237-
callback?: ChangeCallback) {
239+
configOrCallback?: CreateChangeRequest|ChangeCallback,
240+
callback?: ChangeCallback): void|Promise<CreateChangeResponse> {
238241
const config = typeof configOrCallback === 'object' ? configOrCallback : {};
239242
callback =
240243
typeof configOrCallback === 'function' ? configOrCallback! : callback;
241-
(this.parent as Zone).createChange(config, (err, change, apiResponse) => {
244+
this.parent.createChange(config, (err, change, apiResponse) => {
242245
if (err) {
243246
callback!(err, null, apiResponse);
244247
return;

packages/google-cloud-dns/src/zone.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ const zonefile = require('dns-zonefile');
3131
import {Change, ChangeCallback, CreateChangeRequest} from './change';
3232
import {Record, RecordMetadata, RecordObject} from './record';
3333
import {DNS} from '.';
34-
import {Response} from 'request';
34+
import * as r from 'request';
3535

3636
export interface DeleteZoneConfig {
3737
force?: boolean;
3838
}
3939

4040
export interface GetRecordsCallback {
4141
(err: Error|null, records?: Record[]|null, nextQuery?: {}|null,
42-
apiResponse?: Response): void;
42+
apiResponse?: r.Response): void;
4343
}
4444

4545
export interface GetRecordsRequest {
@@ -63,7 +63,7 @@ export interface GetChangesRequest {
6363

6464
export interface GetChangesCallback {
6565
(err: Error|null, changes?: Change[]|null, nextQuery?: {}|null,
66-
apiResponse?: Response): void;
66+
apiResponse?: r.Response): void;
6767
}
6868

6969
/**
@@ -245,8 +245,7 @@ class Zone extends ServiceObject {
245245
id: name,
246246
createMethod: dns.createZone.bind(dns),
247247
methods,
248-
// tslint:disable-next-line:no-any
249-
requestModule: teenyRequest as any,
248+
requestModule: teenyRequest as typeof r,
250249
});
251250
/**
252251
* @name Zone#name
@@ -460,11 +459,12 @@ class Zone extends ServiceObject {
460459
* const apiResponse = data[0];
461460
* });
462461
*/
462+
delete(options?: DeleteZoneConfig): Promise<[r.Response]>;
463463
delete(callback: DeleteCallback): void;
464464
delete(options: DeleteZoneConfig, callback: DeleteCallback): void;
465465
delete(
466-
optionsOrCallback: DeleteZoneConfig|DeleteCallback,
467-
callback?: DeleteCallback): void {
466+
optionsOrCallback?: DeleteZoneConfig|DeleteCallback,
467+
callback?: DeleteCallback): void|Promise<[r.Response]> {
468468
const options =
469469
typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
470470
callback =
@@ -473,7 +473,7 @@ class Zone extends ServiceObject {
473473
this.empty(this.delete.bind(this, callback));
474474
return;
475475
}
476-
super.delete(callback);
476+
super.delete(callback!);
477477
}
478478
/**
479479
* @typedef {array} ZoneDeleteRecordsResponse
@@ -616,7 +616,7 @@ class Zone extends ServiceObject {
616616
return record.type !== 'NS' && record.type !== 'SOA';
617617
});
618618
if (recordsToDelete.length === 0) {
619-
callback();
619+
callback(null);
620620
} else {
621621
this.deleteRecords(recordsToDelete, callback);
622622
}
@@ -1134,7 +1134,7 @@ class Zone extends ServiceObject {
11341134
return;
11351135
}
11361136
if (records!.length === 0) {
1137-
callback();
1137+
callback(null);
11381138
return;
11391139
}
11401140
this.deleteRecords(records!, callback);

packages/google-cloud-dns/test/zone.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,8 @@ describe('Zone', () => {
353353
});
354354

355355
it('should try to delete again after emptying', done => {
356-
FakeServiceObject.prototype.delete = () => {
356+
// tslint:disable-next-line:no-any
357+
(FakeServiceObject.prototype as any).delete = () => {
357358
done();
358359
};
359360

0 commit comments

Comments
 (0)