gcs-resumable-upload
Advanced tools
+141
-3
| /// <reference types="request" /> | ||
| /// <reference types="node" /> | ||
| /// <reference types="pumpify" /> | ||
| /// <reference types="configstore" /> | ||
| import { AxiosRequestConfig, AxiosResponse } from 'axios'; | ||
| import * as ConfigStore from 'configstore'; | ||
| import { GoogleAuth, GoogleAuthOptions } from 'google-auth-library'; | ||
| import * as Pumpify from 'pumpify'; | ||
| import * as r from 'request'; | ||
| export declare type RequestBody = any; | ||
| export declare type RequestResponse = r.Response; | ||
| export declare type RequestResponse = AxiosResponse; | ||
| export declare type Request = r.Request; | ||
| export declare type RequestOptions = r.OptionsWithUri; | ||
| export declare type RequestCallback = (err: Error | null, response?: r.Response, body?: RequestBody) => void; | ||
| export declare type RequestOptions = AxiosRequestConfig; | ||
| export declare type RequestCallback = (err: Error | null, response?: AxiosResponse, body?: RequestBody) => void; | ||
| export declare type AuthorizeRequestCallback = (err: Error | null, authorizedReqOpts: RequestOptions) => void; | ||
| export declare type CreateUriCallback = (err: Error | null, uri?: string) => void; | ||
| export interface Encryption { | ||
| key: {}; | ||
| hash: {}; | ||
| } | ||
| export interface UploadConfig { | ||
| /** | ||
| * The name of the destination bucket. | ||
| */ | ||
| bucket: string; | ||
| /** | ||
| * The name of the destination file. | ||
| */ | ||
| file: string; | ||
| authConfig?: GoogleAuthOptions; | ||
| /** | ||
| * If you want to re-use an auth client from google-auto-auth, pass an | ||
| * instance here. | ||
| */ | ||
| authClient?: GoogleAuth; | ||
| /** | ||
| * This will cause the upload to fail if the current generation of the remote | ||
| * object does not match the one provided here. | ||
| */ | ||
| generation?: number; | ||
| /** | ||
| * A customer-supplied encryption key. See | ||
| * https://cloud.google.com/storage/docs/encryption#customer-supplied. | ||
| */ | ||
| key?: string | Buffer; | ||
| /** | ||
| * Resource name of the Cloud KMS key, of the form | ||
| * `projects/my-project/locations/global/keyRings/my-kr/cryptoKeys/my-key`, | ||
| * that will be used to encrypt the object. Overrides the object metadata's | ||
| * `kms_key_name` value, if any. | ||
| */ | ||
| kmsKeyName?: string; | ||
| /** | ||
| * Any metadata you wish to set on the object. | ||
| */ | ||
| metadata?: ConfigMetadata; | ||
| /** | ||
| * The starting byte of the upload stream, for resuming an interrupted upload. | ||
| * See | ||
| * https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload#resume-upload. | ||
| */ | ||
| offset?: number; | ||
| /** | ||
| * Set an Origin header when creating the resumable upload URI. | ||
| */ | ||
| origin?: string; | ||
| /** | ||
| * Apply a predefined set of access controls to the created file. | ||
| */ | ||
| predefinedAcl?: 'authenticatedRead' | 'bucketOwnerFullControl' | 'bucketOwnerRead' | 'private' | 'projectPrivate' | 'publicRead'; | ||
| /** | ||
| * Make the uploaded file private. (Alias for config.predefinedAcl = | ||
| * 'private') | ||
| */ | ||
| private?: boolean; | ||
| /** | ||
| * Make the uploaded file public. (Alias for config.predefinedAcl = | ||
| * 'publicRead') | ||
| */ | ||
| public?: boolean; | ||
| /** | ||
| * If you already have a resumable URI from a previously-created resumable | ||
| * upload, just pass it in here and we'll use that. | ||
| */ | ||
| uri?: string; | ||
| /** | ||
| * If the bucket being accessed has requesterPays functionality enabled, this | ||
| * can be set to control which project is billed for the access of this file. | ||
| */ | ||
| userProject?: string; | ||
| } | ||
| export interface ConfigMetadata { | ||
| /** | ||
| * Set the length of the file being uploaded. | ||
| */ | ||
| contentLength?: number; | ||
| /** | ||
| * Set the content type of the incoming data. | ||
| */ | ||
| contentType?: string; | ||
| } | ||
| export declare class Upload extends Pumpify { | ||
| bucket: string; | ||
| file: string; | ||
| authConfig?: { | ||
| scopes?: string[]; | ||
| }; | ||
| authClient: GoogleAuth; | ||
| generation?: number; | ||
| key?: string | Buffer; | ||
| kmsKeyName?: string; | ||
| metadata: ConfigMetadata; | ||
| offset?: number; | ||
| origin?: string; | ||
| predefinedAcl?: 'authenticatedRead' | 'bucketOwnerFullControl' | 'bucketOwnerRead' | 'private' | 'projectPrivate' | 'publicRead'; | ||
| private?: boolean; | ||
| public?: boolean; | ||
| uri?: string; | ||
| userProject?: string; | ||
| encryption?: Encryption; | ||
| configStore: ConfigStore; | ||
| uriProvidedManually: boolean; | ||
| numBytesWritten: number; | ||
| numRetries: number; | ||
| contentLength: number | '*'; | ||
| private bufferStream?; | ||
| private offsetStream?; | ||
| constructor(cfg: UploadConfig); | ||
| createURI(callback: CreateUriCallback): void; | ||
| private continueUploading(); | ||
| private startUploading(); | ||
| private onChunk(chunk, enc, next); | ||
| private getAndSetOffset(callback); | ||
| private makeRequest(reqOpts, callback); | ||
| private getRequestStream(reqOpts, callback); | ||
| private restart(); | ||
| private get(prop); | ||
| private set(props); | ||
| private deleteConfig(); | ||
| /** | ||
| * @return {bool} is the request good? | ||
| */ | ||
| private onResponse(resp); | ||
| } | ||
| export declare function upload(cfg: UploadConfig): Upload; | ||
| export declare function createURI(cfg: UploadConfig, callback: CreateUriCallback): void; |
+316
-300
| "use strict"; | ||
| var __extends = (this && this.__extends) || (function () { | ||
| var extendStatics = Object.setPrototypeOf || | ||
| ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
| function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
| return function (d, b) { | ||
| extendStatics(d, b); | ||
| function __() { this.constructor = d; } | ||
| d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| }; | ||
| })(); | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var ConfigStore = require("configstore"); | ||
| var crypto = require("crypto"); | ||
| var google_auth_library_1 = require("google-auth-library"); | ||
| var Pumpify = require("pumpify"); | ||
| var r = require("request"); | ||
| var stream_1 = require("stream"); | ||
| var util = require("util"); | ||
| var streamEvents = require('stream-events'); | ||
| var googleAuth = require('google-auto-auth'); | ||
| var pumpify = require('pumpify'); | ||
| var streamEvents = require("stream-events"); | ||
| var request = r.defaults({ json: true, pool: { maxSockets: Infinity } }); | ||
@@ -19,323 +28,330 @@ var BASE_URI = 'https://www.googleapis.com/upload/storage/v1/b'; | ||
| }; | ||
| function Upload(cfg) { | ||
| var _this = this; | ||
| pumpify.call(this); | ||
| streamEvents.call(this); | ||
| cfg = cfg || {}; | ||
| if (!cfg.bucket || !cfg.file) { | ||
| throw new Error('A bucket and file name are required'); | ||
| var Upload = /** @class */ (function (_super) { | ||
| __extends(Upload, _super); | ||
| function Upload(cfg) { | ||
| var _this = _super.call(this) || this; | ||
| _this.numBytesWritten = 0; | ||
| _this.numRetries = 0; | ||
| streamEvents.call(_this); | ||
| cfg = cfg || {}; | ||
| if (!cfg.bucket || !cfg.file) { | ||
| throw new Error('A bucket and file name are required'); | ||
| } | ||
| cfg.authConfig = cfg.authConfig || {}; | ||
| cfg.authConfig.scopes = | ||
| ['https://www.googleapis.com/auth/devstorage.full_control']; | ||
| _this.authClient = cfg.authClient || new google_auth_library_1.GoogleAuth(cfg.authConfig); | ||
| _this.bucket = cfg.bucket; | ||
| _this.file = cfg.file; | ||
| _this.generation = cfg.generation; | ||
| _this.kmsKeyName = cfg.kmsKeyName; | ||
| _this.metadata = cfg.metadata || {}; | ||
| _this.offset = cfg.offset; | ||
| _this.origin = cfg.origin; | ||
| _this.userProject = cfg.userProject; | ||
| if (cfg.key) { | ||
| /** | ||
| * NOTE: This is `as string` because there appears to be some weird kind | ||
| * of TypeScript bug as 2.8. Tracking the issue here: | ||
| * https://github.com/Microsoft/TypeScript/issues/23155 | ||
| */ | ||
| var base64Key = Buffer.from(cfg.key).toString('base64'); | ||
| _this.encryption = { | ||
| key: base64Key, | ||
| hash: crypto.createHash('sha256').update(cfg.key).digest('base64') | ||
| }; | ||
| } | ||
| _this.predefinedAcl = cfg.predefinedAcl; | ||
| if (cfg.private) | ||
| _this.predefinedAcl = 'private'; | ||
| if (cfg.public) | ||
| _this.predefinedAcl = 'publicRead'; | ||
| _this.configStore = new ConfigStore('gcs-resumable-upload'); | ||
| _this.uriProvidedManually = !!cfg.uri; | ||
| _this.uri = cfg.uri || _this.get('uri'); | ||
| _this.numBytesWritten = 0; | ||
| _this.numRetries = 0; | ||
| var contentLength = cfg.metadata ? Number(cfg.metadata.contentLength) : NaN; | ||
| _this.contentLength = isNaN(contentLength) ? '*' : contentLength; | ||
| _this.once('writing', function () { | ||
| if (_this.uri) { | ||
| _this.continueUploading(); | ||
| } | ||
| else { | ||
| _this.createURI(function (err) { | ||
| if (err) { | ||
| return _this.destroy(err); | ||
| } | ||
| _this.startUploading(); | ||
| }); | ||
| } | ||
| }); | ||
| return _this; | ||
| } | ||
| cfg.authConfig = cfg.authConfig || {}; | ||
| cfg.authConfig.scopes = | ||
| ['https://www.googleapis.com/auth/devstorage.full_control']; | ||
| this.authClient = cfg.authClient || googleAuth(cfg.authConfig); | ||
| this.bucket = cfg.bucket; | ||
| this.file = cfg.file; | ||
| this.generation = cfg.generation; | ||
| this.kmsKeyName = cfg.kmsKeyName; | ||
| this.metadata = cfg.metadata || {}; | ||
| this.offset = cfg.offset; | ||
| this.origin = cfg.origin; | ||
| this.userProject = cfg.userProject; | ||
| if (cfg.key) { | ||
| /** | ||
| * NOTE: This is `as string` because there appears to be some weird kind | ||
| * of TypeScript bug as 2.8. Tracking the issue here: | ||
| * https://github.com/Microsoft/TypeScript/issues/23155 | ||
| */ | ||
| var base64Key = Buffer.from(cfg.key).toString('base64'); | ||
| this.encryption = { | ||
| key: base64Key, | ||
| hash: crypto.createHash('sha256').update(cfg.key).digest('base64') | ||
| Upload.prototype.createURI = function (callback) { | ||
| var _this = this; | ||
| var metadata = this.metadata; | ||
| var reqOpts = { | ||
| method: 'POST', | ||
| url: [BASE_URI, this.bucket, 'o'].join('/'), | ||
| params: { name: this.file, uploadType: 'resumable' }, | ||
| data: metadata, | ||
| headers: {} | ||
| }; | ||
| } | ||
| this.predefinedAcl = cfg.predefinedAcl; | ||
| if (cfg.private) | ||
| this.predefinedAcl = 'private'; | ||
| if (cfg.public) | ||
| this.predefinedAcl = 'publicRead'; | ||
| this.configStore = new ConfigStore('gcs-resumable-upload'); | ||
| this.uriProvidedManually = !!cfg.uri; | ||
| this.uri = cfg.uri || this.get('uri'); | ||
| this.numBytesWritten = 0; | ||
| this.numRetries = 0; | ||
| var contentLength = cfg.metadata ? Number(cfg.metadata.contentLength) : NaN; | ||
| this.contentLength = isNaN(contentLength) ? '*' : contentLength; | ||
| this.once('writing', function () { | ||
| if (_this.uri) { | ||
| _this.continueUploading(); | ||
| if (metadata.contentLength) { | ||
| reqOpts.headers['X-Upload-Content-Length'] = metadata.contentLength; | ||
| } | ||
| else { | ||
| _this.createURI(function (err) { | ||
| if (err) { | ||
| return _this.destroy(err); | ||
| } | ||
| _this.startUploading(); | ||
| }); | ||
| if (metadata.contentType) { | ||
| reqOpts.headers['X-Upload-Content-Type'] = metadata.contentType; | ||
| } | ||
| }); | ||
| } | ||
| util.inherits(Upload, pumpify); | ||
| Upload.prototype.createURI = function (callback) { | ||
| var _this = this; | ||
| var metadata = this.metadata; | ||
| var reqOpts = { | ||
| method: 'POST', | ||
| uri: [BASE_URI, this.bucket, 'o'].join('/'), | ||
| qs: { name: this.file, uploadType: 'resumable' }, | ||
| json: metadata, | ||
| headers: {} | ||
| if (typeof this.generation !== 'undefined') { | ||
| reqOpts.params.ifGenerationMatch = this.generation; | ||
| } | ||
| if (this.kmsKeyName) { | ||
| reqOpts.params.kmsKeyName = this.kmsKeyName; | ||
| } | ||
| if (this.predefinedAcl) { | ||
| reqOpts.params.predefinedAcl = this.predefinedAcl; | ||
| } | ||
| if (this.origin) { | ||
| reqOpts.headers.Origin = this.origin; | ||
| } | ||
| this.makeRequest(reqOpts, function (err, resp) { | ||
| if (err) { | ||
| return callback(err); | ||
| } | ||
| var uri = resp.headers.location; | ||
| _this.uri = uri; | ||
| _this.set({ uri: uri }); | ||
| _this.offset = 0; | ||
| callback(null, uri); | ||
| }); | ||
| }; | ||
| if (metadata.contentLength) { | ||
| reqOpts.headers['X-Upload-Content-Length'] = metadata.contentLength; | ||
| } | ||
| if (metadata.contentType) { | ||
| reqOpts.headers['X-Upload-Content-Type'] = metadata.contentType; | ||
| } | ||
| if (typeof this.generation !== 'undefined') { | ||
| reqOpts.qs.ifGenerationMatch = this.generation; | ||
| } | ||
| if (this.kmsKeyName) { | ||
| reqOpts.qs.kmsKeyName = this.kmsKeyName; | ||
| } | ||
| if (this.predefinedAcl) { | ||
| reqOpts.qs.predefinedAcl = this.predefinedAcl; | ||
| } | ||
| if (this.origin) { | ||
| reqOpts.headers.Origin = this.origin; | ||
| } | ||
| this.makeRequest(reqOpts, function (err, resp) { | ||
| if (err) { | ||
| return callback(err); | ||
| Upload.prototype.continueUploading = function () { | ||
| if (typeof this.offset === 'number') { | ||
| return this.startUploading(); | ||
| } | ||
| var uri = resp.headers.location; | ||
| _this.uri = uri; | ||
| _this.set({ uri: uri }); | ||
| _this.offset = 0; | ||
| callback(null, uri); | ||
| }); | ||
| }; | ||
| Upload.prototype.continueUploading = function () { | ||
| if (typeof this.offset === 'number') { | ||
| return this.startUploading(); | ||
| } | ||
| this.getAndSetOffset(this.startUploading.bind(this)); | ||
| }; | ||
| Upload.prototype.startUploading = function () { | ||
| var _this = this; | ||
| var reqOpts = { | ||
| method: 'PUT', | ||
| uri: this.uri, | ||
| headers: { 'Content-Range': 'bytes ' + this.offset + '-*/' + this.contentLength } | ||
| this.getAndSetOffset(this.startUploading.bind(this)); | ||
| }; | ||
| var bufferStream = this.bufferStream = new stream_1.PassThrough(); | ||
| var offsetStream = this.offsetStream = | ||
| new stream_1.PassThrough({ transform: this.onChunk.bind(this) }); | ||
| var delayStream = new stream_1.PassThrough(); | ||
| this.getRequestStream(reqOpts, function (requestStream) { | ||
| _this.setPipeline(bufferStream, offsetStream, requestStream, delayStream); | ||
| // wait for "complete" from request before letting the stream finish | ||
| delayStream.on('prefinish', function () { | ||
| _this.cork(); | ||
| }); | ||
| requestStream.on('complete', function (resp) { | ||
| if (resp.statusCode < 200 || resp.statusCode > 299) { | ||
| _this.destroy(new Error('Upload failed')); | ||
| return; | ||
| Upload.prototype.startUploading = function () { | ||
| var _this = this; | ||
| var reqOpts = { | ||
| method: 'PUT', | ||
| url: this.uri, | ||
| headers: { | ||
| 'Content-Range': 'bytes ' + this.offset + '-*/' + this.contentLength | ||
| } | ||
| _this.emit('metadata', resp.body); | ||
| _this.deleteConfig(); | ||
| _this.uncork(); | ||
| }; | ||
| var bufferStream = this.bufferStream = new stream_1.PassThrough(); | ||
| var offsetStream = this.offsetStream = | ||
| new stream_1.PassThrough({ transform: this.onChunk.bind(this) }); | ||
| var delayStream = new stream_1.PassThrough(); | ||
| this.getRequestStream(reqOpts, function (requestStream) { | ||
| _this.setPipeline(bufferStream, offsetStream, requestStream, delayStream); | ||
| // wait for "complete" from request before letting the stream finish | ||
| delayStream.on('prefinish', function () { | ||
| _this.cork(); | ||
| }); | ||
| requestStream.on('complete', function (resp) { | ||
| if (resp.statusCode < 200 || resp.statusCode > 299) { | ||
| _this.destroy(new Error('Upload failed')); | ||
| return; | ||
| } | ||
| _this.emit('metadata', resp.body); | ||
| _this.deleteConfig(); | ||
| _this.uncork(); | ||
| }); | ||
| }); | ||
| }); | ||
| }; | ||
| Upload.prototype.onChunk = function (chunk, enc, next) { | ||
| var offset = this.offset; | ||
| var numBytesWritten = this.numBytesWritten; | ||
| // check if this is the same content uploaded previously. this caches a slice | ||
| // of the first chunk, then compares it with the first byte of incoming data | ||
| if (numBytesWritten === 0) { | ||
| var cachedFirstChunk = this.get('firstChunk'); | ||
| var firstChunk = chunk.slice(0, 16).valueOf(); | ||
| if (!cachedFirstChunk) { | ||
| // This is a new upload. Cache the first chunk. | ||
| this.set({ uri: this.uri, firstChunk: firstChunk }); | ||
| } | ||
| else { | ||
| // this continues an upload in progress. check if the bytes are the same | ||
| cachedFirstChunk = Buffer.from(cachedFirstChunk); | ||
| var nextChunk = Buffer.from(firstChunk); | ||
| if (Buffer.compare(cachedFirstChunk, nextChunk) !== 0) { | ||
| // this data is not the same. start a new upload | ||
| this.bufferStream.unshift(chunk); | ||
| this.bufferStream.unpipe(this.offsetStream); | ||
| this.restart(); | ||
| return; | ||
| }; | ||
| Upload.prototype.onChunk = function (chunk, enc, next) { | ||
| var offset = this.offset; | ||
| var numBytesWritten = this.numBytesWritten; | ||
| // check if this is the same content uploaded previously. this caches a | ||
| // slice of the first chunk, then compares it with the first byte of | ||
| // incoming data | ||
| if (numBytesWritten === 0) { | ||
| var cachedFirstChunk = this.get('firstChunk'); | ||
| var firstChunk = chunk.slice(0, 16).valueOf(); | ||
| if (!cachedFirstChunk) { | ||
| // This is a new upload. Cache the first chunk. | ||
| this.set({ uri: this.uri, firstChunk: firstChunk }); | ||
| } | ||
| else { | ||
| // this continues an upload in progress. check if the bytes are the same | ||
| cachedFirstChunk = Buffer.from(cachedFirstChunk); | ||
| var nextChunk = Buffer.from(firstChunk); | ||
| if (Buffer.compare(cachedFirstChunk, nextChunk) !== 0) { | ||
| // this data is not the same. start a new upload | ||
| this.bufferStream.unshift(chunk); | ||
| this.bufferStream.unpipe(this.offsetStream); | ||
| this.restart(); | ||
| return; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| var length = chunk.length; | ||
| if (typeof chunk === 'string') | ||
| length = Buffer.byteLength(chunk, enc); | ||
| if (numBytesWritten < offset) | ||
| chunk = chunk.slice(offset - numBytesWritten); | ||
| this.numBytesWritten += length; | ||
| // only push data from the byte after the one we left off on | ||
| next(null, this.numBytesWritten > offset ? chunk : undefined); | ||
| }; | ||
| Upload.prototype.getAndSetOffset = function (callback) { | ||
| var _this = this; | ||
| this.makeRequest({ | ||
| method: 'PUT', | ||
| uri: this.uri, | ||
| headers: { 'Content-Length': 0, 'Content-Range': 'bytes */*' } | ||
| }, function (err, resp) { | ||
| if (err) { | ||
| // we don't return a 404 to the user if they provided the resumable | ||
| // URI. if we're just using the configstore file to tell us that this | ||
| // file exists, and it turns out that it doesn't (the 404), that's | ||
| // probably stale config data. | ||
| if (resp && resp.statusCode === 404 && !_this.uriProvidedManually) { | ||
| return _this.restart(); | ||
| var length = chunk.length; | ||
| if (typeof chunk === 'string') | ||
| length = Buffer.byteLength(chunk, enc); | ||
| if (numBytesWritten < offset) | ||
| chunk = chunk.slice(offset - numBytesWritten); | ||
| this.numBytesWritten += length; | ||
| // only push data from the byte after the one we left off on | ||
| next(null, this.numBytesWritten > offset ? chunk : undefined); | ||
| }; | ||
| Upload.prototype.getAndSetOffset = function (callback) { | ||
| var _this = this; | ||
| var opts = { | ||
| method: 'PUT', | ||
| url: this.uri, | ||
| headers: { 'Content-Length': 0, 'Content-Range': 'bytes */*' } | ||
| }; | ||
| this.makeRequest(opts, function (err, resp) { | ||
| if (err) { | ||
| // we don't return a 404 to the user if they provided the resumable | ||
| // URI. if we're just using the configstore file to tell us that this | ||
| // file exists, and it turns out that it doesn't (the 404), that's | ||
| // probably stale config data. | ||
| if (resp && resp.status === 404 && !_this.uriProvidedManually) { | ||
| return _this.restart(); | ||
| } | ||
| // this resumable upload is unrecoverable (bad data or service error). | ||
| // - | ||
| // https://github.com/stephenplusplus/gcs-resumable-upload/issues/15 | ||
| // - | ||
| // https://github.com/stephenplusplus/gcs-resumable-upload/pull/16#discussion_r80363774 | ||
| if (resp && resp.status === TERMINATED_UPLOAD_STATUS_CODE) { | ||
| return _this.restart(); | ||
| } | ||
| return _this.destroy(err); | ||
| } | ||
| // this resumable upload is unrecoverable (bad data or service error). | ||
| // - | ||
| // https://github.com/stephenplusplus/gcs-resumable-upload/issues/15 | ||
| // - | ||
| // https://github.com/stephenplusplus/gcs-resumable-upload/pull/16#discussion_r80363774 | ||
| if (resp && resp.statusCode === TERMINATED_UPLOAD_STATUS_CODE) { | ||
| return _this.restart(); | ||
| if (resp && resp.status === RESUMABLE_INCOMPLETE_STATUS_CODE) { | ||
| if (resp.headers.range) { | ||
| var range = resp.headers.range; | ||
| _this.offset = Number(range.split('-')[1]) + 1; | ||
| callback(); | ||
| return; | ||
| } | ||
| } | ||
| return _this.destroy(err); | ||
| _this.offset = 0; | ||
| callback(); | ||
| }); | ||
| }; | ||
| Upload.prototype.makeRequest = function (reqOpts, callback) { | ||
| if (this.encryption) { | ||
| reqOpts.headers = reqOpts.headers || {}; | ||
| reqOpts.headers['x-goog-encryption-algorithm'] = 'AES256'; | ||
| reqOpts.headers['x-goog-encryption-key'] = this.encryption.key; | ||
| reqOpts.headers['x-goog-encryption-key-sha256'] = this.encryption.hash; | ||
| } | ||
| if (resp.statusCode === RESUMABLE_INCOMPLETE_STATUS_CODE) { | ||
| if (resp.headers.range) { | ||
| var range = resp.headers.range; | ||
| _this.offset = Number(range.split('-')[1]) + 1; | ||
| callback(); | ||
| return; | ||
| } | ||
| if (this.userProject) { | ||
| reqOpts.params = reqOpts.params || {}; | ||
| reqOpts.params.userProject = this.userProject; | ||
| } | ||
| _this.offset = 0; | ||
| callback(); | ||
| }); | ||
| }; | ||
| Upload.prototype.makeRequest = function (reqOpts, callback) { | ||
| if (this.encryption) { | ||
| reqOpts.headers = reqOpts.headers || {}; | ||
| reqOpts.headers['x-goog-encryption-algorithm'] = 'AES256'; | ||
| reqOpts.headers['x-goog-encryption-key'] = this.encryption.key; | ||
| reqOpts.headers['x-goog-encryption-key-sha256'] = this.encryption.hash; | ||
| } | ||
| if (this.userProject) { | ||
| reqOpts.qs = reqOpts.qs || {}; | ||
| reqOpts.qs.userProject = this.userProject; | ||
| } | ||
| this.authClient.authorizeRequest(reqOpts, function (err, authorizedReqOpts) { | ||
| if (err) { | ||
| err = wrapError('Could not authenticate request', err); | ||
| return callback(err, null, null); | ||
| reqOpts.validateStatus = function (status) { | ||
| return (status >= 200 && status < 300) || | ||
| status === RESUMABLE_INCOMPLETE_STATUS_CODE; | ||
| }; | ||
| this.authClient.request(reqOpts).then(function (r) { | ||
| return callback(null, r, r.data); | ||
| }, function (err) { | ||
| var body = err.response ? err.response.data : undefined; | ||
| var e = (body && body.error) ? body.error : err; | ||
| return callback(e, err.response, body); | ||
| }); | ||
| }; | ||
| Upload.prototype.getRequestStream = function (reqOpts, callback) { | ||
| var _this = this; | ||
| if (this.userProject) { | ||
| reqOpts.params = reqOpts.params || {}; | ||
| reqOpts.params.userProject = this.userProject; | ||
| } | ||
| request(authorizedReqOpts, function (err, resp, body) { | ||
| this.authClient.authorizeRequest(reqOpts) | ||
| .then(function (opts) { | ||
| var authorizedReqOpts = axiosToRequest(reqOpts); | ||
| var requestStream = request(authorizedReqOpts); | ||
| requestStream.on('error', _this.destroy.bind(_this)); | ||
| requestStream.on('response', _this.onResponse.bind(_this)); | ||
| requestStream.on('complete', function (resp) { | ||
| var body = resp.body; | ||
| if (body && body.error) | ||
| _this.destroy(body.error); | ||
| }); | ||
| // this makes the response body come back in the response (weird?) | ||
| requestStream.callback = function () { }; | ||
| callback(requestStream); | ||
| }) | ||
| .catch(function (err) { | ||
| return _this.destroy(wrapError('Could not authenticate request', err)); | ||
| }); | ||
| }; | ||
| Upload.prototype.restart = function () { | ||
| var _this = this; | ||
| this.numBytesWritten = 0; | ||
| this.deleteConfig(); | ||
| this.createURI(function (err) { | ||
| if (err) { | ||
| return callback(err, resp, body); | ||
| return _this.destroy(err); | ||
| } | ||
| if (body && body.error) { | ||
| return callback(body.error, resp, body); | ||
| _this.startUploading(); | ||
| }); | ||
| }; | ||
| Upload.prototype.get = function (prop) { | ||
| var store = this.configStore.get([this.bucket, this.file].join('/')); | ||
| return store && store[prop]; | ||
| }; | ||
| // tslint:disable-next-line no-any | ||
| Upload.prototype.set = function (props) { | ||
| this.configStore.set([this.bucket, this.file].join('/'), props); | ||
| }; | ||
| Upload.prototype.deleteConfig = function () { | ||
| this.configStore.delete([this.bucket, this.file].join('/')); | ||
| }; | ||
| /** | ||
| * @return {bool} is the request good? | ||
| */ | ||
| Upload.prototype.onResponse = function (resp) { | ||
| if (resp.status === 404) { | ||
| if (this.numRetries < RETRY_LIMIT) { | ||
| this.numRetries++; | ||
| this.startUploading(); | ||
| } | ||
| var nonSuccess = Math.floor(resp.statusCode / 100) !== 2; // 200-299 status code | ||
| if (nonSuccess && | ||
| resp.statusCode !== RESUMABLE_INCOMPLETE_STATUS_CODE) { | ||
| return callback(new Error(body), resp, body); | ||
| else { | ||
| this.destroy(new Error('Retry limit exceeded')); | ||
| } | ||
| callback(null, resp, body); | ||
| }); | ||
| }); | ||
| }; | ||
| Upload.prototype.getRequestStream = function (reqOpts, callback) { | ||
| var _this = this; | ||
| if (this.userProject) { | ||
| reqOpts.qs = reqOpts.qs || {}; | ||
| reqOpts.qs.userProject = this.userProject; | ||
| } | ||
| this.authClient.authorizeRequest(reqOpts, function (err, authorizedReqOpts) { | ||
| if (err) { | ||
| return _this.destroy(wrapError('Could not authenticate request', err)); | ||
| return false; | ||
| } | ||
| var requestStream = request(authorizedReqOpts); | ||
| requestStream.on('error', _this.destroy.bind(_this)); | ||
| requestStream.on('response', _this.onResponse.bind(_this)); | ||
| requestStream.on('complete', function (resp) { | ||
| var body = resp.body; | ||
| if (body && body.error) | ||
| _this.destroy(body.error); | ||
| }); | ||
| // this makes the response body come back in the response (weird?) | ||
| requestStream.callback = function () { }; | ||
| callback(requestStream); | ||
| }); | ||
| }; | ||
| Upload.prototype.restart = function () { | ||
| var _this = this; | ||
| this.numBytesWritten = 0; | ||
| this.deleteConfig(); | ||
| this.createURI(function (err) { | ||
| if (err) { | ||
| return _this.destroy(err); | ||
| if (resp.status > 499 && resp.status < 600) { | ||
| if (this.numRetries < RETRY_LIMIT) { | ||
| var randomMs = Math.round(Math.random() * 1000); | ||
| var waitTime = Math.pow(2, this.numRetries) * 1000 + randomMs; | ||
| this.numRetries++; | ||
| setTimeout(this.continueUploading.bind(this), waitTime); | ||
| } | ||
| else { | ||
| this.destroy(new Error('Retry limit exceeded')); | ||
| } | ||
| return false; | ||
| } | ||
| _this.startUploading(); | ||
| }); | ||
| }; | ||
| Upload.prototype.get = function (prop) { | ||
| var store = this.configStore.get([this.bucket, this.file].join('/')); | ||
| return store && store[prop]; | ||
| }; | ||
| // tslint:disable-next-line no-any | ||
| Upload.prototype.set = function (props) { | ||
| this.configStore.set([this.bucket, this.file].join('/'), props); | ||
| }; | ||
| Upload.prototype.deleteConfig = function () { | ||
| this.configStore.delete([this.bucket, this.file].join('/')); | ||
| }; | ||
| /** | ||
| * @return {bool} is the request good? | ||
| */ | ||
| Upload.prototype.onResponse = function (resp) { | ||
| if (resp.statusCode === 404) { | ||
| if (this.numRetries < RETRY_LIMIT) { | ||
| this.numRetries++; | ||
| this.startUploading(); | ||
| } | ||
| else { | ||
| this.destroy(new Error('Retry limit exceeded')); | ||
| } | ||
| return false; | ||
| } | ||
| if (resp.statusCode > 499 && resp.statusCode < 600) { | ||
| if (this.numRetries < RETRY_LIMIT) { | ||
| var randomMs = Math.round(Math.random() * 1000); | ||
| var waitTime = Math.pow(2, this.numRetries) * 1000 + randomMs; | ||
| this.numRetries++; | ||
| setTimeout(this.continueUploading.bind(this), waitTime); | ||
| } | ||
| else { | ||
| this.destroy(new Error('Retry limit exceeded')); | ||
| } | ||
| return false; | ||
| } | ||
| this.emit('response', resp); | ||
| return true; | ||
| }; | ||
| this.emit('response', resp); | ||
| return true; | ||
| }; | ||
| return Upload; | ||
| }(Pumpify)); | ||
| exports.Upload = Upload; | ||
| function axiosToRequest(opts) { | ||
| var reqOpts = opts; | ||
| reqOpts.qs = opts.params; | ||
| reqOpts.json = opts.data; | ||
| reqOpts.uri = opts.url; | ||
| return reqOpts; | ||
| } | ||
| function upload(cfg) { | ||
| // tslint:disable-next-line no-any | ||
| return new Upload(cfg); | ||
| } | ||
| // tslint:disable-next-line no-any | ||
| upload.createURI = | ||
| function (cfg, callback) { | ||
| // tslint:disable-next-line no-any | ||
| var up = new Upload(cfg); | ||
| up.createURI(callback); | ||
| }; | ||
| module.exports = upload; | ||
| exports.upload = upload; | ||
| function createURI(cfg, callback) { | ||
| var up = new Upload(cfg); | ||
| up.createURI(callback); | ||
| } | ||
| exports.createURI = createURI; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAA2C;AAC3C,+BAAiC;AACjC,2DAAkE;AAClE,iCAAmC;AACnC,2BAA6B;AAC7B,iCAA6D;AAC7D,4CAA8C;AAY9C,IAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC;AAEvE,IAAM,QAAQ,GAAG,gDAAgD,CAAC;AAClE,IAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,IAAM,gCAAgC,GAAG,GAAG,CAAC;AAC7C,IAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,IAAM,SAAS,GAAG,UAAC,OAAe,EAAE,GAAU;IAC5C,OAAO,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AA0GF;IAA4B,0BAAO;IA0BjC,gBAAY,GAAiB;QAA7B,YACE,iBAAO,SA8DR;QArED,qBAAe,GAAG,CAAC,CAAC;QACpB,gBAAU,GAAG,CAAC,CAAC;QAOb,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAExB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QAEhB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QAED,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,UAAU,CAAC,MAAM;YACjB,CAAC,yDAAyD,CAAC,CAAC;QAChE,KAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,gCAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnE,KAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,KAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,KAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QACjC,KAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QACjC,KAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACnC,KAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,KAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,KAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAEnC,IAAI,GAAG,CAAC,GAAG,EAAE;YACX;;;;eAIG;YACH,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpE,KAAI,CAAC,UAAU,GAAG;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;aACnE,CAAC;SACH;QAED,KAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACvC,IAAI,GAAG,CAAC,OAAO;YAAE,KAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAChD,IAAI,GAAG,CAAC,MAAM;YAAE,KAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElD,KAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAC3D,KAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACrC,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,KAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,KAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAM,aAAa,GACf,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5D,KAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;QAEhE,KAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,KAAI,CAAC,GAAG,EAAE;gBACZ,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;iBAAM;gBACL,KAAI,CAAC,SAAS,CAAC,UAAA,GAAG;oBAChB,IAAI,GAAG,EAAE;wBACP,OAAO,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBAC1B;oBACD,KAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;;IACL,CAAC;IAED,0BAAS,GAAT,UAAU,QAA2B;QAArC,iBA6CC;QA5CC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAM,OAAO,GAAmB;YAC9B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3C,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAC;YAClD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,IAAI,QAAQ,CAAC,aAAa,EAAE;YAC1B,OAAO,CAAC,OAAQ,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC;SACtE;QAED,IAAI,QAAQ,CAAC,WAAW,EAAE;YACxB,OAAO,CAAC,OAAQ,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;SAClE;QAED,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;YAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;SACpD;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SACnD;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,CAAC,OAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SACvC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAC,GAAG,EAAE,IAAI;YAClC,IAAI,GAAG,EAAE;gBACP,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;YACD,IAAM,GAAG,GAAG,IAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,KAAI,CAAC,GAAG,CAAC,EAAC,GAAG,KAAA,EAAC,CAAC,CAAC;YAChB,KAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kCAAiB,GAAzB;QACE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YACnC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,+BAAc,GAAtB;QAAA,iBAiCC;QAhCC,IAAM,OAAO,GAAG;YACd,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa;aACrE;SACF,CAAC;QAEF,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAW,EAAE,CAAC;QAC3D,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY;YAClC,IAAI,oBAAW,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;QAC1D,IAAM,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;QAEtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,aAAsB;YACpD,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAEzE,oEAAoE;YACpE,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE;gBAC1B,KAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,IAAI;gBAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE;oBAClD,KAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;oBACzC,OAAO;iBACR;gBAED,KAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wBAAO,GAAf,UACI,KAAa,EAAE,GAAW,EAC1B,IAA8C;QAChD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAO,CAAC;QAC5B,IAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE7C,uEAAuE;QACvE,oEAAoE;QACpE,gBAAgB;QAChB,IAAI,eAAe,KAAK,CAAC,EAAE;YACzB,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAEhD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,+CAA+C;gBAC/C,IAAI,CAAC,GAAG,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,YAAA,EAAC,CAAC,CAAC;aACvC;iBAAM;gBACL,wEAAwE;gBACxE,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjD,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;oBACrD,gDAAgD;oBAChD,IAAI,CAAC,YAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAClC,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,OAAO;iBACR;aACF;SACF;QAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtE,IAAI,eAAe,GAAG,MAAM;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QAE5E,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC;QAE/B,4DAA4D;QAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAEO,gCAAe,GAAvB,UAAwB,QAAoB;QAA5C,iBAwCC;QAvCC,IAAM,IAAI,GAAG;YACX,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,EAAC,gBAAgB,EAAE,CAAC,EAAE,eAAe,EAAE,WAAW,EAAC;SAC7D,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAC,GAAG,EAAE,IAAI;YAC/B,IAAI,GAAG,EAAE;gBACP,mEAAmE;gBACnE,qEAAqE;gBACrE,kEAAkE;gBAClE,8BAA8B;gBAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAI,CAAC,mBAAmB,EAAE;oBAC5D,OAAO,KAAI,CAAC,OAAO,EAAE,CAAC;iBACvB;gBAED,sEAAsE;gBACtE,KAAK;gBACL,qEAAqE;gBACrE,KAAK;gBACL,wFAAwF;gBACxF,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,6BAA6B,EAAE;oBACzD,OAAO,KAAI,CAAC,OAAO,EAAE,CAAC;iBACvB;gBAED,OAAO,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC1B;YAED,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,gCAAgC,EAAE;gBAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oBACtB,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAe,CAAC;oBAC3C,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC9C,QAAQ,EAAE,CAAC;oBACX,OAAO;iBACR;aACF;YAED,KAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4BAAW,GAAnB,UAAoB,OAAuB,EAAE,QAAyB;QACpE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,GAAG,QAAQ,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAC/D,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;SACxE;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SAC/C;QAED,OAAO,CAAC,cAAc,GAAG,UAAC,MAAc;YACtC,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;gBAClC,MAAM,KAAK,gCAAgC,CAAC;QAClD,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACjC,UAAA,CAAC;YACC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,EACD,UAAC,GAAe;YACd,IAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,IAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YAClD,OAAO,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACT,CAAC;IAEO,iCAAgB,GAAxB,UACI,OAAuB,EAAE,QAA0C;QADvE,iBA0BC;QAxBC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SAC/C;QAED,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC;aACpC,IAAI,CAAC,UAAA,IAAI;YACR,IAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACjD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;YACnD,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;YACzD,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAC,IAAI;gBAChC,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK;oBAAE,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,kEAAkE;YAClE,aAAa,CAAC,QAAQ,GAAG,cAAO,CAAC,CAAC;YAElC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1B,CAAC,CAAC;aACD,KAAK,CAAC,UAAA,GAAG;YACR,OAAO,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACT,CAAC;IAEO,wBAAO,GAAf;QAAA,iBASC;QARC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,UAAA,GAAG;YAChB,IAAI,GAAG,EAAE;gBACP,OAAO,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC1B;YACD,KAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAG,GAAX,UAAY,IAAY;QACtB,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,kCAAkC;IAC1B,oBAAG,GAAX,UAAY,KAAU;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAEO,6BAAY,GAApB;QACE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,2BAAU,GAAlB,UAAmB,IAAqB;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;YACvB,IAAI,IAAI,CAAC,UAAU,GAAG,WAAW,EAAE;gBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;YAC1C,IAAI,IAAI,CAAC,UAAU,GAAG,WAAW,EAAE;gBACjC,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;gBAClD,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;gBAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;aACzD;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IACH,aAAC;AAAD,CAAC,AAxXD,CAA4B,OAAO,GAwXlC;AAxXY,wBAAM;AA0XnB,wBAAwB,IAAwB;IAC9C,IAAM,OAAO,GAAG,IAAwB,CAAC;IACzC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAuB,GAAiB;IACtC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAFD,wBAEC;AAED,mBAA0B,GAAiB,EAAE,QAA2B;IACtE,IAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAHD,8BAGC"} |
+6
-4
| { | ||
| "name": "gcs-resumable-upload", | ||
| "version": "0.10.2", | ||
| "version": "0.11.0", | ||
| "description": "Upload a file to Google Cloud Storage with built-in resumable behavior", | ||
@@ -12,3 +12,3 @@ "repository": "stephenplusplus/gcs-resumable-upload", | ||
| "scripts": { | ||
| "test": "mocha build/test -r source-map-support/register", | ||
| "test": "mocha build/test -r source-map-support/register --timeout 4000", | ||
| "check": "gts check", | ||
@@ -37,4 +37,5 @@ "clean": "gts clean", | ||
| "dependencies": { | ||
| "axios": "^0.18.0", | ||
| "configstore": "^3.1.2", | ||
| "google-auto-auth": "^0.10.0", | ||
| "google-auth-library": "^1.4.0", | ||
| "pumpify": "^1.4.0", | ||
@@ -51,5 +52,5 @@ "request": "^2.85.0", | ||
| "@types/node": "^9.6.1", | ||
| "@types/pumpify": "^1.4.0", | ||
| "@types/request": "^2.47.0", | ||
| "@types/through2": "^2.0.33", | ||
| "through2": "^2.0.3", | ||
| "gts": "^0.5.4", | ||
@@ -61,4 +62,5 @@ "is-stream": "^1.1.0", | ||
| "source-map-support": "^0.5.4", | ||
| "through2": "^2.0.3", | ||
| "typescript": "~2.8.0" | ||
| } | ||
| } |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
41334
17.54%519
42.19%6
20%17
6.25%+ Added
+ Added
- Removed
- Removed
- Removed
- Removed