Socket
Socket
Sign inDemoInstall

@google-cloud/common

Package Overview
Dependencies
Maintainers
1
Versions
118
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@google-cloud/common - npm Package Compare versions

Comparing version 0.7.1 to 0.8.0

src/operation.js

2

package.json
{
"name": "@google-cloud/common",
"version": "0.7.1",
"version": "0.8.0",
"author": "Google Inc.",

@@ -5,0 +5,0 @@ "description": "Common components for Google Cloud APIs Node.js Client Libraries",

@@ -23,16 +23,15 @@ /*!

var events = require('events');
var modelo = require('modelo');
/**
* @type {module:common/grpcService}
* @type {module:common/grpcServiceObject}
* @private
*/
var GrpcService = require('./grpc-service.js');
var GrpcServiceObject = require('./grpc-service-object.js');
/**
* @type {module:common/grpcServiceObject}
* @type {module:common/operation}
* @private
*/
var GrpcServiceObject = require('./grpc-service-object.js');
var Operation = require('./operation.js');

@@ -105,12 +104,7 @@ /**

Operation.call(this, config);
GrpcServiceObject.call(this, config);
events.EventEmitter.call(this);
this.completeListeners = 0;
this.hasActiveListeners = false;
this.listenForEvents_();
}
modelo.inherits(GrpcOperation, GrpcServiceObject, events.EventEmitter);
modelo.inherits(GrpcOperation, GrpcServiceObject, Operation);

@@ -138,81 +132,2 @@ /**

/**
* Wraps the `complete` and `error` events in a Promise.
*
* @return {promise}
*/
GrpcOperation.prototype.promise = function() {
var self = this;
return new self.Promise(function(resolve, reject) {
self
.on('error', reject)
.on('complete', function(metadata) {
resolve([metadata]);
});
});
};
/**
* Begin listening for events on the operation. This method keeps track of how
* many "complete" listeners are registered and removed, making sure polling is
* handled automatically.
*
* As long as there is one active "complete" listener, the connection is open.
* When there are no more listeners, the polling stops.
*
* @private
*/
GrpcOperation.prototype.listenForEvents_ = function() {
var self = this;
this.on('newListener', function(event) {
if (event === 'complete') {
self.completeListeners++;
if (!self.hasActiveListeners) {
self.hasActiveListeners = true;
self.startPolling_();
}
}
});
this.on('removeListener', function(event) {
if (event === 'complete' && --self.completeListeners === 0) {
self.hasActiveListeners = false;
}
});
};
/**
* Poll `getMetadata` to check the operation's status. This runs a loop to ping
* the API on an interval.
*
* Note: This method is automatically called once a "complete" event handler is
* registered on the operation.
*
* @private
*/
GrpcOperation.prototype.startPolling_ = function() {
var self = this;
if (!this.hasActiveListeners) {
return;
}
this.getMetadata(function(err, resp) {
if (err || resp.error) {
self.emit('error', err || GrpcService.decorateStatus_(resp.result));
return;
}
if (!resp.done) {
setTimeout(self.startPolling_.bind(self), 500);
return;
}
self.emit('complete', resp);
});
};
module.exports = GrpcOperation;

@@ -36,2 +36,8 @@ /*!

/**
* @type {module:common/operation}
* @private
*/
exports.Operation = require('./operation.js');
/**
* @type {module:common/paginator}

@@ -38,0 +44,0 @@ * @private

@@ -75,3 +75,3 @@ /**

*/
var ApiError = createErrorClass('ApiError', function(errorBody) {
util.ApiError = createErrorClass('ApiError', function(errorBody) {
this.code = errorBody.code;

@@ -103,10 +103,16 @@ this.errors = errorBody.errors;

/**
* Wrap the ApiError constructor so context isn't lost.
* Custom error type for partial errors returned from the API.
*
* @param {object} errorBody - Error object.
* @param {object} b - Error object.
*/
util.ApiError = function(errorBody) {
return new ApiError(errorBody);
};
util.PartialFailureError = createErrorClass('PartialFailureError', function(b) {
var errorObject = b;
this.errors = errorObject.errors;
this.response = errorObject.response;
var defaultErrorMessage = 'A failure occurred during this request.';
this.message = errorObject.message || defaultErrorMessage;
});
/**

@@ -113,0 +119,0 @@ * Uniformly process an API response.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc