Skip to content

Commit

Permalink
fix(ts): improve return types for response metadata (#666)
Browse files Browse the repository at this point in the history
  • Loading branch information
JustinBeckwith committed Apr 7, 2019
1 parent d2bbcf3 commit da42bed
Show file tree
Hide file tree
Showing 11 changed files with 109 additions and 130 deletions.
5 changes: 1 addition & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@
"scripts": {
"predocs": "npm run compile",
"docs": "jsdoc -c .jsdoc.js",
"system-test": "mocha build/system-test --timeout 600000 && npm run conformance-test",
"system-test": "mocha build/system-test --timeout 600000",
"conformance-test": "mocha build/conformance-test",
"preconformance-test": "npm run compile",
"system-test": "mocha build/system-test --timeout 600000",
"presystem-test": "npm run compile",
"test": "nyc mocha build/test",
"pretest": "npm run compile",
Expand Down Expand Up @@ -69,7 +68,6 @@
"pumpify": "^1.5.1",
"snakeize": "^0.1.0",
"stream-events": "^1.0.1",
"teeny-request": "^3.11.3",
"through2": "^3.0.0",
"xdg-basedir": "^3.0.0"
},
Expand All @@ -89,7 +87,6 @@
"@types/node-fetch": "^2.1.3",
"@types/proxyquire": "^1.3.28",
"@types/pumpify": "^1.4.1",
"@types/request": "^2.47.1",
"@types/sinon": "^7.0.10",
"@types/through2": "^2.0.33",
"@types/tmp": "0.1.0",
Expand Down
19 changes: 9 additions & 10 deletions src/acl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
* limitations under the License.
*/

import {BodyResponseCallback, DecorateRequestOptions} from '@google-cloud/common';
import {BodyResponseCallback, DecorateRequestOptions, Metadata} from '@google-cloud/common';
import {promisifyAll} from '@google-cloud/promisify';
import arrify = require('arrify');
import * as r from 'request';

export interface AclOptions {
pathPrefix: string;
Expand All @@ -26,10 +25,10 @@ export interface AclOptions {
}

export type GetAclResponse =
[AccessControlObject | AccessControlObject[], r.Response];
[AccessControlObject | AccessControlObject[], Metadata];
export interface GetAclCallback {
(err: Error|null, acl?: AccessControlObject|AccessControlObject[]|null,
apiResponse?: r.Response): void;
apiResponse?: Metadata): void;
}
export interface GetAclOptions {
entity: string;
Expand All @@ -43,10 +42,10 @@ export interface UpdateAclOptions {
generation?: number;
userProject?: string;
}
export type UpdateAclResponse = [AccessControlObject, r.Response];
export type UpdateAclResponse = [AccessControlObject, Metadata];
export interface UpdateAclCallback {
(err: Error|null, acl?: AccessControlObject|null,
apiResponse?: r.Response): void;
apiResponse?: Metadata): void;
}

export interface AddAclOptions {
Expand All @@ -55,14 +54,14 @@ export interface AddAclOptions {
generation?: number;
userProject?: string;
}
export type AddAclResponse = [AccessControlObject, r.Response];
export type AddAclResponse = [AccessControlObject, Metadata];
export interface AddAclCallback {
(err: Error|null, acl?: AccessControlObject|null,
apiResponse?: r.Response): void;
apiResponse?: Metadata): void;
}
export type RemoveAclResponse = [r.Response];
export type RemoveAclResponse = [Metadata];
export interface RemoveAclCallback {
(err: Error|null, apiResponse?: r.Response): void;
(err: Error|null, apiResponse?: Metadata): void;
}
export interface RemoveAclOptions {
entity: string;
Expand Down
61 changes: 28 additions & 33 deletions src/bucket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ import * as mime from 'mime-types';
import * as path from 'path';

const snakeize = require('snakeize');
import * as request from 'request'; // Only for type declarations.
import {teenyRequest} from 'teeny-request';

import {Acl, AddAclCallback} from './acl';
import {Channel} from './channel';
Expand Down Expand Up @@ -55,7 +53,7 @@ interface BucketOptions {

export interface GetFilesCallback {
(err: Error|null, files?: File[], nextQuery?: {},
apiResponse?: request.Response): void;
apiResponse?: Metadata): void;
}

interface WatchAllOptions {
Expand Down Expand Up @@ -96,10 +94,10 @@ export interface CombineOptions {
}

export interface CombineCallback {
(err: Error|null, newFile: File|null, apiResponse: request.Response): void;
(err: Error|null, newFile: File|null, apiResponse: Metadata): void;
}

export type CombineResponse = [File, request.Response];
export type CombineResponse = [File, Metadata];

export interface CreateChannelConfig extends WatchAllOptions {
address: string;
Expand All @@ -109,10 +107,10 @@ export interface CreateChannelOptions {
userProject?: string;
}

export type CreateChannelResponse = [Channel, request.Response];
export type CreateChannelResponse = [Channel, Metadata];

export interface CreateChannelCallback {
(err: Error|null, channel: Channel|null, apiResponse: request.Response): void;
(err: Error|null, channel: Channel|null, apiResponse: Metadata): void;
}

export interface CreateNotificationOptions {
Expand All @@ -125,19 +123,19 @@ export interface CreateNotificationOptions {

export interface CreateNotificationCallback {
(err: Error|null, notification: Notification|null,
apiResponse: request.Response): void;
apiResponse: Metadata): void;
}

export type CreateNotificationResponse = [Notification, request.Response];
export type CreateNotificationResponse = [Notification, Metadata];

export interface DeleteBucketOptions {
userProject?: string;
}

export type DeleteBucketResponse = [request.Response];
export type DeleteBucketResponse = [Metadata];

export interface DeleteBucketCallback extends DeleteCallback {
(err: Error|null, apiResponse: request.Response): void;
(err: Error|null, apiResponse: Metadata): void;
}

export interface DeleteFilesOptions extends GetFilesOptions {
Expand All @@ -148,20 +146,20 @@ export interface DeleteFilesCallback {
(err: Error|Error[]|null, apiResponse?: object): void;
}

export type DeleteLabelsResponse = [request.Response];
export type DeleteLabelsResponse = [Metadata];

export interface DeleteLabelsCallback extends SetLabelsCallback {}

export type DisableRequesterPaysResponse = [request.Response];
export type DisableRequesterPaysResponse = [Metadata];

export interface DisableRequesterPaysCallback {
(err?: Error|null, apiResponse?: object): void;
}

export type EnableRequesterPaysResponse = [request.Response];
export type EnableRequesterPaysResponse = [Metadata];

export interface EnableRequesterPaysCallback {
(err?: Error|null, apiResponse?: request.Response): void;
(err?: Error|null, apiResponse?: Metadata): void;
}

export interface BucketExistsOptions extends GetConfig {
Expand All @@ -176,28 +174,26 @@ export interface GetBucketOptions extends GetConfig {
userProject?: string;
}

export type GetBucketResponse = [Bucket, request.Response];
export type GetBucketResponse = [Bucket, Metadata];

export interface GetBucketCallback {
(err: ApiError|null, bucket: Bucket|null,
apiResponse: request.Response): void;
(err: ApiError|null, bucket: Bucket|null, apiResponse: Metadata): void;
}

export interface GetLabelsOptions {
userProject?: string;
}

export type GetLabelsResponse = [request.Response];
export type GetLabelsResponse = [Metadata];

export interface GetLabelsCallback {
(err: Error|null, labels: object|null): void;
}

export type GetBucketMetadataResponse = [Metadata, request.Response];
export type GetBucketMetadataResponse = [Metadata, Metadata];

export interface GetBucketMetadataCallback {
(err: ApiError|null, metadata: Metadata|null,
apiResponse: request.Response): void;
(err: ApiError|null, metadata: Metadata|null, apiResponse: Metadata): void;
}

export interface GetBucketMetadataOptions {
Expand All @@ -210,10 +206,10 @@ export interface GetNotificationsOptions {

export interface GetNotificationsCallback {
(err: Error|null, notifications: Notification[]|null,
apiResponse: request.Response): void;
apiResponse: Metadata): void;
}

export type GetNotificationsResponse = [Notification[], request.Response];
export type GetNotificationsResponse = [Notification[], Metadata];

export interface MakeBucketPrivateOptions {
includeFiles?: boolean;
Expand Down Expand Up @@ -246,17 +242,17 @@ export interface SetBucketMetadataOptions {
userProject?: string;
}

export type SetBucketMetadataResponse = [request.Response];
export type SetBucketMetadataResponse = [Metadata];

export interface SetBucketMetadataCallback {
(err?: Error|null, metadata?: Metadata): void;
}

export interface BucketLockCallback {
(err?: Error|null, apiResponse?: request.Response): void;
(err?: Error|null, apiResponse?: Metadata): void;
}

export type BucketLockResponse = [request.Response];
export type BucketLockResponse = [Metadata];

export type Labels = {
[key: string]: string;
Expand All @@ -266,7 +262,7 @@ export interface SetLabelsOptions {
userProject?: string;
}

export type SetLabelsResponse = [request.Response];
export type SetLabelsResponse = [Metadata];

export interface SetLabelsCallback {
(err?: Error|null, metadata?: Metadata): void;
Expand All @@ -280,10 +276,10 @@ export interface SetBucketStorageClassCallback {
(err?: Error|null): void;
}

export type UploadResponse = [File, request.Response];
export type UploadResponse = [File, Metadata];

export interface UploadCallback {
(err: Error|null, file?: File|null, apiResponse?: request.Response): void;
(err: Error|null, file?: File|null, apiResponse?: Metadata): void;
}

export interface UploadOptions extends CreateResumableUploadOptions,
Expand Down Expand Up @@ -2517,8 +2513,7 @@ class Bucket extends ServiceObject {
callback!);
}

request(reqOpts: DecorateRequestOptions):
Promise<[ResponseBody, request.Response]>;
request(reqOpts: DecorateRequestOptions): Promise<[ResponseBody, Metadata]>;
request(reqOpts: DecorateRequestOptions, callback: BodyResponseCallback):
void;
/**
Expand All @@ -2530,7 +2525,7 @@ class Bucket extends ServiceObject {
* @param {function} callback - The callback function.
*/
request(reqOpts: DecorateRequestOptions, callback?: BodyResponseCallback):
void|Promise<[ResponseBody, request.Response]> {
void|Promise<[ResponseBody, Metadata]> {
if (this.userProject && (!reqOpts.qs || !reqOpts.qs.userProject)) {
reqOpts.qs = extend(reqOpts.qs, {userProject: this.userProject});
}
Expand Down
11 changes: 4 additions & 7 deletions src/channel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,13 @@
* limitations under the License.
*/

import {ServiceObject, util} from '@google-cloud/common';
import {Metadata, ServiceObject, util} from '@google-cloud/common';
import {promisifyAll} from '@google-cloud/promisify';
import * as request from 'request'; // Only for type declarations.
import {Response} from 'request';
import {teenyRequest} from 'teeny-request';

import {Storage} from './storage';

export interface StopCallback {
(err: Error|null, apiResponse?: request.Response): void;
(err: Error|null, apiResponse?: Metadata): void;
}


Expand Down Expand Up @@ -67,7 +64,7 @@ class Channel extends ServiceObject {
metadata.resourceId = resourceId;
}

stop(): Promise<Response>;
stop(): Promise<Metadata>;
stop(callback: StopCallback): void;
/**
* @typedef {array} StopResponse
Expand Down Expand Up @@ -101,7 +98,7 @@ class Channel extends ServiceObject {
* const apiResponse = data[0];
* });
*/
stop(callback?: StopCallback): Promise<Response>|void {
stop(callback?: StopCallback): Promise<Metadata>|void {
callback = callback || util.noop;
this.request(
{
Expand Down
Loading

0 comments on commit da42bed

Please sign in to comment.